[
https://issues.apache.org/jira/browse/HIVE-15388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15852963#comment-15852963
]
Pengcheng Xiong commented on HIVE-15388:
----------------------------------------
Here are the results and they are expected:
{code}
PREHOOK: query: select true=true in (true, false)
PREHOOK: type: QUERY
PREHOOK: Input: _dummy_database@_dummy_table
#### A masked pattern was here ####
POSTHOOK: query: select true=true in (true, false)
POSTHOOK: type: QUERY
POSTHOOK: Input: _dummy_database@_dummy_table
#### A masked pattern was here ####
true
PREHOOK: query: select false=true in (true, false)
PREHOOK: type: QUERY
PREHOOK: Input: _dummy_database@_dummy_table
#### A masked pattern was here ####
POSTHOOK: query: select false=true in (true, false)
POSTHOOK: type: QUERY
POSTHOOK: Input: _dummy_database@_dummy_table
#### A masked pattern was here ####
false
{code}
Postgres
{code}
horton=# select true=false in (true,false);
?column?
----------
t
(1 row)
horton=# select false=false in (true,false);
?column?
----------
f
(1 row)
{code}
And the error:
Hive:
{code}
2017-02-04T14:25:34,713 ERROR [a24cc02e-355b-402d-8183-43501e0edc77 main]
ql.Driver: FAILED: SemanticException Line 0:-1 Wrong arguments 'false': The
arguments for IN should be the same type! Types are: {int IN (boolean, boolean)}
org.apache.hadoop.hive.ql.parse.SemanticException: Line 0:-1 Wrong arguments
'false': The arguments for IN should be the same type! Types are: {int IN
(boolean, boolean)}
at
org.apache.hadoop.hive.ql.parse.TypeCheckProcFactory$DefaultExprProcessor.process(TypeCheckProcFactory.java:1367)
at
org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90)
at
org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:105)
{code}
Postgres
{code}
horton=# select 1=1 in (true, false);
ERROR: operator does not exist: integer = boolean
LINE 1: select 1=1 in (true, false);
^
HINT: No operator matches the given name and argument type(s). You might need
to add explicit type casts.
{code}
> HiveParser spends lots of time in parsing queries with lots of "("
> ------------------------------------------------------------------
>
> Key: HIVE-15388
> URL: https://issues.apache.org/jira/browse/HIVE-15388
> Project: Hive
> Issue Type: Improvement
> Affects Versions: 2.2.0
> Reporter: Rajesh Balamohan
> Assignee: Pengcheng Xiong
> Attachments: HIVE-15388.01.patch, HIVE-15388.02.patch,
> HIVE-15388.03.patch, HIVE-15388.04.patch, HIVE-15388.05.patch,
> hive-15388.stacktrace.txt
>
>
> Branch: apache-master (applicable with previous releases as well)
> Queries generated via tools can have lots of "(" for "AND/OR" conditions.
> This causes huge delays in parsing phase when the number of expressions are
> high.
> e.g
> {noformat}
> SELECT `iata`,
> `airport`,
> `city`,
> `state`,
> `country`,
> `lat`,
> `lon`
> FROM airports
> WHERE
> ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((`airports`.`airport`
> = "Thigpen"
>
> OR `airports`.`airport` = "Astoria Regional")
>
> OR `airports`.`airport` = "Warsaw Municipal")
>
> OR `airports`.`airport` = "John F Kennedy Memorial")
>
> OR `airports`.`airport` = "Hall-Miller Municipal")
>
> OR `airports`.`airport` = "Atqasuk")
> OR
> `airports`.`airport` = "William B Hartsfield-Atlanta Intl")
> OR
> `airports`.`airport` = "Artesia Municipal")
> OR
> `airports`.`airport` = "Outagamie County Regional")
> OR
> `airports`.`airport` = "Watertown Municipal")
> OR
> `airports`.`airport` = "Augusta State")
> OR
> `airports`.`airport` = "Aurora Municipal")
> OR
> `airports`.`airport` = "Alakanuk")
> OR
> `airports`.`airport` = "Austin Municipal")
> OR
> `airports`.`airport` = "Auburn Municipal")
> OR
> `airports`.`airport` = "Auburn-Opelik")
> OR
> `airports`.`airport` = "Austin-Bergstrom International")
> OR
> `airports`.`airport` = "Wausau Municipal")
> OR
> `airports`.`airport` = "Mecklenburg-Brunswick Regional")
> OR
> `airports`.`airport` = "Alva Regional")
> OR
> `airports`.`airport` = "Asheville Regional")
> OR
> `airports`.`airport` = "Avon Park Municipal")
> OR
> `airports`.`airport` = "Wilkes-Barre/Scranton Intl")
> OR
> `airports`.`airport` = "Marana Northwest Regional")
> OR
> `airports`.`airport` = "Catalina")
> OR
> `airports`.`airport` = "Washington Municipal")
> OR
> `airports`.`airport` = "Wainwright")
> OR `airports`.`airport`
> = "West Memphis Municipal")
> OR `airports`.`airport`
> = "Arlington Municipal")
> OR `airports`.`airport` =
> "Algona Municipal")
> OR `airports`.`airport` =
> "Chandler")
> OR `airports`.`airport` =
> "Altus Municipal")
> OR `airports`.`airport` =
> "Neil Armstrong")
> OR `airports`.`airport` =
> "Angel Fire")
> OR `airports`.`airport` =
> "Waycross-Ware County")
> OR `airports`.`airport` =
> "Colorado City Municipal")
> OR `airports`.`airport` =
> "Hazelhurst")
> OR `airports`.`airport` =
> "Kalamazoo County")
> OR `airports`.`airport` =
> "Granville")
> OR `airports`.`airport` = "Silver
> Springs")
> OR `airports`.`airport` = "Whitford")
> OR `airports`.`airport` = "Biddeford
> Municipal")
> OR `airports`.`airport` = "Sugarloaf
> Regional")
> OR `airports`.`airport` = "Barnes
> Municipal")
> OR `airports`.`airport` = "Columbus
> Municipal")
> OR `airports`.`airport` = "Battle
> Mountain")
> OR `airports`.`airport` = "Huron County
> Memorial")
> OR `airports`.`airport` = "New Braunfels
> Municipal")
> OR `airports`.`airport` = "Benson Municipal")
> OR `airports`.`airport` = "Curtis")
> OR `airports`.`airport` = "Marlboro County")
> OR `airports`.`airport` = "Broken Bow
> Municipal")
> OR `airports`.`airport` = "Virginia Tech")
> OR `airports`.`airport` = "Bryce Canyon")
> OR `airports`.`airport` = "Black River Falls Area")
> OR `airports`.`airport` = "Boca Raton")
> OR `airports`.`airport` = "Birchwood")
> OR `airports`.`airport` = "Baudette International")
> OR `airports`.`airport` = "Blanding Muni")
> OR `airports`.`airport` = "Bradley International")
> OR `airports`.`airport` = "Morrilton Municipal")
> OR `airports`.`airport` = "Igor I Sikorsky Memorial")
> OR `airports`.`airport` = "Broadus")
> OR `airports`.`airport` = "Laurence G Hanscom")
> OR `airports`.`airport` = "Southwest Michigan Regional")
> OR `airports`.`airport` = "Bethel")
> OR `airports`.`airport` = "Bradford Reg")
> OR `airports`.`airport` = "Scotts Bluff County")
> OR `airports`.`airport` = "Boeing Field/King County Intl")
> OR `airports`.`airport` = "Buffalo Municipal")
> OR `airports`.`airport` = "Meadows")
> OR `airports`.`airport` = "Mobile Downtown")
> OR `airports`.`airport` = "Virgil I Grissom Municipal")
> OR `airports`.`airport` = "Silver Bay Municipal");
> {noformat}
> This query would take more than minutes to parse and compile.
> Temp Workaround: If all "("s in "where" condition are removed manually, this
> query would complete in 2-3 seconds.
> Problem exists in older versions as well (but in older versions this can make
> HS2 unresponsive for large amount of time, as Driver ends up taking global
> compiler lock in this phase).
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)