pingcap / pingcap/tiflash

There is no supertype for types String, Int64 because some of them are String/FixedString and some of them are no

Open
#2,676 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.