[
https://issues.apache.org/jira/browse/CALCITE-3020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16833718#comment-16833718
]
Vladimir Sitnikov edited comment on CALCITE-3020 at 5/6/19 11:29 AM:
---------------------------------------------------------------------
{quote} scans with dynamic stars only - it can't be determined if the table is
dynamic {quote}
AFAIK validator somehow is able to tell if the used columns are valid. That
implies one can tell if table scan contains dynamic_star or not.
There are org.apache.calcite.rel.type.RelDataTypeField#isDynamicStar, and
org.apache.calcite.rel.type.DynamicRecordType#isDynamicStarColName methods in
Calcite codebase, so it should be possible to tell if the star is present or
not.
Adding types to all scans would increase verbosity of the plans which is sad
was (Author: vladimirsitnikov):
{quote} scans with dynamic stars only - it can't be determined if the table is
dynamic {quote}
AFAIK validator somehow is able to tell if the used columns are valid. That
implies one can tell if table scan contains dynamic_star or not.
There are org.apache.calcite.rel.type.RelDataTypeField#isDynamicStar, and
org.apache.calcite.rel.type.DynamicRecordType#isDynamicStarColName
> throws AssertionError:Type mismatch in VolcanoPlanner
> -----------------------------------------------------
>
> Key: CALCITE-3020
> URL: https://issues.apache.org/jira/browse/CALCITE-3020
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.19.0
> Reporter: godfrey he
> Assignee: Danny Chan
> Priority: Major
>
> after [CALCITE-2454|https://issues.apache.org/jira/browse/CALCITE-2454]
> merged, an AssertionError:Type mismatch will be thrown in VolcanoPlanner when
> running the following sql:
> {code:sql}
> WITH t1 AS (SELECT CAST(a as BIGINT) AS a, SUM(b) AS b FROM x GROUP BY CAST(a
> as BIGINT)),
> t2 AS (SELECT CAST(a as DOUBLE) AS a, SUM(b) AS b FROM x GROUP BY CAST(a
> as DOUBLE))
> SELECT t1.*, t2.* FROM t1, t2 WHERE t1.b = t2.b
> {code}
> Caused by: java.lang.AssertionError: Type mismatch:
> left:
> RecordType(BIGINT a, BIGINT b) NOT NULL
> right:
> RecordType(DOUBLE a, BIGINT b) NOT NULL
> at org.apache.calcite.util.Litmus$1.fail(Litmus.java:31)
> at org.apache.calcite.plan.RelOptUtil.equal(RelOptUtil.java:1858)
> at
> org.apache.calcite.plan.volcano.VolcanoPlanner.registerImpl(VolcanoPlanner.java:1705)
> at
> org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java:850)
> at
> org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:872)
> at
> org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:1958)
> at
> org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall.java:126)
> at
> org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:234)
> at
> org.apache.calcite.rel.convert.ConverterRule.onMatch(ConverterRule.java:141)
> at
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:205)
> at
> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:637)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)