summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/t/auto_increment.test2
-rw-r--r--sql/opt_range.cc1
-rw-r--r--sql/sql_select.cc52
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)
{