aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java')
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java133
1 files changed, 92 insertions, 41 deletions
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java b/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
index 427754f9a..435ec0d7a 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/record/metadata/schema/TestSchemaProvider.java
@@ -18,6 +18,7 @@
package org.apache.drill.exec.record.metadata.schema;
import org.apache.drill.common.types.TypeProtos;
+import org.apache.drill.exec.record.metadata.ColumnMetadata;
import org.apache.drill.exec.record.metadata.TupleMetadata;
import org.apache.drill.exec.store.StorageStrategy;
import org.junit.Rule;
@@ -86,7 +87,7 @@ public class TestSchemaProvider {
assertEquals(1, metadata.size());
assertEquals(TypeProtos.MinorType.INT, metadata.metadata("i").type());
- assertEquals(properties, schemaContainer.getProperties());
+ assertEquals(properties, metadata.properties());
SchemaContainer.Version version = schemaContainer.getVersion();
assertFalse(version.isUndefined());
@@ -134,15 +135,24 @@ public class TestSchemaProvider {
provider.store("i int, v varchar(10)", properties, StorageStrategy.DEFAULT);
assertTrue(provider.exists());
- String expectedContent =
- "{\n"
- + " \"schema\" : [\n"
- + " \"`i` INT\",\n"
- + " \"`v` VARCHAR(10)\"\n"
- + " ],\n"
- + " \"properties\" : {\n"
- + " \"k1\" : \"v1\",\n"
- + " \"k2\" : \"v2\"\n"
+ String expectedContent = "{\n"
+ + " \"schema\" : {\n"
+ + " \"columns\" : [\n"
+ + " {\n"
+ + " \"name\" : \"i\",\n"
+ + " \"type\" : \"INT\",\n"
+ + " \"mode\" : \"OPTIONAL\"\n"
+ + " },\n"
+ + " {\n"
+ + " \"name\" : \"v\",\n"
+ + " \"type\" : \"VARCHAR(10)\",\n"
+ + " \"mode\" : \"OPTIONAL\"\n"
+ + " }\n"
+ + " ],\n"
+ + " \"properties\" : {\n"
+ + " \"k1\" : \"v1\",\n"
+ + " \"k2\" : \"v2\"\n"
+ + " }\n"
+ " },\n"
+ " \"version\" : 1\n"
+ "}";
@@ -166,19 +176,39 @@ public class TestSchemaProvider {
@Test
public void testPathProviderRead() throws Exception {
Path schemaPath = folder.newFile("schema").toPath();
- Files.write(schemaPath, Collections.singletonList(
- "{ \n"
- + " \"table\":\"tbl\",\n"
- + " \"schema\":[ \n"
- + " \"`i` INT\",\n"
- + " \"`v` VARCHAR\"\n"
- + " ],\n"
- + " \"properties\" : {\n"
- + " \"k1\" : \"v1\",\n"
- + " \"k2\" : \"v2\"\n"
- + " }\n"
- + "}\n"
- ));
+ String schema = "{\n"
+ + " \"table\" : \"tbl\",\n"
+ + " \"schema\" : {\n"
+ + " \"columns\" : [\n"
+ + " {\n"
+ + " \"name\" : \"i\",\n"
+ + " \"type\" : \"INT\",\n"
+ + " \"mode\" : \"REQUIRED\",\n"
+ + " \"default\" : \"10\"\n"
+ + " },\n"
+ + " {\n"
+ + " \"name\" : \"a\",\n"
+ + " \"type\" : \"ARRAY<VARCHAR(10)>\",\n"
+ + " \"mode\" : \"REPEATED\",\n"
+ + " \"properties\" : {\n"
+ + " \"ck1\" : \"cv1\",\n"
+ + " \"ck2\" : \"cv2\"\n"
+ + " }\n"
+ + " },\n"
+ + " {\n"
+ + " \"name\" : \"t\",\n"
+ + " \"type\" : \"DATE\",\n"
+ + " \"mode\" : \"OPTIONAL\",\n"
+ + " \"format\" : \"yyyy-mm-dd\"\n"
+ + " }\n"
+ + " ],\n"
+ + " \"properties\" : {\n"
+ + " \"sk1\" : \"sv1\",\n"
+ + " \"sk2\" : \"sv2\"\n"
+ + " }\n"
+ + " }\n"
+ + "}";
+ Files.write(schemaPath, Collections.singletonList(schema));
SchemaProvider provider = new PathSchemaProvider(new org.apache.hadoop.fs.Path(schemaPath.toUri().getPath()));
assertTrue(provider.exists());
SchemaContainer schemaContainer = provider.read();
@@ -187,14 +217,30 @@ public class TestSchemaProvider {
TupleMetadata metadata = schemaContainer.getSchema();
assertNotNull(metadata);
- assertEquals(2, metadata.size());
- assertEquals(TypeProtos.MinorType.INT, metadata.metadata("i").type());
- assertEquals(TypeProtos.MinorType.VARCHAR, metadata.metadata("v").type());
-
- Map<String, String> properties = new LinkedHashMap<>();
- properties.put("k1", "v1");
- properties.put("k2", "v2");
- assertEquals(properties, schemaContainer.getProperties());
+ Map<String, String> schemaProperties = new LinkedHashMap<>();
+ schemaProperties.put("sk1", "sv1");
+ schemaProperties.put("sk2", "sv2");
+ assertEquals(schemaProperties, metadata.properties());
+
+ assertEquals(3, metadata.size());
+
+ ColumnMetadata i = metadata.metadata("i");
+ assertEquals(TypeProtos.MinorType.INT, i.type());
+ assertEquals(TypeProtos.DataMode.REQUIRED, i.mode());
+ assertEquals(10, i.defaultValue());
+
+ ColumnMetadata a = metadata.metadata("a");
+ assertEquals(TypeProtos.MinorType.VARCHAR, a.type());
+ assertEquals(TypeProtos.DataMode.REPEATED, a.mode());
+ Map<String, String> columnProperties = new LinkedHashMap<>();
+ columnProperties.put("ck1", "cv1");
+ columnProperties.put("ck2", "cv2");
+ assertEquals(columnProperties, a.properties());
+
+ ColumnMetadata t = metadata.metadata("t");
+ assertEquals(TypeProtos.MinorType.DATE, t.type());
+ assertEquals(TypeProtos.DataMode.OPTIONAL, t.mode());
+ assertEquals("yyyy-mm-dd", t.formatValue());
assertTrue(schemaContainer.getVersion().isUndefined());
}
@@ -213,16 +259,21 @@ public class TestSchemaProvider {
@Test
public void testPathProviderReadSchemaWithComments() throws Exception {
Path schemaPath = folder.newFile("schema").toPath();
- Files.write(schemaPath, Collections.singletonList(
- "// my schema file start\n"
- + "{ \n"
- + " \"schema\":[ // start columns list\n"
- + " \"`i` INT\"\n"
- + " ]\n"
- + "}\n"
- + "// schema file end\n"
- + "/* multiline comment */"
- ));
+ String schema = "// my schema file start\n" +
+ "{\n"
+ + " \"schema\" : {\n"
+ + " \"columns\" : [ // start columns list\n"
+ + " {\n"
+ + " \"name\" : \"i\",\n"
+ + " \"type\" : \"INT\",\n"
+ + " \"mode\" : \"OPTIONAL\"\n"
+ + " }\n"
+ + " ]\n"
+ + " }\n"
+ + "}"
+ + "// schema file end\n"
+ + "/* multiline comment */";
+ Files.write(schemaPath, Collections.singletonList(schema));
SchemaProvider provider = new PathSchemaProvider(new org.apache.hadoop.fs.Path(schemaPath.toUri().getPath()));
assertTrue(provider.exists());