Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.39.0
Description
IS TRUE/ IS FALSE/IS NOT TRUE/IS NOT FALSE can not support in Hive/Presto System.
Hive:
select 1>0 is true;
NoViableAltException(295@[])
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.nullCondition(HiveParser_IdentifiersParser.java:7144)
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceUnarySuffixExpression(HiveParser_IdentifiersParser.java:7369)
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceBitwiseXorExpression(HiveParser_IdentifiersParser.java:7516)
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceStarExpression(HiveParser_IdentifiersParser.java:7659)
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedencePlusExpression(HiveParser_IdentifiersParser.java:7802)
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceConcatenateExpression(HiveParser_IdentifiersParser.java:7941)
at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceAmpersandExpression(HiveParser_IdentifiersParser.java:8151)
select (1>0) is true; NoViableAltException(295@[]) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.nullCondition(HiveParser_IdentifiersParser.java:7144) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceUnarySuffixExpression(HiveParser_IdentifiersParser.java:7369) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceBitwiseXorExpression(HiveParser_IdentifiersParser.java:7516) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceStarExpression(HiveParser_IdentifiersParser.java:7659) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedencePlusExpression(HiveParser_IdentifiersParser.java:7802) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceConcatenateExpression(HiveParser_IdentifiersParser.java:7941) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceAmpersandExpression(HiveParser_IdentifiersParser.java:8151)
presto:
presto> select 1>0 is true; Query 20250509_090525_40291_cqcdm failed: line 1:12: mismatched input 'is'. Expecting: '%', '*', '+', ',', '-', '.', '/', 'AND', 'AS', 'AT', 'EXCEPT', 'FROM', 'GROUP', 'HAVING', 'INTERSECT', 'LIMIT', 'OR', 'ORDER', 'UNION', 'WHERE', '[', '||', <EOF>, <identifier>
presto> select (1>0) is true; Query 20250509_090519_40277_cqcdm failed: line 1:17: mismatched input 'true'. Expecting: 'DISTINCT', 'NOT', 'NULL'
and convert to IS NOT NULL and BOOLEAN can work well:
Hive:
select 1 > 0 IS NOT NULL AND 1 > 0; > 1
Presto
note:1>0 IS NOT NULL is not support
presto> select 1 > 0 IS NOT NULL AND 1 > 0; Query 20250509_094813_43212_cqcdm failed: line 1:14: mismatched input 'IS'. Expecting: '%', '*', '+', ',', '-', '.', '/', 'AND', 'AS', 'AT', 'EXCEPT', 'FROM', 'GROUP', 'HAVING', 'INTERSECT', 'LIMIT', 'OR', 'ORDER', 'UNION', 'WHERE', '[', '||', <EOF>, <identifier> select 1 > 0 IS NOT NULL AND 1 > 0
need to convert to (1>0) IS NOT NULL
presto> select (1 > 0) IS NOT NULL AND 1 > 0;
_col0
-------
true
(1 row)
so In Hive:
we should convert the syntax as:
A IS TRUE: A IS NOT NULL AND A
A IS FALSE: A IS NOT NULL AND NOT A
A IS NOT TRUE: A IS NULL OR NOT A
A IS NOT FALSE: A IS NULL OR NOT A
and in Presto:
we should convert the syntax with () around A:
(A) IS TRUE: (A) IS NOT NULL AND A
(A) IS FALSE: (A) IS NOT NULL AND NOT A
(A) IS NOT TRUE: (A) IS NULL OR NOT A
(A) IS NOT FALSE: (A) IS NULL OR NOT A
Attachments
Issue Links
- Blocked
-
CALCITE-6979 Invalid unparse for IS TRUE,IS FALSE,IS NOT TRUE and IS NOT FALSE in ClickHouseDialect
-
- Closed
-
- links to