From 6f2d033ca7d0e84f9fc7f40b5fcdc609fe0e220b Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 28 Mar 2006 17:41:50 -0500 Subject: [PATCH] BUG#13520: BUG#13433: Fixed proper delimiters for fields and comments mysql-test/r/partition.result: New test cases mysql-test/t/partition.test: New test cases sql/sql_partition.cc: Fixed proper delimiters for fields and comments --- mysql-test/r/partition.result | 10 ++++++++++ mysql-test/t/partition.test | 19 +++++++++++++++++++ sql/sql_partition.cc | 16 ++++++++++++++-- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 7244dd6ccbf..0b7e6841f71 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -718,4 +718,14 @@ CALL test.p1(13); Warnings: Warning 1196 Some non-transactional changed tables couldn't be rolled back drop table t1; +CREATE TABLE t1 (a int not null) +partition by key(a) +(partition p0 COMMENT='first partition'); +drop table t1; +CREATE TABLE t1 (`a b` int not null) +partition by key(`a b`); +drop table t1; +CREATE TABLE t1 (`a b` int not null) +partition by hash(`a b`); +drop table t1; End of 5.1 tests diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index ad01977a458..bb133e43323 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -849,4 +849,23 @@ CALL test.p1(12); CALL test.p1(13); drop table t1; +# +# Bug 13520: Problem with delimiters in COMMENT DATA DIRECTORY .. +# +CREATE TABLE t1 (a int not null) +partition by key(a) +(partition p0 COMMENT='first partition'); +drop table t1; + +# +# Bug 13433: Problem with delimited identifiers +# +CREATE TABLE t1 (`a b` int not null) +partition by key(`a b`); +drop table t1; + +CREATE TABLE t1 (`a b` int not null) +partition by hash(`a b`); +drop table t1; + --echo End of 5.1 tests diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 682c74dc31e..4626c70a8e3 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -1885,6 +1885,11 @@ static int add_write(File fptr, const char *buf, uint len) return 1; } +static int add_string_object(File fptr, String *string) +{ + return add_write(fptr, string->ptr(), string->length()); +} + static int add_string(File fptr, const char *string) { return add_write(fptr, string, strlen(string)); @@ -1971,7 +1976,14 @@ static int add_key_partition(File fptr, List field_list) while (i < no_fields) { const char *field_str= part_it++; - err+= add_string(fptr, field_str); + String field_string("", 0, system_charset_info); + THD *thd= current_thd; + ulonglong save_options= thd->options; + thd->options= 0; + append_identifier(thd, &field_string, field_str, + strlen(field_str)); + thd->options= save_options; + err+= add_string_object(fptr, &field_string); if (i != (no_fields-1)) err+= add_comma(fptr); i++; @@ -2041,7 +2053,7 @@ static int add_partition_options(File fptr, partition_element *p_elem) err+= add_keyword_string(fptr, "INDEX DIRECTORY", TRUE, p_elem->index_file_name); if (p_elem->part_comment) - err+= add_keyword_string(fptr, "COMMENT", FALSE, p_elem->part_comment); + err+= add_keyword_string(fptr, "COMMENT", TRUE, p_elem->part_comment); return err + add_engine(fptr,p_elem->engine_type); }