Commit 0cdf1573 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-5421 Assertion `! is_set()' fails on INSERT IGNORE when a table has no partition for a value

make print_no_partition_found() to respect MYF(errflag)

mysql-test/suite/parts/t/insert_ignore-5421.test:
  mdev:5421
parent 8d2fba93
CREATE TABLE t1 (i INT) ENGINE=MyISAM
PARTITION BY RANGE (i) (
PARTITION p00 VALUES LESS THAN (1),
PARTITION p01 VALUES LESS THAN (2)
);
INSERT IGNORE INTO t1 VALUES (3);
Warnings:
Warning 1526 Table has no partition for value 3
DROP TABLE t1;
#
# MDEV-5421 Assertion `! is_set()' fails on INSERT IGNORE when a table has no partition for a value
#
--source include/have_partition.inc
CREATE TABLE t1 (i INT) ENGINE=MyISAM
PARTITION BY RANGE (i) (
PARTITION p00 VALUES LESS THAN (1),
PARTITION p01 VALUES LESS THAN (2)
);
INSERT IGNORE INTO t1 VALUES (3);
DROP TABLE t1;
...@@ -7207,7 +7207,7 @@ void ha_partition::print_error(int error, myf errflag) ...@@ -7207,7 +7207,7 @@ void ha_partition::print_error(int error, myf errflag)
{ {
if (!(thd->lex->alter_info.flags & ALTER_TRUNCATE_PARTITION)) if (!(thd->lex->alter_info.flags & ALTER_TRUNCATE_PARTITION))
{ {
m_part_info->print_no_partition_found(table); m_part_info->print_no_partition_found(table, errflag);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
} }
......
...@@ -1330,7 +1330,7 @@ end: ...@@ -1330,7 +1330,7 @@ end:
RETURN VALUES RETURN VALUES
*/ */
void partition_info::print_no_partition_found(TABLE *table_arg) void partition_info::print_no_partition_found(TABLE *table_arg, myf errflag)
{ {
char buf[100]; char buf[100];
char *buf_ptr= (char*)&buf; char *buf_ptr= (char*)&buf;
...@@ -1344,7 +1344,7 @@ void partition_info::print_no_partition_found(TABLE *table_arg) ...@@ -1344,7 +1344,7 @@ void partition_info::print_no_partition_found(TABLE *table_arg)
SELECT_ACL, &table_list, TRUE)) SELECT_ACL, &table_list, TRUE))
{ {
my_message(ER_NO_PARTITION_FOR_GIVEN_VALUE, my_message(ER_NO_PARTITION_FOR_GIVEN_VALUE,
ER(ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT), MYF(0)); ER(ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT), errflag);
} }
else else
{ {
...@@ -1360,7 +1360,7 @@ void partition_info::print_no_partition_found(TABLE *table_arg) ...@@ -1360,7 +1360,7 @@ void partition_info::print_no_partition_found(TABLE *table_arg)
part_expr->unsigned_flag ? 10 : -10); part_expr->unsigned_flag ? 10 : -10);
dbug_tmp_restore_column_map(table_arg->read_set, old_map); dbug_tmp_restore_column_map(table_arg->read_set, old_map);
} }
my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf_ptr); my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, errflag, buf_ptr);
} }
} }
......
...@@ -288,7 +288,7 @@ public: ...@@ -288,7 +288,7 @@ public:
bool check_partition_info(THD *thd, handlerton **eng_type, bool check_partition_info(THD *thd, handlerton **eng_type,
handler *file, HA_CREATE_INFO *info, handler *file, HA_CREATE_INFO *info,
bool check_partition_function); bool check_partition_function);
void print_no_partition_found(TABLE *table); void print_no_partition_found(TABLE *table, myf errflag);
void print_debug(const char *str, uint*); void print_debug(const char *str, uint*);
Item* get_column_item(Item *item, Field *field); Item* get_column_item(Item *item, Field *field);
int fix_partition_values(THD *thd, int fix_partition_values(THD *thd,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment