summaryrefslogtreecommitdiff
path: root/sql/opt_range.h
diff options
context:
space:
mode:
authorVarun <varun.gupta@mariadb.com>2019-06-14 12:16:17 +0530
committerVarun <varun.gupta@mariadb.com>2019-06-14 23:08:00 +0530
commit772c5f3c78fcdaea2169ba435bac8d851c7945c7 (patch)
treed65668d14e00ab0174ac39d14e086e25ef645a11 /sql/opt_range.h
parent1e3dc15d62c2f7f7d3afe6affb0db66c8515234d (diff)
downloadmariadb-git-772c5f3c78fcdaea2169ba435bac8d851c7945c7.tar.gz
MDEV-19634: Assertion `0' failed in row_sel_convert_mysql_key_to_innobase, [Warning] InnoDB: Using a partial-field key prefix in search
For a key with keyparts (k1,k2,k3) , if we are building a range over the keyparts we should make sure that if min_value/max_value for a keypart is not added to key buffer then the keyparts following should also not be allowed.
Diffstat (limited to 'sql/opt_range.h')
-rw-r--r--sql/opt_range.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/sql/opt_range.h b/sql/opt_range.h
index ae0e3822272..73def7bde92 100644
--- a/sql/opt_range.h
+++ b/sql/opt_range.h
@@ -459,8 +459,9 @@ public:
uint res= key_tree->store_min(key[key_tree->part].store_length,
range_key, *range_key_flag);
// add flags only if a key_part is written to the buffer
- if (res)
- *range_key_flag|= key_tree->min_flag;
+ if (!res)
+ return 0;
+ *range_key_flag|= key_tree->min_flag;
if (key_tree->next_key_part &&
key_tree->next_key_part->type == SEL_ARG::KEY_RANGE &&
key_tree->part != last_part &&
@@ -482,8 +483,9 @@ public:
SEL_ARG *key_tree= last();
uint res=key_tree->store_max(key[key_tree->part].store_length,
range_key, *range_key_flag);
- if (res)
- (*range_key_flag)|= key_tree->max_flag;
+ if (!res)
+ return 0;
+ *range_key_flag|= key_tree->max_flag;
if (key_tree->next_key_part &&
key_tree->next_key_part->type == SEL_ARG::KEY_RANGE &&
key_tree->part != last_part &&