aboutsummaryrefslogtreecommitdiff
path: root/exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java')
-rw-r--r--exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java b/exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java
index 3cf376215..ea5071e5b 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/record/metadata/schema/parser/SchemaExprParser.java
@@ -23,6 +23,7 @@ import org.antlr.v4.runtime.CodePointCharStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.Recognizer;
+import org.apache.drill.common.types.TypeProtos;
import org.apache.drill.exec.record.metadata.ColumnMetadata;
import org.apache.drill.exec.record.metadata.TupleMetadata;
@@ -41,6 +42,21 @@ public class SchemaExprParser {
}
/**
+ * Parses given column name, type and mode into {@link ColumnMetadata} instance.
+ *
+ * @param name column name
+ * @param type column type
+ * @param mode column mode
+ * @return column metadata
+ */
+ public static ColumnMetadata parseColumn(String name, String type, TypeProtos.DataMode mode) {
+ return parseColumn(String.format("`%s` %s %s",
+ name.replaceAll("(\\\\)|(`)", "\\\\$0"),
+ type,
+ TypeProtos.DataMode.REQUIRED == mode ? "not null" : ""));
+ }
+
+ /**
* Parses string definition of the column and converts it
* into {@link ColumnMetadata} instance.
*