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

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


client/mysql.cc:
  Auto merged
client/mysql_upgrade.c:
  Auto merged
client/mysqltest.c:
  Auto merged
extra/yassl/include/yassl_imp.hpp:
  Auto merged
extra/yassl/include/yassl_int.hpp:
  Auto merged
extra/yassl/taocrypt/include/algebra.hpp:
  Auto merged
extra/yassl/taocrypt/include/des.hpp:
  Auto merged
extra/yassl/taocrypt/include/modes.hpp:
  Auto merged
extra/yassl/taocrypt/src/aes.cpp:
  Auto merged
extra/yassl/taocrypt/src/algebra.cpp:
  Auto merged
extra/yassl/taocrypt/test/test.cpp:
  Auto merged
include/my_sys.h:
  Auto merged
libmysql/libmysql.c:
  Auto merged
libmysqld/lib_sql.cc:
  Auto merged
myisam/mi_open.c:
  Auto merged
myisam/myisampack.c:
  Auto merged
mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
ndb/src/common/util/File.cpp:
  Auto merged
ndb/src/common/util/socket_io.cpp:
  Auto merged
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Auto merged
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  Auto merged
ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Auto merged
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Auto merged
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Auto merged
ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Auto merged
ndb/src/mgmsrv/Services.cpp:
  Auto merged
ndb/tools/ndb_config.cpp:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/handler.cc:
  Auto merged
sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/mysqld.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql-common/my_time.c:
  Auto merged
sql/sql_string.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
sql/sql_trigger.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
sql/table.cc:
  Auto merged
strings/strtod.c:
  Auto merged
tests/mysql_client_test.c:
  Auto merged
extra/yassl/taocrypt/include/rsa.hpp:
  manual merge
mysql-test/t/mysql.test:
  manual merge
sql/sql_parse.cc:
  manual merge
This commit is contained in:
unknown 2006-12-15 01:01:52 +02:00
commit 2bcbffa0c5
227 changed files with 3273 additions and 3081 deletions

View file

@ -902,17 +902,17 @@ int openfrm(THD *thd, const char *name, const char *alias, uint db_stat,
if (share->blob_fields)
{
Field **ptr;
uint i, *save;
uint k, *save;
/* Store offsets to blob fields to find them fast */
if (!(share->blob_field= save=
(uint*) alloc_root(&outparam->mem_root,
(uint) (share->blob_fields* sizeof(uint)))))
goto err;
for (i=0, ptr= outparam->field ; *ptr ; ptr++, i++)
for (k=0, ptr= outparam->field ; *ptr ; ptr++, k++)
{
if ((*ptr)->flags & BLOB_FLAG)
(*save++)= i;
(*save++)= k;
}
}
@ -2171,19 +2171,17 @@ int st_table_list::view_check_option(THD *thd, bool ignore_failure)
{
if (check_option && check_option->val_int() == 0)
{
TABLE_LIST *view= top_table();
TABLE_LIST *main_view= top_table();
if (ignore_failure)
{
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR,
ER_VIEW_CHECK_FAILED, ER(ER_VIEW_CHECK_FAILED),
view->view_db.str, view->view_name.str);
main_view->view_db.str, main_view->view_name.str);
return(VIEW_CHECK_SKIP);
}
else
{
my_error(ER_VIEW_CHECK_FAILED, MYF(0), view->view_db.str, view->view_name.str);
return(VIEW_CHECK_ERROR);
}
my_error(ER_VIEW_CHECK_FAILED, MYF(0), main_view->view_db.str,
main_view->view_name.str);
return(VIEW_CHECK_ERROR);
}
return(VIEW_CHECK_OK);
}
@ -2195,19 +2193,20 @@ int st_table_list::view_check_option(THD *thd, bool ignore_failure)
SYNOPSIS
st_table_list::check_single_table()
table reference on variable where to store found table
table_arg reference on variable where to store found table
(should be 0 on call, to find table, or point to table for
unique test)
map bit mask of tables
view view for which we are looking table
view_arg view for which we are looking table
RETURN
FALSE table not found or found only one
TRUE found several tables
*/
bool st_table_list::check_single_table(st_table_list **table, table_map map,
st_table_list *view)
bool st_table_list::check_single_table(st_table_list **table_arg,
table_map map,
st_table_list *view_arg)
{
for (TABLE_LIST *tbl= merge_underlying_list; tbl; tbl= tbl->next_local)
{
@ -2215,13 +2214,13 @@ bool st_table_list::check_single_table(st_table_list **table, table_map map,
{
if (tbl->table->map & map)
{
if (*table)
if (*table_arg)
return TRUE;
*table= tbl;
tbl->check_option= view->check_option;
*table_arg= tbl;
tbl->check_option= view_arg->check_option;
}
}
else if (tbl->check_single_table(table, map, view))
else if (tbl->check_single_table(table_arg, map, view_arg))
return TRUE;
}
return FALSE;
@ -2546,18 +2545,19 @@ bool st_table_list::prepare_security(THD *thd)
while ((tbl= tb++))
{
DBUG_ASSERT(tbl->referencing_view);
char *db, *table_name;
char *local_db, *local_table_name;
if (tbl->view)
{
db= tbl->view_db.str;
table_name= tbl->view_name.str;
local_db= tbl->view_db.str;
local_table_name= tbl->view_name.str;
}
else
{
db= tbl->db;
table_name= tbl->table_name;
local_db= tbl->db;
local_table_name= tbl->table_name;
}
fill_effective_table_privileges(thd, &tbl->grant, db, table_name);
fill_effective_table_privileges(thd, &tbl->grant, local_db,
local_table_name);
if (tbl->table)
tbl->table->grant= grant;
}
@ -2920,8 +2920,8 @@ Field_iterator_table_ref::get_or_create_column_ref(TABLE_LIST *parent_table_ref)
if (field_it == &table_field_it)
{
/* The field belongs to a stored table. */
Field *field= table_field_it.field();
nj_col= new Natural_join_column(field, table_ref);
Field *tmp_field= table_field_it.field();
nj_col= new Natural_join_column(tmp_field, table_ref);
field_count= table_ref->table->s->fields;
}
else if (field_it == &view_field_it)
@ -3032,16 +3032,16 @@ void st_table_list::reinit_before_use(THD *thd)
is_schema_table_processed= FALSE;
TABLE_LIST *embedded; /* The table at the current level of nesting. */
TABLE_LIST *embedding= this; /* The parent nested table reference. */
TABLE_LIST *parent_embedding= this; /* The parent nested table reference. */
do
{
embedded= embedding;
embedded= parent_embedding;
if (embedded->prep_on_expr)
embedded->on_expr= embedded->prep_on_expr->copy_andor_structure(thd);
embedding= embedded->embedding;
parent_embedding= embedded->embedding;
}
while (embedding &&
embedding->nested_join->join_list.head() == embedded);
while (parent_embedding &&
parent_embedding->nested_join->join_list.head() == embedded);
}
/*