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

ASF GitHub Bot commented on TRAFODION-2353:
-------------------------------------------

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

    https://github.com/apache/incubator-trafodion/pull/842#discussion_r89157253
  
    --- Diff: core/sql/exp/exp_like.cpp ---
    @@ -477,6 +501,51 @@ ex_like_clause_base::processNulls(char *op_data[], 
CollHeap *heap,
       return ex_expr::EXPR_OK;
     }
     
    +
    +ex_expr::exp_return_type ExRegexpClauseChar::eval(char *op_data[],
    +                                         CollHeap* exHeap,
    +                                         ComDiagsArea** diagsArea)
    +{
    +  NABoolean matchFlag = true;
    +  Lng32 len1 = getOperand(1)->getLength(op_data[-MAX_OPERANDS+1]);
    +  Lng32 len2 = getOperand(2)->getLength(op_data[-MAX_OPERANDS+2]);
    +  regex_t reg;
    +  regmatch_t pm[1];
    +  const size_t nmatch = 1;
    +  Lng32 cflags, z;
    +  char * pattern;
    +  char *srcStr= new (exHeap) char[len1+1];
    +
    +  cflags = REG_EXTENDED|REG_NEWLINE;
    +  pattern = new (exHeap) char[len2+1];
    +  pattern[len2]=0;
    +  srcStr[len1]=0;
    +
    +  str_cpy_all(pattern, op_data[2], len2);
    +  str_cpy_all(srcStr, op_data[1], len1);
    +
    +  z = regcomp(&reg, pattern, cflags);
    +
    +  if (z != 0){
    +    //ERROR
    +    ExRaiseSqlError(exHeap, diagsArea, EXE_BAD_ARG_TO_MATH_FUNC);
    +    **diagsArea << DgString0("REGEXP");
    +    return ex_expr::EXPR_ERROR;
    +  }
    + 
    +  z = regexec(&reg,srcStr , nmatch, pm, 0);
    --- End diff --
    
    From the regexec man page, it looks like regexec returns 0 for a successful 
match, REG_NOMATCH for a successful mismatch, and an error code for an error. 
We need to check for the error and report it (for example, using regerror() to 
obtain an error string).


> support of the regexp operator
> ------------------------------
>
>                 Key: TRAFODION-2353
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-2353
>             Project: Apache Trafodion
>          Issue Type: New Feature
>            Reporter: liu ming
>            Assignee: liu ming
>
> It is desired to have REGEXP.
> Some initial researching already done in: 
> https://cwiki.apache.org/confluence/display/TRAFODION/Example+Enhancement%3A+Add+a+New+Built-in+Function
> This JIRA is to add REGEXP operator, not including functions may required 
> future, if required, related JIRA will be created.
> The good advice in the wiki is to do new features incrementally. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to