http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.java new file mode 100644 index 0000000..e32ff07 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.java @@ -0,0 +1,228 @@ +// Generated from /home/david/Documents/code/carbondata/store/horizon/src/main/anltr/Expression.g4 by ANTLR 4.7 +package org.apache.carbondata.horizon.antlr.gen; +import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.CharStream; +import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.*; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class ExpressionLexer extends Lexer { + static { RuntimeMetaData.checkVersion("4.7", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + T__0=1, T__1=2, T__2=3, T__3=4, AND=5, BETWEEN=6, FALSE=7, IN=8, IS=9, + NOT=10, NULL=11, OR=12, TRUE=13, EQ=14, NEQ=15, LT=16, LTE=17, GT=18, + GTE=19, MINUS=20, STRING=21, BIGINT_LITERAL=22, SMALLINT_LITERAL=23, TINYINT_LITERAL=24, + INTEGER_VALUE=25, DECIMAL_VALUE=26, DOUBLE_LITERAL=27, BIGDECIMAL_LITERAL=28, + IDENTIFIER=29, BACKQUOTED_IDENTIFIER=30, WS=31, UNRECOGNIZED=32; + public static String[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + public static String[] modeNames = { + "DEFAULT_MODE" + }; + + public static final String[] ruleNames = { + "T__0", "T__1", "T__2", "T__3", "AND", "BETWEEN", "FALSE", "IN", "IS", + "NOT", "NULL", "OR", "TRUE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "MINUS", + "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", "IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "DECIMAL_DIGITS", "EXPONENT", "DIGIT", "LETTER", + "WS", "UNRECOGNIZED" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'('", "')'", "','", "'.'", "'AND'", "'BETWEEN'", "'FALSE'", "'IN'", + "'IS'", "'NOT'", "'NULL'", "'OR'", "'TRUE'", "'='", null, "'<'", "'<='", + "'>'", "'>='", "'-'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, null, null, null, null, "AND", "BETWEEN", "FALSE", "IN", "IS", "NOT", + "NULL", "OR", "TRUE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "MINUS", + "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", "IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "WS", "UNRECOGNIZED" + }; + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = "<INVALID>"; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + + public ExpressionLexer(CharStream input) { + super(input); + _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + + @Override + public String getGrammarFileName() { return "Expression.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public String[] getChannelNames() { return channelNames; } + + @Override + public String[] getModeNames() { return modeNames; } + + @Override + public ATN getATN() { return _ATN; } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\"\u012f\b\1\4\2\t"+ + "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ + "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ + "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ + "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3\5\3\6\3\6"+ + "\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3"+ + "\t\3\t\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r"+ + "\3\16\3\16\3\16\3\16\3\16\3\17\3\17\3\20\3\20\3\20\3\20\5\20\u0083\n\20"+ + "\3\21\3\21\3\22\3\22\3\22\3\23\3\23\3\24\3\24\3\24\3\25\3\25\3\26\3\26"+ + "\3\26\3\26\7\26\u0095\n\26\f\26\16\26\u0098\13\26\3\26\3\26\3\26\3\26"+ + "\3\26\7\26\u009f\n\26\f\26\16\26\u00a2\13\26\3\26\5\26\u00a5\n\26\3\27"+ + "\6\27\u00a8\n\27\r\27\16\27\u00a9\3\27\3\27\3\30\6\30\u00af\n\30\r\30"+ + "\16\30\u00b0\3\30\3\30\3\31\6\31\u00b6\n\31\r\31\16\31\u00b7\3\31\3\31"+ + "\3\32\6\32\u00bd\n\32\r\32\16\32\u00be\3\33\6\33\u00c2\n\33\r\33\16\33"+ + "\u00c3\3\33\3\33\3\33\3\33\5\33\u00ca\n\33\5\33\u00cc\n\33\3\34\6\34\u00cf"+ + "\n\34\r\34\16\34\u00d0\3\34\5\34\u00d4\n\34\3\34\3\34\3\34\3\34\5\34\u00da"+ + "\n\34\3\34\3\34\5\34\u00de\n\34\3\35\6\35\u00e1\n\35\r\35\16\35\u00e2"+ + "\3\35\5\35\u00e6\n\35\3\35\3\35\3\35\3\35\3\35\5\35\u00ed\n\35\3\35\3"+ + "\35\3\35\5\35\u00f2\n\35\3\36\3\36\3\36\6\36\u00f7\n\36\r\36\16\36\u00f8"+ + "\3\37\3\37\3\37\3\37\7\37\u00ff\n\37\f\37\16\37\u0102\13\37\3\37\3\37"+ + "\3 \6 \u0107\n \r \16 \u0108\3 \3 \7 \u010d\n \f \16 \u0110\13 \3 \3 "+ + "\6 \u0114\n \r \16 \u0115\5 \u0118\n \3!\3!\5!\u011c\n!\3!\6!\u011f\n"+ + "!\r!\16!\u0120\3\"\3\"\3#\3#\3$\6$\u0128\n$\r$\16$\u0129\3$\3$\3%\3%\2"+ + "\2&\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35"+ + "\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36"+ + ";\37= ?\2A\2C\2E\2G!I\"\3\2\t\4\2))^^\4\2$$^^\3\2bb\4\2--//\3\2\62;\3"+ + "\2C\\\5\2\13\f\17\17\"\"\2\u014b\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2"+ + "\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2"+ + "\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2"+ + "\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2"+ + "\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2"+ + "\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2"+ + "\3K\3\2\2\2\5M\3\2\2\2\7O\3\2\2\2\tQ\3\2\2\2\13S\3\2\2\2\rW\3\2\2\2\17"+ + "_\3\2\2\2\21e\3\2\2\2\23h\3\2\2\2\25k\3\2\2\2\27o\3\2\2\2\31t\3\2\2\2"+ + "\33w\3\2\2\2\35|\3\2\2\2\37\u0082\3\2\2\2!\u0084\3\2\2\2#\u0086\3\2\2"+ + "\2%\u0089\3\2\2\2\'\u008b\3\2\2\2)\u008e\3\2\2\2+\u00a4\3\2\2\2-\u00a7"+ + "\3\2\2\2/\u00ae\3\2\2\2\61\u00b5\3\2\2\2\63\u00bc\3\2\2\2\65\u00cb\3\2"+ + "\2\2\67\u00dd\3\2\2\29\u00f1\3\2\2\2;\u00f6\3\2\2\2=\u00fa\3\2\2\2?\u0117"+ + "\3\2\2\2A\u0119\3\2\2\2C\u0122\3\2\2\2E\u0124\3\2\2\2G\u0127\3\2\2\2I"+ + "\u012d\3\2\2\2KL\7*\2\2L\4\3\2\2\2MN\7+\2\2N\6\3\2\2\2OP\7.\2\2P\b\3\2"+ + "\2\2QR\7\60\2\2R\n\3\2\2\2ST\7C\2\2TU\7P\2\2UV\7F\2\2V\f\3\2\2\2WX\7D"+ + "\2\2XY\7G\2\2YZ\7V\2\2Z[\7Y\2\2[\\\7G\2\2\\]\7G\2\2]^\7P\2\2^\16\3\2\2"+ + "\2_`\7H\2\2`a\7C\2\2ab\7N\2\2bc\7U\2\2cd\7G\2\2d\20\3\2\2\2ef\7K\2\2f"+ + "g\7P\2\2g\22\3\2\2\2hi\7K\2\2ij\7U\2\2j\24\3\2\2\2kl\7P\2\2lm\7Q\2\2m"+ + "n\7V\2\2n\26\3\2\2\2op\7P\2\2pq\7W\2\2qr\7N\2\2rs\7N\2\2s\30\3\2\2\2t"+ + "u\7Q\2\2uv\7T\2\2v\32\3\2\2\2wx\7V\2\2xy\7T\2\2yz\7W\2\2z{\7G\2\2{\34"+ + "\3\2\2\2|}\7?\2\2}\36\3\2\2\2~\177\7>\2\2\177\u0083\7@\2\2\u0080\u0081"+ + "\7#\2\2\u0081\u0083\7?\2\2\u0082~\3\2\2\2\u0082\u0080\3\2\2\2\u0083 \3"+ + "\2\2\2\u0084\u0085\7>\2\2\u0085\"\3\2\2\2\u0086\u0087\7>\2\2\u0087\u0088"+ + "\7?\2\2\u0088$\3\2\2\2\u0089\u008a\7@\2\2\u008a&\3\2\2\2\u008b\u008c\7"+ + "@\2\2\u008c\u008d\7?\2\2\u008d(\3\2\2\2\u008e\u008f\7/\2\2\u008f*\3\2"+ + "\2\2\u0090\u0096\7)\2\2\u0091\u0095\n\2\2\2\u0092\u0093\7^\2\2\u0093\u0095"+ + "\13\2\2\2\u0094\u0091\3\2\2\2\u0094\u0092\3\2\2\2\u0095\u0098\3\2\2\2"+ + "\u0096\u0094\3\2\2\2\u0096\u0097\3\2\2\2\u0097\u0099\3\2\2\2\u0098\u0096"+ + "\3\2\2\2\u0099\u00a5\7)\2\2\u009a\u00a0\7$\2\2\u009b\u009f\n\3\2\2\u009c"+ + "\u009d\7^\2\2\u009d\u009f\13\2\2\2\u009e\u009b\3\2\2\2\u009e\u009c\3\2"+ + "\2\2\u009f\u00a2\3\2\2\2\u00a0\u009e\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1"+ + "\u00a3\3\2\2\2\u00a2\u00a0\3\2\2\2\u00a3\u00a5\7$\2\2\u00a4\u0090\3\2"+ + "\2\2\u00a4\u009a\3\2\2\2\u00a5,\3\2\2\2\u00a6\u00a8\5C\"\2\u00a7\u00a6"+ + "\3\2\2\2\u00a8\u00a9\3\2\2\2\u00a9\u00a7\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa"+ + "\u00ab\3\2\2\2\u00ab\u00ac\7N\2\2\u00ac.\3\2\2\2\u00ad\u00af\5C\"\2\u00ae"+ + "\u00ad\3\2\2\2\u00af\u00b0\3\2\2\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1\3\2"+ + "\2\2\u00b1\u00b2\3\2\2\2\u00b2\u00b3\7U\2\2\u00b3\60\3\2\2\2\u00b4\u00b6"+ + "\5C\"\2\u00b5\u00b4\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7\u00b5\3\2\2\2\u00b7"+ + "\u00b8\3\2\2\2\u00b8\u00b9\3\2\2\2\u00b9\u00ba\7[\2\2\u00ba\62\3\2\2\2"+ + "\u00bb\u00bd\5C\"\2\u00bc\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be\u00bc"+ + "\3\2\2\2\u00be\u00bf\3\2\2\2\u00bf\64\3\2\2\2\u00c0\u00c2\5C\"\2\u00c1"+ + "\u00c0\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c1\3\2\2\2\u00c3\u00c4\3\2"+ + "\2\2\u00c4\u00c5\3\2\2\2\u00c5\u00c6\5A!\2\u00c6\u00cc\3\2\2\2\u00c7\u00c9"+ + "\5? \2\u00c8\u00ca\5A!\2\u00c9\u00c8\3\2\2\2\u00c9\u00ca\3\2\2\2\u00ca"+ + "\u00cc\3\2\2\2\u00cb\u00c1\3\2\2\2\u00cb\u00c7\3\2\2\2\u00cc\66\3\2\2"+ + "\2\u00cd\u00cf\5C\"\2\u00ce\u00cd\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\u00ce"+ + "\3\2\2\2\u00d0\u00d1\3\2\2\2\u00d1\u00d3\3\2\2\2\u00d2\u00d4\5A!\2\u00d3"+ + "\u00d2\3\2\2\2\u00d3\u00d4\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5\u00d6\7F"+ + "\2\2\u00d6\u00de\3\2\2\2\u00d7\u00d9\5? \2\u00d8\u00da\5A!\2\u00d9\u00d8"+ + "\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00dc\7F\2\2\u00dc"+ + "\u00de\3\2\2\2\u00dd\u00ce\3\2\2\2\u00dd\u00d7\3\2\2\2\u00de8\3\2\2\2"+ + "\u00df\u00e1\5C\"\2\u00e0\u00df\3\2\2\2\u00e1\u00e2\3\2\2\2\u00e2\u00e0"+ + "\3\2\2\2\u00e2\u00e3\3\2\2\2\u00e3\u00e5\3\2\2\2\u00e4\u00e6\5A!\2\u00e5"+ + "\u00e4\3\2\2\2\u00e5\u00e6\3\2\2\2\u00e6\u00e7\3\2\2\2\u00e7\u00e8\7D"+ + "\2\2\u00e8\u00e9\7F\2\2\u00e9\u00f2\3\2\2\2\u00ea\u00ec\5? \2\u00eb\u00ed"+ + "\5A!\2\u00ec\u00eb\3\2\2\2\u00ec\u00ed\3\2\2\2\u00ed\u00ee\3\2\2\2\u00ee"+ + "\u00ef\7D\2\2\u00ef\u00f0\7F\2\2\u00f0\u00f2\3\2\2\2\u00f1\u00e0\3\2\2"+ + "\2\u00f1\u00ea\3\2\2\2\u00f2:\3\2\2\2\u00f3\u00f7\5E#\2\u00f4\u00f7\5"+ + "C\"\2\u00f5\u00f7\7a\2\2\u00f6\u00f3\3\2\2\2\u00f6\u00f4\3\2\2\2\u00f6"+ + "\u00f5\3\2\2\2\u00f7\u00f8\3\2\2\2\u00f8\u00f6\3\2\2\2\u00f8\u00f9\3\2"+ + "\2\2\u00f9<\3\2\2\2\u00fa\u0100\7b\2\2\u00fb\u00ff\n\4\2\2\u00fc\u00fd"+ + "\7b\2\2\u00fd\u00ff\7b\2\2\u00fe\u00fb\3\2\2\2\u00fe\u00fc\3\2\2\2\u00ff"+ + "\u0102\3\2\2\2\u0100\u00fe\3\2\2\2\u0100\u0101\3\2\2\2\u0101\u0103\3\2"+ + "\2\2\u0102\u0100\3\2\2\2\u0103\u0104\7b\2\2\u0104>\3\2\2\2\u0105\u0107"+ + "\5C\"\2\u0106\u0105\3\2\2\2\u0107\u0108\3\2\2\2\u0108\u0106\3\2\2\2\u0108"+ + "\u0109\3\2\2\2\u0109\u010a\3\2\2\2\u010a\u010e\7\60\2\2\u010b\u010d\5"+ + "C\"\2\u010c\u010b\3\2\2\2\u010d\u0110\3\2\2\2\u010e\u010c\3\2\2\2\u010e"+ + "\u010f\3\2\2\2\u010f\u0118\3\2\2\2\u0110\u010e\3\2\2\2\u0111\u0113\7\60"+ + "\2\2\u0112\u0114\5C\"\2\u0113\u0112\3\2\2\2\u0114\u0115\3\2\2\2\u0115"+ + "\u0113\3\2\2\2\u0115\u0116\3\2\2\2\u0116\u0118\3\2\2\2\u0117\u0106\3\2"+ + "\2\2\u0117\u0111\3\2\2\2\u0118@\3\2\2\2\u0119\u011b\7G\2\2\u011a\u011c"+ + "\t\5\2\2\u011b\u011a\3\2\2\2\u011b\u011c\3\2\2\2\u011c\u011e\3\2\2\2\u011d"+ + "\u011f\5C\"\2\u011e\u011d\3\2\2\2\u011f\u0120\3\2\2\2\u0120\u011e\3\2"+ + "\2\2\u0120\u0121\3\2\2\2\u0121B\3\2\2\2\u0122\u0123\t\6\2\2\u0123D\3\2"+ + "\2\2\u0124\u0125\t\7\2\2\u0125F\3\2\2\2\u0126\u0128\t\b\2\2\u0127\u0126"+ + "\3\2\2\2\u0128\u0129\3\2\2\2\u0129\u0127\3\2\2\2\u0129\u012a\3\2\2\2\u012a"+ + "\u012b\3\2\2\2\u012b\u012c\b$\2\2\u012cH\3\2\2\2\u012d\u012e\13\2\2\2"+ + "\u012eJ\3\2\2\2#\2\u0082\u0094\u0096\u009e\u00a0\u00a4\u00a9\u00b0\u00b7"+ + "\u00be\u00c3\u00c9\u00cb\u00d0\u00d3\u00d9\u00dd\u00e2\u00e5\u00ec\u00f1"+ + "\u00f6\u00f8\u00fe\u0100\u0108\u010e\u0115\u0117\u011b\u0120\u0129\3\2"+ + "\3\2"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.tokens ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.tokens b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.tokens new file mode 100644 index 0000000..0ba3c59 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionLexer.tokens @@ -0,0 +1,51 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +AND=5 +BETWEEN=6 +FALSE=7 +IN=8 +IS=9 +NOT=10 +NULL=11 +OR=12 +TRUE=13 +EQ=14 +NEQ=15 +LT=16 +LTE=17 +GT=18 +GTE=19 +MINUS=20 +STRING=21 +BIGINT_LITERAL=22 +SMALLINT_LITERAL=23 +TINYINT_LITERAL=24 +INTEGER_VALUE=25 +DECIMAL_VALUE=26 +DOUBLE_LITERAL=27 +BIGDECIMAL_LITERAL=28 +IDENTIFIER=29 +BACKQUOTED_IDENTIFIER=30 +WS=31 +UNRECOGNIZED=32 +'('=1 +')'=2 +','=3 +'.'=4 +'AND'=5 +'BETWEEN'=6 +'FALSE'=7 +'IN'=8 +'IS'=9 +'NOT'=10 +'NULL'=11 +'OR'=12 +'TRUE'=13 +'='=14 +'<'=16 +'<='=17 +'>'=18 +'>='=19 +'-'=20 http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionParser.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionParser.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionParser.java new file mode 100644 index 0000000..08139eb --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionParser.java @@ -0,0 +1,1117 @@ +// Generated from /home/david/Documents/code/carbondata/store/horizon/src/main/anltr/Expression.g4 by ANTLR 4.7 +package org.apache.carbondata.horizon.antlr.gen; +import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.*; +import org.antlr.v4.runtime.misc.*; +import org.antlr.v4.runtime.tree.*; +import java.util.List; +import java.util.Iterator; +import java.util.ArrayList; + +@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"}) +public class ExpressionParser extends Parser { + static { RuntimeMetaData.checkVersion("4.7", RuntimeMetaData.VERSION); } + + protected static final DFA[] _decisionToDFA; + protected static final PredictionContextCache _sharedContextCache = + new PredictionContextCache(); + public static final int + T__0=1, T__1=2, T__2=3, T__3=4, AND=5, BETWEEN=6, FALSE=7, IN=8, IS=9, + NOT=10, NULL=11, OR=12, TRUE=13, EQ=14, NEQ=15, LT=16, LTE=17, GT=18, + GTE=19, MINUS=20, STRING=21, BIGINT_LITERAL=22, SMALLINT_LITERAL=23, TINYINT_LITERAL=24, + INTEGER_VALUE=25, DECIMAL_VALUE=26, DOUBLE_LITERAL=27, BIGDECIMAL_LITERAL=28, + IDENTIFIER=29, BACKQUOTED_IDENTIFIER=30, WS=31, UNRECOGNIZED=32; + public static final int + RULE_parseFilter = 0, RULE_booleanExpression = 1, RULE_predicate = 2, + RULE_primaryExpression = 3, RULE_constant = 4, RULE_identifier = 5, RULE_comparisonOperator = 6, + RULE_booleanValue = 7, RULE_number = 8; + public static final String[] ruleNames = { + "parseFilter", "booleanExpression", "predicate", "primaryExpression", + "constant", "identifier", "comparisonOperator", "booleanValue", "number" + }; + + private static final String[] _LITERAL_NAMES = { + null, "'('", "')'", "','", "'.'", "'AND'", "'BETWEEN'", "'FALSE'", "'IN'", + "'IS'", "'NOT'", "'NULL'", "'OR'", "'TRUE'", "'='", null, "'<'", "'<='", + "'>'", "'>='", "'-'" + }; + private static final String[] _SYMBOLIC_NAMES = { + null, null, null, null, null, "AND", "BETWEEN", "FALSE", "IN", "IS", "NOT", + "NULL", "OR", "TRUE", "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "MINUS", + "STRING", "BIGINT_LITERAL", "SMALLINT_LITERAL", "TINYINT_LITERAL", "INTEGER_VALUE", + "DECIMAL_VALUE", "DOUBLE_LITERAL", "BIGDECIMAL_LITERAL", "IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "WS", "UNRECOGNIZED" + }; + public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); + + /** + * @deprecated Use {@link #VOCABULARY} instead. + */ + @Deprecated + public static final String[] tokenNames; + static { + tokenNames = new String[_SYMBOLIC_NAMES.length]; + for (int i = 0; i < tokenNames.length; i++) { + tokenNames[i] = VOCABULARY.getLiteralName(i); + if (tokenNames[i] == null) { + tokenNames[i] = VOCABULARY.getSymbolicName(i); + } + + if (tokenNames[i] == null) { + tokenNames[i] = "<INVALID>"; + } + } + } + + @Override + @Deprecated + public String[] getTokenNames() { + return tokenNames; + } + + @Override + + public Vocabulary getVocabulary() { + return VOCABULARY; + } + + @Override + public String getGrammarFileName() { return "Expression.g4"; } + + @Override + public String[] getRuleNames() { return ruleNames; } + + @Override + public String getSerializedATN() { return _serializedATN; } + + @Override + public ATN getATN() { return _ATN; } + + public ExpressionParser(TokenStream input) { + super(input); + _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); + } + public static class ParseFilterContext extends ParserRuleContext { + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public TerminalNode EOF() { return getToken(ExpressionParser.EOF, 0); } + public ParseFilterContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_parseFilter; } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitParseFilter(this); + else return visitor.visitChildren(this); + } + } + + public final ParseFilterContext parseFilter() throws RecognitionException { + ParseFilterContext _localctx = new ParseFilterContext(_ctx, getState()); + enterRule(_localctx, 0, RULE_parseFilter); + try { + enterOuterAlt(_localctx, 1); + { + setState(18); + booleanExpression(0); + setState(19); + match(EOF); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BooleanExpressionContext extends ParserRuleContext { + public BooleanExpressionContext left; + public Token operator; + public BooleanExpressionContext right; + public PredicateContext predicate() { + return getRuleContext(PredicateContext.class,0); + } + public List<BooleanExpressionContext> booleanExpression() { + return getRuleContexts(BooleanExpressionContext.class); + } + public BooleanExpressionContext booleanExpression(int i) { + return getRuleContext(BooleanExpressionContext.class,i); + } + public TerminalNode AND() { return getToken(ExpressionParser.AND, 0); } + public TerminalNode OR() { return getToken(ExpressionParser.OR, 0); } + public BooleanExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_booleanExpression; } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitBooleanExpression(this); + else return visitor.visitChildren(this); + } + } + + public final BooleanExpressionContext booleanExpression() throws RecognitionException { + return booleanExpression(0); + } + + private BooleanExpressionContext booleanExpression(int _p) throws RecognitionException { + ParserRuleContext _parentctx = _ctx; + int _parentState = getState(); + BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, _parentState); + BooleanExpressionContext _prevctx = _localctx; + int _startState = 2; + enterRecursionRule(_localctx, 2, RULE_booleanExpression, _p); + try { + int _alt; + enterOuterAlt(_localctx, 1); + { + setState(27); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) { + case 1: + { + setState(22); + predicate(); + } + break; + case 2: + { + setState(23); + match(T__0); + setState(24); + booleanExpression(0); + setState(25); + match(T__1); + } + break; + } + _ctx.stop = _input.LT(-1); + setState(37); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,2,_ctx); + while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( _parseListeners!=null ) triggerExitRuleEvent(); + _prevctx = _localctx; + { + setState(35); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) { + case 1: + { + _localctx = new BooleanExpressionContext(_parentctx, _parentState); + _localctx.left = _prevctx; + _localctx.left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(29); + if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); + setState(30); + ((BooleanExpressionContext)_localctx).operator = match(AND); + setState(31); + ((BooleanExpressionContext)_localctx).right = booleanExpression(4); + } + break; + case 2: + { + _localctx = new BooleanExpressionContext(_parentctx, _parentState); + _localctx.left = _prevctx; + _localctx.left = _prevctx; + pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); + setState(32); + if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); + setState(33); + ((BooleanExpressionContext)_localctx).operator = match(OR); + setState(34); + ((BooleanExpressionContext)_localctx).right = booleanExpression(3); + } + break; + } + } + } + setState(39); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,2,_ctx); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + unrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public static class PredicateContext extends ParserRuleContext { + public PrimaryExpressionContext left; + public PrimaryExpressionContext right; + public PrimaryExpressionContext lower; + public PrimaryExpressionContext upper; + public ComparisonOperatorContext comparisonOperator() { + return getRuleContext(ComparisonOperatorContext.class,0); + } + public List<PrimaryExpressionContext> primaryExpression() { + return getRuleContexts(PrimaryExpressionContext.class); + } + public PrimaryExpressionContext primaryExpression(int i) { + return getRuleContext(PrimaryExpressionContext.class,i); + } + public TerminalNode BETWEEN() { return getToken(ExpressionParser.BETWEEN, 0); } + public TerminalNode AND() { return getToken(ExpressionParser.AND, 0); } + public TerminalNode NOT() { return getToken(ExpressionParser.NOT, 0); } + public TerminalNode IN() { return getToken(ExpressionParser.IN, 0); } + public TerminalNode IS() { return getToken(ExpressionParser.IS, 0); } + public TerminalNode NULL() { return getToken(ExpressionParser.NULL, 0); } + public PredicateContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_predicate; } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitPredicate(this); + else return visitor.visitChildren(this); + } + } + + public final PredicateContext predicate() throws RecognitionException { + PredicateContext _localctx = new PredicateContext(_ctx, getState()); + enterRule(_localctx, 4, RULE_predicate); + int _la; + try { + setState(76); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { + case 1: + enterOuterAlt(_localctx, 1); + { + setState(40); + ((PredicateContext)_localctx).left = primaryExpression(); + setState(41); + comparisonOperator(); + setState(42); + ((PredicateContext)_localctx).right = primaryExpression(); + } + break; + case 2: + enterOuterAlt(_localctx, 2); + { + setState(44); + ((PredicateContext)_localctx).left = primaryExpression(); + setState(46); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(45); + match(NOT); + } + } + + setState(48); + match(BETWEEN); + setState(49); + ((PredicateContext)_localctx).lower = primaryExpression(); + setState(50); + match(AND); + setState(51); + ((PredicateContext)_localctx).upper = primaryExpression(); + } + break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(53); + ((PredicateContext)_localctx).left = primaryExpression(); + setState(55); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(54); + match(NOT); + } + } + + setState(57); + match(IN); + setState(58); + match(T__0); + setState(59); + primaryExpression(); + setState(64); + _errHandler.sync(this); + _la = _input.LA(1); + while (_la==T__2) { + { + { + setState(60); + match(T__2); + setState(61); + primaryExpression(); + } + } + setState(66); + _errHandler.sync(this); + _la = _input.LA(1); + } + setState(67); + match(T__1); + } + break; + case 4: + enterOuterAlt(_localctx, 4); + { + setState(69); + ((PredicateContext)_localctx).left = primaryExpression(); + setState(70); + match(IS); + setState(72); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==NOT) { + { + setState(71); + match(NOT); + } + } + + setState(74); + match(NULL); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class PrimaryExpressionContext extends ParserRuleContext { + public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_primaryExpression; } + + public PrimaryExpressionContext() { } + public void copyFrom(PrimaryExpressionContext ctx) { + super.copyFrom(ctx); + } + } + public static class DereferenceContext extends PrimaryExpressionContext { + public IdentifierContext base; + public IdentifierContext fieldName; + public List<IdentifierContext> identifier() { + return getRuleContexts(IdentifierContext.class); + } + public IdentifierContext identifier(int i) { + return getRuleContext(IdentifierContext.class,i); + } + public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitDereference(this); + else return visitor.visitChildren(this); + } + } + public static class ConstantDefaultContext extends PrimaryExpressionContext { + public ConstantContext constant() { + return getRuleContext(ConstantContext.class,0); + } + public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitConstantDefault(this); + else return visitor.visitChildren(this); + } + } + public static class ColumnReferenceContext extends PrimaryExpressionContext { + public IdentifierContext identifier() { + return getRuleContext(IdentifierContext.class,0); + } + public ColumnReferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitColumnReference(this); + else return visitor.visitChildren(this); + } + } + public static class ParenthesizedExpressionContext extends PrimaryExpressionContext { + public BooleanExpressionContext booleanExpression() { + return getRuleContext(BooleanExpressionContext.class,0); + } + public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitParenthesizedExpression(this); + else return visitor.visitChildren(this); + } + } + + public final PrimaryExpressionContext primaryExpression() throws RecognitionException { + PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState()); + enterRule(_localctx, 6, RULE_primaryExpression); + try { + setState(88); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) { + case 1: + _localctx = new ConstantDefaultContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(78); + constant(); + } + break; + case 2: + _localctx = new ColumnReferenceContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(79); + identifier(); + } + break; + case 3: + _localctx = new DereferenceContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(80); + ((DereferenceContext)_localctx).base = identifier(); + setState(81); + match(T__3); + setState(82); + ((DereferenceContext)_localctx).fieldName = identifier(); + } + break; + case 4: + _localctx = new ParenthesizedExpressionContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(84); + match(T__0); + setState(85); + booleanExpression(0); + setState(86); + match(T__1); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ConstantContext extends ParserRuleContext { + public ConstantContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_constant; } + + public ConstantContext() { } + public void copyFrom(ConstantContext ctx) { + super.copyFrom(ctx); + } + } + public static class NullLiteralContext extends ConstantContext { + public TerminalNode NULL() { return getToken(ExpressionParser.NULL, 0); } + public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitNullLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class StringLiteralContext extends ConstantContext { + public List<TerminalNode> STRING() { return getTokens(ExpressionParser.STRING); } + public TerminalNode STRING(int i) { + return getToken(ExpressionParser.STRING, i); + } + public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitStringLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class NumericLiteralContext extends ConstantContext { + public NumberContext number() { + return getRuleContext(NumberContext.class,0); + } + public NumericLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitNumericLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class BooleanLiteralContext extends ConstantContext { + public BooleanValueContext booleanValue() { + return getRuleContext(BooleanValueContext.class,0); + } + public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitBooleanLiteral(this); + else return visitor.visitChildren(this); + } + } + + public final ConstantContext constant() throws RecognitionException { + ConstantContext _localctx = new ConstantContext(_ctx, getState()); + enterRule(_localctx, 8, RULE_constant); + try { + int _alt; + setState(98); + _errHandler.sync(this); + switch (_input.LA(1)) { + case NULL: + _localctx = new NullLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(90); + match(NULL); + } + break; + case MINUS: + case BIGINT_LITERAL: + case SMALLINT_LITERAL: + case TINYINT_LITERAL: + case INTEGER_VALUE: + case DECIMAL_VALUE: + case DOUBLE_LITERAL: + case BIGDECIMAL_LITERAL: + _localctx = new NumericLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(91); + number(); + } + break; + case FALSE: + case TRUE: + _localctx = new BooleanLiteralContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(92); + booleanValue(); + } + break; + case STRING: + _localctx = new StringLiteralContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(94); + _errHandler.sync(this); + _alt = 1; + do { + switch (_alt) { + case 1: + { + { + setState(93); + match(STRING); + } + } + break; + default: + throw new NoViableAltException(this); + } + setState(96); + _errHandler.sync(this); + _alt = getInterpreter().adaptivePredict(_input,9,_ctx); + } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class IdentifierContext extends ParserRuleContext { + public IdentifierContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_identifier; } + + public IdentifierContext() { } + public void copyFrom(IdentifierContext ctx) { + super.copyFrom(ctx); + } + } + public static class BackQuotedIdentifierContext extends IdentifierContext { + public TerminalNode BACKQUOTED_IDENTIFIER() { return getToken(ExpressionParser.BACKQUOTED_IDENTIFIER, 0); } + public BackQuotedIdentifierContext(IdentifierContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitBackQuotedIdentifier(this); + else return visitor.visitChildren(this); + } + } + public static class UnquotedIdentifierContext extends IdentifierContext { + public TerminalNode IDENTIFIER() { return getToken(ExpressionParser.IDENTIFIER, 0); } + public UnquotedIdentifierContext(IdentifierContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitUnquotedIdentifier(this); + else return visitor.visitChildren(this); + } + } + + public final IdentifierContext identifier() throws RecognitionException { + IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); + enterRule(_localctx, 10, RULE_identifier); + try { + setState(102); + _errHandler.sync(this); + switch (_input.LA(1)) { + case IDENTIFIER: + _localctx = new UnquotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(100); + match(IDENTIFIER); + } + break; + case BACKQUOTED_IDENTIFIER: + _localctx = new BackQuotedIdentifierContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(101); + match(BACKQUOTED_IDENTIFIER); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class ComparisonOperatorContext extends ParserRuleContext { + public TerminalNode EQ() { return getToken(ExpressionParser.EQ, 0); } + public TerminalNode NEQ() { return getToken(ExpressionParser.NEQ, 0); } + public TerminalNode LT() { return getToken(ExpressionParser.LT, 0); } + public TerminalNode LTE() { return getToken(ExpressionParser.LTE, 0); } + public TerminalNode GT() { return getToken(ExpressionParser.GT, 0); } + public TerminalNode GTE() { return getToken(ExpressionParser.GTE, 0); } + public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_comparisonOperator; } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitComparisonOperator(this); + else return visitor.visitChildren(this); + } + } + + public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { + ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); + enterRule(_localctx, 12, RULE_comparisonOperator); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(104); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ) | (1L << NEQ) | (1L << LT) | (1L << LTE) | (1L << GT) | (1L << GTE))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class BooleanValueContext extends ParserRuleContext { + public TerminalNode TRUE() { return getToken(ExpressionParser.TRUE, 0); } + public TerminalNode FALSE() { return getToken(ExpressionParser.FALSE, 0); } + public BooleanValueContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_booleanValue; } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitBooleanValue(this); + else return visitor.visitChildren(this); + } + } + + public final BooleanValueContext booleanValue() throws RecognitionException { + BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); + enterRule(_localctx, 14, RULE_booleanValue); + int _la; + try { + enterOuterAlt(_localctx, 1); + { + setState(106); + _la = _input.LA(1); + if ( !(_la==FALSE || _la==TRUE) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public static class NumberContext extends ParserRuleContext { + public NumberContext(ParserRuleContext parent, int invokingState) { + super(parent, invokingState); + } + @Override public int getRuleIndex() { return RULE_number; } + + public NumberContext() { } + public void copyFrom(NumberContext ctx) { + super.copyFrom(ctx); + } + } + public static class DecimalLiteralContext extends NumberContext { + public TerminalNode DECIMAL_VALUE() { return getToken(ExpressionParser.DECIMAL_VALUE, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public DecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitDecimalLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class BigIntLiteralContext extends NumberContext { + public TerminalNode BIGINT_LITERAL() { return getToken(ExpressionParser.BIGINT_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public BigIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitBigIntLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class TinyIntLiteralContext extends NumberContext { + public TerminalNode TINYINT_LITERAL() { return getToken(ExpressionParser.TINYINT_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public TinyIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitTinyIntLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class BigDecimalLiteralContext extends NumberContext { + public TerminalNode BIGDECIMAL_LITERAL() { return getToken(ExpressionParser.BIGDECIMAL_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public BigDecimalLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitBigDecimalLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class DoubleLiteralContext extends NumberContext { + public TerminalNode DOUBLE_LITERAL() { return getToken(ExpressionParser.DOUBLE_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public DoubleLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitDoubleLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class IntegerLiteralContext extends NumberContext { + public TerminalNode INTEGER_VALUE() { return getToken(ExpressionParser.INTEGER_VALUE, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public IntegerLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitIntegerLiteral(this); + else return visitor.visitChildren(this); + } + } + public static class SmallIntLiteralContext extends NumberContext { + public TerminalNode SMALLINT_LITERAL() { return getToken(ExpressionParser.SMALLINT_LITERAL, 0); } + public TerminalNode MINUS() { return getToken(ExpressionParser.MINUS, 0); } + public SmallIntLiteralContext(NumberContext ctx) { copyFrom(ctx); } + @Override + public <T> T accept(ParseTreeVisitor<? extends T> visitor) { + if ( visitor instanceof ExpressionVisitor ) return ((ExpressionVisitor<? extends T>)visitor).visitSmallIntLiteral(this); + else return visitor.visitChildren(this); + } + } + + public final NumberContext number() throws RecognitionException { + NumberContext _localctx = new NumberContext(_ctx, getState()); + enterRule(_localctx, 16, RULE_number); + int _la; + try { + setState(136); + _errHandler.sync(this); + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { + case 1: + _localctx = new DecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 1); + { + setState(109); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(108); + match(MINUS); + } + } + + setState(111); + match(DECIMAL_VALUE); + } + break; + case 2: + _localctx = new IntegerLiteralContext(_localctx); + enterOuterAlt(_localctx, 2); + { + setState(113); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(112); + match(MINUS); + } + } + + setState(115); + match(INTEGER_VALUE); + } + break; + case 3: + _localctx = new BigIntLiteralContext(_localctx); + enterOuterAlt(_localctx, 3); + { + setState(117); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(116); + match(MINUS); + } + } + + setState(119); + match(BIGINT_LITERAL); + } + break; + case 4: + _localctx = new SmallIntLiteralContext(_localctx); + enterOuterAlt(_localctx, 4); + { + setState(121); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(120); + match(MINUS); + } + } + + setState(123); + match(SMALLINT_LITERAL); + } + break; + case 5: + _localctx = new TinyIntLiteralContext(_localctx); + enterOuterAlt(_localctx, 5); + { + setState(125); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(124); + match(MINUS); + } + } + + setState(127); + match(TINYINT_LITERAL); + } + break; + case 6: + _localctx = new DoubleLiteralContext(_localctx); + enterOuterAlt(_localctx, 6); + { + setState(129); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(128); + match(MINUS); + } + } + + setState(131); + match(DOUBLE_LITERAL); + } + break; + case 7: + _localctx = new BigDecimalLiteralContext(_localctx); + enterOuterAlt(_localctx, 7); + { + setState(133); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==MINUS) { + { + setState(132); + match(MINUS); + } + } + + setState(135); + match(BIGDECIMAL_LITERAL); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + _errHandler.reportError(this, re); + _errHandler.recover(this, re); + } + finally { + exitRule(); + } + return _localctx; + } + + public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 1: + return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); + } + return true; + } + private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { + switch (predIndex) { + case 0: + return precpred(_ctx, 3); + case 1: + return precpred(_ctx, 2); + } + return true; + } + + public static final String _serializedATN = + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\"\u008d\4\2\t\2\4"+ + "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\3\2\3\2"+ + "\3\2\3\3\3\3\3\3\3\3\3\3\3\3\5\3\36\n\3\3\3\3\3\3\3\3\3\3\3\3\3\7\3&\n"+ + "\3\f\3\16\3)\13\3\3\4\3\4\3\4\3\4\3\4\3\4\5\4\61\n\4\3\4\3\4\3\4\3\4\3"+ + "\4\3\4\3\4\5\4:\n\4\3\4\3\4\3\4\3\4\3\4\7\4A\n\4\f\4\16\4D\13\4\3\4\3"+ + "\4\3\4\3\4\3\4\5\4K\n\4\3\4\3\4\5\4O\n\4\3\5\3\5\3\5\3\5\3\5\3\5\3\5\3"+ + "\5\3\5\3\5\5\5[\n\5\3\6\3\6\3\6\3\6\6\6a\n\6\r\6\16\6b\5\6e\n\6\3\7\3"+ + "\7\5\7i\n\7\3\b\3\b\3\t\3\t\3\n\5\np\n\n\3\n\3\n\5\nt\n\n\3\n\3\n\5\n"+ + "x\n\n\3\n\3\n\5\n|\n\n\3\n\3\n\5\n\u0080\n\n\3\n\3\n\5\n\u0084\n\n\3\n"+ + "\3\n\5\n\u0088\n\n\3\n\5\n\u008b\n\n\3\n\2\3\4\13\2\4\6\b\n\f\16\20\22"+ + "\2\4\3\2\20\25\4\2\t\t\17\17\2\u00a2\2\24\3\2\2\2\4\35\3\2\2\2\6N\3\2"+ + "\2\2\bZ\3\2\2\2\nd\3\2\2\2\fh\3\2\2\2\16j\3\2\2\2\20l\3\2\2\2\22\u008a"+ + "\3\2\2\2\24\25\5\4\3\2\25\26\7\2\2\3\26\3\3\2\2\2\27\30\b\3\1\2\30\36"+ + "\5\6\4\2\31\32\7\3\2\2\32\33\5\4\3\2\33\34\7\4\2\2\34\36\3\2\2\2\35\27"+ + "\3\2\2\2\35\31\3\2\2\2\36\'\3\2\2\2\37 \f\5\2\2 !\7\7\2\2!&\5\4\3\6\""+ + "#\f\4\2\2#$\7\16\2\2$&\5\4\3\5%\37\3\2\2\2%\"\3\2\2\2&)\3\2\2\2\'%\3\2"+ + "\2\2\'(\3\2\2\2(\5\3\2\2\2)\'\3\2\2\2*+\5\b\5\2+,\5\16\b\2,-\5\b\5\2-"+ + "O\3\2\2\2.\60\5\b\5\2/\61\7\f\2\2\60/\3\2\2\2\60\61\3\2\2\2\61\62\3\2"+ + "\2\2\62\63\7\b\2\2\63\64\5\b\5\2\64\65\7\7\2\2\65\66\5\b\5\2\66O\3\2\2"+ + "\2\679\5\b\5\28:\7\f\2\298\3\2\2\29:\3\2\2\2:;\3\2\2\2;<\7\n\2\2<=\7\3"+ + "\2\2=B\5\b\5\2>?\7\5\2\2?A\5\b\5\2@>\3\2\2\2AD\3\2\2\2B@\3\2\2\2BC\3\2"+ + "\2\2CE\3\2\2\2DB\3\2\2\2EF\7\4\2\2FO\3\2\2\2GH\5\b\5\2HJ\7\13\2\2IK\7"+ + "\f\2\2JI\3\2\2\2JK\3\2\2\2KL\3\2\2\2LM\7\r\2\2MO\3\2\2\2N*\3\2\2\2N.\3"+ + "\2\2\2N\67\3\2\2\2NG\3\2\2\2O\7\3\2\2\2P[\5\n\6\2Q[\5\f\7\2RS\5\f\7\2"+ + "ST\7\6\2\2TU\5\f\7\2U[\3\2\2\2VW\7\3\2\2WX\5\4\3\2XY\7\4\2\2Y[\3\2\2\2"+ + "ZP\3\2\2\2ZQ\3\2\2\2ZR\3\2\2\2ZV\3\2\2\2[\t\3\2\2\2\\e\7\r\2\2]e\5\22"+ + "\n\2^e\5\20\t\2_a\7\27\2\2`_\3\2\2\2ab\3\2\2\2b`\3\2\2\2bc\3\2\2\2ce\3"+ + "\2\2\2d\\\3\2\2\2d]\3\2\2\2d^\3\2\2\2d`\3\2\2\2e\13\3\2\2\2fi\7\37\2\2"+ + "gi\7 \2\2hf\3\2\2\2hg\3\2\2\2i\r\3\2\2\2jk\t\2\2\2k\17\3\2\2\2lm\t\3\2"+ + "\2m\21\3\2\2\2np\7\26\2\2on\3\2\2\2op\3\2\2\2pq\3\2\2\2q\u008b\7\34\2"+ + "\2rt\7\26\2\2sr\3\2\2\2st\3\2\2\2tu\3\2\2\2u\u008b\7\33\2\2vx\7\26\2\2"+ + "wv\3\2\2\2wx\3\2\2\2xy\3\2\2\2y\u008b\7\30\2\2z|\7\26\2\2{z\3\2\2\2{|"+ + "\3\2\2\2|}\3\2\2\2}\u008b\7\31\2\2~\u0080\7\26\2\2\177~\3\2\2\2\177\u0080"+ + "\3\2\2\2\u0080\u0081\3\2\2\2\u0081\u008b\7\32\2\2\u0082\u0084\7\26\2\2"+ + "\u0083\u0082\3\2\2\2\u0083\u0084\3\2\2\2\u0084\u0085\3\2\2\2\u0085\u008b"+ + "\7\35\2\2\u0086\u0088\7\26\2\2\u0087\u0086\3\2\2\2\u0087\u0088\3\2\2\2"+ + "\u0088\u0089\3\2\2\2\u0089\u008b\7\36\2\2\u008ao\3\2\2\2\u008as\3\2\2"+ + "\2\u008aw\3\2\2\2\u008a{\3\2\2\2\u008a\177\3\2\2\2\u008a\u0083\3\2\2\2"+ + "\u008a\u0087\3\2\2\2\u008b\23\3\2\2\2\26\35%\'\609BJNZbdhosw{\177\u0083"+ + "\u0087\u008a"; + public static final ATN _ATN = + new ATNDeserializer().deserialize(_serializedATN.toCharArray()); + static { + _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; + for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { + _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionVisitor.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionVisitor.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionVisitor.java new file mode 100644 index 0000000..1c21781 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/antlr/gen/ExpressionVisitor.java @@ -0,0 +1,162 @@ +// Generated from /home/david/Documents/code/carbondata/store/horizon/src/main/anltr/Expression.g4 by ANTLR 4.7 +package org.apache.carbondata.horizon.antlr.gen; +import org.antlr.v4.runtime.tree.ParseTreeVisitor; + +/** + * This interface defines a complete generic visitor for a parse tree produced + * by {@link ExpressionParser}. + * + * @param <T> The return type of the visit operation. Use {@link Void} for + * operations with no return type. + */ +public interface ExpressionVisitor<T> extends ParseTreeVisitor<T> { + /** + * Visit a parse tree produced by {@link ExpressionParser#parseFilter}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParseFilter(ExpressionParser.ParseFilterContext ctx); + /** + * Visit a parse tree produced by {@link ExpressionParser#booleanExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBooleanExpression(ExpressionParser.BooleanExpressionContext ctx); + /** + * Visit a parse tree produced by {@link ExpressionParser#predicate}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitPredicate(ExpressionParser.PredicateContext ctx); + /** + * Visit a parse tree produced by the {@code constantDefault} + * labeled alternative in {@link ExpressionParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitConstantDefault(ExpressionParser.ConstantDefaultContext ctx); + /** + * Visit a parse tree produced by the {@code columnReference} + * labeled alternative in {@link ExpressionParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitColumnReference(ExpressionParser.ColumnReferenceContext ctx); + /** + * Visit a parse tree produced by the {@code dereference} + * labeled alternative in {@link ExpressionParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDereference(ExpressionParser.DereferenceContext ctx); + /** + * Visit a parse tree produced by the {@code parenthesizedExpression} + * labeled alternative in {@link ExpressionParser#primaryExpression}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitParenthesizedExpression(ExpressionParser.ParenthesizedExpressionContext ctx); + /** + * Visit a parse tree produced by the {@code nullLiteral} + * labeled alternative in {@link ExpressionParser#constant}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNullLiteral(ExpressionParser.NullLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code numericLiteral} + * labeled alternative in {@link ExpressionParser#constant}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitNumericLiteral(ExpressionParser.NumericLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code booleanLiteral} + * labeled alternative in {@link ExpressionParser#constant}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBooleanLiteral(ExpressionParser.BooleanLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code stringLiteral} + * labeled alternative in {@link ExpressionParser#constant}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitStringLiteral(ExpressionParser.StringLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code unquotedIdentifier} + * labeled alternative in {@link ExpressionParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitUnquotedIdentifier(ExpressionParser.UnquotedIdentifierContext ctx); + /** + * Visit a parse tree produced by the {@code backQuotedIdentifier} + * labeled alternative in {@link ExpressionParser#identifier}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBackQuotedIdentifier(ExpressionParser.BackQuotedIdentifierContext ctx); + /** + * Visit a parse tree produced by {@link ExpressionParser#comparisonOperator}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitComparisonOperator(ExpressionParser.ComparisonOperatorContext ctx); + /** + * Visit a parse tree produced by {@link ExpressionParser#booleanValue}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBooleanValue(ExpressionParser.BooleanValueContext ctx); + /** + * Visit a parse tree produced by the {@code decimalLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDecimalLiteral(ExpressionParser.DecimalLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code integerLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitIntegerLiteral(ExpressionParser.IntegerLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code bigIntLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBigIntLiteral(ExpressionParser.BigIntLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code smallIntLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitSmallIntLiteral(ExpressionParser.SmallIntLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code tinyIntLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitTinyIntLiteral(ExpressionParser.TinyIntLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code doubleLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitDoubleLiteral(ExpressionParser.DoubleLiteralContext ctx); + /** + * Visit a parse tree produced by the {@code bigDecimalLiteral} + * labeled alternative in {@link ExpressionParser#number}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitBigDecimalLiteral(ExpressionParser.BigDecimalLiteralContext ctx); +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/Horizon.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/Horizon.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/Horizon.java new file mode 100644 index 0000000..1f6f485 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/Horizon.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.controller; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; + +@SpringBootApplication +public class Horizon { + + private static ConfigurableApplicationContext context; + + public static void main(String[] args) { + context = SpringApplication.run(Horizon.class, args); + } + + public static void close() { + SpringApplication.exit(context); + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/HorizonController.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/HorizonController.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/HorizonController.java new file mode 100644 index 0000000..2089c1a --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/controller/HorizonController.java @@ -0,0 +1,92 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.carbondata.horizon.rest.controller; + +import java.util.UUID; + +import org.apache.carbondata.common.logging.LogService; +import org.apache.carbondata.common.logging.LogServiceFactory; +import org.apache.carbondata.core.datastore.row.CarbonRow; +import org.apache.carbondata.horizon.rest.model.descriptor.LoadDescriptor; +import org.apache.carbondata.horizon.rest.model.descriptor.SelectDescriptor; +import org.apache.carbondata.horizon.rest.model.descriptor.TableDescriptor; +import org.apache.carbondata.horizon.rest.model.validate.RequestValidator; +import org.apache.carbondata.horizon.rest.model.view.CreateTableRequest; +import org.apache.carbondata.horizon.rest.model.view.LoadRequest; +import org.apache.carbondata.horizon.rest.model.view.SelectRequest; +import org.apache.carbondata.horizon.rest.model.view.SelectResponse; +import org.apache.carbondata.horizon.rest.service.HorizonService; +import org.apache.carbondata.store.exception.StoreException; + +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HorizonController { + + private static LogService LOGGER = + LogServiceFactory.getLogService(HorizonController.class.getName()); + + private HorizonService service; + + public HorizonController() { + service = HorizonService.getInstance(); + } + + @RequestMapping(value = "/table/create", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<String> createTable( + @RequestBody CreateTableRequest request) throws StoreException { + RequestValidator.validateTable(request); + TableDescriptor tableDescriptor = request.convertToDto(); + boolean result = service.createTable(tableDescriptor); + return new ResponseEntity<>(String.valueOf(result), HttpStatus.OK); + } + + @RequestMapping(value = "/table/load", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<String> load(@RequestBody LoadRequest request) throws StoreException { + RequestValidator.validateLoad(request); + LoadDescriptor loadDescriptor = request.convertToDto(); + boolean result = service.loadData(loadDescriptor); + return new ResponseEntity<>(String.valueOf(result), HttpStatus.OK); + } + + + @RequestMapping(value = "/table/select", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<SelectResponse> select(@RequestBody SelectRequest request) + throws StoreException { + long start = System.currentTimeMillis(); + RequestValidator.validateSelect(request); + SelectDescriptor selectDescriptor = request.convertToDto(); + selectDescriptor.setId(UUID.randomUUID().toString()); + CarbonRow[] result = service.select(selectDescriptor); + Object[][] newResult = new Object[result.length][]; + for (int i = newResult.length - 1; i >= 0; i--) { + newResult[i] = result[i].getData(); + } + long end = System.currentTimeMillis(); + LOGGER.audit("[" + selectDescriptor.getId() + "] HorizonController select " + + request.getDatabaseName() + "." + request.getTableName() + + ", take time: " + (end - start) + " ms"); + return new ResponseEntity<>( + new SelectResponse(selectDescriptor.getId(), newResult), HttpStatus.OK); + } + +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/LoadDescriptor.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/LoadDescriptor.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/LoadDescriptor.java new file mode 100644 index 0000000..ec2c0f4 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/LoadDescriptor.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.model.descriptor; + +import java.util.Map; + +public class LoadDescriptor { + + private String databaseName; + private String tableName; + private String inputPath; + private Map<String, String> options; + private boolean isOverwrite; + + public LoadDescriptor() { + } + + public LoadDescriptor(String databaseName, String tableName, String inputPaths, + Map<String, String> options, boolean isOverwrite) { + this.databaseName = databaseName; + this.tableName = tableName; + this.inputPath = inputPaths; + this.options = options; + this.isOverwrite = isOverwrite; + } + + public String getDatabaseName() { + return databaseName; + } + + public void setDatabaseName(String databaseName) { + this.databaseName = databaseName; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getInputPath() { + return inputPath; + } + + public void setInputPath(String inputPath) { + this.inputPath = inputPath; + } + + public Map<String, String> getOptions() { + return options; + } + + public void setOptions(Map<String, String> options) { + this.options = options; + } + + public boolean isOverwrite() { + return isOverwrite; + } + + public void setOverwrite(boolean overwrite) { + isOverwrite = overwrite; + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/SelectDescriptor.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/SelectDescriptor.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/SelectDescriptor.java new file mode 100644 index 0000000..e10dc84 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/SelectDescriptor.java @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.model.descriptor; + +public class SelectDescriptor { + + private String id; + private String databaseName; + private String tableName; + private String[] projection; + private String filter; + private int limit; + + public SelectDescriptor() { + } + + public SelectDescriptor(String databaseName, String tableName, String[] projection, String filter, + int limit) { + this.databaseName = databaseName; + this.tableName = tableName; + this.projection = projection; + this.filter = filter; + this.limit = limit; + } + + public String getDatabaseName() { + return databaseName; + } + + public void setDatabaseName(String databaseName) { + this.databaseName = databaseName; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String[] getProjection() { + return projection; + } + + public void setProjection(String[] projection) { + this.projection = projection; + } + + public String getFilter() { + return filter; + } + + public void setFilter(String filter) { + this.filter = filter; + } + + public int getLimit() { + return limit; + } + + public void setLimit(int limit) { + this.limit = limit; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/TableDescriptor.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/TableDescriptor.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/TableDescriptor.java new file mode 100644 index 0000000..db1ce98 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/descriptor/TableDescriptor.java @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.model.descriptor; + +import java.util.Map; + +import org.apache.carbondata.sdk.file.Schema; + +public class TableDescriptor { + + private boolean ifNotExists; + private String database; + private String name; + private Schema schema; + private Map<String, String> properties; + private String comment; + + public TableDescriptor(boolean ifNotExists, String database, String name, Schema schema, + Map<String, String> properties, String comment) { + this.ifNotExists = ifNotExists; + this.database = database; + this.name = name; + this.schema = schema; + this.properties = properties; + this.comment = comment; + } + + public boolean isIfNotExists() { + return ifNotExists; + } + + public void setIfNotExists(boolean ifNotExists) { + this.ifNotExists = ifNotExists; + } + + public String getDatabase() { + return database; + } + + public void setDatabase(String database) { + this.database = database; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Schema getSchema() { + return schema; + } + + public void setSchema(Schema schema) { + this.schema = schema; + } + + public Map<String, String> getProperties() { + return properties; + } + + public void setProperties(Map<String, String> properties) { + this.properties = properties; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/validate/RequestValidator.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/validate/RequestValidator.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/validate/RequestValidator.java new file mode 100644 index 0000000..de82860 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/validate/RequestValidator.java @@ -0,0 +1,70 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.model.validate; + +import org.apache.carbondata.horizon.rest.model.view.CreateTableRequest; +import org.apache.carbondata.horizon.rest.model.view.LoadRequest; +import org.apache.carbondata.horizon.rest.model.view.SelectRequest; +import org.apache.carbondata.store.exception.StoreException; + +import org.apache.commons.lang.StringUtils; + +public class RequestValidator { + + public static void validateSelect(SelectRequest request) throws StoreException { + if (request == null) { + throw new StoreException("Select should not be null"); + } + if (StringUtils.isEmpty(request.getDatabaseName())) { + throw new StoreException("database name is invalid"); + } + if (StringUtils.isEmpty(request.getTableName())) { + throw new StoreException("table name is invalid"); + } + } + + public static void validateTable(CreateTableRequest request) throws StoreException { + if (request == null) { + throw new StoreException("TableDescriptor should not be null"); + } + if (StringUtils.isEmpty(request.getDatabaseName())) { + throw new StoreException("database name is invalid"); + } + if (StringUtils.isEmpty(request.getTableName())) { + throw new StoreException("table name is invalid"); + } + if (request.getFields() == null || request.getFields().length == 0) { + throw new StoreException("fields should not be empty"); + } + } + + public static void validateLoad(LoadRequest request) throws StoreException { + if (request == null) { + throw new StoreException("LoadDescriptor should not be null"); + } + if (StringUtils.isEmpty(request.getDatabaseName())) { + throw new StoreException("database name is invalid"); + } + if (StringUtils.isEmpty(request.getTableName())) { + throw new StoreException("table name is invalid"); + } + if (StringUtils.isEmpty(request.getInputPath())) { + throw new StoreException("input path is invalid"); + } + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/CreateTableRequest.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/CreateTableRequest.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/CreateTableRequest.java new file mode 100644 index 0000000..9c81bf0 --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/CreateTableRequest.java @@ -0,0 +1,174 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.model.view; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.carbondata.horizon.rest.model.descriptor.TableDescriptor; +import org.apache.carbondata.sdk.file.Field; +import org.apache.carbondata.sdk.file.Schema; + +public class CreateTableRequest { + + private boolean ifNotExists; + private String databaseName; + private String tableName; + private FieldRequest[] fields; + private Map<String, String> properties; + private String comment; + + public CreateTableRequest() { + + } + + public CreateTableRequest(boolean ifNotExists, String databaseName, String tableName, + FieldRequest[] fields, Map<String, String> properties, String comment) { + this.databaseName = databaseName; + this.tableName = tableName; + this.ifNotExists = ifNotExists; + this.fields = fields; + this.properties = properties; + this.comment = comment; + } + + public boolean isIfNotExists() { + return ifNotExists; + } + + public void setIfNotExists(boolean ifNotExists) { + this.ifNotExists = ifNotExists; + } + + public String getDatabaseName() { + return databaseName; + } + + public void setDatabaseName(String databaseName) { + this.databaseName = databaseName; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public FieldRequest[] getFields() { + return fields; + } + + public void setFields(FieldRequest[] fields) { + this.fields = fields; + } + + public Map<String, String> getProperties() { + return properties; + } + + public void setProperties(Map<String, String> properties) { + this.properties = properties; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public TableDescriptor convertToDto() { + Field[] schemaFields = new Field[fields.length]; + Schema schema = new Schema(schemaFields); + for (int i = 0; i < fields.length; i++) { + schemaFields[i] = fields[i].convertToDto(); + schemaFields[i].setSchemaOrdinal(i); + } + return new TableDescriptor(ifNotExists, databaseName, tableName, schema, properties, comment); + } + + public static class Builder { + + private CreateTableRequest table; + private List<FieldRequest> fields; + private Map<String, String> tblProperties; + + private Builder() { + table = new CreateTableRequest(); + fields = new ArrayList<>(); + tblProperties = new HashMap<>(); + } + + public Builder ifNotExists() { + table.setIfNotExists(true); + return this; + } + + public Builder databaseName(String databaseName) { + table.setDatabaseName(databaseName); + return this; + } + + public Builder tableName(String tableName) { + table.setTableName(tableName); + return this; + } + + public Builder comment(String comment) { + table.setComment(comment); + return this; + } + + public Builder column(String name, String dataType) { + fields.add(new FieldRequest(name, dataType)); + return this; + } + + public Builder column(String name, String dataType, String comment) { + fields.add(new FieldRequest(name, dataType, comment)); + return this; + } + + public Builder column(String name, String dataType, int precision, int scale, String comment) { + fields.add(new FieldRequest(name, dataType, precision, scale, comment)); + return this; + } + + public Builder tblProperties(String key, String value) { + tblProperties.put(key, value); + return this; + } + + public CreateTableRequest create() { + FieldRequest[] fieldArray = new FieldRequest[fields.size()]; + fieldArray = fields.toArray(fieldArray); + table.setFields(fieldArray); + table.setProperties(tblProperties); + return table; + } + } + + public static Builder builder() { + return new Builder(); + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/4437920a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/FieldRequest.java ---------------------------------------------------------------------- diff --git a/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/FieldRequest.java b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/FieldRequest.java new file mode 100644 index 0000000..b809d9e --- /dev/null +++ b/store/horizon/src/main/java/org/apache/carbondata/horizon/rest/model/view/FieldRequest.java @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.carbondata.horizon.rest.model.view; + +import java.util.LinkedList; + +import org.apache.carbondata.core.metadata.datatype.StructField; +import org.apache.carbondata.core.util.DataTypeUtil; +import org.apache.carbondata.sdk.file.Field; + +public class FieldRequest { + + private String name; + private String dataType; + private int precision; + private int scale; + private String comment; + + public FieldRequest() { + + } + + public FieldRequest(String name, String dataType) { + this.name = name; + this.dataType = dataType; + } + + public FieldRequest(String name, String dataType, String comment) { + this.name = name; + this.dataType = dataType; + this.comment = comment; + } + + public FieldRequest(String name, String dataType, int precision, int scale, String comment) { + this.name = name; + this.dataType = dataType; + this.precision = precision; + this.scale = scale; + this.comment = comment; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public int getPrecision() { + return precision; + } + + public void setPrecision(int precision) { + this.precision = precision; + } + + public int getScale() { + return scale; + } + + public void setScale(int scale) { + this.scale = scale; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public Field convertToDto() { + if (dataType.equalsIgnoreCase("char") || + dataType.equalsIgnoreCase("varchar") || + dataType.matches("(varchar)\\(\\d+\\)") || + dataType.matches("(char)\\(\\d+\\)")) { + dataType = "string"; + } else if (dataType.equalsIgnoreCase("float")) { + dataType = "double"; + } + + Field field = new Field(name, DataTypeUtil.valueOf(dataType)); + field.setPrecision(precision); + field.setScale(scale); + field.setColumnComment(comment); + field.setChildren(new LinkedList<StructField>()); + return field; + } +}
