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.
- 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''