Wail Y. Alkowaileet created ASTERIXDB-2794:
----------------------------------------------

             Summary: 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


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:34:56.560 [QueryTranslator:391e86cd-d14e-41a1-97f3-b188229b2c3d] INFO  
org.apache.asterix.app.translator.QueryTranslator - ASX1038: Illegal state. 
CS122A.noMissing(1) (in line 4, at column 82)18:34:56.560 
[QueryTranslator:391e86cd-d14e-41a1-97f3-b188229b2c3d] INFO  
org.apache.asterix.app.translator.QueryTranslator - ASX1038: Illegal state. 
CS122A.noMissing(1) (in line 4, at column 
82)org.apache.asterix.common.exceptions.CompilationException: ASX1038: Illegal 
state. CS122A.noMissing(1) (in line 4, at column 82) 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