Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
84575fe0
Commit
84575fe0
authored
Apr 10, 2006
by
mikael@c-4908e253.1238-1-64736c10.cust.bredbandsbolaget.se
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
BUG#18750: Various problems with partition names, quotation marks
parent
ba5d08f3
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
79 additions
and
3 deletions
+79
-3
mysql-test/r/partition.result
mysql-test/r/partition.result
+17
-0
mysql-test/t/partition.test
mysql-test/t/partition.test
+24
-0
sql/partition_info.cc
sql/partition_info.cc
+12
-0
sql/share/errmsg.txt
sql/share/errmsg.txt
+3
-0
sql/sql_partition.cc
sql/sql_partition.cc
+17
-2
sql/sql_show.cc
sql/sql_show.cc
+5
-0
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
No files found.
mysql-test/r/partition.result
View file @
84575fe0
...
...
@@ -839,4 +839,21 @@ 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
t1 MyISAM 10 Dynamic 0 0 0 0 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
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
End of 5.1 tests
mysql-test/t/partition.test
View file @
84575fe0
...
...
@@ -956,4 +956,28 @@ PARTITION p2 VALUES LESS THAN (30) ENGINE = MyISAM);
SHOW
TABLE
STATUS
;
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 `
));
--
echo
End
of
5.1
tests
sql/partition_info.cc
View file @
84575fe0
...
...
@@ -696,6 +696,12 @@ bool partition_info::check_partition_info(handlerton **eng_type,
partition_element
*
part_elem
=
part_it
++
;
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
)
part_elem
->
engine_type
=
default_engine_type
;
DBUG_PRINT
(
"info"
,
(
"engine = %d"
,
...
...
@@ -709,6 +715,12 @@ bool partition_info::check_partition_info(handlerton **eng_type,
do
{
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
)
part_elem
->
engine_type
=
default_engine_type
;
DBUG_PRINT
(
"info"
,
(
"engine = %u"
,
...
...
sql/share/errmsg.txt
View file @
84575fe0
...
...
@@ -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"
ER_PARTITION_NO_TEMPORARY
eng "Cannot create temporary table with partitions"
ER_WRONG_PARTITION_NAME
eng "Incorrect partition name"
swe "Felaktigt partitionsnamn"
sql/sql_partition.cc
View file @
84575fe0
...
...
@@ -1614,6 +1614,21 @@ static int add_key_partition(File fptr, List<char> field_list)
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
)
{
llstr
(
number
,
buff
);
...
...
@@ -1912,7 +1927,7 @@ char *generate_partition_syntax(partition_info *part_info,
part_info
->
part_state_len
=
part_state_id
+
1
;
}
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_partition_values
(
fptr
,
part_info
,
part_elem
);
if
(
!
part_info
->
is_sub_partitioned
())
...
...
@@ -1928,7 +1943,7 @@ char *generate_partition_syntax(partition_info *part_info,
{
part_elem
=
sub_it
++
;
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_partition_options
(
fptr
,
part_elem
);
if
(
j
!=
(
no_subparts
-
1
))
...
...
sql/sql_show.cc
View file @
84575fe0
...
...
@@ -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
)
{
uint
length
;
bool
pure_digit
=
TRUE
;
const
char
*
end
=
name
+
name_length
;
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
);
if
(
length
==
1
&&
!
system_charset_info
->
ident_map
[
chr
])
return
name
;
if
(
length
==
1
&&
(
chr
<
'0'
||
chr
>
'9'
))
pure_digit
=
FALSE
;
}
if
(
pure_digit
)
return
name
;
return
0
;
}
...
...
sql/sql_yacc.yy
View file @
84575fe0
...
...
@@ -3639,7 +3639,7 @@ part_definition:
;
part_name:
ident
_or_text
ident
{
LEX *lex= Lex;
partition_info *part_info= lex->part_info;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment