summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-03-30 19:24:28 +0300
committerunknown <monty@mysql.com>2004-03-30 19:24:28 +0300
commitbc12d57fa781c3c0320733b9f096835f951edbbc (patch)
tree3ba6124dc8f91baccee6bbd806fe1056d021e326 /sql/field.cc
parentceeaa24d187b228fd6e8b1ac1e667d341155640f (diff)
downloadmariadb-git-bc12d57fa781c3c0320733b9f096835f951edbbc.tar.gz
Fix to get correct metadata when using temporary tables to create result. (Bug #2654)
client/mysqltest.c: Added support for --enable_metadata mysql-test/t/order_by.test: Improved comment scripts/mysqlaccess.sh: CGI is required (Bug #2988) sql/field.cc: Fix to get correct metadata when using temporary tables to create result sql/field.h: Fix to get correct metadata when using temporary tables to create result sql/sql_insert.cc: Fix to get correct metadata when using temporary tables to create result
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 474715f4e26..89c6464c5f0 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -301,7 +301,8 @@ Field::Field(char *ptr_arg,uint32 length_arg,uchar *null_ptr_arg,
utype unireg_check_arg, const char *field_name_arg,
struct st_table *table_arg)
:ptr(ptr_arg),null_ptr(null_ptr_arg),
- table(table_arg),table_name(table_arg ? table_arg->table_name : 0),
+ table(table_arg),orig_table(table_arg),
+ table_name(table_arg ? table_arg->table_name : 0),
field_name(field_name_arg),
query_id(0), key_start(0), part_of_key(0), part_of_sortkey(0),
unireg_check(unireg_check_arg),
@@ -349,9 +350,10 @@ void Field_num::add_zerofill_and_unsigned(String &res) const
void Field_num::make_field(Send_field *field)
{
/* table_cache_key is not set for temp tables */
- field->db_name=table->table_cache_key ? table->table_cache_key : "";
- field->org_table_name=table->real_name;
- field->table_name=table_name;
+ field->db_name= (orig_table->table_cache_key ? orig_table->table_cache_key :
+ "");
+ field->org_table_name= orig_table->real_name;
+ field->table_name= orig_table->table_name;
field->col_name=field->org_col_name=field_name;
field->charsetnr= charset()->number;
field->length=field_length;
@@ -364,9 +366,10 @@ void Field_num::make_field(Send_field *field)
void Field_str::make_field(Send_field *field)
{
/* table_cache_key is not set for temp tables */
- field->db_name=table->table_cache_key ? table->table_cache_key : "";
- field->org_table_name=table->real_name;
- field->table_name=table_name;
+ field->db_name= (orig_table->table_cache_key ? orig_table->table_cache_key :
+ "");
+ field->org_table_name= orig_table->real_name;
+ field->table_name= orig_table->table_name;
field->col_name=field->org_col_name=field_name;
field->charsetnr= charset()->number;
field->length=field_length;