You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Sourabh Badhya (Jira)" <ji...@apache.org> on 2022/09/30 15:16:00 UTC

[jira] [Updated] (HIVE-26582) Cartesian join fails if the query has an empty table when cartesian product edge is used

     [ https://issues.apache.org/jira/browse/HIVE-26582?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sourabh Badhya updated HIVE-26582:
----------------------------------
    Description: 
The following example fails when "hive.tez.cartesian-product.enabled" is enabled - 
Test command - 
{code:java}
mvn test -Dtest=TestMiniLlapCliDriver -Dqfile=file.q -Dtest.output.overwrite=true {code}
Query - file.q
{code:java}
set hive.tez.cartesian-product.enabled=true;

create table c (a1 int) stored as orc;
create table tmp1 (a int) stored as orc;
create table tmp2 (a int) stored as orc;

insert into table c values (3);
insert into table tmp1 values (3);

with
first as (
select a1 from c where a1 = 3
),
second as (
select a from tmp1
union all
select a from tmp2
)
select a from second cross join first; {code}
The following stack trace is seen - 
{code:java}
Caused by: java.lang.IllegalArgumentException: Number of items is 0. Should be positive
        at org.apache.tez.common.Preconditions.checkArgument(Preconditions.java:38)
        at org.apache.tez.runtime.library.utils.Grouper.init(Grouper.java:41)
        at org.apache.tez.runtime.library.cartesianproduct.FairCartesianProductEdgeManager.initialize(FairCartesianProductEdgeManager.java:66)
        at org.apache.tez.runtime.library.cartesianproduct.CartesianProductEdgeManager.initialize(CartesianProductEdgeManager.java:51)
        at org.apache.tez.dag.app.dag.impl.Edge.initialize(Edge.java:213)
        ... 22 more{code}
The following error is seen because one of the tables (tmp2 in this case) has 0 rows in it. 

The query works fine when the config hive.tez.cartesian-product.enabled is set to false.

 

 

  was:
The following example fails when "hive.tez.cartesian-product.enabled" is enabled - 
Test command - 
{code:java}
mvn test -Dtest=TestMiniLlapCliDriver -Dqfile=file.q -Dtest.output.overwrite=true {code}
Query - file.q
{code:java}
set hive.tez.cartesian-product.enabled=true;

create table c (a1 int) stored as orc;
create table tmp1 (a int) stored as orc;
create table tmp2 (a int) stored as orc;

insert into table c values (3);
insert into table tmp1 values (3);

with
first as (
select a1 from c where a1 = 3
),
second as (
select a from tmp1
union all
select a from tmp2
)
select a from second cross join first; {code}
The following stack trace is seen - 

 
{code:java}
Caused by: java.lang.IllegalArgumentException: Number of items is 0. Should be positive
        at org.apache.tez.common.Preconditions.checkArgument(Preconditions.java:38)
        at org.apache.tez.runtime.library.utils.Grouper.init(Grouper.java:41)
        at org.apache.tez.runtime.library.cartesianproduct.FairCartesianProductEdgeManager.initialize(FairCartesianProductEdgeManager.java:66)
        at org.apache.tez.runtime.library.cartesianproduct.CartesianProductEdgeManager.initialize(CartesianProductEdgeManager.java:51)
        at org.apache.tez.dag.app.dag.impl.Edge.initialize(Edge.java:213)
        ... 22 more{code}
The following error is seen because one of the tables (tmp2 in this case) has 0 rows in it. 

The query works fine when the config hive.tez.cartesian-product.enabled is set to false.

 

 


> Cartesian join fails if the query has an empty table when cartesian product edge is used
> ----------------------------------------------------------------------------------------
>
>                 Key: HIVE-26582
>                 URL: https://issues.apache.org/jira/browse/HIVE-26582
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Sourabh Badhya
>            Priority: Major
>
> The following example fails when "hive.tez.cartesian-product.enabled" is enabled - 
> Test command - 
> {code:java}
> mvn test -Dtest=TestMiniLlapCliDriver -Dqfile=file.q -Dtest.output.overwrite=true {code}
> Query - file.q
> {code:java}
> set hive.tez.cartesian-product.enabled=true;
> create table c (a1 int) stored as orc;
> create table tmp1 (a int) stored as orc;
> create table tmp2 (a int) stored as orc;
> insert into table c values (3);
> insert into table tmp1 values (3);
> with
> first as (
> select a1 from c where a1 = 3
> ),
> second as (
> select a from tmp1
> union all
> select a from tmp2
> )
> select a from second cross join first; {code}
> The following stack trace is seen - 
> {code:java}
> Caused by: java.lang.IllegalArgumentException: Number of items is 0. Should be positive
>         at org.apache.tez.common.Preconditions.checkArgument(Preconditions.java:38)
>         at org.apache.tez.runtime.library.utils.Grouper.init(Grouper.java:41)
>         at org.apache.tez.runtime.library.cartesianproduct.FairCartesianProductEdgeManager.initialize(FairCartesianProductEdgeManager.java:66)
>         at org.apache.tez.runtime.library.cartesianproduct.CartesianProductEdgeManager.initialize(CartesianProductEdgeManager.java:51)
>         at org.apache.tez.dag.app.dag.impl.Edge.initialize(Edge.java:213)
>         ... 22 more{code}
> The following error is seen because one of the tables (tmp2 in this case) has 0 rows in it. 
> The query works fine when the config hive.tez.cartesian-product.enabled is set to false.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)