You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "Quanlong Huang (Jira)" <ji...@apache.org> on 2021/03/30 07:24:00 UTC

[jira] [Commented] (IMPALA-3096) Incorrect subquery rewrite leads to analysis error

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

Quanlong Huang commented on IMPALA-3096:
----------------------------------------

A similar issue reported by a community user:
{code:sql}
create table t_data(col1 string, col2 string);
create table t_pattern(col3 string);
select * from t_data where exists (select * from t_pattern where regexp_like(t_data.col2, t_pattern.col3));
ERROR: AnalysisException: No matching function with signature: regexp_like(BOOLEAN, STRING).
{code}
This still happens in master branch. The stacktrace is
{code:java}
I0330 15:20:31.251899 28503 jni-util.cc:286] df45209b1cf8abbf:eee7212d00000000] org.apache.impala.common.AnalysisException: No matching function with signature: regexp_like(BOOLEAN, STRING).
        at org.apache.impala.analysis.FunctionCallExpr.analyzeImpl(FunctionCallExpr.java:622)
        at org.apache.impala.analysis.Expr.analyze(Expr.java:503)
        at org.apache.impala.analysis.SelectStmt$SelectAnalyzer.analyzeWhereClause(SelectStmt.java:454)
        at org.apache.impala.analysis.SelectStmt$SelectAnalyzer.analyze(SelectStmt.java:317)
        at org.apache.impala.analysis.SelectStmt$SelectAnalyzer.access$100(SelectStmt.java:298)
        at org.apache.impala.analysis.SelectStmt.analyze(SelectStmt.java:291)
        at org.apache.impala.analysis.InlineViewRef.analyze(InlineViewRef.java:219)
        at org.apache.impala.analysis.StmtRewriter$SubqueryRewriter.mergeExpr(StmtRewriter.java:634)
        at org.apache.impala.analysis.StmtRewriter$SubqueryRewriter.rewriteWhereClauseSubqueries(StmtRewriter.java:1455)
        at org.apache.impala.analysis.StmtRewriter$SubqueryRewriter.rewriteSelectStmtHook(StmtRewriter.java:1336)
        at org.apache.impala.analysis.StmtRewriter.rewriteSelectStatement(StmtRewriter.java:114)
        at org.apache.impala.analysis.StmtRewriter.rewriteQueryStatement(StmtRewriter.java:87)
        at org.apache.impala.analysis.StmtRewriter.rewrite(StmtRewriter.java:75)
        at org.apache.impala.analysis.AnalysisContext.analyze(AnalysisContext.java:523)
        at org.apache.impala.analysis.AnalysisContext.analyzeAndAuthorize(AnalysisContext.java:445)
        at org.apache.impala.service.Frontend.doCreateExecRequest(Frontend.java:1641)
        at org.apache.impala.service.Frontend.getTExecRequest(Frontend.java:1607)
        at org.apache.impala.service.Frontend.createExecRequest(Frontend.java:1577)
        at org.apache.impala.service.JniFrontend.createExecRequest(JniFrontend.java:162)
{code}
The expression "regexp_like(t_data.col2, t_pattern.col3)" is temporarily rewritten to "regexp_like(TRUE, t_pattern.col3)" so fails in re-analyze here:
{code:java}
      inlineView.reset();
      try {
        inlineView.analyze(analyzer);
      } catch (AnalysisException e) {
{code}
cc [~amansinha]

> Incorrect subquery rewrite leads to analysis error
> --------------------------------------------------
>
>                 Key: IMPALA-3096
>                 URL: https://issues.apache.org/jira/browse/IMPALA-3096
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Frontend
>    Affects Versions: Impala 2.5.0
>            Reporter: casey
>            Assignee: Fang-Yu Rao
>            Priority: Minor
>              Labels: ramp-up
>
> The query below gets rewritten then an analysis error happens
> {noformat}
> Query: explain SELECT 1
> FROM alltypes a1
> INNER JOIN alltypesagg a2 ON a1.bigint_col = a2.month
> WHERE a1.smallint_col NOT IN (
>   SELECT a3.int_col
>   FROM alltypes a3
>   INNER JOIN alltypes a4 ON a3.string_col = TRIM(a4.date_string_col)
>   WHERE a3.id = a2.year AND (a2.timestamp_col + INTERVAL a4.smallint_col SECOND) IS NULL)
> ERROR: AnalysisException: Operand 'TRUE' of timestamp arithmetic expression '(TRUE + INTERVAL a4.smallint_col SECOND)' returns type 'BOOLEAN'. Expected type 'TIMESTAMP'.
> {noformat}
> If the "... + INTERVAL) IS NULL" expression at the bottom is removed there is no error.
> Version: 1920aa5ea214ea21917778d5faad3ef1cb3e9f87



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org