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

Wail Y. Alkowaileet updated ASTERIXDB-2794:
-------------------------------------------
    Description: 
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}
 

  was:
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}
 


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