Commit 084cbc7e authored by unknown's avatar unknown

Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt

into  moonbone.local:/work/27990-bug-5.0-opt-mysql


sql/field.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
parents 4c14efa6 6a8bd84a
...@@ -1356,15 +1356,25 @@ void Field_num::add_zerofill_and_unsigned(String &res) const ...@@ -1356,15 +1356,25 @@ void Field_num::add_zerofill_and_unsigned(String &res) const
void Field::make_field(Send_field *field) void Field::make_field(Send_field *field)
{ {
if (orig_table->s->table_cache_key && *(orig_table->s->table_cache_key)) if (orig_table && orig_table->s->table_cache_key &&
*(orig_table->s->table_cache_key))
{ {
field->org_table_name= orig_table->s->table_name; field->org_table_name= orig_table->s->table_name;
field->db_name= orig_table->s->table_cache_key; field->db_name= orig_table->s->table_cache_key;
} }
else else
field->org_table_name= field->db_name= ""; field->org_table_name= field->db_name= "";
field->table_name= orig_table->alias; if (orig_table)
field->col_name= field->org_col_name= field_name; {
field->table_name= orig_table->alias;
field->org_col_name= field_name;
}
else
{
field->table_name= "";
field->org_col_name= "";
}
field->col_name= field_name;
field->charsetnr= charset()->number; field->charsetnr= charset()->number;
field->length=field_length; field->length=field_length;
field->type=type(); field->type=type();
......
...@@ -14330,6 +14330,9 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array, ...@@ -14330,6 +14330,9 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
item_field= (Item*) new Item_field(field); item_field= (Item*) new Item_field(field);
if (!item_field) if (!item_field)
DBUG_RETURN(TRUE); // Fatal error DBUG_RETURN(TRUE); // Fatal error
if (item->real_item()->type() != Item::FIELD_ITEM)
field->orig_table= 0;
item_field->name= item->name; item_field->name= item->name;
if (item->type() == Item::REF_ITEM) if (item->type() == Item::REF_ITEM)
{ {
......
...@@ -15490,7 +15490,7 @@ static void test_bug21635() ...@@ -15490,7 +15490,7 @@ static void test_bug21635()
char *query_end; char *query_end;
MYSQL_RES *result; MYSQL_RES *result;
MYSQL_FIELD *field; MYSQL_FIELD *field;
unsigned int field_count, i; unsigned int field_count, i, j;
int rc; int rc;
DBUG_ENTER("test_bug21635"); DBUG_ENTER("test_bug21635");
...@@ -15506,28 +15506,35 @@ static void test_bug21635() ...@@ -15506,28 +15506,35 @@ static void test_bug21635()
myquery(rc); myquery(rc);
rc= mysql_query(mysql, "CREATE TABLE t1 (i INT)"); rc= mysql_query(mysql, "CREATE TABLE t1 (i INT)");
myquery(rc); myquery(rc);
rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1)"); /*
myquery(rc); We need this loop to ensure correct behavior with both constant and
non-constant tables.
*/
for (j= 0; j < 2 ; j++)
{
rc= mysql_query(mysql, "INSERT INTO t1 VALUES (1)");
myquery(rc);
rc= mysql_real_query(mysql, query, query_end - query); rc= mysql_real_query(mysql, query, query_end - query);
myquery(rc); myquery(rc);
result= mysql_use_result(mysql); result= mysql_use_result(mysql);
DIE_UNLESS(result); DIE_UNLESS(result);
field_count= mysql_field_count(mysql); field_count= mysql_field_count(mysql);
for (i= 0; i < field_count; ++i) for (i= 0; i < field_count; ++i)
{ {
field= mysql_fetch_field_direct(result, i); field= mysql_fetch_field_direct(result, i);
printf("%s -> %s ... ", expr[i * 2], field->name); printf("%s -> %s ... ", expr[i * 2], field->name);
fflush(stdout); fflush(stdout);
DIE_UNLESS(field->db[0] == 0 && field->org_table[0] == 0 && DIE_UNLESS(field->db[0] == 0 && field->org_table[0] == 0 &&
field->table[0] == 0 && field->org_name[0] == 0); field->table[0] == 0 && field->org_name[0] == 0);
DIE_UNLESS(strcmp(field->name, expr[i * 2 + 1]) == 0); DIE_UNLESS(strcmp(field->name, expr[i * 2 + 1]) == 0);
puts("OK"); puts("OK");
} }
mysql_free_result(result); mysql_free_result(result);
}
rc= mysql_query(mysql, "DROP TABLE t1"); rc= mysql_query(mysql, "DROP TABLE t1");
myquery(rc); myquery(rc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment