[ 
https://issues.apache.org/jira/browse/DRILL-5697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16131756#comment-16131756
 ] 

ASF GitHub Bot commented on DRILL-5697:
---------------------------------------

Github user kkhatua commented on a diff in the pull request:

    https://github.com/apache/drill/pull/907#discussion_r133859807
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/RegexpUtil.java 
---
    @@ -96,20 +145,46 @@ public static String sqlToRegexLike(
                 || (nextChar == '%')
                 || (nextChar == escapeChar)) {
               javaPattern.append(nextChar);
    +          simplePattern.append(nextChar);
               i++;
             } else {
               throw invalidEscapeSequence(sqlPattern, i);
             }
           } else if (c == '_') {
    +        // if we find _, it is not simple pattern, we are looking for only 
%
    +        notSimple = true;
             javaPattern.append('.');
           } else if (c == '%') {
    +        if (i == 0) {
    +          // % at the start could potentially be one of the simple cases 
i.e. ENDS_WITH.
    +          endsWith = true;
    +        } else if (i == (len-1)) {
    +          // % at the end could potentially be one of the simple cases 
i.e. STARTS_WITH
    +          startsWith = true;
    +        } else {
    +          // If we find % anywhere other than start or end, it is not a 
simple case.
    --- End diff --
    
    Consider ABC%XYZ.
    It might be worthwhile to decide whether to leverage a pattern or fall back 
to Java's Regex util based on the number of occurrences of '%' as a criteria.


> Improve performance of filter operator for pattern matching
> -----------------------------------------------------------
>
>                 Key: DRILL-5697
>                 URL: https://issues.apache.org/jira/browse/DRILL-5697
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Execution - Flow
>    Affects Versions: 1.11.0
>            Reporter: Padma Penumarthy
>            Assignee: Padma Penumarthy
>
> Queries using filter with sql like operator use Java regex library for 
> pattern matching. However, for cases like %abc (ends with abc), abc% (starts 
> with abc), %abc% (contains abc), it is observed that implementing these cases 
> with simple code instead of using regex library provides good performance 
> boost (4-6x). Idea is to use special case code for simple, common cases and 
> fall back to Java regex library for complicated ones. That will provide good 
> performance benefit for most common cases.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to