dynamobi/dynamobi — Issue #788: [FRG-82] assertion in setFarragoTransformClassName
Author: dynamobi-build
Created: 2011-12-30 03:48:59+00:00
State: open
Labels: FRG, Planner Framework

[reporter="jvs", created="Sat, 18 Mar 2006 15:03:06 -0500 (GMT-05:00)"]
Use dt/dev@5871 to reproduce.

SELECT "GoodView2"."FileName", "GoodView2"."LineNumber", "GoodView2"."RuleId", "GoodView2"."Message", "GoodView6"."FileName" AS "FileName0", "GoodView6"."LineNumber" AS "LineNumber0", "GoodView6"."RuleId" AS "RuleId0", "GoodView6"."Message" AS "Message0"

FROM (select * from (select cast(null as VARCHAR(1024)) as "FileName", cast(null as INTEGER) as "LineNumber", cast(null as INTEGER) as "RuleId", cast(null as VARCHAR(2048)) as "Message" from (values(0))) as c) AS "GoodView2",

(select * from (select cast(null as VARCHAR(1024)) as "FileName", cast(null as INTEGER) as "LineNumber", cast(null as INTEGER) as "RuleId", cast(null as VARCHAR(2048)) as "Message" from (values(0))) as c) AS "GoodView6"

yields

Error: java.lang.AssertionError: null (state=,code=0)

net.sf.farrago.util.FarragoUtil$FarragoSqlException: java.lang.AssertionError: null

at net.sf.farrago.query.IteratorToFennelConverter.setFarragoTransformClassName(IteratorToFennelConverter.java:453)

at net.sf.farrago.query.IteratorToFennelConverter.implementFennelChild(IteratorToFennelConverter.java:404)

at net.sf.farrago.query.FarragoRelImplementor.visitChildInternal(FarragoRelImplementor.java:138)

at org.eigenbase.oj.rel.JavaRelImplementor.visitChild(JavaRelImplementor.java:355)

at net.sf.farrago.query.FennelDoubleRel.implementFennelChild(FennelDoubleRel.java:104)

at net.sf.farrago.query.FarragoRelImplementor.visitChildInternal(FarragoRelImplementor.java:138)

at org.eigenbase.oj.rel.JavaRelImplementor.visitChild(JavaRelImplementor.java:355)

at net.sf.farrago.query.FennelToIteratorConverter.implement(FennelToIteratorConverter.java:161)

at org.eigenbase.oj.rel.JavaRelImplementor.visitChildInternal(JavaRelImplementor.java:387)

at net.sf.farrago.query.FarragoRelImplementor.visitChildInternal(FarragoRelImplementor.java:140)

at org.eigenbase.oj.rel.JavaRelImplementor.visitChild(JavaRelImplementor.java:355)

at org.eigenbase.oj.rel.JavaRelImplementor.visitJavaChild(JavaRelImplementor.java:343)

at org.eigenbase.oj.rel.JavaRelImplementor.implementRoot(JavaRelImplementor.java:404)

at net.sf.farrago.query.FarragoRelImplementor.implementRoot(FarragoRelImplementor.java:283)

at org.eigenbase.oj.stmt.OJPreparingStmt.implement(OJPreparingStmt.java:301)

at org.eigenbase.oj.stmt.OJPreparingStmt.prepareSql(OJPreparingStmt.java:256)

at net.sf.farrago.query.FarragoPreparingStmt.prepare(FarragoPreparingStmt.java:237)

at net.sf.farrago.db.FarragoDatabase$2.initializeEntry(FarragoDatabase.java:664)

at net.sf.farrago.util.FarragoObjectCache.pin(FarragoObjectCache.java:157)

at net.sf.farrago.db.FarragoDatabase.prepareStmtImpl(FarragoDatabase.java:674)

at net.sf.farrago.db.FarragoDatabase.prepareStmt(FarragoDatabase.java:554)

at net.sf.farrago.db.FarragoDbSession.prepareImpl(FarragoDbSession.java:810)

at net.sf.farrago.db.FarragoDbSession.prepare(FarragoDbSession.java:761)at net.sf.farrago.db.FarragoDbStmtContext.prepare(FarragoDbStmtContext.java:156)

at net.sf.farrago.jdbc.engine.FarragoJdbcEngineStatement.execute(FarragoJdbcEngineStatement.java:104)

at sqlline.SqlLine$Commands.execute(Unknown Source)

at sqlline.SqlLine$Commands.sql(Unknown Source)

at sqlline.SqlLine.dispatch(Unknown Source)

at sqlline.SqlLine.runCommands(Unknown Source)

at sqlline.SqlLine$Commands.run(Unknown Source)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at sqlline.SqlLine$ReflectiveCommandHandler.execute(Unknown Source)

at sqlline.SqlLine.dispatch(Unknown Source)

at sqlline.SqlLine.begin(Unknown Source)

at sqlline.SqlLine.mainWithInputRedirection(Unknown Source)

at sqlline.SqlLine.main(Unknown Source)

explain plan shows two IteratorToFennels as children of the FennelCartesianProductRel, then a FennelToIteratorConverter on top of that; nothing that complicated despite the SQL ugliness.