Commit 2cb3c205 authored by Marko Mäkelä's avatar Marko Mäkelä

Add debug assertions to catch Bug#13345378 earlier.

In all callers of row_sel_convert_mysql_key_to_innobase(), assert
that the converted key is empty or nonempty when it should be.
parent d5b8ce6a
...@@ -4713,6 +4713,7 @@ ha_innobase::index_read( ...@@ -4713,6 +4713,7 @@ ha_innobase::index_read(
index, index,
(byte*) key_ptr, (byte*) key_ptr,
(ulint) key_len, prebuilt->trx); (ulint) key_len, prebuilt->trx);
DBUG_ASSERT(prebuilt->search_tuple->n_fields > 0);
} else { } else {
/* We position the cursor to the last or the first entry /* We position the cursor to the last or the first entry
in the index */ in the index */
...@@ -6168,6 +6169,7 @@ ha_innobase::records_in_range( ...@@ -6168,6 +6169,7 @@ ha_innobase::records_in_range(
void* heap2; void* heap2;
DBUG_ENTER("records_in_range"); DBUG_ENTER("records_in_range");
DBUG_ASSERT(min_key || max_key);
ut_a(prebuilt->trx == thd_to_trx(ha_thd())); ut_a(prebuilt->trx == thd_to_trx(ha_thd()));
...@@ -6198,6 +6200,9 @@ ha_innobase::records_in_range( ...@@ -6198,6 +6200,9 @@ ha_innobase::records_in_range(
(const uchar*) 0), (const uchar*) 0),
(ulint) (min_key ? min_key->length : 0), (ulint) (min_key ? min_key->length : 0),
prebuilt->trx); prebuilt->trx);
DBUG_ASSERT(min_key
? range_start->n_fields > 0
: range_start->n_fields == 0);
row_sel_convert_mysql_key_to_innobase( row_sel_convert_mysql_key_to_innobase(
range_end, (byte*) key_val_buff2, range_end, (byte*) key_val_buff2,
...@@ -6206,6 +6211,9 @@ ha_innobase::records_in_range( ...@@ -6206,6 +6211,9 @@ ha_innobase::records_in_range(
(const uchar*) 0), (const uchar*) 0),
(ulint) (max_key ? max_key->length : 0), (ulint) (max_key ? max_key->length : 0),
prebuilt->trx); prebuilt->trx);
DBUG_ASSERT(max_key
? range_end->n_fields > 0
: range_end->n_fields == 0);
mode1 = convert_search_mode_to_innobase(min_key ? min_key->flag : mode1 = convert_search_mode_to_innobase(min_key ? min_key->flag :
HA_READ_KEY_EXACT); HA_READ_KEY_EXACT);
......
...@@ -5428,6 +5428,7 @@ ha_innobase::index_read( ...@@ -5428,6 +5428,7 @@ ha_innobase::index_read(
(byte*) key_ptr, (byte*) key_ptr,
(ulint) key_len, (ulint) key_len,
prebuilt->trx); prebuilt->trx);
DBUG_ASSERT(prebuilt->search_tuple->n_fields > 0);
} else { } else {
/* We position the cursor to the last or the first entry /* We position the cursor to the last or the first entry
in the index */ in the index */
...@@ -7226,6 +7227,7 @@ ha_innobase::records_in_range( ...@@ -7226,6 +7227,7 @@ ha_innobase::records_in_range(
mem_heap_t* heap; mem_heap_t* heap;
DBUG_ENTER("records_in_range"); DBUG_ENTER("records_in_range");
DBUG_ASSERT(min_key || max_key);
ut_a(prebuilt->trx == thd_to_trx(ha_thd())); ut_a(prebuilt->trx == thd_to_trx(ha_thd()));
...@@ -7271,6 +7273,9 @@ ha_innobase::records_in_range( ...@@ -7271,6 +7273,9 @@ ha_innobase::records_in_range(
(const uchar*) 0), (const uchar*) 0),
(ulint) (min_key ? min_key->length : 0), (ulint) (min_key ? min_key->length : 0),
prebuilt->trx); prebuilt->trx);
DBUG_ASSERT(min_key
? range_start->n_fields > 0
: range_start->n_fields == 0);
row_sel_convert_mysql_key_to_innobase( row_sel_convert_mysql_key_to_innobase(
range_end, (byte*) key_val_buff2, range_end, (byte*) key_val_buff2,
...@@ -7279,6 +7284,9 @@ ha_innobase::records_in_range( ...@@ -7279,6 +7284,9 @@ ha_innobase::records_in_range(
(const uchar*) 0), (const uchar*) 0),
(ulint) (max_key ? max_key->length : 0), (ulint) (max_key ? max_key->length : 0),
prebuilt->trx); prebuilt->trx);
DBUG_ASSERT(max_key
? range_end->n_fields > 0
: range_end->n_fields == 0);
mode1 = convert_search_mode_to_innobase(min_key ? min_key->flag : mode1 = convert_search_mode_to_innobase(min_key ? min_key->flag :
HA_READ_KEY_EXACT); HA_READ_KEY_EXACT);
......
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