You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Fabian Hueske (JIRA)" <ji...@apache.org> on 2017/07/14 10:24:00 UTC
[jira] [Commented] (FLINK-7177) [table] Using Table API to perform
aggregation on another Table API / SQL result table causes
runVolcanoPlanner failed on physicalPlan generation
[ https://issues.apache.org/jira/browse/FLINK-7177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16087149#comment-16087149 ]
Fabian Hueske commented on FLINK-7177:
--------------------------------------
I looked into this issue, the problem is caused by the {{DataSetAggregateWithNullValuesRule}}, which try to create a {{null}} literal for a non-nullable data type (a {{RelRecordType}}, field {{a}} in the given example).
The purpose of the rule is to compute correct results for non-grouped aggregates if the input table is empty. For that it unions the input table with another table that has a single record with null literals. However, creating a null literal for a non-nullable data type fails.
> [table] Using Table API to perform aggregation on another Table API / SQL result table causes runVolcanoPlanner failed on physicalPlan generation
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: FLINK-7177
> URL: https://issues.apache.org/jira/browse/FLINK-7177
> Project: Flink
> Issue Type: Bug
> Components: Table API & SQL
> Affects Versions: 1.3.1
> Reporter: Rong Rong
>
> For example:
> {code:title=flink-libraries/flink-table/src/test/scala/org/apache/flink/table/api/scala/batch/sql/AggregationsITCase.scala|borderStyle=solid}
> @Test
> def testTableAggregationWithMultipleTableAPI(): Unit = {
> val env = ExecutionEnvironment.getExecutionEnvironment
> val tEnv = TableEnvironment.getTableEnvironment(env, config)
> val inputTable = CollectionDataSets.getSmallNestedTupleDataSet(env).toTable(tEnv, 'a, 'b)
> tEnv.registerDataSet("MyTable", inputTable)
> val resultTable = tEnv.scan("MyTable").select('a, 'b).where('a.get("_1") > 0)
> val failingTable = resultTable.select('a.get("_1").avg, 'a.get("_2").sum, 'b.count)
> val expected = "2,6,3"
> val results = result.toDataSet[Row].collect()
> TestBaseUtils.compareResultAsText(results.asJava, expected)
> }
> {code}
> Details can be found in: https://github.com/apache/flink/compare/master...walterddr:bug_report_sql_query_result_consume_by_table_api
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)