Details
-
Bug
-
Status: Open (View Workflow)
-
Minor
-
Resolution: Unresolved
-
10.5, 10.6, 10.7(EOL)
-
None
Description
Below are some examples how the row counter can be right or wrong for Columnstore tables, and some loosely related MCOL bugs are linked. I don't expect it to be fixable on the server side or to be fixed on the Columnstore side, and I doubt we can spell any meaningful rules for the end users for when ERROR_INDEX works for Columnstore and when doesn't, so I lean towards passing it over straight to documentation to issue a blank statement that it cannot be relied upon when Columnstore is involved.
This works
10.7 8dd4794c4e1 |
MariaDB [db]> create table t (a tinyint) engine=Columnstore; |
Query OK, 0 rows affected (0.661 sec) |
|
MariaDB [db]> insert into t values (1),(200); |
ERROR 1264 (22003): Out of range value for column 'a' at row 2 |
|
MariaDB [db]> set @n = null; get diagnostics condition 1 @n = error_index; select @n; |
Query OK, 0 rows affected (0.001 sec) |
|
Query OK, 0 rows affected (0.000 sec) |
|
+------+ |
| @n |
|
+------+ |
| 2 |
|
+------+ |
1 row in set (0.000 sec) |
This doesn't:
MariaDB [db]> create table t (a tinyint) engine=Columnstore; |
Query OK, 0 rows affected (0.701 sec) |
|
MariaDB [db]> insert into t values (1),(100); |
Query OK, 2 rows affected (0.530 sec) |
Records: 2 Duplicates: 0 Warnings: 0
|
|
MariaDB [db]> update t set a = a*2; |
ERROR 1264 (22003): CAL0002: IDB-2025: Data truncated for column 'a' |
MariaDB [db]> show warnings;
|
+-------+------+---------------------------------------------------------------------+ |
| Level | Code | Message | |
+-------+------+---------------------------------------------------------------------+ |
| Error | 1264 | CAL0002: IDB-2025: Data truncated for column 'a' | |
| Error | 1030 | Got error 1815 "Unknown error 1815" from storage engine ColumnStore | |
+-------+------+---------------------------------------------------------------------+ |
2 rows in set (0.000 sec) |
|
MariaDB [db]> set @n1 = null, @n2 = null; get diagnostics condition 1 @n1 = error_index; get diagnostics condition 2 @n2 = error_index; select @n1, @n2; |
|
+------+------+ |
| @n1 | @n2 |
|
+------+------+ |
| 1 | 1 |
|
+------+------+ |
1 row in set (0.000 sec) |
This also doesn't:
MariaDB [db]> insert into t select a * 2 from t; |
ERROR 1264 (22003): Out of range value for column 'a' at row 1 |
MariaDB [db]> show warnings;
|
+-------+------+--------------------------------------------+ |
| Level | Code | Message | |
+-------+------+--------------------------------------------+ |
| Error | 1264 | Out of range value for column 'a' at row 1 | |
+-------+------+--------------------------------------------+ |
1 row in set (0.001 sec) |
|
MariaDB [db]> set @n = null; get diagnostics condition 1 @n = error_index; select @n; |
Query OK, 0 rows affected (0.000 sec) |
|
Query OK, 0 rows affected (0.000 sec) |
|
+------+ |
| @n |
|
+------+ |
| 1 |
|
+------+ |
1 row in set (0.000 sec) |
It can also fail in a different way (MCOL-4879), which doesn't do any good to the counter either:
MariaDB [db]> insert into t select a * 2 from t; |
ERROR 1815 (HY000): Internal error: Unknown error
|
MariaDB [db]> set @n = null; get diagnostics condition 1 @n = error_index; select @n; |
Query OK, 0 rows affected (0.000 sec) |
|
Query OK, 0 rows affected (0.000 sec) |
|
+------+ |
| @n |
|
+------+ |
| 1 |
|
+------+ |
1 row in set (0.000 sec) |
I've set affected version to 10.5+ as I don't suppose the counter works any better than in 10.7, but I only tried 10.7. I don't think there is any place to document it for 10.5-10.6, but for the new diagnostics addition in 10.7 the mention of it may be suitable.
Attachments
Issue Links
- is caused by
-
MDEV-10075 Provide index of error causing error in array INSERT
- Closed