[ https://issues.apache.org/jira/browse/IGNITE-24707?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konstantin Orlov updated IGNITE-24707: -------------------------------------- Fix Version/s: 3.1 > Sql. Fix type coercion for quantify operators > --------------------------------------------- > > Key: IGNITE-24707 > URL: https://issues.apache.org/jira/browse/IGNITE-24707 > Project: Ignite > Issue Type: Bug > Components: sql > Reporter: Konstantin Orlov > Assignee: Konstantin Orlov > Priority: Major > Labels: ignite-3 > Fix For: 3.1 > > Time Spent: 10m > Remaining Estimate: 0h > > Currently, type coercion is not applied to quantify operators (ALL, SOME), > resulting in a wrong plan. > For example, let's take a look at output for following queries: > {code} > CREATE TABLE test (id INT PRIMARY KEY, int_c INT, byte_c TINYINT); > EXPLAIN PLAN FOR SELECT byte_c = SOME(SELECT int_c FROM test) FROM test; > =============== > Project > fields: [EXPR$0] > exprs: [OR(AND(IS NULL(BYTE_C), null, <>(c, 0)), AND(IS NOT NULL(i), > <>(c, 0), IS NOT NULL(BYTE_C)), AND(<(ck, c), null, <>(c, 0), IS NOT > NULL(BYTE_C), IS NULL(i)))] > est. row count: 3008500 > HashJoin > condition: =(BYTE_C, INT_C) > joinType: left > est. row count: 3008500 > NestedLoopJoin > condition: true > joinType: inner > est. row count: 10000 > Exchange > distribution: single > est. row count: 10000 > TableScan > table: [PUBLIC, TEST] > fields: [BYTE_C] > est. row count: 10000 > Project > fields: [c, ck] > exprs: [CAST(f0_0):BIGINT NOT NULL, CAST(f0_1):BIGINT NOT NULL] > est. row count: 1 > ReduceSortAggregate > rowType: RecordType(BIGINT f0_0, BIGINT f0_1) > group: [] > aggs: [$SUM0(_ACC0), $SUM0(_ACC1)] > collation: [] > est. row count: 1 > Exchange > distribution: single > est. row count: 1 > MapSortAggregate > group: [] > aggs: [COUNT(), COUNT(INT_C)] > collation: [] > est. row count: 1 > TableScan > table: [PUBLIC, TEST] > fields: [INT_C] > est. row count: 10000 > ColocatedHashAggregate > group: [INT_C] > aggs: [LITERAL_AGG(true)] > est. row count: 2000 > Exchange > distribution: single > est. row count: 10000 > TableScan > table: [PUBLIC, TEST] > fields: [INT_C] > est. row count: 10000 > {code} > The problem is missed cast of {{byte_c}} to {{INTEGER}} before {{HashJoin}} > operation resulting in a wrong outcome. -- This message was sent by Atlassian Jira (v8.20.10#820010)