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

Dmitry Lychagin resolved ASTERIXDB-2794.
----------------------------------------
    Resolution: Fixed

> SQL++ UDF inside WITH clause throws illegal state
> -------------------------------------------------
>
>                 Key: ASTERIXDB-2794
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2794
>             Project: Apache AsterixDB
>          Issue Type: Bug
>            Reporter: Wail Y. Alkowaileet
>            Assignee: Dmitry Lychagin
>            Priority: Minor
>
> If a SQL++ UDF used inside WITH clause, it throws Illegal sate
> DDL:
> {code:java}
> DROP DATAVERSE CS122A IF EXISTS;
> CREATE DATAVERSE CS122A;
> USE CS122A;
> CREATE TYPE TweetType AS {
>     id: string
> };
> CREATE DATASET Tweets(TweetType)
> PRIMARY KEY id;{code}
> UDF declaration:
>  
> {code:java}
> USE CS122A;
> DROP FUNCTION replaceUnknown(1) IF EXISTS;
> CREATE FUNCTION replaceUnknown(x) {
>   CASE WHEN x IS UNKNOWN THEN "" ELSE x END
> };
> {code}
> Query1 ({color:#00875a}works as expected{color}):
> {code:java}
> USE CS122A;
> SELECT replaceUnknown(in_reply_to_status_id_str)
> FROM Tweets
> LIMIT 10
> {code}
> Query 2 ({color:#de350b}throws an exception{color}):
> {code:java}
> USE CS122A;
> WITH t as (SELECT id, extended_tweet.full_text as tweet_text, 
> replaceUnknown(in_reply_to_status_id_str) as replies_to, quoted_status_id_str 
> as quotes
>             FROM Tweets
>             LIMIT 50)
> SELECT tweet_id, t[tweet_id].tweet_text, t[tweet_id].id, 
> t[tweet_id].replies_to, t[tweet_id].quotes
> FROM range(0, 49) tweet_id
> {code}
> Logs:
> {code:java}
> 18:51:27.067 [QueryTranslator:ef93c7fb-3248-4e2e-a5b1-90ef6254d38a] INFO  
> org.apache.asterix.app.translator.QueryTranslator - ASX1038: Illegal state. 
> CS122A.replaceUnknown(1) (in line 3, at column 19)18:51:27.067 
> [QueryTranslator:ef93c7fb-3248-4e2e-a5b1-90ef6254d38a] INFO  
> org.apache.asterix.app.translator.QueryTranslator - ASX1038: Illegal state. 
> CS122A.replaceUnknown(1) (in line 3, at column 
> 19)org.apache.asterix.common.exceptions.CompilationException: ASX1038: 
> Illegal state. CS122A.replaceUnknown(1) (in line 3, at column 19) at 
> org.apache.asterix.lang.sqlpp.visitor.CheckNonFunctionalExpressionVisitor.visit(CheckNonFunctionalExpressionVisitor.java:63)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.CheckNonFunctionalExpressionVisitor.visit(CheckNonFunctionalExpressionVisitor.java:36)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.common.expression.CallExpr.accept(CallExpr.java:80) 
> ~[asterix-lang-common-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:311)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:111)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:71)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.clause.Projection.accept(Projection.java:46) 
> ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:311)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visitExprList(AbstractSqlppContainsExpressionVisitor.java:317)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:137)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:127)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:121)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:71)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.struct.SetOperationInput.accept(SetOperationInput.java:65)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:142)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:158)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppContainsExpressionVisitor.visit(AbstractSqlppContainsExpressionVisitor.java:71)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.expression.SelectExpression.accept(SelectExpression.java:55)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.rewrites.visitor.InlineWithExpressionVisitor.visit(InlineWithExpressionVisitor.java:66)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.rewrites.visitor.InlineWithExpressionVisitor.visit(InlineWithExpressionVisitor.java:39)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.expression.SelectExpression.accept(SelectExpression.java:55)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppSimpleExpressionVisitor.visit(AbstractSqlppSimpleExpressionVisitor.java:405)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:223)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.visitor.base.AbstractSqlppExpressionScopingVisitor.visit(AbstractSqlppExpressionScopingVisitor.java:64)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.common.statement.Query.accept(Query.java:102) 
> ~[asterix-lang-common-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.rewrites.SqlppQueryRewriter.rewriteTopExpr(SqlppQueryRewriter.java:335)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.rewrites.SqlppQueryRewriter.inlineWithExpressions(SqlppQueryRewriter.java:232)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.lang.sqlpp.rewrites.SqlppQueryRewriter.rewrite(SqlppQueryRewriter.java:198)
>  ~[asterix-lang-sqlpp-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.api.common.APIFramework.reWriteQuery(APIFramework.java:191)
>  ~[asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.app.translator.QueryTranslator.rewriteCompileQuery(QueryTranslator.java:2826)
>  ~[asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.app.translator.QueryTranslator.lambda$handleQuery$3(QueryTranslator.java:3331)
>  ~[asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.app.translator.QueryTranslator.createAndRunJob(QueryTranslator.java:3463)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.app.translator.QueryTranslator.deliverResult(QueryTranslator.java:3367)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.app.translator.QueryTranslator.handleQuery(QueryTranslator.java:3346)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:434)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.api.http.server.QueryServiceServlet.executeStatement(QueryServiceServlet.java:417)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.api.http.server.QueryServiceServlet.handleRequest(QueryServiceServlet.java:303)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.asterix.api.http.server.QueryServiceServlet.post(QueryServiceServlet.java:143)
>  [asterix-app-0.9.6-SNAPSHOT.jar:0.9.6-SNAPSHOT] at 
> org.apache.hyracks.http.server.AbstractServlet.handle(AbstractServlet.java:93)
>  [hyracks-http-0.3.6-SNAPSHOT.jar:0.3.6-SNAPSHOT] at 
> org.apache.hyracks.http.server.HttpRequestHandler.handle(HttpRequestHandler.java:83)
>  [hyracks-http-0.3.6-SNAPSHOT.jar:0.3.6-SNAPSHOT] at 
> org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:68)
>  [hyracks-http-0.3.6-SNAPSHOT.jar:0.3.6-SNAPSHOT] at 
> org.apache.hyracks.http.server.HttpRequestHandler.call(HttpRequestHandler.java:37)
>  [hyracks-http-0.3.6-SNAPSHOT.jar:0.3.6-SNAPSHOT] at 
> java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?] at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>  [?:?] at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>  [?:?] at java.lang.Thread.run(Thread.java:834) [?:?]
> {code}
>  



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

Reply via email to