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)