[ 
https://issues.apache.org/jira/browse/HIVE-27559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alagappan Maruthappan updated HIVE-27559:
-----------------------------------------
    Description: 
The following query
{code:java}
SELECT * FROM src WHERE key LIKE 
'abc%def%ghi%jkl%mno%pqr%stu%vwxyz%abc%def%ghi%jkl%mno%pqr%stu%vwxy_z';
{code}
would hang trying to determine if the LIKE clause can be chained in 
ChainedCheckerFactory. This is because the CHAIN_PATTERN is defined as 
"(%?[^%_\\\\]{+}%?){+}" which is trying to do a greedy match and ends doing a 
catastrophic backtracking. 
We need the full expression to match, so we can convert define this pattern 
using possessive quantifier to avoid the backtracking.
 

  was:
The following query
{code:java}
SELECT * FROM src WHERE key LIKE 
'abc%def%ghi%jkl%mno%pqr%stu%vwxyz%abc%def%ghi%jkl%mno%pqr%stu%vwxy_z';

{code}
would hang trying to determine if the LIKE clause can be chained in 
ChainedCheckerFactory. This is because the CHAIN_PATTERN is defined as 
"(%?[^%_\\\\]+%?)+" which is trying to do a greedy match and ends doing a 
catastrophic backtracking. 
We need the full expression to match, so we can convert define this pattern 
using possessive quantifier to avoid the backtracking.
 


> Query hangs while trying to determine if the LIKE clause can be chained
> -----------------------------------------------------------------------
>
>                 Key: HIVE-27559
>                 URL: https://issues.apache.org/jira/browse/HIVE-27559
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Alagappan Maruthappan
>            Assignee: Alagappan Maruthappan
>            Priority: Major
>              Labels: pull-request-available
>
> The following query
> {code:java}
> SELECT * FROM src WHERE key LIKE 
> 'abc%def%ghi%jkl%mno%pqr%stu%vwxyz%abc%def%ghi%jkl%mno%pqr%stu%vwxy_z';
> {code}
> would hang trying to determine if the LIKE clause can be chained in 
> ChainedCheckerFactory. This is because the CHAIN_PATTERN is defined as 
> "(%?[^%_\\\\]{+}%?){+}" which is trying to do a greedy match and ends doing a 
> catastrophic backtracking. 
> We need the full expression to match, so we can convert define this pattern 
> using possessive quantifier to avoid the backtracking.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to