@@ -31,108 +31,74 @@ private PushdownSqlParser(final List<TableMetadata> involvedTablesMetadata) {
3131 public SqlNode parseExpression (final JsonObject expression ) {
3232 final String typeName = expression .getString ("type" , "" );
3333 final SqlNodeType type = fromTypeName (typeName );
34- final SqlNode sqlNode ;
3534 switch (type ) {
3635 case SELECT :
37- sqlNode = parseSelect (expression );
38- break ;
36+ return parseSelect (expression );
3937 case TABLE :
40- sqlNode = parseTable (expression );
41- break ;
38+ return parseTable (expression );
4239 case JOIN :
43- sqlNode = parseJoin (expression );
44- break ;
40+ return parseJoin (expression );
4541 case COLUMN :
46- sqlNode = parseColumn (expression );
47- break ;
42+ return parseColumn (expression );
4843 case LITERAL_NULL :
49- sqlNode = parseLiteralNull ();
50- break ;
44+ return parseLiteralNull ();
5145 case LITERAL_BOOL :
52- sqlNode = parseLiteralBool (expression );
53- break ;
46+ return parseLiteralBool (expression );
5447 case LITERAL_DATE :
55- sqlNode = parseLiteralDate (expression );
56- break ;
48+ return parseLiteralDate (expression );
5749 case LITERAL_TIMESTAMP :
58- sqlNode = parseLiteralTimestamp (expression );
59- break ;
50+ return parseLiteralTimestamp (expression );
6051 case LITERAL_TIMESTAMPUTC :
61- sqlNode = parseLiteralTimestamputc (expression );
62- break ;
52+ return parseLiteralTimestamputc (expression );
6353 case LITERAL_DOUBLE :
64- sqlNode = parseLiteralDouble (expression );
65- break ;
54+ return parseLiteralDouble (expression );
6655 case LITERAL_EXACTNUMERIC :
67- sqlNode = parseLiteralExactNumeric (expression );
68- break ;
56+ return parseLiteralExactNumeric (expression );
6957 case LITERAL_STRING :
70- sqlNode = parseLiteralString (expression );
71- break ;
58+ return parseLiteralString (expression );
7259 case LITERAL_INTERVAL :
73- sqlNode = parseLiteralInterval (expression );
74- break ;
60+ return parseLiteralInterval (expression );
7561 case PREDICATE_AND :
76- sqlNode = parsePredicateAnd (expression );
77- break ;
62+ return parsePredicateAnd (expression );
7863 case PREDICATE_OR :
79- sqlNode = parsePredicateOr (expression );
80- break ;
64+ return parsePredicateOr (expression );
8165 case PREDICATE_NOT :
82- sqlNode = parsePredicateNot (expression );
83- break ;
66+ return parsePredicateNot (expression );
8467 case PREDICATE_EQUAL :
85- sqlNode = parsePredicateEqual (expression );
86- break ;
68+ return parsePredicateEqual (expression );
8769 case PREDICATE_NOTEQUAL :
88- sqlNode = parsePredicateNotEqual (expression );
89- break ;
70+ return parsePredicateNotEqual (expression );
9071 case PREDICATE_LESS :
91- sqlNode = parsePredicateLess (expression );
92- break ;
72+ return parsePredicateLess (expression );
9373 case PREDICATE_LESSEQUAL :
94- sqlNode = parsePredicateLessEqual (expression );
95- break ;
74+ return parsePredicateLessEqual (expression );
9675 case PREDICATE_LIKE :
97- sqlNode = parsePredicateLike (expression );
98- break ;
76+ return parsePredicateLike (expression );
9977 case PREDICATE_LIKE_REGEXP :
100- sqlNode = parsePredicateLikeRegexp (expression );
101- break ;
78+ return parsePredicateLikeRegexp (expression );
10279 case PREDICATE_BETWEEN :
103- sqlNode = parsePredicateBetween (expression );
104- break ;
80+ return parsePredicateBetween (expression );
10581 case PREDICATE_IN_CONSTLIST :
106- sqlNode = parsePredicateInConstlist (expression );
107- break ;
82+ return parsePredicateInConstlist (expression );
10883 case PREDICATE_IS_NULL :
109- sqlNode = parsePredicateIsNull (expression );
110- break ;
84+ return parsePredicateIsNull (expression );
11185 case PREDICATE_IS_NOT_NULL :
112- sqlNode = parsePredicateIsNotNull (expression );
113- break ;
86+ return parsePredicateIsNotNull (expression );
11487 case FUNCTION_SCALAR :
115- sqlNode = parseFunctionScalar (expression );
116- break ;
88+ return parseFunctionScalar (expression );
11789 case FUNCTION_SCALAR_EXTRACT :
118- sqlNode = parseFunctionScalarExtract (expression );
119- break ;
90+ return parseFunctionScalarExtract (expression );
12091 case FUNCTION_SCALAR_CASE :
121- sqlNode = parseFunctionScalarCase (expression );
122- break ;
92+ return parseFunctionScalarCase (expression );
12393 case FUNCTION_SCALAR_CAST :
124- sqlNode = parseFunctionScalarCast (expression );
125- break ;
94+ return parseFunctionScalarCast (expression );
12695 case FUNCTION_AGGREGATE :
127- sqlNode = parseFunctionAggregate (expression );
128- break ;
96+ return parseFunctionAggregate (expression );
12997 case FUNCTION_AGGREGATE_GROUP_CONCAT :
130- sqlNode = parseFunctionAggregateGroupConcat (expression );
131- break ;
98+ return parseFunctionAggregateGroupConcat (expression );
13299 default :
133100 throw new IllegalArgumentException ("Unknown node type: " + typeName );
134101 }
135- return sqlNode ;
136102 }
137103
138104 private SqlStatementSelect parseSelect (final JsonObject select ) {
@@ -335,60 +301,50 @@ private SqlNode parseLiteralInterval(final JsonObject expression) {
335301
336302 private DataType getDataType (final JsonObject dataType ) {
337303 final String typeName = dataType .getString ("type" ).toUpperCase ();
338- final DataType type ;
339304 switch (typeName ) {
340305 case "DECIMAL" :
341- type = DataType .createDecimal (dataType .getInt ("precision" ), dataType .getInt ("scale" ));
342- break ;
306+ return DataType .createDecimal (dataType .getInt ("precision" ), dataType .getInt ("scale" ));
343307 case "DOUBLE" :
344- type = DataType .createDouble ();
345- break ;
308+ return DataType .createDouble ();
346309 case "VARCHAR" :
347- type = getVarchar (dataType );
348- break ;
310+ return getVarchar (dataType );
349311 case "CHAR" :
350- type = getChar (dataType );
351- break ;
312+ return getChar (dataType );
352313 case "BOOLEAN" :
353- type = DataType .createBool ();
354- break ;
314+ return DataType .createBool ();
355315 case "DATE" :
356- type = DataType .createDate ();
357- break ;
316+ return DataType .createDate ();
358317 case "TIMESTAMP" :
359- type = getTimestamp (dataType );
360- break ;
318+ return getTimestamp (dataType );
361319 case "INTERVAL" :
362- type = getInterval (dataType );
363- break ;
320+ return getInterval (dataType );
364321 case "GEOMETRY" :
365- type = getGeometry (dataType );
366- break ;
322+ return getGeometry (dataType );
323+ case "HASHTYPE" :
324+ return getHashtype (dataType );
367325 default :
368326 throw new IllegalArgumentException ("Unsupported data type encountered: " + typeName );
369327 }
370- return type ;
328+ }
329+
330+ private DataType getHashtype (final JsonObject dataType ) {
331+ final int byteSize = dataType .getInt ("bytesize" );
332+ return DataType .createGeometry (byteSize );
371333 }
372334
373335 private DataType getVarchar (final JsonObject dataType ) {
374- final DataType type ;
375336 final String charSet = dataType .getString ("characterSet" , "UTF8" );
376- type = DataType .createVarChar (dataType .getInt ("size" ), charSetFromString (charSet ));
377- return type ;
337+ return DataType .createVarChar (dataType .getInt ("size" ), charSetFromString (charSet ));
378338 }
379339
380340 private DataType getChar (final JsonObject dataType ) {
381- final DataType type ;
382341 final String charSet = dataType .getString ("characterSet" , "UTF8" );
383- type = DataType .createChar (dataType .getInt ("size" ), charSetFromString (charSet ));
384- return type ;
342+ return DataType .createChar (dataType .getInt ("size" ), charSetFromString (charSet ));
385343 }
386344
387345 private DataType getTimestamp (final JsonObject dataType ) {
388- final DataType type ;
389346 final boolean withLocalTimezone = dataType .getBoolean ("withLocalTimeZone" , false );
390- type = DataType .createTimestamp (withLocalTimezone );
391- return type ;
347+ return DataType .createTimestamp (withLocalTimezone );
392348 }
393349
394350 private DataType getInterval (final JsonObject dataType ) {
@@ -406,10 +362,8 @@ private DataType getInterval(final JsonObject dataType) {
406362 }
407363
408364 private DataType getGeometry (final JsonObject dataType ) {
409- final DataType type ;
410365 final int srid = dataType .getInt ("srid" );
411- type = DataType .createGeometry (srid );
412- return type ;
366+ return DataType .createGeometry (srid );
413367 }
414368
415369 private static ExaCharset charSetFromString (final String charset ) {
0 commit comments