summaryrefslogtreecommitdiff
path: root/sql/opt_range.cc
diff options
context:
space:
mode:
authorMikael Ronstrom <mikael@mysql.com>2009-10-28 01:11:17 +0100
committerMikael Ronstrom <mikael@mysql.com>2009-10-28 01:11:17 +0100
commit10fed1aca0096acb135c2065233e84d61b00b9cf (patch)
tree32eac76c7c0b41298c58cd40bc85138e177d8a98 /sql/opt_range.cc
parentcc43a2089cf6f45afb2cb5c15e2a077b075b80f8 (diff)
downloadmariadb-git-10fed1aca0096acb135c2065233e84d61b00b9cf.tar.gz
BUG#48165, needed to introduce length restrictions on partitioning fields to ensure that no stack overruns occur
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r--sql/opt_range.cc8
1 files changed, 2 insertions, 6 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 356cfe5e398..19aa06dcae9 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -3600,12 +3600,8 @@ static bool create_partition_index_description(PART_PRUNE_PARAM *ppar)
{
key_part->key= 0;
key_part->part= part;
- key_part->store_length= key_part->length= (uint16) (*field)->key_length();
- if ((*field)->real_maybe_null())
- key_part->store_length+= HA_KEY_NULL_LENGTH;
- if ((*field)->type() == MYSQL_TYPE_BLOB ||
- (*field)->real_type() == MYSQL_TYPE_VARCHAR)
- key_part->store_length+= HA_KEY_BLOB_LENGTH;
+ key_part->length= (uint16)get_partition_field_store_length(*field);
+ key_part->store_length= key_part->length;
DBUG_PRINT("info", ("part %u length %u store_length %u", part,
key_part->length, key_part->store_length));