mirror of
https://github.com/MariaDB/server.git
synced 2025-07-13 23:08:12 +02:00

forever, cannot be killed mysql_rm_table_no_locks() does TDC_RT_REMOVE_ALL which waits while share is closed. The table normally is open only as OPEN_STUB, this is what parser does for CREATE TABLE. But for SELECT the table is opened not as a stub. If it is the same table name we anyway have two TABLE_LIST objects: stub and not stub. So for "not stub" TDC_RT_REMOVE_ALL sees open count and decides to wait until it is closed. And it hangs because that was opened in the same thread. The fix disables subqueries in CHECK expression at parser level. Thanks to Sergei Golubchik <serg@mariadb.org> for the patch.
99 lines
3.4 KiB
Text
99 lines
3.4 KiB
Text
#
|
|
# MDEV-7113 difference between check_vcol_func_processor and check_partition_func_processor
|
|
#
|
|
|
|
# the following functions must not be supported in persistent columns.
|
|
# but for compatibility reasons it won't be done in a GA version,
|
|
# we'll only fix most critical issues (inconsistent results, crashes)
|
|
|
|
connect (con1, localhost, root);
|
|
|
|
set lc_time_names = 'es_MX';
|
|
set time_zone='+10:00';
|
|
set div_precision_increment=20;
|
|
|
|
create table t1 (a int, b int, v decimal(20,19) as (a/3));
|
|
create table t2 (a int, b int, v int as (a+@a)); drop table t2;
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t2 (a int, b int, v int as (a+@a) PERSISTENT);
|
|
create table t3_ok (a int, b int, v int as (a+@@error_count));
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t3 (a int, b int, v int as (a+@@error_count) PERSISTENT);
|
|
create table t4 (a int, b int, v int as (@a:=a)); drop table t4;
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t4 (a int, b int, v int as (@a:=a) PERSISTENT);
|
|
create table t8 (a int, b int, v varchar(100) as (from_unixtime(a)));
|
|
|
|
insert t1 (a,b) values (1,2);
|
|
insert t8 (a,b) values (1234567890,2);
|
|
|
|
select * from t1;
|
|
select * from t8;
|
|
|
|
disconnect con1;
|
|
connection default;
|
|
set time_zone='+1:00';
|
|
flush tables;
|
|
|
|
select * from t1;
|
|
select * from t8;
|
|
|
|
drop table t1, t3_ok, t8;
|
|
|
|
--echo #
|
|
--echo # Bug#33141966 - INCONSISTENT BEHAVIOR IF A COLUMN OF TYPE SERIAL IS SET AS GENERATED
|
|
--echo #
|
|
--error ER_PARSE_ERROR
|
|
create table t1 (a int, b serial as (a+1));
|
|
|
|
--echo #
|
|
--echo # End of 10.2 tests
|
|
--echo #
|
|
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a int, b real as (rand()), c real as (b) stored);
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a int, b real as (rand()), c real as (b) unique);
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a int auto_increment primary key,
|
|
b int as (a+1), c int as (b+1) stored);
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t1 (a int auto_increment primary key,
|
|
b int as (a+1), c int as (b+1) unique);
|
|
|
|
--echo #
|
|
--echo # End of 10.3 tests
|
|
--echo #
|
|
|
|
--echo #
|
|
--echo # MDEV-29155 CREATE OR REPLACE with self-referencing CHECK hangs forever, cannot be killed
|
|
--echo #
|
|
create table t1 (a int);
|
|
create table t2 (b int)
|
|
# create or replace table t (b int);
|
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
create table t3 (c int, check(exists(select a from t1) or exists(select b from t2)));
|
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
create table t3 (c int, check(exists(select c from t3)));
|
|
create table t3 (d int);
|
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
create or replace table t3 (c int, check(exists(select a from t1) or exists(select b from t2)));
|
|
drop table t3;
|
|
create table t3 (d int);
|
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
create or replace table t3 (c int, check(exists(select c from t3)));
|
|
drop table t3;
|
|
create table t3 (c int);
|
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
alter table t3 add check(exists(select a from t1) or exists(select b from t2));
|
|
--error ER_SUBQUERIES_NOT_SUPPORTED
|
|
alter table t3 add check(exists(select c from t3));
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t3 (c int default (select a from t1));
|
|
--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
|
|
create table t3 (c int, d int generated always as (select a from t1 limit 1));
|
|
drop tables t1, t2, t3;
|
|
|
|
--echo #
|
|
--echo # End of 10.4 tests
|
|
--echo #
|