"Column not found" on join with nested query
Environment
- Scala 2.9.2
- Squeryl just pulled from github on 24-nov 8:00 UTC (last commit: 169489e37b27203d57be6727fe8f164470653485)
Steps to reproduce
Replace NestedLeftOuterJoinTest with attached file (which adds an additional case to the test) and run tests.
Expected result
Tests pass
Actual result
[info] - InnerJoin *** FAILED *** [info] org.squeryl.SquerylSQLException: Exception while executing statement : Column "Q8.B12_ID" not found; SQL statement: [info] Select [info] A6.name as A6_name, [info] A6.id as A6_id, [info] q8.B12_name as q8_B12_name, [info] q8.B12_aId as q8_B12_aId, [info] q8.B12_id as q8_B12_id, [info] C7.name as C7_name, [info] C7.id as C7_id, [info] C7.bId as C7_bId [info] From [info] A A6 [info] left outer join C as C7 on (C7.bId = q8.B12_id) [info] inner join (Select [info] B12.name as B12_name, [info] B12.aId as B12_aId, [info] B12.id as B12_id [info] From [info] B B12 [info] ) as q8 on (A6.name = q8.B12_name) [42122-127] [info] errorCode: 42122, sqlState: 42S22 [info] Select [info] A6.name as A6_name, [info] A6.id as A6_id, [info] q8.B12_name as q8_B12_name, [info] q8.B12_aId as q8_B12_aId, [info] q8.B12_id as q8_B12_id, [info] C7.name as C7_name, [info] C7.id as C7_id, [info] C7.bId as C7_bId [info] From [info] A A6 [info] left outer join C as C7 on (C7.bId = q8.B12_id) [info] inner join (Select [info] B12.name as B12_name, [info] B12.aId as B12_aId, [info] B12.id as B12_id [info] From [info] B B12 [info] ) as q8 on (A6.name = q8.B12_name) [info] jdbcParams:[] [info] at org.squeryl.SquerylSQLException$.apply(KeyedEntity.scala:118) [info] at org.squeryl.internals.DatabaseAdapter$class._exec(DatabaseAdapter.scala:294) [info] at org.squeryl.internals.DatabaseAdapter$class.exec(DatabaseAdapter.scala:346) [info] at org.squeryl.adapters.H2Adapter.exec(H2Adapter.scala:22) [info] at org.squeryl.internals.DatabaseAdapter$class.executeQuery(DatabaseAdapter.scala:355) [info] at org.squeryl.adapters.H2Adapter.executeQuery(H2Adapter.scala:22) [info] at org.squeryl.dsl.AbstractQuery$$anon$1.<init>(AbstractQuery.scala:161) [info] at org.squeryl.dsl.AbstractQuery.iterator(AbstractQuery.scala:155) [info] at org.squeryl.Query$class.headOption(Query.scala:69) [info] at org.squeryl.dsl.AbstractQuery.headOption(AbstractQuery.scala:27) [info] ... [info] Cause: org.h2.jdbc.JdbcSQLException: Column "Q8.B12_ID" not found; SQL statement: [info] Select [info] A6.name as A6_name, [info] A6.id as A6_id, [info] q8.B12_name as q8_B12_name, [info] q8.B12_aId as q8_B12_aId, [info] q8.B12_id as q8_B12_id, [info] C7.name as C7_name, [info] C7.id as C7_id, [info] C7.bId as C7_bId [info] From [info] A A6 [info] left outer join C as C7 on (C7.bId = q8.B12_id) [info] inner join (Select [info] B12.name as B12_name, [info] B12.aId as B12_aId, [info] B12.id as B12_id [info] From [info] B B12 [info] ) as q8 on (A6.name = q8.B12_name) [42122-127] [info] at org.h2.message.Message.getSQLException(Message.java:110) [info] at org.h2.message.Message.getSQLException(Message.java:121) [info] at org.h2.message.Message.getSQLException(Message.java:74) [info] at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:128) [info] at org.h2.expression.Comparison.optimize(Comparison.java:150) [info] at org.h2.command.dml.Select.preparePlan(Select.java:823) [info] at org.h2.command.dml.Select.prepare(Select.java:735) [info] at org.h2.command.Parser.prepareCommand(Parser.java:236) [info] at org.h2.engine.Session.prepareLocal(Session.java:417) [info] at org.h2.engine.Session.prepareCommand(Session.java:378) [info] ...
Leave a comment
file:bzX_PsnH0r4Ot3acwqjQWU
Test case
Test case
on 2012-11-24 15:37 *
By jordi.salvat.i.alabart
WORKAROUND: in my cases, I could work around this by "flattening" the queries, same as https://www.assembla.com/spaces/squeryl/tickets/86