mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-15572: view.test, server crash with --big-tables=1
Check that table is really opened before cleanup using handler.
This commit is contained in:
@ -5732,6 +5732,21 @@ t37, t38, t39, t40, t41, t42, t43, t44, t45,
|
|||||||
t46, t47, t48, t49, t50, t51, t52, t53, t54,
|
t46, t47, t48, t49, t50, t51, t52, t53, t54,
|
||||||
t55, t56, t57, t58, t59,t60;
|
t55, t56, t57, t58, t59,t60;
|
||||||
drop view v60;
|
drop view v60;
|
||||||
|
#
|
||||||
|
# MDEV-15572: view.test, server crash with --big-tables=1
|
||||||
|
#
|
||||||
|
set @save_big_tables=@@big_tables;
|
||||||
|
set big_tables=ON;
|
||||||
|
CREATE TABLE t1 ( f1 int , f2 int , f3 int , f4 int);
|
||||||
|
CREATE TABLE t2 ( f1 int , f2 int , f3 int , f4 int);
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT t2.f1, t1.f2, t2.f3, t2.f4 FROM (t1 JOIN t2);
|
||||||
|
REPLACE INTO v1 (f1, f2, f3, f4)
|
||||||
|
SELECT f1, f2, f3, f4 FROM t1;
|
||||||
|
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
|
||||||
|
drop view v1;
|
||||||
|
drop table t1, t2;
|
||||||
|
set big_tables=@save_big_tables;
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# -- End of 5.5 tests.
|
# -- End of 5.5 tests.
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
@ -5674,6 +5674,26 @@ t46, t47, t48, t49, t50, t51, t52, t53, t54,
|
|||||||
t55, t56, t57, t58, t59,t60;
|
t55, t56, t57, t58, t59,t60;
|
||||||
drop view v60;
|
drop view v60;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-15572: view.test, server crash with --big-tables=1
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
set @save_big_tables=@@big_tables;
|
||||||
|
set big_tables=ON;
|
||||||
|
CREATE TABLE t1 ( f1 int , f2 int , f3 int , f4 int);
|
||||||
|
CREATE TABLE t2 ( f1 int , f2 int , f3 int , f4 int);
|
||||||
|
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT t2.f1, t1.f2, t2.f3, t2.f4 FROM (t1 JOIN t2);
|
||||||
|
|
||||||
|
--error ER_VIEW_MULTIUPDATE
|
||||||
|
REPLACE INTO v1 (f1, f2, f3, f4)
|
||||||
|
SELECT f1, f2, f3, f4 FROM t1;
|
||||||
|
|
||||||
|
drop view v1;
|
||||||
|
drop table t1, t2;
|
||||||
|
set big_tables=@save_big_tables;
|
||||||
|
|
||||||
--echo # -----------------------------------------------------------------
|
--echo # -----------------------------------------------------------------
|
||||||
--echo # -- End of 5.5 tests.
|
--echo # -- End of 5.5 tests.
|
||||||
--echo # -----------------------------------------------------------------
|
--echo # -----------------------------------------------------------------
|
||||||
|
@ -3743,8 +3743,12 @@ void select_insert::abort_result_set() {
|
|||||||
example), no table will have been opened and therefore 'table'
|
example), no table will have been opened and therefore 'table'
|
||||||
will be NULL. In that case, we still need to execute the rollback
|
will be NULL. In that case, we still need to execute the rollback
|
||||||
and the end of the function.
|
and the end of the function.
|
||||||
|
|
||||||
|
If it fail due to inability to insert in multi-table view for example,
|
||||||
|
table will be assigned with view table structure, but that table will
|
||||||
|
not be opened really (it is dummy to check fields types & Co).
|
||||||
*/
|
*/
|
||||||
if (table)
|
if (table && table->file->get_table())
|
||||||
{
|
{
|
||||||
bool changed, transactional_table;
|
bool changed, transactional_table;
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user