SQOOP-2252: Add default to Avro Schema
(Andrew Stevenson via Jarek Jarcec Cecho)
diff --git a/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java b/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java
index a73aa13..ed8e8b1 100644
--- a/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java
+++ b/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java
@@ -34,6 +34,8 @@
import com.cloudera.sqoop.manager.ConnManager;
import org.apache.sqoop.avro.AvroUtil;
+import org.codehaus.jackson.node.NullNode;
+
/**
* Creates an Avro schema to represent a table from a database.
*/
@@ -64,7 +66,7 @@
String cleanedCol = AvroUtil.toAvroIdentifier(ClassWriter.toJavaIdentifier(columnName));
int sqlType = columnTypes.get(columnName);
Schema avroSchema = toAvroSchema(sqlType, columnName);
- Field field = new Field(cleanedCol, avroSchema, null, null);
+ Field field = new Field(cleanedCol, avroSchema, null, NullNode.getInstance());
field.addProp("columnName", columnName);
field.addProp("sqlType", Integer.toString(sqlType));
fields.add(field);
@@ -92,8 +94,8 @@
*/
public Schema toAvroSchema(int sqlType, String columnName) {
List<Schema> childSchemas = new ArrayList<Schema>();
- childSchemas.add(Schema.create(toAvroType(columnName, sqlType)));
childSchemas.add(Schema.create(Schema.Type.NULL));
+ childSchemas.add(Schema.create(toAvroType(columnName, sqlType)));
return Schema.createUnion(childSchemas);
}
diff --git a/src/test/com/cloudera/sqoop/TestAvroExport.java b/src/test/com/cloudera/sqoop/TestAvroExport.java
index db776e6..663828c 100644
--- a/src/test/com/cloudera/sqoop/TestAvroExport.java
+++ b/src/test/com/cloudera/sqoop/TestAvroExport.java
@@ -338,8 +338,8 @@
final int TOTAL_RECORDS = 1 * 10;
List<Schema> childSchemas = new ArrayList<Schema>();
- childSchemas.add(Schema.create(Schema.Type.STRING));
childSchemas.add(Schema.create(Schema.Type.NULL));
+ childSchemas.add(Schema.create(Schema.Type.STRING));
Schema schema = Schema.createUnion(childSchemas);
ColumnGenerator gen0 = colGenerator(null, schema, null, "VARCHAR(64)");
ColumnGenerator gen1 = colGenerator("s", schema, "s", "VARCHAR(64)");
diff --git a/src/test/com/cloudera/sqoop/TestAvroImport.java b/src/test/com/cloudera/sqoop/TestAvroImport.java
index 08b8aa9..af83ce0 100644
--- a/src/test/com/cloudera/sqoop/TestAvroImport.java
+++ b/src/test/com/cloudera/sqoop/TestAvroImport.java
@@ -230,8 +230,8 @@
private void checkField(Field field, String name, Type type) {
assertEquals(name, field.name());
assertEquals(Schema.Type.UNION, field.schema().getType());
- assertEquals(type, field.schema().getTypes().get(0).getType());
- assertEquals(Schema.Type.NULL, field.schema().getTypes().get(1).getType());
+ assertEquals(Schema.Type.NULL, field.schema().getTypes().get(0).getType());
+ assertEquals(type, field.schema().getTypes().get(1).getType());
}
public void testNullableAvroImport() throws IOException, SQLException {
diff --git a/src/test/com/cloudera/sqoop/TestParquetExport.java b/src/test/com/cloudera/sqoop/TestParquetExport.java
index 9065daf..86b40fb 100644
--- a/src/test/com/cloudera/sqoop/TestParquetExport.java
+++ b/src/test/com/cloudera/sqoop/TestParquetExport.java
@@ -320,8 +320,8 @@
final int TOTAL_RECORDS = 1 * 10;
List<Schema> childSchemas = new ArrayList<Schema>();
- childSchemas.add(Schema.create(Schema.Type.STRING));
childSchemas.add(Schema.create(Schema.Type.NULL));
+ childSchemas.add(Schema.create(Schema.Type.STRING));
Schema schema = Schema.createUnion(childSchemas);
ColumnGenerator gen0 = colGenerator(null, schema, null, "VARCHAR(64)");
ColumnGenerator gen1 = colGenerator("s", schema, "s", "VARCHAR(64)");
diff --git a/src/test/com/cloudera/sqoop/TestParquetImport.java b/src/test/com/cloudera/sqoop/TestParquetImport.java
index 21a2fec..ae5427c 100644
--- a/src/test/com/cloudera/sqoop/TestParquetImport.java
+++ b/src/test/com/cloudera/sqoop/TestParquetImport.java
@@ -211,8 +211,8 @@
private void checkField(Field field, String name, Type type) {
assertEquals(name, field.name());
assertEquals(Type.UNION, field.schema().getType());
- assertEquals(type, field.schema().getTypes().get(0).getType());
- assertEquals(Type.NULL, field.schema().getTypes().get(1).getType());
+ assertEquals(Type.NULL, field.schema().getTypes().get(0).getType());
+ assertEquals(type, field.schema().getTypes().get(1).getType());
}
}