summaryrefslogtreecommitdiff
path: root/sql/sql_partition.cc
diff options
context:
space:
mode:
authorunknown <dlenev@mockturtle.local>2006-09-30 00:31:33 +0400
committerunknown <dlenev@mockturtle.local>2006-09-30 00:31:33 +0400
commit72d698e8eda764fa776063fd512e5ad61ae00636 (patch)
treee994372927f92ee4e81df497509e69c6cf3594cc /sql/sql_partition.cc
parent83caa4348aaff1728422b1c2e24323ec9312cc90 (diff)
parent33e63d3b22a85b023c0a33f93c3521708751cff9 (diff)
downloadmariadb-git-72d698e8eda764fa776063fd512e5ad61ae00636.tar.gz
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into mockturtle.local:/home/dlenev/src/mysql-5.1-bg20670 mysql-test/r/trigger.result: Auto merged mysql-test/t/trigger.test: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/opt_range.h: Auto merged sql/sql_partition.cc: Auto merged sql/sql_update.cc: Auto merged
Diffstat (limited to 'sql/sql_partition.cc')
-rw-r--r--sql/sql_partition.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc
index a5dc0ab0d15..369dcb426f1 100644
--- a/sql/sql_partition.cc
+++ b/sql/sql_partition.cc
@@ -2037,18 +2037,17 @@ close_file:
SYNOPSIS
partition_key_modified
table TABLE object for which partition fields are set-up
- fields A list of the to be modifed
+ fields Bitmap representing fields to be modified
RETURN VALUES
TRUE Need special handling of UPDATE
FALSE Normal UPDATE handling is ok
*/
-bool partition_key_modified(TABLE *table, List<Item> &fields)
+bool partition_key_modified(TABLE *table, const MY_BITMAP *fields)
{
- List_iterator_fast<Item> f(fields);
+ Field **fld;
partition_info *part_info= table->part_info;
- Item_field *item_field;
DBUG_ENTER("partition_key_modified");
if (!part_info)
@@ -2056,9 +2055,8 @@ bool partition_key_modified(TABLE *table, List<Item> &fields)
if (table->s->db_type->partition_flags &&
(table->s->db_type->partition_flags() & HA_CAN_UPDATE_PARTITION_KEY))
DBUG_RETURN(FALSE);
- f.rewind();
- while ((item_field=(Item_field*) f++))
- if (item_field->field->flags & FIELD_IN_PART_FUNC_FLAG)
+ for (fld= part_info->full_part_field_array; *fld; fld++)
+ if (bitmap_is_set(fields, (*fld)->field_index))
DBUG_RETURN(TRUE);
DBUG_RETURN(FALSE);
}