mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge branch '10.0' into 10.1
This commit is contained in:
@ -144,6 +144,7 @@ typedef struct st_heap_share
|
|||||||
uint key_version; /* Updated on key change */
|
uint key_version; /* Updated on key change */
|
||||||
uint file_version; /* Update on clear */
|
uint file_version; /* Update on clear */
|
||||||
uint reclength; /* Length of one record */
|
uint reclength; /* Length of one record */
|
||||||
|
uint visible; /* Offset to the visible/deleted mark */
|
||||||
uint changed;
|
uint changed;
|
||||||
uint keys,max_key_length;
|
uint keys,max_key_length;
|
||||||
uint currently_disabled_keys; /* saved value from "keys" when disabled */
|
uint currently_disabled_keys; /* saved value from "keys" when disabled */
|
||||||
|
@ -5268,114 +5268,6 @@ execute stmt1;
|
|||||||
deallocate prepare stmt1;
|
deallocate prepare stmt1;
|
||||||
drop view v1,v2;
|
drop view v1,v2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
#
|
|
||||||
# MDEV-6251: SIGSEGV in query optimizer (in set_check_materialized
|
|
||||||
# with MERGE view)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t2 (b1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t3 (c1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t4 (d1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t5 (e1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t6 (f1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE OR REPLACE view v1 AS
|
|
||||||
SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
;
|
|
||||||
SELECT 1
|
|
||||||
FROM (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t1)
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t2) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t3) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t4) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t5) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t6) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t7) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t8) ON 1=1
|
|
||||||
;
|
|
||||||
1
|
|
||||||
SELECT 1
|
|
||||||
FROM (v1 t1)
|
|
||||||
LEFT OUTER JOIN (v1 t2) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t3) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t4) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t5) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t6) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t7) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t8) ON 1=1
|
|
||||||
;
|
|
||||||
1
|
|
||||||
drop view v1;
|
|
||||||
drop table t1,t2,t3,t4,t5,t6;
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# -- End of 5.3 tests.
|
# -- End of 5.3 tests.
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
4
mysql-test/suite/maria/dynamic.result
Normal file
4
mysql-test/suite/maria/dynamic.result
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
create table t1 (a blob, b varchar(20000)) engine=aria row_format=dynamic;
|
||||||
|
insert t1 (b) values (repeat('a', 20000));
|
||||||
|
update t1 set b='b';
|
||||||
|
drop table t1;
|
7
mysql-test/suite/maria/dynamic.test
Normal file
7
mysql-test/suite/maria/dynamic.test
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#
|
||||||
|
# MDEV-13748 Assertion `status_var.local_memory_used == 0 || !debug_assert_on_not_freed_memory' failed in virtual THD::~THD after query with INTERSECT
|
||||||
|
#
|
||||||
|
create table t1 (a blob, b varchar(20000)) engine=aria row_format=dynamic;
|
||||||
|
insert t1 (b) values (repeat('a', 20000));
|
||||||
|
update t1 set b='b';
|
||||||
|
drop table t1;
|
@ -16,6 +16,15 @@ select * from t1;
|
|||||||
pk dt
|
pk dt
|
||||||
1 2017-09-28 15:12:00
|
1 2017-09-28 15:12:00
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a int) engine=Aria transactional=1 partition by hash(a) partitions 2;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=Aria DEFAULT CHARSET=latin1 TRANSACTIONAL=1
|
||||||
|
/*!50100 PARTITION BY HASH (a)
|
||||||
|
PARTITIONS 2 */
|
||||||
|
drop table t1;
|
||||||
#
|
#
|
||||||
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
# MDEV-14641 Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine
|
||||||
#
|
#
|
||||||
|
@ -17,5 +17,12 @@ alter table t1 drop partition p20181231;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13982 Server crashes in in ha_partition::engine_name
|
||||||
|
#
|
||||||
|
create table t1 (a int) engine=Aria transactional=1 partition by hash(a) partitions 2;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--let $engine=Aria
|
--let $engine=Aria
|
||||||
--source inc/part_alter_values.inc
|
--source inc/part_alter_values.inc
|
||||||
|
@ -42,8 +42,10 @@ select 1,
|
|||||||
3;
|
3;
|
||||||
insert into t2 values (1), (2);
|
insert into t2 values (1), (2);
|
||||||
select * from t2;
|
select * from t2;
|
||||||
|
--disable_ps_protocol
|
||||||
--error ER_NO_SUCH_TABLE
|
--error ER_NO_SUCH_TABLE
|
||||||
select * from t_doesnt_exist;
|
select * from t_doesnt_exist;
|
||||||
|
--enable_ps_protocol
|
||||||
--error 1064
|
--error 1064
|
||||||
syntax_error_query;
|
syntax_error_query;
|
||||||
drop table renamed_t1, t2;
|
drop table renamed_t1, t2;
|
||||||
|
@ -5182,118 +5182,6 @@ deallocate prepare stmt1;
|
|||||||
drop view v1,v2;
|
drop view v1,v2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # MDEV-6251: SIGSEGV in query optimizer (in set_check_materialized
|
|
||||||
--echo # with MERGE view)
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
CREATE TABLE t1 (a1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t2 (b1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t3 (c1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t4 (d1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t5 (e1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
CREATE TABLE t6 (f1 INT(11) NOT NULL DEFAULT NULL AUTO_INCREMENT PRIMARY KEY);
|
|
||||||
|
|
||||||
CREATE OR REPLACE view v1 AS
|
|
||||||
SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
;
|
|
||||||
|
|
||||||
SELECT 1
|
|
||||||
FROM (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t1)
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t2) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t3) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t4) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t5) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t6) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t7) ON 1=1
|
|
||||||
LEFT OUTER JOIN (( SELECT 1
|
|
||||||
FROM t1 a_alias_1
|
|
||||||
LEFT JOIN (t2 b_alias_1 JOIN t1 a_alias_2) ON b_alias_1.b1 = a_alias_1.a1 AND a_alias_2.a1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_1 ON c_alias_1.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t4 d_alias_1 ON d_alias_1.d1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t3 c_alias_2 ON c_alias_2.c1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t5 e_alias_1 ON e_alias_1.e1 = a_alias_1.a1
|
|
||||||
LEFT JOIN t6 f_alias_1 ON f_alias_1.f1 = a_alias_1.a1
|
|
||||||
) t8) ON 1=1
|
|
||||||
;
|
|
||||||
|
|
||||||
SELECT 1
|
|
||||||
FROM (v1 t1)
|
|
||||||
LEFT OUTER JOIN (v1 t2) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t3) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t4) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t5) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t6) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t7) ON 1=1
|
|
||||||
LEFT OUTER JOIN (v1 t8) ON 1=1
|
|
||||||
;
|
|
||||||
|
|
||||||
drop view v1;
|
|
||||||
drop table t1,t2,t3,t4,t5,t6;
|
|
||||||
|
|
||||||
--echo # -----------------------------------------------------------------
|
--echo # -----------------------------------------------------------------
|
||||||
--echo # -- End of 5.3 tests.
|
--echo # -- End of 5.3 tests.
|
||||||
--echo # -----------------------------------------------------------------
|
--echo # -----------------------------------------------------------------
|
||||||
|
@ -4198,7 +4198,7 @@ mysql_prepare_create_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||||||
/* Give warnings for not supported table options */
|
/* Give warnings for not supported table options */
|
||||||
#if defined(WITH_ARIA_STORAGE_ENGINE)
|
#if defined(WITH_ARIA_STORAGE_ENGINE)
|
||||||
extern handlerton *maria_hton;
|
extern handlerton *maria_hton;
|
||||||
if (file->ht != maria_hton)
|
if (file->partition_ht() != maria_hton)
|
||||||
#endif
|
#endif
|
||||||
if (create_info->transactional)
|
if (create_info->transactional)
|
||||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
@ -79,7 +79,7 @@ int heap_check_heap(HP_INFO *info, my_bool print_status)
|
|||||||
}
|
}
|
||||||
hp_find_record(info,pos);
|
hp_find_record(info,pos);
|
||||||
|
|
||||||
if (!info->current_ptr[share->reclength])
|
if (!info->current_ptr[share->visible])
|
||||||
deleted++;
|
deleted++;
|
||||||
else
|
else
|
||||||
records++;
|
records++;
|
||||||
|
@ -91,15 +91,6 @@ ha_heap::ha_heap(handlerton *hton, TABLE_SHARE *table_arg)
|
|||||||
|
|
||||||
int ha_heap::open(const char *name, int mode, uint test_if_locked)
|
int ha_heap::open(const char *name, int mode, uint test_if_locked)
|
||||||
{
|
{
|
||||||
if (table->s->reclength < sizeof (char*))
|
|
||||||
{
|
|
||||||
MEM_UNDEFINED(table->s->default_values + table->s->reclength,
|
|
||||||
sizeof(char*) - table->s->reclength);
|
|
||||||
table->s->reclength= sizeof(char*);
|
|
||||||
MEM_UNDEFINED(table->record[0], table->s->reclength);
|
|
||||||
MEM_UNDEFINED(table->record[1], table->s->reclength);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal_table= MY_TEST(test_if_locked & HA_OPEN_INTERNAL_TABLE);
|
internal_table= MY_TEST(test_if_locked & HA_OPEN_INTERNAL_TABLE);
|
||||||
if (internal_table || (!(file= heap_open(name, mode)) && my_errno == ENOENT))
|
if (internal_table || (!(file= heap_open(name, mode)) && my_errno == ENOENT))
|
||||||
{
|
{
|
||||||
@ -714,7 +705,7 @@ heap_prepare_hp_create_info(TABLE *table_arg, bool internal_table,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mem_per_row+= MY_ALIGN(share->reclength + 1, sizeof(char*));
|
mem_per_row+= MY_ALIGN(MY_MAX(share->reclength, sizeof(char*)) + 1, sizeof(char*));
|
||||||
if (table_arg->found_next_number_field)
|
if (table_arg->found_next_number_field)
|
||||||
{
|
{
|
||||||
keydef[share->next_number_index].flag|= HA_AUTO_KEY;
|
keydef[share->next_number_index].flag|= HA_AUTO_KEY;
|
||||||
|
@ -33,6 +33,7 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info,
|
|||||||
uint keys= create_info->keys;
|
uint keys= create_info->keys;
|
||||||
ulong min_records= create_info->min_records;
|
ulong min_records= create_info->min_records;
|
||||||
ulong max_records= create_info->max_records;
|
ulong max_records= create_info->max_records;
|
||||||
|
uint visible_offset;
|
||||||
DBUG_ENTER("heap_create");
|
DBUG_ENTER("heap_create");
|
||||||
|
|
||||||
if (!create_info->internal_table)
|
if (!create_info->internal_table)
|
||||||
@ -58,9 +59,9 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
We have to store sometimes uchar* del_link in records,
|
We have to store sometimes uchar* del_link in records,
|
||||||
so the record length should be at least sizeof(uchar*)
|
so the visible_offset must be least at sizeof(uchar*)
|
||||||
*/
|
*/
|
||||||
set_if_bigger(reclength, sizeof (uchar*));
|
visible_offset= MY_MAX(reclength, sizeof (char*));
|
||||||
|
|
||||||
for (i= key_segs= max_length= 0, keyinfo= keydef; i < keys; i++, keyinfo++)
|
for (i= key_segs= max_length= 0, keyinfo= keydef; i < keys; i++, keyinfo++)
|
||||||
{
|
{
|
||||||
@ -154,7 +155,7 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info,
|
|||||||
share->keydef= (HP_KEYDEF*) (share + 1);
|
share->keydef= (HP_KEYDEF*) (share + 1);
|
||||||
share->key_stat_version= 1;
|
share->key_stat_version= 1;
|
||||||
keyseg= (HA_KEYSEG*) (share->keydef + keys);
|
keyseg= (HA_KEYSEG*) (share->keydef + keys);
|
||||||
init_block(&share->block, reclength + 1, min_records, max_records);
|
init_block(&share->block, visible_offset + 1, min_records, max_records);
|
||||||
/* Fix keys */
|
/* Fix keys */
|
||||||
memcpy(share->keydef, keydef, (size_t) (sizeof(keydef[0]) * keys));
|
memcpy(share->keydef, keydef, (size_t) (sizeof(keydef[0]) * keys));
|
||||||
for (i= 0, keyinfo= share->keydef; i < keys; i++, keyinfo++)
|
for (i= 0, keyinfo= share->keydef; i < keys; i++, keyinfo++)
|
||||||
@ -196,6 +197,7 @@ int heap_create(const char *name, HP_CREATE_INFO *create_info,
|
|||||||
share->max_table_size= create_info->max_table_size;
|
share->max_table_size= create_info->max_table_size;
|
||||||
share->data_length= share->index_length= 0;
|
share->data_length= share->index_length= 0;
|
||||||
share->reclength= reclength;
|
share->reclength= reclength;
|
||||||
|
share->visible= visible_offset;
|
||||||
share->blength= 1;
|
share->blength= 1;
|
||||||
share->keys= keys;
|
share->keys= keys;
|
||||||
share->max_key_length= max_length;
|
share->max_key_length= max_length;
|
||||||
|
@ -45,7 +45,7 @@ int heap_delete(HP_INFO *info, const uchar *record)
|
|||||||
info->update=HA_STATE_DELETED;
|
info->update=HA_STATE_DELETED;
|
||||||
*((uchar**) pos)=share->del_link;
|
*((uchar**) pos)=share->del_link;
|
||||||
share->del_link=pos;
|
share->del_link=pos;
|
||||||
pos[share->reclength]=0; /* Record deleted */
|
pos[share->visible]=0; /* Record deleted */
|
||||||
share->deleted++;
|
share->deleted++;
|
||||||
share->key_version++;
|
share->key_version++;
|
||||||
#if !defined(DBUG_OFF) && defined(EXTRA_HEAP_DEBUG)
|
#if !defined(DBUG_OFF) && defined(EXTRA_HEAP_DEBUG)
|
||||||
|
@ -37,7 +37,7 @@ int heap_rrnd(register HP_INFO *info, uchar *record, uchar *pos)
|
|||||||
info->update= 0;
|
info->update= 0;
|
||||||
DBUG_RETURN(my_errno= HA_ERR_END_OF_FILE);
|
DBUG_RETURN(my_errno= HA_ERR_END_OF_FILE);
|
||||||
}
|
}
|
||||||
if (!info->current_ptr[share->reclength])
|
if (!info->current_ptr[share->visible])
|
||||||
{
|
{
|
||||||
info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND;
|
info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND;
|
||||||
DBUG_RETURN(my_errno=HA_ERR_RECORD_DELETED);
|
DBUG_RETURN(my_errno=HA_ERR_RECORD_DELETED);
|
||||||
|
@ -32,7 +32,7 @@ int heap_rsame(register HP_INFO *info, uchar *record, int inx)
|
|||||||
DBUG_ENTER("heap_rsame");
|
DBUG_ENTER("heap_rsame");
|
||||||
|
|
||||||
test_active(info);
|
test_active(info);
|
||||||
if (info->current_ptr[share->reclength])
|
if (info->current_ptr[share->visible])
|
||||||
{
|
{
|
||||||
if (inx < -1 || inx >= (int) share->keys)
|
if (inx < -1 || inx >= (int) share->keys)
|
||||||
{
|
{
|
||||||
|
@ -62,7 +62,7 @@ int heap_scan(register HP_INFO *info, uchar *record)
|
|||||||
}
|
}
|
||||||
hp_find_record(info, pos);
|
hp_find_record(info, pos);
|
||||||
}
|
}
|
||||||
if (!info->current_ptr[share->reclength])
|
if (!info->current_ptr[share->visible])
|
||||||
{
|
{
|
||||||
DBUG_PRINT("warning",("Found deleted record"));
|
DBUG_PRINT("warning",("Found deleted record"));
|
||||||
info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND;
|
info->update= HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND;
|
||||||
|
@ -54,7 +54,7 @@ int heap_write(HP_INFO *info, const uchar *record)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memcpy(pos,record,(size_t) share->reclength);
|
memcpy(pos,record,(size_t) share->reclength);
|
||||||
pos[share->reclength]=1; /* Mark record as not deleted */
|
pos[share->visible]= 1; /* Mark record as not deleted */
|
||||||
if (++share->records == share->blength)
|
if (++share->records == share->blength)
|
||||||
share->blength+= share->blength;
|
share->blength+= share->blength;
|
||||||
info->s->key_version++;
|
info->s->key_version++;
|
||||||
@ -92,7 +92,7 @@ err:
|
|||||||
share->deleted++;
|
share->deleted++;
|
||||||
*((uchar**) pos)=share->del_link;
|
*((uchar**) pos)=share->del_link;
|
||||||
share->del_link=pos;
|
share->del_link=pos;
|
||||||
pos[share->reclength]=0; /* Record deleted */
|
pos[share->visible]= 0; /* Record deleted */
|
||||||
|
|
||||||
DBUG_RETURN(my_errno);
|
DBUG_RETURN(my_errno);
|
||||||
} /* heap_write */
|
} /* heap_write */
|
||||||
|
@ -520,4 +520,6 @@ MYSQL_ADD_PLUGIN(innobase ${INNOBASE_SOURCES} STORAGE_ENGINE
|
|||||||
MODULE_OUTPUT_NAME ha_innodb
|
MODULE_OUTPUT_NAME ha_innodb
|
||||||
LINK_LIBRARIES ${ZLIB_LIBRARY} ${LIBSYSTEMD} ${LINKER_SCRIPT})
|
LINK_LIBRARIES ${ZLIB_LIBRARY} ${LIBSYSTEMD} ${LINKER_SCRIPT})
|
||||||
|
|
||||||
|
IF(TARGET innobase)
|
||||||
ADD_DEPENDENCIES(innobase GenError)
|
ADD_DEPENDENCIES(innobase GenError)
|
||||||
|
ENDIF()
|
||||||
|
@ -275,7 +275,7 @@ my_bool _ma_update_blob_record(MARIA_HA *info, MARIA_RECORD_POS pos,
|
|||||||
{
|
{
|
||||||
uchar *rec_buff;
|
uchar *rec_buff;
|
||||||
int error;
|
int error;
|
||||||
ulong reclength,extra;
|
ulong reclength,reclength2,extra;
|
||||||
|
|
||||||
extra= (ALIGN_SIZE(MARIA_MAX_DYN_BLOCK_HEADER)+MARIA_SPLIT_LENGTH+
|
extra= (ALIGN_SIZE(MARIA_MAX_DYN_BLOCK_HEADER)+MARIA_SPLIT_LENGTH+
|
||||||
MARIA_DYN_DELETE_BLOCK_HEADER);
|
MARIA_DYN_DELETE_BLOCK_HEADER);
|
||||||
@ -293,11 +293,12 @@ my_bool _ma_update_blob_record(MARIA_HA *info, MARIA_RECORD_POS pos,
|
|||||||
my_errno= HA_ERR_OUT_OF_MEM; /* purecov: inspected */
|
my_errno= HA_ERR_OUT_OF_MEM; /* purecov: inspected */
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
reclength= _ma_rec_pack(info,rec_buff+ALIGN_SIZE(MARIA_MAX_DYN_BLOCK_HEADER),
|
reclength2= _ma_rec_pack(info,rec_buff+ALIGN_SIZE(MARIA_MAX_DYN_BLOCK_HEADER),
|
||||||
record);
|
record);
|
||||||
|
DBUG_ASSERT(reclength2 <= reclength);
|
||||||
error=update_dynamic_record(info,pos,
|
error=update_dynamic_record(info,pos,
|
||||||
rec_buff+ALIGN_SIZE(MARIA_MAX_DYN_BLOCK_HEADER),
|
rec_buff+ALIGN_SIZE(MARIA_MAX_DYN_BLOCK_HEADER),
|
||||||
reclength);
|
reclength2);
|
||||||
my_safe_afree(rec_buff, reclength);
|
my_safe_afree(rec_buff, reclength);
|
||||||
return(error != 0);
|
return(error != 0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user