[
https://issues.apache.org/jira/browse/DRILL-207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13758652#comment-13758652
]
Ted Dunning commented on DRILL-207:
-----------------------------------
Ah... OK. That makes sense.
Here is an improved query:
{code}
select x.region, x.region_id,
(select sum(cast(_MAP['N_NATIONKEY'] as INTEGER))
from "sample-data/nation.parquet"
where _MAP['N_REGIONKEY'] = x.region_id)
from
(select _MAP['R_REGIONKEY'] as region_id, _MAP['R_NAME'] as region from
"sample-data/region.parquet") x
{code}
which causes this problem
{code}
org.eigenbase.relopt.RelOptPlanner$CannotPlanException: Node
[rel#778:Subset#7.ENUMERABLE.[]] could not be implemented; planner state:
Root: rel#778:Subset#7.ENUMERABLE.[]
Original rel:
AbstractConverter(subset=[rel#778:Subset#7.ENUMERABLE.[]],
convention=[ENUMERABLE], sort=[[]])
ProjectRel(subset=[rel#771:Subset#7.NONE.[]], REGION=[$1], REGION_ID=[$0],
EXPR$2=[$2])
CorrelatorRel(subset=[rel#769:Subset#6.NONE.[]], condition=[true],
joinType=[left], correlations=[[var0=offset0]])
ProjectRel(subset=[rel#760:Subset#1.NONE.[]], REGION_ID=[ITEM($0,
'R_REGIONKEY')], REGION=[ITEM($0, 'R_NAME')])
DrillScan(subset=[rel#758:Subset#0.DRILL.[]], table=[[parquet-local,
sample-data/region.parquet]])
AggregateRel(subset=[rel#767:Subset#5.NONE.[]], group=[{}],
EXPR$0=[SUM($0)])
ProjectRel(subset=[rel#765:Subset#4.NONE.[]], $f0=[CAST(ITEM($0,
'N_NATIONKEY')):INTEGER NOT NULL])
FilterRel(subset=[rel#763:Subset#3.NONE.[]], condition=[=(ITEM($0,
'N_REGIONKEY'), $cor0.REGION_ID)])
DrillScan(subset=[rel#761:Subset#2.DRILL.[]],
table=[[parquet-local, sample-data/nation.parquet]])
Sets:
Set#0, type: RecordType((VARCHAR, ANY) MAP _MAP)
rel#758:Subset#0.DRILL.[], best=rel#750, importance=0.6561000000000001
rel#750:DrillScan.DRILL.[](table=[parquet-local,
sample-data/region.parquet]), rowcount=100.0, cumulative cost={100.0 rows,
101.0 cpu, 0.0 io}
rel#865:AbstractConverter.DRILL.[](child=rel#864:Subset#0.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=100.0, cumulative cost={inf}
rel#864:Subset#0.ENUMERABLE.[], best=rel#899,
importance=0.5904900000000001
rel#866:AbstractConverter.ENUMERABLE.[](child=rel#758:Subset#0.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=100.0, cumulative cost={inf}
rel#899:EnumerableDrillRel.ENUMERABLE.[](child=rel#758:Subset#0.DRILL.[]),
rowcount=100.0, cumulative cost={110.0 rows, 111.0 cpu, 0.0 io}
Set#1, type: RecordType(ANY REGION_ID, ANY REGION)
rel#760:Subset#1.NONE.[], best=null, importance=0.7290000000000001
rel#759:ProjectRel.NONE.[](child=rel#758:Subset#0.DRILL.[],REGION_ID=ITEM($0,
'R_REGIONKEY'),REGION=ITEM($0, 'R_NAME')), rowcount=100.0, cumulative cost={inf}
rel#781:CalcRel.NONE.[](child=rel#758:Subset#0.DRILL.[],expr#0={inputs},expr#1='R_REGIONKEY',expr#2=ITEM($t0,
$t1),expr#3='R_NAME',expr#4=ITEM($t0, $t3),REGION_ID=$t2,REGION=$t4),
rowcount=100.0, cumulative cost={inf}
rel#817:Subset#1.DRILL.[], best=rel#816, importance=0.4601593625498008
rel#818:AbstractConverter.DRILL.[](child=rel#760:Subset#1.NONE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#816:DrillProjectRel.DRILL.[](child=rel#758:Subset#0.DRILL.[],REGION_ID=ITEM($0,
'R_REGIONKEY'),REGION=ITEM($0, 'R_NAME')), rowcount=100.0, cumulative
cost={110.0 rows, 121.0 cpu, 0.0 io}
rel#869:AbstractConverter.DRILL.[](child=rel#868:Subset#1.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=100.0, cumulative cost={inf}
rel#868:Subset#1.ENUMERABLE.[], best=rel#894, importance=0.495
rel#870:AbstractConverter.ENUMERABLE.[](child=rel#760:Subset#1.NONE.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#871:AbstractConverter.ENUMERABLE.[](child=rel#817:Subset#1.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=100.0, cumulative cost={inf}
rel#867:EnumerableCalcRel.ENUMERABLE.[](child=rel#864:Subset#0.ENUMERABLE.[],expr#0={inputs},expr#1='R_REGIONKEY',expr#2=ITEM($t0,
$t1),expr#3='R_NAME',expr#4=ITEM($t0, $t3),REGION_ID=$t2,REGION=$t4),
rowcount=100.0, cumulative cost={210.0 rows, 811.0 cpu, 0.0 io}
rel#894:EnumerableDrillRel.ENUMERABLE.[](child=rel#817:Subset#1.DRILL.[]),
rowcount=100.0, cumulative cost={120.0 rows, 131.0 cpu, 0.0 io}
Set#2, type: RecordType((VARCHAR, ANY) MAP _MAP)
rel#761:Subset#2.DRILL.[], best=rel#752, importance=0.531441
rel#752:DrillScan.DRILL.[](table=[parquet-local,
sample-data/nation.parquet]), rowcount=100.0, cumulative cost={100.0 rows,
101.0 cpu, 0.0 io}
rel#833:AbstractConverter.DRILL.[](child=rel#832:Subset#2.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=100.0, cumulative cost={inf}
rel#832:Subset#2.ENUMERABLE.[], best=rel#897,
importance=0.4782969000000001
rel#834:AbstractConverter.ENUMERABLE.[](child=rel#761:Subset#2.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=100.0, cumulative cost={inf}
rel#897:EnumerableDrillRel.ENUMERABLE.[](child=rel#761:Subset#2.DRILL.[]),
rowcount=100.0, cumulative cost={110.0 rows, 111.0 cpu, 0.0 io}
Set#3, type: RecordType((VARCHAR, ANY) MAP _MAP)
rel#763:Subset#3.NONE.[], best=null, importance=0.5904900000000001
rel#762:FilterRel.NONE.[](child=rel#761:Subset#2.DRILL.[],condition==(ITEM($0,
'N_REGIONKEY'), $cor0.REGION_ID)), rowcount=15.0, cumulative cost={inf}
rel#783:CalcRel.NONE.[](child=rel#761:Subset#2.DRILL.[],expr#0={inputs},expr#1='N_REGIONKEY',expr#2=ITEM($t0,
$t1),expr#3=$cor0,expr#4=$t3.REGION_ID,expr#5==($t2,
$t4),_MAP=$t0,$condition=$t5), rowcount=15.0, cumulative cost={inf}
rel#824:Subset#3.DRILL.[], best=rel#845, importance=0.49303944315545245
rel#825:AbstractConverter.DRILL.[](child=rel#763:Subset#3.NONE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#845:DrillFilterRel.DRILL.[](child=rel#761:Subset#2.DRILL.[],condition==(ITEM($0,
'N_REGIONKEY'), $cor0.REGION_ID)), rowcount=15.0, cumulative cost={101.5 rows,
111.0 cpu, 0.0 io}
rel#854:AbstractConverter.DRILL.[](child=rel#853:Subset#3.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=15.0, cumulative cost={inf}
rel#853:Subset#3.ENUMERABLE.[], best=rel#883, importance=0.495
rel#855:AbstractConverter.ENUMERABLE.[](child=rel#763:Subset#3.NONE.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#856:AbstractConverter.ENUMERABLE.[](child=rel#824:Subset#3.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=15.0, cumulative cost={inf}
rel#852:EnumerableCalcRel.ENUMERABLE.[](child=rel#832:Subset#2.ENUMERABLE.[],expr#0={inputs},expr#1='N_REGIONKEY',expr#2=ITEM($t0,
$t1),expr#3=$cor0,expr#4=$t3.REGION_ID,expr#5==($t2,
$t4),_MAP=$t0,$condition=$t5), rowcount=15.0, cumulative cost={125.0 rows,
911.0 cpu, 0.0 io}
rel#883:EnumerableDrillRel.ENUMERABLE.[](child=rel#824:Subset#3.DRILL.[]),
rowcount=15.0, cumulative cost={103.0 rows, 112.5 cpu, 0.0 io}
Set#4, type: RecordType(INTEGER $f0)
rel#765:Subset#4.NONE.[], best=null, importance=0.6561000000000001
rel#764:ProjectRel.NONE.[](child=rel#763:Subset#3.NONE.[],$f0=CAST(ITEM($0,
'N_NATIONKEY')):INTEGER NOT NULL), rowcount=1.7976931348623157E308, cumulative
cost={inf}
rel#782:CalcRel.NONE.[](child=rel#763:Subset#3.NONE.[],expr#0={inputs},expr#1='N_NATIONKEY',expr#2=ITEM($t0,
$t1),expr#3=CAST($t2):INTEGER NOT NULL,$f0=$t3),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#784:CalcRel.NONE.[](child=rel#761:Subset#2.DRILL.[],expr#0={inputs},expr#1='N_NATIONKEY',expr#2=ITEM($t0,
$t1),expr#3=CAST($t2):INTEGER NOT NULL,expr#4='N_REGIONKEY',expr#5=ITEM($t0,
$t4),expr#6=$cor0,expr#7=$t6.REGION_ID,expr#8==($t5,
$t7),$f0=$t3,$condition=$t8), rowcount=15.0, cumulative cost={inf}
rel#810:Subset#4.DRILL.[], best=rel#826, importance=0.4965437788018433
rel#811:AbstractConverter.DRILL.[](child=rel#765:Subset#4.NONE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#826:DrillProjectRel.DRILL.[](child=rel#824:Subset#3.DRILL.[],$f0=CAST(ITEM($0,
'N_NATIONKEY')):INTEGER NOT NULL), rowcount=15.0, cumulative cost={103.0 rows,
112.5 cpu, 0.0 io}
rel#837:AbstractConverter.DRILL.[](child=rel#836:Subset#4.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=15.0, cumulative cost={inf}
rel#836:Subset#4.ENUMERABLE.[], best=rel#888, importance=0.495
rel#838:AbstractConverter.ENUMERABLE.[](child=rel#765:Subset#4.NONE.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#839:AbstractConverter.ENUMERABLE.[](child=rel#810:Subset#4.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=15.0, cumulative cost={inf}
rel#835:EnumerableCalcRel.ENUMERABLE.[](child=rel#832:Subset#2.ENUMERABLE.[],expr#0={inputs},expr#1='N_NATIONKEY',expr#2=ITEM($t0,
$t1),expr#3=CAST($t2):INTEGER NOT NULL,expr#4='N_REGIONKEY',expr#5=ITEM($t0,
$t4),expr#6=$cor0,expr#7=$t6.REGION_ID,expr#8==($t5,
$t7),$f0=$t3,$condition=$t8), rowcount=15.0, cumulative cost={125.0 rows,
1211.0 cpu, 0.0 io}
rel#862:EnumerableCalcRel.ENUMERABLE.[](child=rel#853:Subset#3.ENUMERABLE.[],expr#0={inputs},expr#1='N_NATIONKEY',expr#2=ITEM($t0,
$t1),expr#3=CAST($t2):INTEGER NOT NULL,$f0=$t3), rowcount=15.0, cumulative
cost={118.0 rows, 187.5 cpu, 0.0 io}
rel#888:EnumerableDrillRel.ENUMERABLE.[](child=rel#810:Subset#4.DRILL.[]),
rowcount=15.0, cumulative cost={104.5 rows, 114.0 cpu, 0.0 io}
Set#5, type: RecordType(INTEGER EXPR$0)
rel#767:Subset#5.NONE.[], best=null, importance=0.7290000000000001
rel#766:AggregateRel.NONE.[](child=rel#765:Subset#4.NONE.[],group={},EXPR$0=SUM($0)),
rowcount=1.7976931348623158E307, cumulative cost={inf}
rel#813:Subset#5.DRILL.[], best=rel#812, importance=0.4993097100782328
rel#814:AbstractConverter.DRILL.[](child=rel#767:Subset#5.NONE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#812:DrillAggregateRel.DRILL.[](child=rel#810:Subset#4.DRILL.[],group={},EXPR$0=SUM($0)),
rowcount=1.5, cumulative cost={104.5 rows, 112.5 cpu, 0.0 io}
rel#874:AbstractConverter.DRILL.[](child=rel#873:Subset#5.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=1.5, cumulative cost={inf}
rel#873:Subset#5.ENUMERABLE.[], best=rel#885, importance=0.495
rel#875:AbstractConverter.ENUMERABLE.[](child=rel#767:Subset#5.NONE.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#876:AbstractConverter.ENUMERABLE.[](child=rel#813:Subset#5.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=1.5, cumulative cost={inf}
rel#872:EnumerableAggregateRel.ENUMERABLE.[](child=rel#836:Subset#4.ENUMERABLE.[],group={},EXPR$0=SUM($0)),
rowcount=1.5, cumulative cost={106.0 rows, 114.0 cpu, 0.0 io}
rel#885:EnumerableDrillRel.ENUMERABLE.[](child=rel#813:Subset#5.DRILL.[]),
rowcount=1.5, cumulative cost={104.65 rows, 112.65 cpu, 0.0 io}
Set#6, type: RecordType(ANY REGION_ID, ANY REGION, INTEGER EXPR$0)
rel#769:Subset#6.NONE.[], best=null, importance=0.81
rel#768:CorrelatorRel.NONE.[](left=rel#760:Subset#1.NONE.[],right=rel#767:Subset#5.NONE.[],condition=true,joinType=left,correlations=[var0=offset0]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#785:Subset#6.ENUMERABLE.[], best=null, importance=0.9
rel#786:AbstractConverter.ENUMERABLE.[](child=rel#769:Subset#6.NONE.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#789:AbstractConverter.ENUMERABLE.[](child=rel#788:Subset#6.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#807:EnumerableDrillRel.ENUMERABLE.[](child=rel#788:Subset#6.DRILL.[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#788:Subset#6.DRILL.[], best=null, importance=0.81
rel#790:AbstractConverter.DRILL.[](child=rel#769:Subset#6.NONE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#791:AbstractConverter.DRILL.[](child=rel#785:Subset#6.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
Set#7, type: RecordType(ANY REGION, ANY REGION_ID, INTEGER EXPR$2)
rel#771:Subset#7.NONE.[], best=null, importance=0.9
rel#770:ProjectRel.NONE.[](child=rel#769:Subset#6.NONE.[],REGION=$1,REGION_ID=$0,EXPR$2=$2),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#780:CalcRel.NONE.[](child=rel#769:Subset#6.NONE.[],expr#0..2={inputs},REGION=$t1,REGION_ID=$t0,EXPR$2=$t2),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#778:Subset#7.ENUMERABLE.[], best=null, importance=1.0
rel#779:AbstractConverter.ENUMERABLE.[](child=rel#771:Subset#7.NONE.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#787:EnumerableCalcRel.ENUMERABLE.[](child=rel#785:Subset#6.ENUMERABLE.[],expr#0..2={inputs},REGION=$t1,REGION_ID=$t0,EXPR$2=$t2),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#794:AbstractConverter.ENUMERABLE.[](child=rel#793:Subset#7.DRILL.[],convention=ENUMERABLE,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#797:EnumerableDrillRel.ENUMERABLE.[](child=rel#793:Subset#7.DRILL.[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#793:Subset#7.DRILL.[], best=null, importance=0.9
rel#795:AbstractConverter.DRILL.[](child=rel#771:Subset#7.NONE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#796:AbstractConverter.DRILL.[](child=rel#778:Subset#7.ENUMERABLE.[],convention=DRILL,sort=[]),
rowcount=1.7976931348623157E308, cumulative cost={inf}
rel#792:DrillProjectRel.DRILL.[](child=rel#788:Subset#6.DRILL.[],REGION=$1,REGION_ID=$0,EXPR$2=$2),
rowcount=1.7976931348623157E308, cumulative cost={inf}
at
org.eigenbase.relopt.volcano.RelSubset$CheapestPlanReplacer.visit(RelSubset.java:398)
at
org.eigenbase.relopt.volcano.RelSubset.buildCheapestPlan(RelSubset.java:257)
at
org.eigenbase.relopt.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:576)
at net.hydromatic.optiq.prepare.Prepare.optimize(Prepare.java:101)
at net.hydromatic.optiq.prepare.Prepare.prepareSql(Prepare.java:212)
at net.hydromatic.optiq.prepare.Prepare.prepareSql(Prepare.java:129)
at
net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare2_(OptiqPrepareImpl.java:255)
at
net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare_(OptiqPrepareImpl.java:195)
at
net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepareSql(OptiqPrepareImpl.java:168)
at
net.hydromatic.optiq.jdbc.OptiqStatement.parseQuery(OptiqStatement.java:402)
at
net.hydromatic.optiq.jdbc.OptiqStatement.execute(OptiqStatement.java:192)
at sqlline.SqlLine$Commands.execute(SqlLine.java:3825)
at sqlline.SqlLine$Commands.sql(SqlLine.java:3738)
at sqlline.SqlLine.dispatch(SqlLine.java:882)
at sqlline.SqlLine.begin(SqlLine.java:717)
at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:460)
at sqlline.SqlLine.main(SqlLine.java:443)
{code}
> Correlated sub-query doesn't work
> ---------------------------------
>
> Key: DRILL-207
> URL: https://issues.apache.org/jira/browse/DRILL-207
> Project: Apache Drill
> Issue Type: Bug
> Reporter: Ted Dunning
>
> For this query:
> {code}
> select x.region, x.region_id, y.total
> from
> (select _MAP['R_REGIONKEY'] as region_id, _MAP['R_NAME'] as region from
> "sample-data/region.parquet") x
> join
> (select sum(nation_id) total from
> (select _MAP['N_NATIONKEY'] as nation_id, _MAP['N_REGIONKEY'] region_id
> from "sample-data/nation.parquet") nation
> where region_id = x.region_id) y
> {code}
> I get this message:
> {code}
> Sep 04, 2013 1:36:48 PM org.eigenbase.sql.validate.SqlValidatorException
> <init>
> SEVERE: org.eigenbase.sql.validate.SqlValidatorException: Table 'X' not found
> Sep 04, 2013 1:36:48 PM org.eigenbase.util.EigenbaseException <init>
> SEVERE: org.eigenbase.util.EigenbaseContextException: At line 7, column 25
> org.eigenbase.util.EigenbaseContextException: At line 7, column 25
> at
> org.eigenbase.resource.EigenbaseResource$_Def11.ex(EigenbaseResource.java:1006)
> at org.eigenbase.sql.SqlUtil.newContextException(SqlUtil.java:739)
> at org.eigenbase.sql.SqlUtil.newContextException(SqlUtil.java:726)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:3830)
> at
> org.eigenbase.sql.validate.DelegatingScope.fullyQualify(DelegatingScope.java:176)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateIdentifier(SqlValidatorImpl.java:2585)
> at org.eigenbase.sql.SqlIdentifier.validateExpr(SqlIdentifier.java:241)
> at org.eigenbase.sql.SqlOperator.validateCall(SqlOperator.java:419)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateCall(SqlValidatorImpl.java:3984)
> at org.eigenbase.sql.SqlCall.validate(SqlCall.java:159)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateWhereOrOn(SqlValidatorImpl.java:3230)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateWhereClause(SqlValidatorImpl.java:3217)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3018)
> at
> org.eigenbase.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:69)
> at
> org.eigenbase.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:90)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:802)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:790)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2776)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2761)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateJoin(SqlValidatorImpl.java:2800)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2770)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3013)
> at
> org.eigenbase.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:69)
> at
> org.eigenbase.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:90)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:802)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:790)
> at org.eigenbase.sql.SqlSelect.validate(SqlSelect.java:154)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:753)
> at
> org.eigenbase.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:444)
> at
> org.eigenbase.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:445)
> at net.hydromatic.optiq.prepare.Prepare.prepareSql(Prepare.java:160)
> at net.hydromatic.optiq.prepare.Prepare.prepareSql(Prepare.java:129)
> at
> net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare2_(OptiqPrepareImpl.java:255)
> at
> net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepare_(OptiqPrepareImpl.java:195)
> at
> net.hydromatic.optiq.prepare.OptiqPrepareImpl.prepareSql(OptiqPrepareImpl.java:168)
> at
> net.hydromatic.optiq.jdbc.OptiqStatement.parseQuery(OptiqStatement.java:402)
> at
> net.hydromatic.optiq.jdbc.OptiqStatement.execute(OptiqStatement.java:192)
> at sqlline.SqlLine$Commands.execute(SqlLine.java:3825)
> at sqlline.SqlLine$Commands.sql(SqlLine.java:3738)
> at sqlline.SqlLine.dispatch(SqlLine.java:882)
> at sqlline.SqlLine.begin(SqlLine.java:717)
> at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:460)
> at sqlline.SqlLine.main(SqlLine.java:443)
> Caused by: org.eigenbase.sql.validate.SqlValidatorException: Table 'X' not
> found
> at
> org.eigenbase.resource.EigenbaseResource$_Def9.ex(EigenbaseResource.java:963)
> ... 39 more
> {code}
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira