mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Merge bk-internal:/home/bk/mysql-5.1-new
into mysql.com:/home/jimw/my/mysql-5.1-clean
This commit is contained in:
commit
087cae1a1e
7 changed files with 79 additions and 3 deletions
|
@ -839,6 +839,23 @@ SHOW TABLE STATUS;
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 MyISAM 10 Dynamic 0 0 0 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
t1 MyISAM 10 Dynamic 0 0 0 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
(partition `s1 s2` values in (0));
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
(partition `7` values in (0));
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
(partition `s1 s2 ` values in (0));
|
||||||
|
ERROR HY000: Incorrect partition name
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
subpartition by hash (a)
|
||||||
|
(partition p1 values in (0) (subpartition `p1 p2 `));
|
||||||
|
ERROR HY000: Incorrect partition name
|
||||||
CREATE TABLE t1 (a int)
|
CREATE TABLE t1 (a int)
|
||||||
PARTITION BY LIST (a)
|
PARTITION BY LIST (a)
|
||||||
(PARTITION p0 VALUES IN (NULL));
|
(PARTITION p0 VALUES IN (NULL));
|
||||||
|
|
|
@ -956,6 +956,30 @@ PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM);
|
||||||
SHOW TABLE STATUS;
|
SHOW TABLE STATUS;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
#BUG 18750 Problems with partition names
|
||||||
|
#
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
(partition `s1 s2` values in (0));
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
(partition `7` values in (0));
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--error ER_WRONG_PARTITION_NAME
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
(partition `s1 s2 ` values in (0));
|
||||||
|
|
||||||
|
--error ER_WRONG_PARTITION_NAME
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by list (a)
|
||||||
|
subpartition by hash (a)
|
||||||
|
(partition p1 values in (0) (subpartition `p1 p2 `));
|
||||||
|
|
||||||
#
|
#
|
||||||
# BUG 18752 SHOW CREATE TABLE doesn't show NULL value in SHOW CREATE TABLE
|
# BUG 18752 SHOW CREATE TABLE doesn't show NULL value in SHOW CREATE TABLE
|
||||||
#
|
#
|
||||||
|
|
|
@ -696,6 +696,12 @@ bool partition_info::check_partition_info(handlerton **eng_type,
|
||||||
partition_element *part_elem= part_it++;
|
partition_element *part_elem= part_it++;
|
||||||
if (!is_sub_partitioned())
|
if (!is_sub_partitioned())
|
||||||
{
|
{
|
||||||
|
if (check_table_name(part_elem->partition_name,
|
||||||
|
strlen(part_elem->partition_name)))
|
||||||
|
{
|
||||||
|
my_error(ER_WRONG_PARTITION_NAME, MYF(0));
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
if (part_elem->engine_type == NULL)
|
if (part_elem->engine_type == NULL)
|
||||||
part_elem->engine_type= default_engine_type;
|
part_elem->engine_type= default_engine_type;
|
||||||
DBUG_PRINT("info", ("engine = %d",
|
DBUG_PRINT("info", ("engine = %d",
|
||||||
|
@ -709,6 +715,12 @@ bool partition_info::check_partition_info(handlerton **eng_type,
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
part_elem= sub_it++;
|
part_elem= sub_it++;
|
||||||
|
if (check_table_name(part_elem->partition_name,
|
||||||
|
strlen(part_elem->partition_name)))
|
||||||
|
{
|
||||||
|
my_error(ER_WRONG_PARTITION_NAME, MYF(0));
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
if (part_elem->engine_type == NULL)
|
if (part_elem->engine_type == NULL)
|
||||||
part_elem->engine_type= default_engine_type;
|
part_elem->engine_type= default_engine_type;
|
||||||
DBUG_PRINT("info", ("engine = %u",
|
DBUG_PRINT("info", ("engine = %u",
|
||||||
|
|
|
@ -5826,3 +5826,6 @@ ER_NDB_CANT_SWITCH_BINLOG_FORMAT
|
||||||
eng "The NDB cluster engine does not support changing the binlog format on the fly yet"
|
eng "The NDB cluster engine does not support changing the binlog format on the fly yet"
|
||||||
ER_PARTITION_NO_TEMPORARY
|
ER_PARTITION_NO_TEMPORARY
|
||||||
eng "Cannot create temporary table with partitions"
|
eng "Cannot create temporary table with partitions"
|
||||||
|
ER_WRONG_PARTITION_NAME
|
||||||
|
eng "Incorrect partition name"
|
||||||
|
swe "Felaktigt partitionsnamn"
|
||||||
|
|
|
@ -1614,6 +1614,21 @@ static int add_key_partition(File fptr, List<char> field_list)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int add_name_string(File fptr, const char *name)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
String name_string("", 0, system_charset_info);
|
||||||
|
THD *thd= current_thd;
|
||||||
|
ulonglong save_options= thd->options;
|
||||||
|
|
||||||
|
thd->options= 0;
|
||||||
|
append_identifier(thd, &name_string, name,
|
||||||
|
strlen(name));
|
||||||
|
thd->options= save_options;
|
||||||
|
err= add_string_object(fptr, &name_string);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
static int add_int(File fptr, longlong number)
|
static int add_int(File fptr, longlong number)
|
||||||
{
|
{
|
||||||
llstr(number, buff);
|
llstr(number, buff);
|
||||||
|
@ -1912,7 +1927,7 @@ char *generate_partition_syntax(partition_info *part_info,
|
||||||
part_info->part_state_len= part_state_id+1;
|
part_info->part_state_len= part_state_id+1;
|
||||||
}
|
}
|
||||||
err+= add_partition(fptr);
|
err+= add_partition(fptr);
|
||||||
err+= add_string(fptr, part_elem->partition_name);
|
err+= add_name_string(fptr, part_elem->partition_name);
|
||||||
err+= add_space(fptr);
|
err+= add_space(fptr);
|
||||||
err+= add_partition_values(fptr, part_info, part_elem);
|
err+= add_partition_values(fptr, part_info, part_elem);
|
||||||
if (!part_info->is_sub_partitioned())
|
if (!part_info->is_sub_partitioned())
|
||||||
|
@ -1928,7 +1943,7 @@ char *generate_partition_syntax(partition_info *part_info,
|
||||||
{
|
{
|
||||||
part_elem= sub_it++;
|
part_elem= sub_it++;
|
||||||
err+= add_subpartition(fptr);
|
err+= add_subpartition(fptr);
|
||||||
err+= add_string(fptr, part_elem->partition_name);
|
err+= add_name_string(fptr, part_elem->partition_name);
|
||||||
err+= add_space(fptr);
|
err+= add_space(fptr);
|
||||||
err+= add_partition_options(fptr, part_elem);
|
err+= add_partition_options(fptr, part_elem);
|
||||||
if (j != (no_subparts-1))
|
if (j != (no_subparts-1))
|
||||||
|
|
|
@ -753,6 +753,7 @@ mysqld_dump_create_info(THD *thd, TABLE_LIST *table_list, int fd)
|
||||||
static const char *require_quotes(const char *name, uint name_length)
|
static const char *require_quotes(const char *name, uint name_length)
|
||||||
{
|
{
|
||||||
uint length;
|
uint length;
|
||||||
|
bool pure_digit= TRUE;
|
||||||
const char *end= name + name_length;
|
const char *end= name + name_length;
|
||||||
|
|
||||||
for (; name < end ; name++)
|
for (; name < end ; name++)
|
||||||
|
@ -761,7 +762,11 @@ static const char *require_quotes(const char *name, uint name_length)
|
||||||
length= my_mbcharlen(system_charset_info, chr);
|
length= my_mbcharlen(system_charset_info, chr);
|
||||||
if (length == 1 && !system_charset_info->ident_map[chr])
|
if (length == 1 && !system_charset_info->ident_map[chr])
|
||||||
return name;
|
return name;
|
||||||
|
if (length == 1 && (chr < '0' || chr > '9'))
|
||||||
|
pure_digit= FALSE;
|
||||||
}
|
}
|
||||||
|
if (pure_digit)
|
||||||
|
return name;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3639,7 +3639,7 @@ part_definition:
|
||||||
;
|
;
|
||||||
|
|
||||||
part_name:
|
part_name:
|
||||||
ident_or_text
|
ident
|
||||||
{
|
{
|
||||||
LEX *lex= Lex;
|
LEX *lex= Lex;
|
||||||
partition_info *part_info= lex->part_info;
|
partition_info *part_info= lex->part_info;
|
||||||
|
|
Loading…
Add table
Reference in a new issue