mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
ad031d5110
Problem: Grouping results by VALUES(alias for string literal) causes the server to crash. Item_insert_values is not constructed to handle other types of arguments than field and reference to field. In this case, the argument is an Item_string, and this causes Item_insert_values::fix_fields() to crash. Fix: Issue an error message when the argument to Item_insert_values is not a field or a reference to a field. This is slightly in breach with documentation, which states that VALUES should return NULL, but the error message is only issued in cases where the server otherwise would crash, so there is no change in behavior for queries that already work. Future versions will restrict syntax so that using VALUES in this way is illegal. mysql-test/r/errors.result: Add test case for bug #13031606. mysql-test/t/errors.test: Add test case for bug #13031606. sql/item.cc: Issue error message if argument is not field or reference to field.
71 lines
2.6 KiB
Text
71 lines
2.6 KiB
Text
drop table if exists t1;
|
|
insert into t1 values(1);
|
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
delete from t1;
|
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
update t1 set a=1;
|
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
create table t1 (a int);
|
|
select count(test.t1.b) from t1;
|
|
ERROR 42S22: Unknown column 'test.t1.b' in 'field list'
|
|
select count(not_existing_database.t1) from t1;
|
|
ERROR 42S22: Unknown column 'not_existing_database.t1' in 'field list'
|
|
select count(not_existing_database.t1.a) from t1;
|
|
ERROR 42S22: Unknown column 'not_existing_database.t1.a' in 'field list'
|
|
select count(not_existing_database.t1.a) from not_existing_database.t1;
|
|
Got one of the listed errors
|
|
select 1 from t1 order by 2;
|
|
ERROR 42S22: Unknown column '2' in 'order clause'
|
|
select 1 from t1 group by 2;
|
|
ERROR 42S22: Unknown column '2' in 'group statement'
|
|
select 1 from t1 order by t1.b;
|
|
ERROR 42S22: Unknown column 't1.b' in 'order clause'
|
|
select count(*),b from t1;
|
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
|
drop table t1;
|
|
create table t1 (a int(256));
|
|
ERROR 42000: Display width out of range for column 'a' (max = 255)
|
|
set sql_mode='traditional';
|
|
create table t1 (a varchar(66000));
|
|
ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead
|
|
set sql_mode=default;
|
|
CREATE TABLE t1 (a INT);
|
|
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
|
a
|
|
INSERT INTO t1 VALUES(1);
|
|
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
|
a
|
|
1
|
|
INSERT INTO t1 VALUES(2),(3);
|
|
SELECT a FROM t1 WHERE a IN(1, (SELECT IF(1=0,1,2/0)));
|
|
a
|
|
1
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1( a INT );
|
|
SELECT b FROM t1;
|
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
|
SHOW ERRORS;
|
|
Level Code Message
|
|
Error 1054 Unknown column 'b' in 'field list'
|
|
CREATE TABLE t2 SELECT b FROM t1;
|
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
|
SHOW ERRORS;
|
|
Level Code Message
|
|
Error 1054 Unknown column 'b' in 'field list'
|
|
INSERT INTO t1 SELECT b FROM t1;
|
|
ERROR 42S22: Unknown column 'b' in 'field list'
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a INT);
|
|
CREATE TABLE t2(a INT PRIMARY KEY, b INT);
|
|
SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
|
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
|
REPLACE t2(b) SELECT '' AS b FROM t1 GROUP BY VALUES(b);
|
|
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
|
UPDATE t2 SET a=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
|
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
|
INSERT INTO t2 VALUES (1,0) ON DUPLICATE KEY UPDATE
|
|
b=(SELECT '' AS b FROM t1 GROUP BY VALUES(b));
|
|
ERROR 42S22: Unknown column '' in 'VALUES() function'
|
|
INSERT INTO t2(a,b) VALUES (1,0) ON DUPLICATE KEY UPDATE
|
|
b=(SELECT VALUES(a)+2 FROM t1);
|
|
DROP TABLE t1, t2;
|