aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java
diff options
context:
space:
mode:
Diffstat (limited to 'exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java')
-rw-r--r--exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java77
1 files changed, 66 insertions, 11 deletions
diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java b/exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java
index 4b277ae57..f4b1e69f9 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/TestSchemaCommands.java
@@ -39,6 +39,7 @@ import org.junit.rules.ExpectedException;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.time.LocalDate;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -273,7 +274,7 @@ public class TestSchemaCommands extends ClusterTest {
}
@Test
- public void testCreateWithProperties() throws Exception {
+ public void testCreateWithSchemaProperties() throws Exception {
File tmpDir = dirTestWatcher.getTmpDir();
File schemaFile = new File(tmpDir, "schema_for_create_with_properties.schema");
assertFalse(schemaFile.exists());
@@ -292,16 +293,16 @@ public class TestSchemaCommands extends ClusterTest {
SchemaContainer schemaContainer = schemaProvider.read();
assertNull(schemaContainer.getTable());
- assertNotNull(schemaContainer.getSchema());
- assertNotNull(schemaContainer.getProperties());
+ TupleMetadata schema = schemaContainer.getSchema();
+ assertNotNull(schema);
Map<String, String> properties = new LinkedHashMap<>();
properties.put("k1", "v1");
properties.put("k2", "v2");
properties.put("k3", "v3");
- assertEquals(properties.size(), schemaContainer.getProperties().size());
- assertEquals(properties, schemaContainer.getProperties());
+ assertEquals(properties.size(), schema.properties().size());
+ assertEquals(properties, schema.properties());
} finally {
if (schemaFile.exists()) {
@@ -311,7 +312,7 @@ public class TestSchemaCommands extends ClusterTest {
}
@Test
- public void testCreateWithoutProperties() throws Exception {
+ public void testCreateWithoutSchemaProperties() throws Exception {
File tmpDir = dirTestWatcher.getTmpDir();
File schemaFile = new File(tmpDir, "schema_for_create_without_properties.schema");
assertFalse(schemaFile.exists());
@@ -329,9 +330,64 @@ public class TestSchemaCommands extends ClusterTest {
SchemaContainer schemaContainer = schemaProvider.read();
assertNull(schemaContainer.getTable());
- assertNotNull(schemaContainer.getSchema());
- assertNotNull(schemaContainer.getProperties());
- assertEquals(0, schemaContainer.getProperties().size());
+ TupleMetadata schema = schemaContainer.getSchema();
+ assertNotNull(schema);
+ assertNotNull(schema.properties());
+ assertEquals(0, schema.properties().size());
+ } finally {
+ if (schemaFile.exists()) {
+ assertTrue(schemaFile.delete());
+ }
+ }
+ }
+
+ @Test
+ public void testCreateWithVariousColumnProperties() throws Exception {
+ File tmpDir = dirTestWatcher.getTmpDir();
+ File schemaFile = new File(tmpDir, "schema_for_create_with__various_column_properties.schema");
+ assertFalse(schemaFile.exists());
+ try {
+ testBuilder()
+ .sqlQuery("create schema ( " +
+ "a int not null default '10', " +
+ "b date format 'yyyy-MM-dd' default '2017-01-31', " +
+ "c varchar properties {'k1' = 'v1', 'k2' = 'v2'}) " +
+ "path '%s'",
+ schemaFile.getPath())
+ .unOrdered()
+ .baselineColumns("ok", "summary")
+ .baselineValues(true, String.format("Created schema for [%s]", schemaFile.getPath()))
+ .go();
+
+ SchemaProvider schemaProvider = new PathSchemaProvider(new Path(schemaFile.getPath()));
+ assertTrue(schemaProvider.exists());
+
+ SchemaContainer schemaContainer = schemaProvider.read();
+
+ assertNull(schemaContainer.getTable());
+ TupleMetadata schema = schemaContainer.getSchema();
+ assertNotNull(schema);
+
+ assertEquals(3, schema.size());
+
+ ColumnMetadata a = schema.metadata("a");
+ assertTrue(a.defaultValue() instanceof Integer);
+ assertEquals(10, a.defaultValue());
+ assertEquals("10", a.defaultStringValue());
+
+ ColumnMetadata b = schema.metadata("b");
+ assertTrue(b.defaultValue() instanceof LocalDate);
+ assertEquals("yyyy-MM-dd", b.formatValue());
+ assertEquals(LocalDate.parse("2017-01-31"), b.defaultValue());
+ assertEquals("2017-01-31", b.defaultStringValue());
+
+ ColumnMetadata c = schema.metadata("c");
+ Map<String, String> properties = new LinkedHashMap<>();
+ properties.put("k1", "v1");
+ properties.put("k2", "v2");
+ assertEquals(properties, c.properties());
+
+ assertEquals(0, schema.properties().size());
} finally {
if (schemaFile.exists()) {
assertTrue(schemaFile.delete());
@@ -382,8 +438,7 @@ public class TestSchemaCommands extends ClusterTest {
assertEquals(TypeProtos.MinorType.INT, schema.metadata("i").type());
assertEquals(TypeProtos.MinorType.VARCHAR, schema.metadata("v").type());
- assertNotNull(schemaContainer.getProperties());
- assertEquals(2, schemaContainer.getProperties().size());
+ assertEquals(2, schema.properties().size());
} finally {
if (rawSchema.exists()) {
assertTrue(rawSchema.delete());