Inconsistent cast conversion in Tiflash
Ouverte
Personne n'a encore pris cette issue.
affects-8.4
affects-8.5
component/compute
impact/inconsistency
may-affects-5.4
may-affects-6.1
may-affects-6.5
may-affects-7.1
may-affects-7.5
may-affects-8.1
severity/major
type/bug
- Langage dominant
- C++
- Étoiles
- 1k
- Forks
- 423
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 24
Description
Bug Report
Please answer these questions before submitting your issue. Thanks!
1. Minimal reproduce step (Required)
Drop table if exists test_table;
CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
col1 VARCHAR(255),
col2 TINYINT,
col3 SMALLINT
);
INSERT INTO test_table (col1, col2, col3) VALUES
('-9223372036854775809', -128, -32768),
('-9223372036854775808', 127, 32767);
ALTER TABLE test_table SET TIFLASH REPLICA 1;
SELECT /*+ READ_FROM_STORAGE(TIKV[test_table])*/
id,
col1,
CAST(col1 AS SIGNED) AS signed_int,
CAST(col1 AS UNSIGNED) AS unsigned_int,
CAST(col1 AS DECIMAL(65,30)) AS decimal_value,
CAST(col1 AS DOUBLE) AS double_value
FROM
test_table;
SELECT /*+ READ_FROM_STORAGE(TIFLASH[test_table])*/
id,
col1,
CAST(col1 AS SIGNED) AS signed_int,
CAST(col1 AS UNSIGNED) AS unsigned_int,
CAST(col1 AS DECIMAL(65,30)) AS decimal_value,
CAST(col1 AS DOUBLE) AS double_value
FROM
test_table;
2. What did you expect to see? (Required)
I find that unsigned_int is inconsistent across two queries.
3. What did you see instead (Required)
mysql> SELECT /*+ READ_FROM_STORAGE(TIKV[test_table])*/
-> id,
-> col1,
-> CAST(col1 AS SIGNED) AS signed_int,
-> CAST(col1 AS UNSIGNED) AS unsigned_int,
-> CAST(col1 AS DECIMAL(65,30)) AS decimal_value,
-> CAST(col1 AS DOUBLE) AS double_value
-> FROM
-> test_table;
+----+----------------------+----------------------+---------------------+-----------------------------------------------------+-----------------------+
| id | col1 | signed_int | unsigned_int | decimal_value | double_value |
+----+----------------------+----------------------+---------------------+-----------------------------------------------------+-----------------------+
| 1 | -9223372036854775809 | -9223372036854775808 | 9223372036854775808 | -9223372036854775809.000000000000000000000000000000 | -9.223372036854776e18 |
| 2 | -9223372036854775808 | -9223372036854775808 | 9223372036854775808 | -9223372036854775808.000000000000000000000000000000 | -9.223372036854776e18 |
+----+----------------------+----------------------+---------------------+-----------------------------------------------------+-----------------------+
2 rows in set, 4 warnings (0.01 sec)
mysql> SELECT /*+ READ_FROM_STORAGE(TIFLASH[test_table])*/ id, col1, CAST(col1 AS SIGNED) AS signed_int, CAST(col1 AS UNSIGNED) AS unsigned_int, CAST(col1 AS DECIMAL(65,30)) AS decimal_value, CAST(col1 AS DOUBLE) AS double_value FROM
test_table;
+----+----------------------+----------------------+---------------------+-----------------------------------------------------+-----------------------+
| id | col1 | signed_int | unsigned_int | decimal_value | double_value |
+----+----------------------+----------------------+---------------------+-----------------------------------------------------+-----------------------+
| 1 | -9223372036854775809 | -9223372036854775808 | 0 | -9223372036854775809.000000000000000000000000000000 | -9.223372036854776e18 |
| 2 | -9223372036854775808 | -9223372036854775808 | 9223372036854775808 | -9223372036854775808.000000000000000000000000000000 | -9.223372036854776e18 |
+----+----------------------+----------------------+---------------------+-----------------------------------------------------+-----------------------+
2 rows in set (0.01 sec)
4. What is your TiDB version? (Required)
TiDB v8.4.0
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter la reproduction SQL fournie sur TiDB v8.4.0 et comparez les résultats TIKV et TIFLASH-READ_FROM_STORAGE pour CAST(col1 AS UNSIGNED). Suivez la gestion du cast dans les deux chemins de stockage, en vous concentrant sur les valeurs limites indiquées ; le travail est terminé lorsque les deux requêtes produisent des résultats unsigned_int cohérents.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp, sql
- Domaine
- databases
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100