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

Fabian Hueske updated FLINK-5750:
---------------------------------
    Description: 
Calcite's union operator is supports more than two input relations. However, 
Flink's translation rules only consider the first two relations because we 
assumed that Calcite's union is binary. 
This problem exists for batch and streaming queries.

The following query can be used to validate the problem. 

{code:java}
@Test
        public void testValuesWithCast() throws Exception {
                ExecutionEnvironment env = 
ExecutionEnvironment.getExecutionEnvironment();
                BatchTableEnvironment tableEnv = 
TableEnvironment.getTableEnvironment(env, config());

                String sqlQuery = "VALUES (1, cast(1 as BIGINT) )," +
                        "(2, cast(2 as BIGINT))," +
                        "(3, cast(3 as BIGINT))";
                String sqlQuery2 = "VALUES (1,1)," +
                        "(2, 2)," +
                        "(3, 3)";
                Table result = tableEnv.sql(sqlQuery);
                DataSet<Row> resultSet = tableEnv.toDataSet(result, Row.class);
                List<Row> results = resultSet.collect();

                Table result2 = tableEnv.sql(sqlQuery2);
                DataSet<Row> resultSet2 = tableEnv.toDataSet(result2, 
Row.class);
                List<Row> results2 = resultSet2.collect();

                String expected = "1,1\n2,2\n3,3";
                compareResultAsText(results2, expected);
                compareResultAsText(results, expected);
        }
{code}

AR for {{results}} variable
{noformat}
java.lang.AssertionError: Different elements in arrays: expected 3 elements and 
received 2
 expected: [1,1, 2,2, 3,3]
 received: [1,1, 2,2] 
Expected :3
Actual   :2
{noformat}

It seems that 

  was:
Calcite's union operator is supports more than two input relations. However, 
Flink's translation rules only consider the first two relations because we 
assumed that Calcite's union is binary. 
This problem exists for batch and streaming queries.

The following query can be used to validate the problem. 

{code:java}
@Test
        public void testValuesWithCast() throws Exception {
                ExecutionEnvironment env = 
ExecutionEnvironment.getExecutionEnvironment();
                BatchTableEnvironment tableEnv = 
TableEnvironment.getTableEnvironment(env, config());

                String sqlQuery = "VALUES (1, cast(1 as BIGINT) )," +
                        "(2, cast(2 as BIGINT))," +
                        "(3, cast(3 as BIGINT))";
                String sqlQuery2 = "VALUES (1,1)," +
                        "(2, 2)," +
                        "(3, 3)";
                Table result = tableEnv.sql(sqlQuery);
                DataSet<Row> resultSet = tableEnv.toDataSet(result, Row.class);
                List<Row> results = resultSet.collect();

                Table result2 = tableEnv.sql(sqlQuery2);
                DataSet<Row> resultSet2 = tableEnv.toDataSet(result2, 
Row.class);
                List<Row> results2 = resultSet2.collect();

                String expected = "1,1\n2,2\n3,3";
                compareResultAsText(results2, expected);
                compareResultAsText(results, expected);
        }
{code}
AR for {{results}} variable
{noformat}
java.lang.AssertionError: Different elements in arrays: expected 3 elements and 
received 2
 expected: [1,1, 2,2, 3,3]
 received: [1,1, 2,2] 
Expected :3
Actual   :2
{noformat}


> Incorrect translation of n-ary Union
> ------------------------------------
>
>                 Key: FLINK-5750
>                 URL: https://issues.apache.org/jira/browse/FLINK-5750
>             Project: Flink
>          Issue Type: Bug
>          Components: Table API &amp; SQL
>    Affects Versions: 1.2.0, 1.3.4, 1.5.0, 1.4.2, 1.6.0
>            Reporter: Anton Mushin
>            Assignee: Alexander Koltsov
>            Priority: Critical
>              Labels: pull-request-available
>
> Calcite's union operator is supports more than two input relations. However, 
> Flink's translation rules only consider the first two relations because we 
> assumed that Calcite's union is binary. 
> This problem exists for batch and streaming queries.
> The following query can be used to validate the problem. 
> {code:java}
> @Test
>       public void testValuesWithCast() throws Exception {
>               ExecutionEnvironment env = 
> ExecutionEnvironment.getExecutionEnvironment();
>               BatchTableEnvironment tableEnv = 
> TableEnvironment.getTableEnvironment(env, config());
>               String sqlQuery = "VALUES (1, cast(1 as BIGINT) )," +
>                       "(2, cast(2 as BIGINT))," +
>                       "(3, cast(3 as BIGINT))";
>               String sqlQuery2 = "VALUES (1,1)," +
>                       "(2, 2)," +
>                       "(3, 3)";
>               Table result = tableEnv.sql(sqlQuery);
>               DataSet<Row> resultSet = tableEnv.toDataSet(result, Row.class);
>               List<Row> results = resultSet.collect();
>               Table result2 = tableEnv.sql(sqlQuery2);
>               DataSet<Row> resultSet2 = tableEnv.toDataSet(result2, 
> Row.class);
>               List<Row> results2 = resultSet2.collect();
>               String expected = "1,1\n2,2\n3,3";
>               compareResultAsText(results2, expected);
>               compareResultAsText(results, expected);
>       }
> {code}
> AR for {{results}} variable
> {noformat}
> java.lang.AssertionError: Different elements in arrays: expected 3 elements 
> and received 2
>  expected: [1,1, 2,2, 3,3]
>  received: [1,1, 2,2] 
> Expected :3
> Actual   :2
> {noformat}
> It seems that 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to