You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tajo.apache.org by Jung JaeHwa <jh...@gruter.com> on 2014/02/27 08:55:06 UTC

Review Request 18567: TAJO-640: In inner join clause, empty table can cause a error by order-by clause.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/18567/
-----------------------------------------------------------

Review request for Tajo.


Bugs: TAJO-640
    https://issues.apache.org/jira/browse/TAJO-640


Repository: tajo


Description
-------

In inner join clause, empty table can cause a error by order-by clause as follows:
{code:xml}
* SQL
select a.id from table1 a, table3 b where a.id = b.id order by a.id;

* Error
4-02-27 16:01:21,118 INFO  querymaster.SubQuery (SubQuery.java:initTaskScheduler(611)) - org.apache.tajo.master.DefaultTaskScheduler is chosen for the task scheduling
2014-02-27 16:01:21,119 INFO  querymaster.SubQuery (SubQuery.java:getNonLeafTaskNum(748)) - Table's volume is approximately 0 MB
2014-02-27 16:01:21,119 INFO  querymaster.SubQuery (SubQuery.java:getNonLeafTaskNum(751)) - The determined number of non-leaf tasks is 1
2014-02-27 16:01:21,121 ERROR querymaster.SubQuery (SubQuery.java:transition(595)) - SubQuery (eb_1393484173390_0002_000004) ERROR: 
java.lang.IllegalStateException: ERROR: Invalid Column Stats (column stats: [], there exists not target a.id (INT4)
	at com.google.common.base.Preconditions.checkState(Preconditions.java:150)
	at org.apache.tajo.engine.utils.TupleUtil.columnStatToRange(TupleUtil.java:79)
	at org.apache.tajo.master.querymaster.Repartitioner.scheduleRangeShuffledFetches(Repartitioner.java:332)
	at org.apache.tajo.master.querymaster.Repartitioner.scheduleFragmentsForNonLeafTasks(Repartitioner.java:300)
	at org.apache.tajo.master.querymaster.SubQuery$InitAndRequestContainer.schedule(SubQuery.java:733)
	at org.apache.tajo.master.querymaster.SubQuery$InitAndRequestContainer.transition(SubQuery.java:579)
	at org.apache.tajo.master.querymaster.SubQuery$InitAndRequestContainer.transition(SubQuery.java:560)
	at org.apache.hadoop.yarn.state.StateMachineFactory$MultipleInternalArc.doTransition(StateMachineFactory.java:385)
	at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
	at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:46)
	at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:448)
	at org.apache.tajo.master.querymaster.SubQuery.handle(SubQuery.java:537)
	at org.apache.tajo.master.querymaster.Query$SubQueryCompletedTransition.executeNextBlock(Query.java:560)
	at org.apache.tajo.master.querymaster.Query$SubQueryCompletedTransition.transition(Query.java:593)
	at org.apache.tajo.master.querymaster.Query$SubQueryCompletedTransition.transition(Query.java:546)
	at org.apache.hadoop.yarn.state.StateMachineFactory$SingleInternalArc.doTransition(StateMachineFactory.java:362)
	at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
	at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:46)
	at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:448)
	at org.apache.tajo.master.querymaster.Query.handle(Query.java:646)
	at org.apache.tajo.master.querymaster.Query.handle(Query.java:58)
	at org.apache.tajo.master.TajoAsyncDispatcher.dispatch(TajoAsyncDispatcher.java:137)
	at org.apache.tajo.master.TajoAsyncDispatcher$1.run(TajoAsyncDispatcher.java:79)
	at java.lang.Thread.run(Thread.java:680)
{code}


Diffs
-----

  tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java 4a7976f 
  tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TpchTestBase.java cb1805d 
  tajo-core/tajo-core-backend/src/test/resources/queries/TestJoinQuery/testInnerJoinWithEmptyTable.sql 00c7884 
  tajo-core/tajo-core-backend/src/test/resources/results/TestJoinQuery/testInnerJoinWithEmptyTable.result c6036d7 

Diff: https://reviews.apache.org/r/18567/diff/


Testing
-------

mvn clean install


Thanks,

Jung JaeHwa


Re: Review Request 18567: TAJO-640: In inner join clause, empty table can cause a error by order-by clause.

Posted by Hyunsik Choi <hy...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/18567/#review35616
-----------------------------------------------------------


+1

thank you for the quick fix.

- Hyunsik Choi


On Feb. 27, 2014, 4:55 p.m., Jung JaeHwa wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/18567/
> -----------------------------------------------------------
> 
> (Updated Feb. 27, 2014, 4:55 p.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-640
>     https://issues.apache.org/jira/browse/TAJO-640
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> In inner join clause, empty table can cause a error by order-by clause as follows:
> {code:xml}
> * SQL
> select a.id from table1 a, table3 b where a.id = b.id order by a.id;
> 
> * Error
> 4-02-27 16:01:21,118 INFO  querymaster.SubQuery (SubQuery.java:initTaskScheduler(611)) - org.apache.tajo.master.DefaultTaskScheduler is chosen for the task scheduling
> 2014-02-27 16:01:21,119 INFO  querymaster.SubQuery (SubQuery.java:getNonLeafTaskNum(748)) - Table's volume is approximately 0 MB
> 2014-02-27 16:01:21,119 INFO  querymaster.SubQuery (SubQuery.java:getNonLeafTaskNum(751)) - The determined number of non-leaf tasks is 1
> 2014-02-27 16:01:21,121 ERROR querymaster.SubQuery (SubQuery.java:transition(595)) - SubQuery (eb_1393484173390_0002_000004) ERROR: 
> java.lang.IllegalStateException: ERROR: Invalid Column Stats (column stats: [], there exists not target a.id (INT4)
> 	at com.google.common.base.Preconditions.checkState(Preconditions.java:150)
> 	at org.apache.tajo.engine.utils.TupleUtil.columnStatToRange(TupleUtil.java:79)
> 	at org.apache.tajo.master.querymaster.Repartitioner.scheduleRangeShuffledFetches(Repartitioner.java:332)
> 	at org.apache.tajo.master.querymaster.Repartitioner.scheduleFragmentsForNonLeafTasks(Repartitioner.java:300)
> 	at org.apache.tajo.master.querymaster.SubQuery$InitAndRequestContainer.schedule(SubQuery.java:733)
> 	at org.apache.tajo.master.querymaster.SubQuery$InitAndRequestContainer.transition(SubQuery.java:579)
> 	at org.apache.tajo.master.querymaster.SubQuery$InitAndRequestContainer.transition(SubQuery.java:560)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory$MultipleInternalArc.doTransition(StateMachineFactory.java:385)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:46)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:448)
> 	at org.apache.tajo.master.querymaster.SubQuery.handle(SubQuery.java:537)
> 	at org.apache.tajo.master.querymaster.Query$SubQueryCompletedTransition.executeNextBlock(Query.java:560)
> 	at org.apache.tajo.master.querymaster.Query$SubQueryCompletedTransition.transition(Query.java:593)
> 	at org.apache.tajo.master.querymaster.Query$SubQueryCompletedTransition.transition(Query.java:546)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory$SingleInternalArc.doTransition(StateMachineFactory.java:362)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:46)
> 	at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:448)
> 	at org.apache.tajo.master.querymaster.Query.handle(Query.java:646)
> 	at org.apache.tajo.master.querymaster.Query.handle(Query.java:58)
> 	at org.apache.tajo.master.TajoAsyncDispatcher.dispatch(TajoAsyncDispatcher.java:137)
> 	at org.apache.tajo.master.TajoAsyncDispatcher$1.run(TajoAsyncDispatcher.java:79)
> 	at java.lang.Thread.run(Thread.java:680)
> {code}
> 
> 
> Diffs
> -----
> 
>   tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/master/querymaster/Repartitioner.java 4a7976f 
>   tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/TpchTestBase.java cb1805d 
>   tajo-core/tajo-core-backend/src/test/resources/queries/TestJoinQuery/testInnerJoinWithEmptyTable.sql 00c7884 
>   tajo-core/tajo-core-backend/src/test/resources/results/TestJoinQuery/testInnerJoinWithEmptyTable.result c6036d7 
> 
> Diff: https://reviews.apache.org/r/18567/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install
> 
> 
> Thanks,
> 
> Jung JaeHwa
> 
>