mariadb/mysql-test/t/not_partition.test

86 lines
2.4 KiB
Text
Raw Normal View History

Bug#18888 Trying to overwrite sql/lex_hash.h during build - As a sideeffect of the patch to generate lex_hash.h only once on the machine where the source dist was produced, a problem was found when compiling a mysqld without partition support - it would crash when looking up the lex symbols due to mismatch between lex.h and the generated lex_hash.h - Remove the ifdef for partition in lex.h - Fix minor problem with"EXPLAIN PARTITION" when not compiled with partition(existed also without the above patch) - Add test case that will be run when we don't have partition support compiled into mysqld - Return error ER_FEATURE_DISABLED if user tries to use PARTITION when there is no support for it. sql/lex.h: There should be no ifdefs of features in lex.h sql/sql_class.cc: In line with the comment in sql_yacc.yy that we want the same output from "EXPLAIN PARTITIONS.." regardless of wheter we have compiled in support for partition or not, remove the ifdef so the extra field is added to output if the DESCRIBE_PARTITIONS bit it set. Without this patch we get a crash as the code in select_describe believes the field is there. sql/sql_select.cc: Use "const" for the variable as it's a ssigned once and never changes sql/sql_yacc.yy: Don't allow PARTITION syntax oif there is no suport for partitioning mysql-test/r/not_partition.require: New BitKeeper file ``mysql-test/r/not_partition.require'' mysql-test/r/not_partition.result: New BitKeeper file ``mysql-test/r/not_partition.result'' mysql-test/t/not_partition.test: New BitKeeper file ``mysql-test/t/not_partition.test''
2006-10-26 19:11:09 +02:00
--disable_abort_on_error
Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Problem was that it tried to run partitioning function calls when opening a partitioned table, when it was explicitly disabled. Solution is to check if the partitioning plugin is ready to use before using any partitioning specific calls. mysql-test/r/disabled_partition.require: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New require file to use when partitioning is disabled (but compiled in) mysql-test/r/not_partition.result: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Updated testcase mysql-test/r/partition_disabled.result: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New result file mysql-test/std_data/parts/t1.frm: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled frm file for 'create table t1 (a int) partition by hash (a)' mysql-test/t/not_partition.test: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Updated test cases mysql-test/t/partition_disabled-master.opt: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New opt file mysql-test/t/partition_disabled.test: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New test file (looks like not_partition.test, but with different errors) sql/sql_yacc.yy: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Better error message (it is already built with partitioning, but is explicitly disabled). sql/table.cc: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled If the partitioning plugin is not ready, fail to open the table.
2009-01-08 15:16:44 +01:00
# Run this test only when mysqld don't has partitioning (not compiled with)
Bug#18888 Trying to overwrite sql/lex_hash.h during build - As a sideeffect of the patch to generate lex_hash.h only once on the machine where the source dist was produced, a problem was found when compiling a mysqld without partition support - it would crash when looking up the lex symbols due to mismatch between lex.h and the generated lex_hash.h - Remove the ifdef for partition in lex.h - Fix minor problem with"EXPLAIN PARTITION" when not compiled with partition(existed also without the above patch) - Add test case that will be run when we don't have partition support compiled into mysqld - Return error ER_FEATURE_DISABLED if user tries to use PARTITION when there is no support for it. sql/lex.h: There should be no ifdefs of features in lex.h sql/sql_class.cc: In line with the comment in sql_yacc.yy that we want the same output from "EXPLAIN PARTITIONS.." regardless of wheter we have compiled in support for partition or not, remove the ifdef so the extra field is added to output if the DESCRIBE_PARTITIONS bit it set. Without this patch we get a crash as the code in select_describe believes the field is there. sql/sql_select.cc: Use "const" for the variable as it's a ssigned once and never changes sql/sql_yacc.yy: Don't allow PARTITION syntax oif there is no suport for partitioning mysql-test/r/not_partition.require: New BitKeeper file ``mysql-test/r/not_partition.require'' mysql-test/r/not_partition.result: New BitKeeper file ``mysql-test/r/not_partition.result'' mysql-test/t/not_partition.test: New BitKeeper file ``mysql-test/t/not_partition.test''
2006-10-26 19:11:09 +02:00
# the statements are not expected to work, just check that we
# can't crash the server
-- require r/not_partition.require
disable_query_log;
show variables like "have_partitioning";
enable_query_log;
Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Problem was that it tried to run partitioning function calls when opening a partitioned table, when it was explicitly disabled. Solution is to check if the partitioning plugin is ready to use before using any partitioning specific calls. mysql-test/r/disabled_partition.require: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New require file to use when partitioning is disabled (but compiled in) mysql-test/r/not_partition.result: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Updated testcase mysql-test/r/partition_disabled.result: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New result file mysql-test/std_data/parts/t1.frm: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled frm file for 'create table t1 (a int) partition by hash (a)' mysql-test/t/not_partition.test: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Updated test cases mysql-test/t/partition_disabled-master.opt: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New opt file mysql-test/t/partition_disabled.test: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New test file (looks like not_partition.test, but with different errors) sql/sql_yacc.yy: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Better error message (it is already built with partitioning, but is explicitly disabled). sql/table.cc: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled If the partitioning plugin is not ready, fail to open the table.
2009-01-08 15:16:44 +01:00
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
let $MYSQLD_DATADIR= `SELECT @@datadir`;
Bug#18888 Trying to overwrite sql/lex_hash.h during build - As a sideeffect of the patch to generate lex_hash.h only once on the machine where the source dist was produced, a problem was found when compiling a mysqld without partition support - it would crash when looking up the lex symbols due to mismatch between lex.h and the generated lex_hash.h - Remove the ifdef for partition in lex.h - Fix minor problem with"EXPLAIN PARTITION" when not compiled with partition(existed also without the above patch) - Add test case that will be run when we don't have partition support compiled into mysqld - Return error ER_FEATURE_DISABLED if user tries to use PARTITION when there is no support for it. sql/lex.h: There should be no ifdefs of features in lex.h sql/sql_class.cc: In line with the comment in sql_yacc.yy that we want the same output from "EXPLAIN PARTITIONS.." regardless of wheter we have compiled in support for partition or not, remove the ifdef so the extra field is added to output if the DESCRIBE_PARTITIONS bit it set. Without this patch we get a crash as the code in select_describe believes the field is there. sql/sql_select.cc: Use "const" for the variable as it's a ssigned once and never changes sql/sql_yacc.yy: Don't allow PARTITION syntax oif there is no suport for partitioning mysql-test/r/not_partition.require: New BitKeeper file ``mysql-test/r/not_partition.require'' mysql-test/r/not_partition.result: New BitKeeper file ``mysql-test/r/not_partition.result'' mysql-test/t/not_partition.test: New BitKeeper file ``mysql-test/t/not_partition.test''
2006-10-26 19:11:09 +02:00
Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Problem was that it tried to run partitioning function calls when opening a partitioned table, when it was explicitly disabled. Solution is to check if the partitioning plugin is ready to use before using any partitioning specific calls. mysql-test/r/disabled_partition.require: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New require file to use when partitioning is disabled (but compiled in) mysql-test/r/not_partition.result: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Updated testcase mysql-test/r/partition_disabled.result: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New result file mysql-test/std_data/parts/t1.frm: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled frm file for 'create table t1 (a int) partition by hash (a)' mysql-test/t/not_partition.test: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Updated test cases mysql-test/t/partition_disabled-master.opt: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New opt file mysql-test/t/partition_disabled.test: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled New test file (looks like not_partition.test, but with different errors) sql/sql_yacc.yy: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled Better error message (it is already built with partitioning, but is explicitly disabled). sql/table.cc: Bug#39893: Crash if select on a partitioned table, when partitioning is disabled If the partitioning plugin is not ready, fail to open the table.
2009-01-08 15:16:44 +01:00
#
# Bug#39893: Crash if select on a partitioned table,
# when partitioning is disabled
FLUSH TABLES;
--copy_file $MYSQLTEST_VARDIR/std_data_ln/parts/t1.frm $MYSQLD_DATADIR/test/t1.frm
SELECT * FROM t1;
TRUNCATE TABLE t1;
ANALYZE TABLE t1;
CHECK TABLE t1;
OPTIMIZE TABLE t1;
REPAIR TABLE t1;
ALTER TABLE t1 REPAIR PARTITION ALL;
ALTER TABLE t1 CHECK PARTITION ALL;
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
ALTER TABLE t1 ANALYZE PARTITION ALL;
ALTER TABLE t1 REBUILD PARTITION ALL;
ALTER TABLE t1 ENGINE Memory;
ALTER TABLE t1 ADD (new INT);
DROP TABLE t1;
Bug#18888 Trying to overwrite sql/lex_hash.h during build - As a sideeffect of the patch to generate lex_hash.h only once on the machine where the source dist was produced, a problem was found when compiling a mysqld without partition support - it would crash when looking up the lex symbols due to mismatch between lex.h and the generated lex_hash.h - Remove the ifdef for partition in lex.h - Fix minor problem with"EXPLAIN PARTITION" when not compiled with partition(existed also without the above patch) - Add test case that will be run when we don't have partition support compiled into mysqld - Return error ER_FEATURE_DISABLED if user tries to use PARTITION when there is no support for it. sql/lex.h: There should be no ifdefs of features in lex.h sql/sql_class.cc: In line with the comment in sql_yacc.yy that we want the same output from "EXPLAIN PARTITIONS.." regardless of wheter we have compiled in support for partition or not, remove the ifdef so the extra field is added to output if the DESCRIBE_PARTITIONS bit it set. Without this patch we get a crash as the code in select_describe believes the field is there. sql/sql_select.cc: Use "const" for the variable as it's a ssigned once and never changes sql/sql_yacc.yy: Don't allow PARTITION syntax oif there is no suport for partitioning mysql-test/r/not_partition.require: New BitKeeper file ``mysql-test/r/not_partition.require'' mysql-test/r/not_partition.result: New BitKeeper file ``mysql-test/r/not_partition.result'' mysql-test/t/not_partition.test: New BitKeeper file ``mysql-test/t/not_partition.test''
2006-10-26 19:11:09 +02:00
--error ER_FEATURE_DISABLED
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY KEY(joined)
PARTITIONS 6;
--error ER_FEATURE_DISABLED
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
--error ER_BAD_TABLE_ERROR
drop table t1;
--error ER_FEATURE_DISABLED
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY RANGE( YEAR(joined) ) (
PARTITION p0 VALUES LESS THAN (1960),
PARTITION p1 VALUES LESS THAN (1970),
PARTITION p2 VALUES LESS THAN (1980),
PARTITION p3 VALUES LESS THAN (1990),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
--error ER_BAD_TABLE_ERROR
drop table t1;
--error ER_FEATURE_DISABLED
CREATE TABLE t1 (id INT, purchased DATE)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( TO_DAYS(purchased) )
SUBPARTITIONS 2 (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
--error ER_BAD_TABLE_ERROR
drop table t1;
# Create a table without partitions to test "EXPLAIN PARTITIONS"
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
insert into t1 values (''),(' '),('a'),('a '),('a ');
explain partitions select * from t1 where a='a ' OR a='a';
drop table t1;