• unknown's avatar
    Bug#18888 Trying to overwrite sql/lex_hash.h during build · fe28a74b
    unknown authored
     - 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''
    fe28a74b
not_partition.result 1.79 KB
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 HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
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 HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
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 HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-partition' to have it working
drop table t1;
ERROR 42S02: Unknown table 't1'
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';
id	select_type	table	partitions	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	NULL	ALL	NULL	NULL	NULL	NULL	5	Using where
drop table t1;