summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/t/partition.test1
-rw-r--r--sql/ha_ndbcluster.cc9
-rw-r--r--sql/ha_partition.cc9
-rw-r--r--sql/partition_info.cc24
-rw-r--r--sql/partition_info.h3
5 files changed, 29 insertions, 17 deletions
diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test
index 9b85d6e023e..f62bb2dcd01 100644
--- a/mysql-test/t/partition.test
+++ b/mysql-test/t/partition.test
@@ -36,6 +36,7 @@ insert into t1 values (0xFFFFFFFFFFFFFFFD);
insert into t1 values (0xFFFFFFFFFFFFFFFE);
select * from t1 where (a + 1) < 10;
select * from t1 where (a + 1) > 10;
+drop table t1;
#
# Bug 19307: CSV engine crashes
diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc
index d1bd4e057ae..caeb0631d85 100644
--- a/sql/ha_ndbcluster.cc
+++ b/sql/ha_ndbcluster.cc
@@ -6420,14 +6420,7 @@ void ha_ndbcluster::print_error(int error, myf errflag)
DBUG_PRINT("enter", ("error = %d", error));
if (error == HA_ERR_NO_PARTITION_FOUND)
- {
- char buf[100];
- my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set);
- my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0),
- m_part_info->part_expr->null_value ? "NULL" :
- llstr(m_part_info->part_expr->val_int(), buf));
- dbug_tmp_restore_column_map(table->read_set, old_map);
- }
+ m_part_info->print_no_partition_found(table);
else
handler::print_error(error, errflag);
DBUG_VOID_RETURN;
diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc
index f151d89bb1a..93fb6409f9f 100644
--- a/sql/ha_partition.cc
+++ b/sql/ha_partition.cc
@@ -5097,14 +5097,7 @@ void ha_partition::print_error(int error, myf errflag)
DBUG_PRINT("enter", ("error: %d", error));
if (error == HA_ERR_NO_PARTITION_FOUND)
- {
- char buf[100];
- my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set);
- my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0),
- m_part_info->part_expr->null_value ? "NULL" :
- llstr(m_part_info->part_expr->val_int(), buf));
- dbug_tmp_restore_column_map(table->read_set, old_map);
- }
+ m_part_info->print_no_partition_found(table);
else
m_file[0]->print_error(error, errflag);
DBUG_VOID_RETURN;
diff --git a/sql/partition_info.cc b/sql/partition_info.cc
index 51230a0f5c0..39c8d976732 100644
--- a/sql/partition_info.cc
+++ b/sql/partition_info.cc
@@ -827,4 +827,28 @@ end:
}
+/*
+ Print error for no partition found
+ SYNOPSIS
+ print_no_partition_found()
+ table Table object
+ RETURN VALUES
+ NONE
+*/
+
+void partition_info::print_no_partition_found(TABLE *table)
+{
+ char buf[100];
+ char *buf_ptr= (char*)&buf;
+ my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set);
+
+ if (part_expr->null_value)
+ buf_ptr= (char*)"NULL";
+ else
+ longlong2str(part_expr->val_int(), buf,
+ part_expr->unsigned_flag ? 10 : -10);
+ my_error(ER_NO_PARTITION_FOR_GIVEN_VALUE, MYF(0), buf_ptr);
+ dbug_tmp_restore_column_map(table->read_set, old_map);
+}
+
#endif /* WITH_PARTITION_STORAGE_ENGINE */
diff --git a/sql/partition_info.h b/sql/partition_info.h
index f195e555934..3d8c6a40221 100644
--- a/sql/partition_info.h
+++ b/sql/partition_info.h
@@ -217,7 +217,7 @@ public:
list_of_part_fields(FALSE), list_of_subpart_fields(FALSE),
linear_hash_ind(FALSE), fixed(FALSE),
is_auto_partitioned(FALSE), from_openfrm(FALSE),
- has_null_value(FALSE), has_null_part_id(0)
+ has_null_value(FALSE)
{
all_fields_in_PF.clear_all();
all_fields_in_PPF.clear_all();
@@ -251,6 +251,7 @@ public:
bool check_list_constants();
bool check_partition_info(THD *thd, handlerton **eng_type,
handler *file, ulonglong max_rows);
+ void print_no_partition_found(TABLE *table);
private:
static int list_part_cmp(const void* a, const void* b);
static int list_part_cmp_unsigned(const void* a, const void* b);