diff options
-rw-r--r-- | mysql-test/t/auto_increment.test | 2 | ||||
-rw-r--r-- | sql/opt_range.cc | 1 | ||||
-rw-r--r-- | sql/sql_select.cc | 52 |
3 files changed, 25 insertions, 30 deletions
diff --git a/mysql-test/t/auto_increment.test b/mysql-test/t/auto_increment.test index 8c614131684..c26983b5eec 100644 --- a/mysql-test/t/auto_increment.test +++ b/mysql-test/t/auto_increment.test @@ -82,7 +82,7 @@ insert into t1 values (NULL); select * from t1; drop table t1; -create table t1 (a int not null auto_increment primary key) /*!41002 type=heap */; +create table t1 (a int not null auto_increment primary key) /*!40102 type=heap */; insert into t1 values (NULL); insert into t1 values (-1); select last_insert_id(); diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 74e3f855db7..7e5ca50d349 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1076,7 +1076,6 @@ get_mm_leaf(PARAM *param, Field *field, KEY_PART *key_part, all rows between 'X' and 'X ...' */ uint length= uint2korr(str+maybe_null); - char *end; str2= str+ key_part->part_length + maybe_null; /* remove end space */ while (length > 0 && str[length+HA_KEY_BLOB_LENGTH+maybe_null-1] == ' ') diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 45defba4a94..1d7187824fe 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1771,41 +1771,37 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab, uint tables, COND *cond, table_map normal_tables) { uint and_level,i,found_eq_constant; + KEY_FIELD *key_fields, *end, *field; + if (!(key_fields=(KEY_FIELD*) + thd->alloc(sizeof(key_fields[0])*(thd->cond_count+1)*2))) + return TRUE; /* purecov: inspected */ + and_level=0; field=end=key_fields; + if (my_init_dynamic_array(keyuse,sizeof(KEYUSE),20,64)) + return TRUE; + if (cond) { - KEY_FIELD *key_fields,*end; - KEY_FIELD *field; - - if (!(key_fields=(KEY_FIELD*) - thd->alloc(sizeof(key_fields[0])*(thd->cond_count+1)*2))) - return TRUE; /* purecov: inspected */ - and_level=0; field=end=key_fields; - if (my_init_dynamic_array(keyuse,sizeof(KEYUSE),20,64)) - return TRUE; - if (cond) + add_key_fields(join_tab,&end,&and_level,cond,normal_tables); + for (; field != end ; field++) { - add_key_fields(join_tab,&end,&and_level,cond,normal_tables); - for (; field != end ; field++) - { - add_key_part(keyuse,field); - /* Mark that we can optimize LEFT JOIN */ - if (field->val->type() == Item::NULL_ITEM && - !field->field->real_maybe_null()) - field->field->table->reginfo.not_exists_optimize=1; - } + add_key_part(keyuse,field); + /* Mark that we can optimize LEFT JOIN */ + if (field->val->type() == Item::NULL_ITEM && + !field->field->real_maybe_null()) + field->field->table->reginfo.not_exists_optimize=1; } - for (i=0 ; i < tables ; i++) + } + for (i=0 ; i < tables ; i++) + { + if (join_tab[i].on_expr) { - if (join_tab[i].on_expr) - { - add_key_fields(join_tab,&end,&and_level,join_tab[i].on_expr, - join_tab[i].table->map); - } + add_key_fields(join_tab,&end,&and_level,join_tab[i].on_expr, + join_tab[i].table->map); } - /* fill keyuse with found key parts */ - for (; field != end ; field++) - add_key_part(keyuse,field); } + /* fill keyuse with found key parts */ + for (; field != end ; field++) + add_key_part(keyuse,field); if (thd->lex.select->ftfunc_list.elements) { |