Commit 797bd73c authored by Rucha Deodhar's avatar Rucha Deodhar Committed by Sergei Golubchik

MDEV-26841: ROW_NUMBER is not set and differs from the message upon

ER_WRONG_VALUE_COUNT_ON_ROW for the 1st row

Analysis: Current row for warning does not increment for prepare phase
Fix: Increment current row for warning if number of fields in the table and
row values dont match and number of values in rows is greater than number
of fields
parent 635be990
...@@ -1747,3 +1747,21 @@ SELECT @n, @m; ...@@ -1747,3 +1747,21 @@ SELECT @n, @m;
@n @m @n @m
2 Data truncated for column 'a' at row 2 2 Data truncated for column 'a' at row 2
DROP TABLE t1; DROP TABLE t1;
#
# MDEV-26841: ROW_NUMBER is not set and differs from the message upon
# ER_WRONG_VALUE_COUNT_ON_ROW for the 1st row
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1,2),(3);
ERROR 21S01: Column count doesn't match value count at row 1
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER, @m= MESSAGE_TEXT;
SELECT @n, @m;
@n @m
1 Column count doesn't match value count at row 1
INSERT INTO t1(a) VALUES(1,2), (3);
ERROR 21S01: Column count doesn't match value count at row 1
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER, @m= MESSAGE_TEXT;
SELECT @n, @m;
@n @m
1 Column count doesn't match value count at row 1
DROP TABLE t1;
...@@ -1632,3 +1632,24 @@ GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER, @m= MESSAGE_TEXT; ...@@ -1632,3 +1632,24 @@ GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER, @m= MESSAGE_TEXT;
SELECT @n, @m; SELECT @n, @m;
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # MDEV-26841: ROW_NUMBER is not set and differs from the message upon
--echo # ER_WRONG_VALUE_COUNT_ON_ROW for the 1st row
--echo #
CREATE TABLE t1 (a INT);
--error ER_WRONG_VALUE_COUNT_ON_ROW
INSERT INTO t1 VALUES (1,2),(3);
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER, @m= MESSAGE_TEXT;
SELECT @n, @m;
--error ER_WRONG_VALUE_COUNT_ON_ROW
INSERT INTO t1(a) VALUES(1,2), (3);
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER, @m= MESSAGE_TEXT;
SELECT @n, @m;
DROP TABLE t1;
...@@ -229,6 +229,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list, ...@@ -229,6 +229,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
} }
if (values.elements != table->s->visible_fields) if (values.elements != table->s->visible_fields)
{ {
thd->get_stmt_da()->reset_current_row_for_warning(1);
my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), 1L); my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), 1L);
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
...@@ -253,6 +254,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list, ...@@ -253,6 +254,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list,
if (fields.elements != values.elements) if (fields.elements != values.elements)
{ {
thd->get_stmt_da()->reset_current_row_for_warning(1);
my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), 1L); my_error(ER_WRONG_VALUE_COUNT_ON_ROW, MYF(0), 1L);
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment