Commit 159eaf4f authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into  mysql.com:/home/my/mysql-4.1


sql/sql_select.cc:
  Auto merged
parents 29818203 ce221a70
Loading
Loading
Loading
Loading
+7 −28
Original line number Diff line number Diff line
@@ -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)
    {
      /*
@@ -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;
@@ -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
+8 −1
Original line number Diff line number Diff line
@@ -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);
@@ -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