merge
This commit is contained in:
commit
ec5e43da33
@ -1,5 +1,18 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
#
|
#
|
||||||
|
# Bug#57924: crash when creating partitioned table with
|
||||||
|
# multiple columns in the partition key
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
|
||||||
|
PARTITION BY KEY(a, b, a);
|
||||||
|
ERROR HY000: Field in list of fields for partition function not found in table
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
|
||||||
|
PARTITION BY KEY(A, b);
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
|
||||||
|
PARTITION BY KEY(a, b, A);
|
||||||
|
ERROR HY000: Field in list of fields for partition function not found in table
|
||||||
|
#
|
||||||
# Bug#54483: valgrind errors when making warnings for multiline inserts
|
# Bug#54483: valgrind errors when making warnings for multiline inserts
|
||||||
# into partition
|
# into partition
|
||||||
#
|
#
|
||||||
|
@ -585,6 +585,8 @@ c127 int,
|
|||||||
c128 int,
|
c128 int,
|
||||||
primary key using hash(c1)) engine=ndb partition by key(c1);
|
primary key using hash(c1)) engine=ndb partition by key(c1);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table `t1` (`a` int, b int, primary key (a,b)) engine=ndb partition by key(`a`,`b`,`a`);
|
||||||
|
ERROR HY000: Field in list of fields for partition function not found in table
|
||||||
create table t1 (
|
create table t1 (
|
||||||
a1234567890123456789012345678901234567890 int primary key,
|
a1234567890123456789012345678901234567890 int primary key,
|
||||||
a12345678901234567890123456789a1234567890 int,
|
a12345678901234567890123456789a1234567890 int,
|
||||||
|
@ -547,6 +547,13 @@ c128 int,
|
|||||||
primary key using hash(c1)) engine=ndb partition by key(c1);
|
primary key using hash(c1)) engine=ndb partition by key(c1);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# test bug#53354 - crash when creating partitioned table with multiple columns in the partition key
|
||||||
|
#
|
||||||
|
|
||||||
|
--error ER_FIELD_NOT_FOUND_PART_ERROR
|
||||||
|
create table `t1` (`a` int, b int, primary key (a,b)) engine=ndb partition by key(`a`,`b`,`a`);
|
||||||
|
|
||||||
#
|
#
|
||||||
# test max size of attribute name and truncation
|
# test max size of attribute name and truncation
|
||||||
#
|
#
|
||||||
|
@ -10,6 +10,21 @@ drop table if exists t1;
|
|||||||
|
|
||||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#57924: crash when creating partitioned table with
|
||||||
|
--echo # multiple columns in the partition key
|
||||||
|
--echo #
|
||||||
|
--error ER_FIELD_NOT_FOUND_PART_ERROR
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
|
||||||
|
PARTITION BY KEY(a, b, a);
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
|
||||||
|
PARTITION BY KEY(A, b);
|
||||||
|
DROP TABLE t1;
|
||||||
|
--error ER_FIELD_NOT_FOUND_PART_ERROR
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b))
|
||||||
|
PARTITION BY KEY(a, b, A);
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#54483: valgrind errors when making warnings for multiline inserts
|
--echo # Bug#54483: valgrind errors when making warnings for multiline inserts
|
||||||
--echo # into partition
|
--echo # into partition
|
||||||
@ -673,7 +688,6 @@ PARTITION BY HASH (TIME_TO_SEC(a));
|
|||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -761,6 +761,9 @@ static bool handle_list_of_fields(List_iterator<char> it,
|
|||||||
bool result;
|
bool result;
|
||||||
char *field_name;
|
char *field_name;
|
||||||
bool is_list_empty= TRUE;
|
bool is_list_empty= TRUE;
|
||||||
|
int fields_handled = 0;
|
||||||
|
char* field_name_array[MAX_KEY];
|
||||||
|
|
||||||
DBUG_ENTER("handle_list_of_fields");
|
DBUG_ENTER("handle_list_of_fields");
|
||||||
|
|
||||||
while ((field_name= it++))
|
while ((field_name= it++))
|
||||||
@ -776,6 +779,25 @@ static bool handle_list_of_fields(List_iterator<char> it,
|
|||||||
result= TRUE;
|
result= TRUE;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check for duplicate fields in the list.
|
||||||
|
Assuming that there are not many fields in the partition key list.
|
||||||
|
If there were, it would be better to replace the for-loop
|
||||||
|
with a more efficient algorithm.
|
||||||
|
*/
|
||||||
|
|
||||||
|
field_name_array[fields_handled] = field_name;
|
||||||
|
for (int i = 0; i < fields_handled; ++i)
|
||||||
|
{
|
||||||
|
if (my_strcasecmp(system_charset_info,
|
||||||
|
field_name_array[i], field_name) == 0)
|
||||||
|
{
|
||||||
|
my_error(ER_FIELD_NOT_FOUND_PART_ERROR, MYF(0));
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fields_handled++;
|
||||||
}
|
}
|
||||||
if (is_list_empty)
|
if (is_list_empty)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user