summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorheikki@donna.mysql.fi <>2001-08-17 21:19:10 +0300
committerheikki@donna.mysql.fi <>2001-08-17 21:19:10 +0300
commitac2a265ba78edd78c31dcae2a91d06ed45061386 (patch)
treed8f33216c04fbd878968215cf8ff17615ece8ccd /sql
parentfdb26b53edea5ae24b515087ba61a42fe3300208 (diff)
downloadmariadb-git-ac2a265ba78edd78c31dcae2a91d06ed45061386.tar.gz
ha_innobase.cc Impove ref length estimate in a handle to eliminate a warning in filesort
Diffstat (limited to 'sql')
-rw-r--r--sql/ha_innobase.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/sql/ha_innobase.cc b/sql/ha_innobase.cc
index d0cb8af906a..babe281bd4e 100644
--- a/sql/ha_innobase.cc
+++ b/sql/ha_innobase.cc
@@ -821,10 +821,6 @@ ha_innobase::open(
DBUG_RETURN(1);
}
- /* MySQL allocates the buffer for ref */
-
- ref_length = buff_len;
-
/* Get pointer to a table object in InnoDB dictionary cache */
if (NULL == (ib_table = dict_table_get(norm_name, NULL))) {
@@ -861,10 +857,20 @@ ha_innobase::open(
primary_key = 0;
key_used_on_scan = 0;
+
+ /* MySQL allocates the buffer for ref */
+
+ ref_length = table->key_info->key_length
+ + table->key_info->key_parts + 10;
+
+ /* One byte per key field is consumed to the SQL NULL
+ info of the field; we add also 10 bytes of safety margin */
} else {
((row_prebuilt_t*)innobase_prebuilt)
->clust_index_was_generated = TRUE;
+ ref_length = DATA_ROW_ID_LEN + 10;
+
dbug_assert(key_used_on_scan == MAX_KEY);
}