There is no supertype for types String, Int64 because some of them are String/FixedString and some of them are no
Open
Nobody has claimed this yet.
component/compute
severity/moderate
type/bug
- Dominant language
- C++
- Stars
- 1k
- Forks
- 423
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 24
Description
master nightly version
randgen test
select min( (case when t2. `col_varbinary(20)_key_signed` >= "-1" then t1. `col_binary(20)_key_signed` else t1. `col_char(20)_key_signed` end) > (if(ifnull("jlsfJliGfs",t1. `col_varbinary(20)_key_signed`) <= t1. `col_char(20)_key_signed`,t1. `col_binary(20)_key_signed`,NULL))) from table_100_binary_undef as t1 right join table_75_utf8mb4collate_utf8mb4_general_ci_undef as t2 on t2. `col_varbinary(20)_key_signed` < "Y";
+--------------------------------------------------------+---------+-------------------+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | estRows | task | access object | operator info |
+--------------------------------------------------------+---------+-------------------+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| StreamAgg_14 | 1.00 | root | | funcs:min(Column#30)->Column#27 |
| └─Projection_47 | 1.00 | root | | gt(case(ge(rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, -1), rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_100_binary_undef.col_char(20)_key_signed), if(le(jlsfJliGfs, rs2.table_100_binary_undef.col_char(20)_key_signed), rs2.table_100_binary_undef.col_binary(20)_key_signed, <nil>))->Column#30 |
| └─Projection_45 | 1.00 | root | | rs2.table_100_binary_undef.col_char(20)_key_signed, rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed |
| └─TopN_18 | 1.00 | root | | Column#29, offset:0, count:1 |
| └─Projection_46 | 1.00 | root | | rs2.table_100_binary_undef.col_char(20)_key_signed, rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, gt(case(ge(rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, -1), rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_100_binary_undef.col_char(20)_key_signed), if(le(jlsfJliGfs, rs2.table_100_binary_undef.col_char(20)_key_signed), rs2.table_100_binary_undef.col_binary(20)_key_signed, <nil>))->Column#29 |
| └─TableReader_42 | 1.00 | root | | data:ExchangeSender_41 |
| └─ExchangeSender_41 | 1.00 | batchCop[tiflash] | | ExchangeType: PassThrough |
| └─Projection_43 | 1.00 | batchCop[tiflash] | | rs2.table_100_binary_undef.col_char(20)_key_signed, rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed |
| └─TopN_40 | 1.00 | batchCop[tiflash] | | Column#28, offset:0, count:1 |
| └─Projection_44 | 2492.50 | batchCop[tiflash] | | rs2.table_100_binary_undef.col_char(20)_key_signed, rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, gt(case(ge(rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, -1), rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_100_binary_undef.col_char(20)_key_signed), if(le(jlsfJliGfs, rs2.table_100_binary_undef.col_char(20)_key_signed), rs2.table_100_binary_undef.col_binary(20)_key_signed, <nil>))->Column#28 |
| └─Projection_39 | 2492.50 | batchCop[tiflash] | | rs2.table_100_binary_undef.col_char(20)_key_signed, rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed |
| └─HashJoin_36 | 2492.50 | batchCop[tiflash] | | CARTESIAN inner join, other cond:not(isnull(gt(case(ge(rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, "-1"), rs2.table_100_binary_undef.col_binary(20)_key_signed, rs2.table_100_binary_undef.col_char(20)_key_signed), if(le("jlsfJliGfs", rs2.table_100_binary_undef.col_char(20)_key_signed), rs2.table_100_binary_undef.col_binary(20)_key_signed, NULL)))) |
| ├─ExchangeReceiver_27(Build) | 24.93 | batchCop[tiflash] | | |
| │ └─ExchangeSender_26 | 24.93 | batchCop[tiflash] | | ExchangeType: Broadcast |
| │ └─Selection_25 | 24.93 | batchCop[tiflash] | | lt(rs2.table_75_utf8mb4collate_utf8mb4_general_ci_undef.col_varbinary(20)_key_signed, "Y") |
| │ └─TableFullScan_24 | 75.00 | batchCop[tiflash] | table:t2 | keep order:false, stats:pseudo |
| └─TableFullScan_28(Probe) | 100.00 | batchCop[tiflash] | table:t1 | keep order:false, stats:pseudo |
+--------------------------------------------------------+---------+-------------------+---------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the query from the randgen test on the master nightly version and inspect the type inference path for the CASE and IF expressions combining String, FixedString, and Int64 values. Done means the query no longer fails with the reported “no supertype” error and its behavior is covered by a regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, sql
- Domain
- backend, databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100