mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-15950: LOAD DATA INTO compex_view crashed
For multi-table views with LOAD, updates are not allowed, so we should just throw an error.
This commit is contained in:
@ -574,3 +574,29 @@ a b
|
||||
6 6
|
||||
DROP VIEW IF EXISTS v2,t2;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
#
|
||||
# MDEV-15950: LOAD DATA INTO compex_view crashed
|
||||
#
|
||||
create table t1 (a int, b int);
|
||||
create table t0 (x int, y int);
|
||||
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1,t0;
|
||||
CREATE VIEW v2 AS SELECT * FROM v1;
|
||||
LOAD DATA INFILE '../../std_data/loaddata7.dat' INTO TABLE v1
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
|
||||
ERROR HY000: Incorrect usage of Multi-table VIEW and LOAD
|
||||
LOAD DATA INFILE '../../std_data/loaddata7.dat' INTO TABLE v2
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
|
||||
ERROR HY000: Incorrect usage of Multi-table VIEW and LOAD
|
||||
DROP VIEW IF EXISTS v2,v1;
|
||||
DROP TABLE IF EXISTS t1,t0;
|
||||
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), UNIQUE(b));
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
CREATE TABLE t2 (c INT);
|
||||
CREATE VIEW v AS SELECT t1.* FROM t1 JOIN t2;
|
||||
SELECT a, b FROM t1 INTO OUTFILE '15645.data';
|
||||
LOAD DATA INFILE '15645.data' IGNORE INTO TABLE v (a,b);
|
||||
ERROR HY000: Incorrect usage of Multi-table VIEW and LOAD
|
||||
LOAD DATA INFILE '15645.data' REPLACE INTO TABLE v (a,b);
|
||||
ERROR HY000: Incorrect usage of Multi-table VIEW and LOAD
|
||||
drop table t1,t2;
|
||||
drop view v;
|
||||
|
@ -690,3 +690,34 @@ select * from v2;
|
||||
select * from t2;
|
||||
DROP VIEW IF EXISTS v2,t2;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-15950: LOAD DATA INTO compex_view crashed
|
||||
--echo #
|
||||
create table t1 (a int, b int);
|
||||
create table t0 (x int, y int);
|
||||
CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1,t0;
|
||||
CREATE VIEW v2 AS SELECT * FROM v1;
|
||||
|
||||
--error ER_WRONG_USAGE
|
||||
LOAD DATA INFILE '../../std_data/loaddata7.dat' INTO TABLE v1
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
|
||||
|
||||
--error ER_WRONG_USAGE
|
||||
LOAD DATA INFILE '../../std_data/loaddata7.dat' INTO TABLE v2
|
||||
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
|
||||
|
||||
DROP VIEW IF EXISTS v2,v1;
|
||||
DROP TABLE IF EXISTS t1,t0;
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), UNIQUE(b));
|
||||
INSERT INTO t1 VALUES (1,1);
|
||||
CREATE TABLE t2 (c INT);
|
||||
CREATE VIEW v AS SELECT t1.* FROM t1 JOIN t2;
|
||||
SELECT a, b FROM t1 INTO OUTFILE '15645.data';
|
||||
--error ER_WRONG_USAGE
|
||||
LOAD DATA INFILE '15645.data' IGNORE INTO TABLE v (a,b);
|
||||
--error ER_WRONG_USAGE
|
||||
LOAD DATA INFILE '15645.data' REPLACE INTO TABLE v (a,b);
|
||||
drop table t1,t2;
|
||||
drop view v;
|
||||
|
@ -251,6 +251,11 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, "LOAD");
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
if (table_list->is_multitable())
|
||||
{
|
||||
my_error(ER_WRONG_USAGE, MYF(0), "Multi-table VIEW", "LOAD");
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
if (table_list->prepare_where(thd, 0, TRUE) ||
|
||||
table_list->prepare_check_option(thd))
|
||||
{
|
||||
|
Reference in New Issue
Block a user