Hi fellow devs,
I was using the UPDATE statement to attempt to add embeddings to a
dataset with a UDF using a query something like this:
UPDATE moviesSample
SET overview_embedding = getEmbeddings(overview);
This seemed to work OK initially. However, after some issues with the
UDF, I wanted to give the plan a look to see where I might be able to
reduce the parallelism. Then I ran into the problem which is puzzling
me: it seems like all UPDATE statements now will not compile. The
above query now returns:
Illegal state. %1$s; [] [CompilationException]
Even reducing the SET statement to a constant expression changes
nothing. Other DDLs and queries seem to work fine.
I'm not very familiar with this rule, and I can't make heads or tails
of the exception. Does anyone have any inkling how the system seems to
have gotten itself into this state?
Attached below is the stacktrace:
org.apache.asterix.common.exceptions.CompilationException: Illegal
state. %1$s; []
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:496)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.expression.ChangeExpression.accept(ChangeExpression.java:103)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:459)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.common.expression.IndexAccessor.accept(IndexAccessor.java:71)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:257)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.clause.SelectElement.accept(SelectElement.java:38)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:247)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.clause.SelectClause.accept(SelectClause.java:63)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:205)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.struct.SetOperationInput.accept(SetOperationInput.java:65)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:272)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.clause.SelectSetOperation.accept(SelectSetOperation.java:47)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:372)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.visitor.FreeVariableVisitor.visit(FreeVariableVisitor.java:78)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.expression.SelectExpression.accept(SelectExpression.java:55)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.util.SqlppVariableUtil.getFreeVariables(SqlppVariableUtil.java:124)
~[classes/:?]
at
org.apache.asterix.lang.sqlpp.rewrites.SqlppQueryRewriter.getExternalVariables(SqlppQueryRewriter.java:429)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.createExternalVariables(QueryTranslator.java:6063)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.rewriteCompileInsertUpsert(QueryTranslator.java:4619)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.lambda$handleInsertUpsertStatement$1(QueryTranslator.java:4436)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.handleInsertUpsertStatement(QueryTranslator.java:4459)
~[classes/:?]
at
org.apache.asterix.app.translator.QueryTranslator.compileAndExecute(QueryTranslator.java:536)
~[classes/:?]