1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

avoid null check on fields where NULL is impossible

(BUG#2393)


mysql-test/r/subselect.result:
  BUG#2393 test suite
  test ref replaced ref_of_null joining
mysql-test/t/subselect.test:
  BUG#2393 test suite
  test ref replaced ref_of_null joining
sql/item_subselect.cc:
  avoid null check on fields where NULL is impossible
sql/sql_select.cc:
  convert JT_REF_OR_NULL to JT_REF in case of impossible NULL and protect buffer of rewriting through join_tab->null_ref_key
This commit is contained in:
unknown
2004-02-02 02:23:53 +02:00
parent 150c99dffe
commit ecfaa75221
4 changed files with 81 additions and 5 deletions

View File

@ -3240,8 +3240,12 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
keyuse,join->const_table_map,
&keyinfo->key_part[i],
(char*) key_buff,maybe_null);
/* Remmeber if we are going to use REF_OR_NULL */
if (keyuse->optimize & KEY_OPTIMIZE_REF_OR_NULL)
/*
Remmeber if we are going to use REF_OR_NULL
But only if field _really_ can be null i.e. we force JT_REF
instead of JT_REF_OR_NULL in case if field can't be null
*/
if (keyuse->optimize & KEY_OPTIMIZE_REF_OR_NULL && maybe_null)
null_ref_key= key_buff;
key_buff+=keyinfo->key_part[i].store_length;
}