Loading sql/sql_handler.cc +7 −28 Original line number Diff line number Diff line Loading @@ -384,27 +384,6 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p", hash_tables->db, hash_tables->real_name, hash_tables->alias, table)); /* Table might have been flushed. */ if (table && (table->version != refresh_version)) { /* We must follow the thd->handler_tables chain, as we need the address of the 'next' pointer referencing this table for close_thread_table(). */ for (table_ptr= &(thd->handler_tables); *table_ptr && (*table_ptr != table); table_ptr= &(*table_ptr)->next) {} VOID(pthread_mutex_lock(&LOCK_open)); if (close_thread_table(thd, table_ptr)) { /* Tell threads waiting for refresh that something has happened */ VOID(pthread_cond_broadcast(&COND_refresh)); } VOID(pthread_mutex_unlock(&LOCK_open)); table= hash_tables->table= NULL; } if (!table) { /* Loading Loading @@ -451,6 +430,13 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, } tables->table=table; HANDLER_TABLES_HACK(thd); lock= mysql_lock_tables(thd, &tables->table, 1, 0); HANDLER_TABLES_HACK(thd); if (!lock) goto err0; // mysql_lock_tables() printed error message already if (cond && ((!cond->fixed && cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1))) goto err0; Loading @@ -471,13 +457,6 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, select_limit+=offset_limit; protocol->send_fields(&list,1); HANDLER_TABLES_HACK(thd); lock= mysql_lock_tables(thd, &tables->table, 1, 0); HANDLER_TABLES_HACK(thd); if (!lock) goto err0; // mysql_lock_tables() printed error message already /* In ::external_lock InnoDB resets the fields which tell it that the handle is used in the HANDLER interface. Tell it again that Loading sql/sql_select.cc +8 −1 Original line number Diff line number Diff line Loading @@ -5292,7 +5292,14 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, *(reg_field++) =new_field; } if (!--hidden_field_count) { hidden_null_count=null_count; /* We need to update hidden_field_count as we may have stored group functions with constant arguments */ param->hidden_field_count= (uint) (reg_field - table->field); } } DBUG_ASSERT(field_count >= (uint) (reg_field - table->field)); field_count= (uint) (reg_field - table->field); Loading Loading @@ -5488,7 +5495,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, } } if (distinct) if (distinct && field_count != param->hidden_field_count) { /* Create an unique key or an unique constraint over all columns Loading Loading
sql/sql_handler.cc +7 −28 Original line number Diff line number Diff line Loading @@ -384,27 +384,6 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p", hash_tables->db, hash_tables->real_name, hash_tables->alias, table)); /* Table might have been flushed. */ if (table && (table->version != refresh_version)) { /* We must follow the thd->handler_tables chain, as we need the address of the 'next' pointer referencing this table for close_thread_table(). */ for (table_ptr= &(thd->handler_tables); *table_ptr && (*table_ptr != table); table_ptr= &(*table_ptr)->next) {} VOID(pthread_mutex_lock(&LOCK_open)); if (close_thread_table(thd, table_ptr)) { /* Tell threads waiting for refresh that something has happened */ VOID(pthread_cond_broadcast(&COND_refresh)); } VOID(pthread_mutex_unlock(&LOCK_open)); table= hash_tables->table= NULL; } if (!table) { /* Loading Loading @@ -451,6 +430,13 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, } tables->table=table; HANDLER_TABLES_HACK(thd); lock= mysql_lock_tables(thd, &tables->table, 1, 0); HANDLER_TABLES_HACK(thd); if (!lock) goto err0; // mysql_lock_tables() printed error message already if (cond && ((!cond->fixed && cond->fix_fields(thd, tables, &cond)) || cond->check_cols(1))) goto err0; Loading @@ -471,13 +457,6 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, select_limit+=offset_limit; protocol->send_fields(&list,1); HANDLER_TABLES_HACK(thd); lock= mysql_lock_tables(thd, &tables->table, 1, 0); HANDLER_TABLES_HACK(thd); if (!lock) goto err0; // mysql_lock_tables() printed error message already /* In ::external_lock InnoDB resets the fields which tell it that the handle is used in the HANDLER interface. Tell it again that Loading
sql/sql_select.cc +8 −1 Original line number Diff line number Diff line Loading @@ -5292,7 +5292,14 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, *(reg_field++) =new_field; } if (!--hidden_field_count) { hidden_null_count=null_count; /* We need to update hidden_field_count as we may have stored group functions with constant arguments */ param->hidden_field_count= (uint) (reg_field - table->field); } } DBUG_ASSERT(field_count >= (uint) (reg_field - table->field)); field_count= (uint) (reg_field - table->field); Loading Loading @@ -5488,7 +5495,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, } } if (distinct) if (distinct && field_count != param->hidden_field_count) { /* Create an unique key or an unique constraint over all columns Loading