1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-26695: Number of an invalid row is not calculated for table value

constructor

Analysis: counter does not increment while sending rows for table value
constructor and so row_number assumes the default value (0 in this case).
Fix: Increment the counter to avoid counter using default value.
This commit is contained in:
Rucha Deodhar
2022-01-23 13:42:41 +05:30
parent 9e314fcf6e
commit ee5966c754
3 changed files with 63 additions and 2 deletions

View File

@ -1811,3 +1811,38 @@ SELECT @n;
@n
4
DROP TABLE t;
#
# MDEV-26695: Number of an invalid row is not calculated for table value constructor
#
CREATE TABLE t1 (a CHAR(1)) VALUES ('a'),('b'),('foo');
Warnings:
Warning 1406 Data too long for column 'a' at row 3
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
SELECT @n;
@n
3
CREATE TABLE t2 (a CHAR(1)) VALUES ('a'),('b') UNION VALUES ('foo');
Warnings:
Warning 1406 Data too long for column 'a' at row 3
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
SELECT @n;
@n
3
DROP TABLE t1, t2;
# Checking that CREATE ... SELECT works
CREATE TABLE t1 (val1 CHAR(5));
INSERT INTO t1 VALUES ('A'),('B'),('C'),('DEF');
CREATE TABLE t2 (val2 CHAR(1)) SELECT val1 as val2 FROM t1;
Warnings:
Warning 1406 Data too long for column 'val2' at row 4
GET DIAGNOSTICS CONDITION 1 @n= ROW_NUMBER;
SELECT @n;
@n
4
SELECT * FROM t2;
val2
A
B
C
D
DROP TABLE t1,t2;