diff options
author | unknown <monty@hundin.mysql.fi> | 2002-10-12 12:38:48 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2002-10-12 12:38:48 +0300 |
commit | 8926c0bc3817150d00a1906e07a6e6b469c4c696 (patch) | |
tree | 40349016c80381ae4c79156d2a2683a59b0e46a8 /sql | |
parent | 7cd5626c7059defa60ab1529d18d5e3b8c7cfe1b (diff) | |
download | mariadb-git-8926c0bc3817150d00a1906e07a6e6b469c4c696.tar.gz |
Fixed bug where we could reference a freed tmp_table->table_name variable for some
GROUP BY ... ORDER BY queries.
Docs/manual.texi:
ChangeLog
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_select.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 04368c016d1..e2cf2fd72df 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -3395,7 +3395,10 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, bzero((char*) from_field,sizeof(Field*)*field_count); table->field=reg_field; table->real_name=table->path=tmpname; - table->table_name=base_name(tmpname); + /* + This must be "" as field may refer to it after tempory table is dropped + */ + table->table_name= (char*) ""; table->reginfo.lock_type=TL_WRITE; /* Will be updated */ table->db_stat=HA_OPEN_KEYFILE+HA_OPEN_RNDFILE; table->blob_ptr_size=mi_portable_sizeof_char_ptr; @@ -3731,6 +3734,8 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, if (create_myisam_tmp_table(table,param,select_options)) goto err; } + /* Set table_name for easier debugging */ + table->table_name= base_name(tmpname); if (!open_tmp_table(table)) DBUG_RETURN(table); |