mirror of
https://github.com/MariaDB/server.git
synced 2026-05-05 06:35:33 +02:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0 BitKeeper/etc/ignore: added mysql-test/mysql-test-run-shell client/mysql.cc: Auto merged client/mysql_upgrade.c: Auto merged client/mysqlbinlog.cc: Auto merged client/mysqldump.c: Auto merged client/mysqltest.c: Auto merged client/sql_string.cc: Auto merged client/sql_string.h: Auto merged extra/my_print_defaults.c: Auto merged include/m_ctype.h: Auto merged include/my_pthread.h: Auto merged include/my_sys.h: Auto merged include/my_time.h: Auto merged include/mysql.h: Auto merged libmysql/libmysql.c: Auto merged libmysqld/lib_sql.cc: Auto merged myisam/ft_boolean_search.c: Auto merged myisam/mi_open.c: Auto merged myisam/mi_search.c: Auto merged myisam/mi_unique.c: Auto merged myisam/myisampack.c: Auto merged myisam/rt_index.c: Auto merged myisam/sort.c: Auto merged mysql-test/t/mysql.test: Auto merged mysql-test/t/mysqltest.test: Auto merged mysys/default.c: Auto merged mysys/mf_iocache2.c: Auto merged mysys/mf_keycache.c: Auto merged mysys/my_bitmap.c: Auto merged mysys/sha1.c: Auto merged ndb/include/kernel/signaldata/ArbitSignalData.hpp: Auto merged ndb/include/kernel/signaldata/DictTabInfo.hpp: Auto merged ndb/include/ndbapi/NdbReceiver.hpp: Auto merged ndb/include/transporter/TransporterDefinitions.hpp: Auto merged ndb/include/util/InputStream.hpp: Auto merged ndb/include/util/OutputStream.hpp: Auto merged ndb/include/util/SimpleProperties.hpp: Auto merged ndb/include/util/SocketAuthenticator.hpp: Auto merged ndb/include/util/SocketServer.hpp: Auto merged ndb/src/common/mgmcommon/ConfigRetriever.cpp: Auto merged ndb/src/common/portlib/NdbTick.c: Auto merged ndb/src/common/transporter/SHM_Transporter.cpp: Auto merged ndb/src/common/transporter/TCP_Transporter.cpp: Auto merged ndb/src/common/transporter/TCP_Transporter.hpp: Auto merged ndb/src/common/transporter/Transporter.cpp: Auto merged ndb/src/common/transporter/TransporterRegistry.cpp: Auto merged ndb/src/common/util/Bitmask.cpp: Auto merged ndb/src/common/util/ConfigValues.cpp: Auto merged ndb/src/common/util/File.cpp: Auto merged ndb/src/common/util/Properties.cpp: Auto merged ndb/src/common/util/SocketClient.cpp: Auto merged ndb/src/common/util/random.c: Auto merged ndb/src/common/util/socket_io.cpp: Auto merged ndb/src/cw/cpcd/APIService.cpp: Auto merged ndb/src/cw/cpcd/main.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/dbdict/Dbdict.hpp: 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/kernel/blocks/dbtup/DbtupScan.cpp: Auto merged ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp: Auto merged ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp: Auto merged ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp: Auto merged ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp: Auto merged ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: Auto merged ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp: Auto merged ndb/src/kernel/blocks/qmgr/Qmgr.hpp: Auto merged ndb/src/kernel/blocks/qmgr/QmgrMain.cpp: Auto merged ndb/src/kernel/blocks/suma/Suma.cpp: Auto merged ndb/src/kernel/blocks/suma/Suma.hpp: Auto merged ndb/src/kernel/vm/MetaData.hpp: Auto merged ndb/src/mgmapi/LocalConfig.cpp: Auto merged ndb/src/mgmapi/mgmapi.cpp: Auto merged ndb/src/mgmclient/CommandInterpreter.cpp: Auto merged ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged ndb/src/mgmsrv/ConfigInfo.hpp: Auto merged ndb/src/mgmsrv/InitConfigFileParser.cpp: Auto merged ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged ndb/src/mgmsrv/MgmtSrvr.hpp: Auto merged ndb/src/mgmsrv/Services.cpp: Auto merged ndb/src/mgmsrv/main.cpp: Auto merged ndb/src/ndbapi/ClusterMgr.hpp: Auto merged ndb/src/ndbapi/Ndb.cpp: Auto merged ndb/src/ndbapi/NdbBlob.cpp: Auto merged ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged ndb/src/ndbapi/NdbIndexOperation.cpp: Auto merged ndb/src/ndbapi/NdbOperationDefine.cpp: Auto merged ndb/src/ndbapi/NdbOperationExec.cpp: Auto merged ndb/src/ndbapi/NdbOperationSearch.cpp: Auto merged ndb/src/ndbapi/NdbScanFilter.cpp: Auto merged ndb/src/ndbapi/NdbScanOperation.cpp: Auto merged ndb/src/ndbapi/SignalSender.cpp: Auto merged ndb/src/ndbapi/ndb_cluster_connection.cpp: Auto merged ndb/tools/delete_all.cpp: Auto merged ndb/tools/desc.cpp: Auto merged ndb/tools/drop_index.cpp: Auto merged ndb/tools/drop_tab.cpp: Auto merged ndb/tools/listTables.cpp: Auto merged ndb/tools/ndb_config.cpp: Auto merged ndb/tools/restore/Restore.hpp: Auto merged ndb/tools/restore/consumer.hpp: Auto merged ndb/tools/restore/restore_main.cpp: Auto merged ndb/tools/select_all.cpp: Auto merged ndb/tools/select_count.cpp: Auto merged server-tools/instance-manager/commands.h: Auto merged server-tools/instance-manager/guardian.cc: Auto merged server-tools/instance-manager/instance_options.cc: Auto merged server-tools/instance-manager/mysql_connection.cc: Auto merged server-tools/instance-manager/options.cc: Auto merged server-tools/instance-manager/options.h: Auto merged server-tools/instance-manager/parse.cc: Auto merged server-tools/instance-manager/user_map.cc: Auto merged server-tools/instance-manager/user_map.h: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/filesort.cc: Auto merged sql/ha_archive.cc: Auto merged sql/ha_archive.h: Auto merged sql/ha_federated.cc: Auto merged sql/ha_heap.cc: Auto merged sql/ha_myisam.cc: Auto merged sql/ha_myisammrg.cc: 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_cmpfunc.h: Auto merged sql/item_func.cc: Auto merged sql/item_geofunc.cc: Auto merged sql/item_row.h: Auto merged sql/item_strfunc.cc: Auto merged sql/item_subselect.cc: Auto merged sql/item_subselect.h: Auto merged sql/item_sum.cc: Auto merged sql/item_timefunc.cc: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/log_event.h: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/net_serv.cc: Auto merged sql/opt_range.cc: Auto merged sql/opt_range.h: Auto merged sql/password.c: Auto merged sql/protocol.cc: Auto merged sql/repl_failsafe.cc: Auto merged sql/set_var.cc: Auto merged sql/set_var.h: Auto merged sql/slave.cc: Auto merged sql/sp.cc: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged sql/spatial.cc: Auto merged sql/spatial.h: Auto merged sql/sql_cache.h: Auto merged sql/sql_class.cc: Auto merged sql/sql_derived.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_load.cc: Auto merged sql/sql_prepare.cc: Auto merged sql-common/client.c: Auto merged sql-common/my_time.c: Auto merged sql/sql_select.cc: Auto merged sql/sql_show.cc: Auto merged sql/sql_string.cc: Auto merged sql/sql_string.h: Auto merged sql/sql_table.cc: Auto merged sql/sql_trigger.cc: Auto merged sql/sql_trigger.h: Auto merged sql/sql_union.cc: Auto merged sql/sql_update.cc: Auto merged sql/sql_view.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.cc: Auto merged sql/tztime.cc: Auto merged sql/unireg.cc: Auto merged strings/ctype-bin.c: Auto merged strings/ctype-cp932.c: Auto merged strings/ctype-eucjpms.c: Auto merged strings/ctype-mb.c: Auto merged strings/ctype-simple.c: Auto merged strings/ctype-sjis.c: Auto merged strings/ctype-uca.c: Auto merged strings/ctype-ujis.c: Auto merged strings/ctype-utf8.c: Auto merged strings/decimal.c: Auto merged strings/my_vsnprintf.c: Auto merged tests/mysql_client_test.c: Auto merged mysql-test/t/mysqlbinlog.test: Manual merge sql/sql_class.h: Manual merge sql/sql_parse.cc: Manual merge
This commit is contained in:
commit
03e4b98c7b
229 changed files with 3291 additions and 3100 deletions
|
|
@ -259,7 +259,7 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item)
|
|||
void Item_bool_func2::fix_length_and_dec()
|
||||
{
|
||||
max_length= 1; // Function returns 0 or 1
|
||||
THD *thd= current_thd;
|
||||
THD *thd;
|
||||
|
||||
/*
|
||||
As some compare functions are generated after sql_yacc,
|
||||
|
|
@ -297,12 +297,13 @@ void Item_bool_func2::fix_length_and_dec()
|
|||
return;
|
||||
}
|
||||
|
||||
thd= current_thd;
|
||||
if (!thd->is_context_analysis_only())
|
||||
{
|
||||
Item *real_item= args[0]->real_item();
|
||||
if (real_item->type() == FIELD_ITEM)
|
||||
Item *arg_real_item= args[0]->real_item();
|
||||
if (arg_real_item->type() == FIELD_ITEM)
|
||||
{
|
||||
Field *field=((Item_field*) real_item)->field;
|
||||
Field *field=((Item_field*) arg_real_item)->field;
|
||||
if (field->can_be_compared_as_longlong())
|
||||
{
|
||||
if (convert_constant_item(thd, field,&args[1]))
|
||||
|
|
@ -314,10 +315,10 @@ void Item_bool_func2::fix_length_and_dec()
|
|||
}
|
||||
}
|
||||
}
|
||||
real_item= args[1]->real_item();
|
||||
if (real_item->type() == FIELD_ITEM /* && !real_item->const_item() */)
|
||||
arg_real_item= args[1]->real_item();
|
||||
if (arg_real_item->type() == FIELD_ITEM)
|
||||
{
|
||||
Field *field=((Item_field*) real_item)->field;
|
||||
Field *field=((Item_field*) arg_real_item)->field;
|
||||
if (field->can_be_compared_as_longlong())
|
||||
{
|
||||
if (convert_constant_item(thd, field,&args[0]))
|
||||
|
|
@ -353,9 +354,9 @@ int Arg_comparator::set_compare_func(Item_bool_func2 *item, Item_result type)
|
|||
return 1;
|
||||
for (uint i=0; i < n; i++)
|
||||
{
|
||||
if ((*a)->el(i)->cols() != (*b)->el(i)->cols())
|
||||
if ((*a)->element_index(i)->cols() != (*b)->element_index(i)->cols())
|
||||
{
|
||||
my_error(ER_OPERAND_COLUMNS, MYF(0), (*a)->el(i)->cols());
|
||||
my_error(ER_OPERAND_COLUMNS, MYF(0), (*a)->element_index(i)->cols());
|
||||
return 1;
|
||||
}
|
||||
comparators[i].set_cmp_func(owner, (*a)->addr(i), (*b)->addr(i));
|
||||
|
|
@ -740,10 +741,10 @@ bool Item_in_optimizer::fix_left(THD *thd, Item **ref)
|
|||
uint n= cache->cols();
|
||||
for (uint i= 0; i < n; i++)
|
||||
{
|
||||
if (args[0]->el(i)->used_tables())
|
||||
((Item_cache *)cache->el(i))->set_used_tables(OUTER_REF_TABLE_BIT);
|
||||
if (args[0]->element_index(i)->used_tables())
|
||||
((Item_cache *)cache->element_index(i))->set_used_tables(OUTER_REF_TABLE_BIT);
|
||||
else
|
||||
((Item_cache *)cache->el(i))->set_used_tables(0);
|
||||
((Item_cache *)cache->element_index(i))->set_used_tables(0);
|
||||
}
|
||||
used_tables_cache= args[0]->used_tables();
|
||||
}
|
||||
|
|
@ -814,7 +815,7 @@ longlong Item_in_optimizer::val_int()
|
|||
subselect and see if it has produced any rows.
|
||||
*/
|
||||
((Item_in_subselect*)args[1])->enable_pushed_conds= FALSE;
|
||||
longlong tmp= args[1]->val_bool_result();
|
||||
(void) args[1]->val_bool_result();
|
||||
result_for_null_param= null_value=
|
||||
!((Item_in_subselect*)args[1])->engine->no_rows();
|
||||
((Item_in_subselect*)args[1])->enable_pushed_conds= TRUE;
|
||||
|
|
@ -931,15 +932,15 @@ longlong Item_func_strcmp::val_int()
|
|||
|
||||
void Item_func_interval::fix_length_and_dec()
|
||||
{
|
||||
use_decimal_comparison= (row->el(0)->result_type() == DECIMAL_RESULT) ||
|
||||
(row->el(0)->result_type() == INT_RESULT);
|
||||
use_decimal_comparison= (row->element_index(0)->result_type() == DECIMAL_RESULT) ||
|
||||
(row->element_index(0)->result_type() == INT_RESULT);
|
||||
if (row->cols() > 8)
|
||||
{
|
||||
bool consts=1;
|
||||
|
||||
for (uint i=1 ; consts && i < row->cols() ; i++)
|
||||
{
|
||||
consts&= row->el(i)->const_item();
|
||||
consts&= row->element_index(i)->const_item();
|
||||
}
|
||||
|
||||
if (consts &&
|
||||
|
|
@ -950,7 +951,7 @@ void Item_func_interval::fix_length_and_dec()
|
|||
{
|
||||
for (uint i=1 ; i < row->cols(); i++)
|
||||
{
|
||||
Item *el= row->el(i);
|
||||
Item *el= row->element_index(i);
|
||||
interval_range *range= intervals + (i-1);
|
||||
if ((el->result_type() == DECIMAL_RESULT) ||
|
||||
(el->result_type() == INT_RESULT))
|
||||
|
|
@ -975,7 +976,7 @@ void Item_func_interval::fix_length_and_dec()
|
|||
{
|
||||
for (uint i=1 ; i < row->cols(); i++)
|
||||
{
|
||||
intervals[i-1].dbl= row->el(i)->val_real();
|
||||
intervals[i-1].dbl= row->element_index(i)->val_real();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1015,15 +1016,15 @@ longlong Item_func_interval::val_int()
|
|||
|
||||
if (use_decimal_comparison)
|
||||
{
|
||||
dec= row->el(0)->val_decimal(&dec_buf);
|
||||
if (row->el(0)->null_value)
|
||||
dec= row->element_index(0)->val_decimal(&dec_buf);
|
||||
if (row->element_index(0)->null_value)
|
||||
return -1;
|
||||
my_decimal2double(E_DEC_FATAL_ERROR, dec, &value);
|
||||
}
|
||||
else
|
||||
{
|
||||
value= row->el(0)->val_real();
|
||||
if (row->el(0)->null_value)
|
||||
value= row->element_index(0)->val_real();
|
||||
if (row->element_index(0)->null_value)
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -1059,16 +1060,16 @@ longlong Item_func_interval::val_int()
|
|||
|
||||
for (i=1 ; i < row->cols() ; i++)
|
||||
{
|
||||
Item *el= row->el(i);
|
||||
Item *el= row->element_index(i);
|
||||
if (use_decimal_comparison &&
|
||||
((el->result_type() == DECIMAL_RESULT) ||
|
||||
(el->result_type() == INT_RESULT)))
|
||||
{
|
||||
my_decimal e_dec_buf, *e_dec= row->el(i)->val_decimal(&e_dec_buf);
|
||||
my_decimal e_dec_buf, *e_dec= row->element_index(i)->val_decimal(&e_dec_buf);
|
||||
if (my_decimal_cmp(e_dec, dec) > 0)
|
||||
return i-1;
|
||||
}
|
||||
else if (row->el(i)->val_real() > value)
|
||||
else if (row->element_index(i)->val_real() > value)
|
||||
return i-1;
|
||||
}
|
||||
return i-1;
|
||||
|
|
@ -1791,7 +1792,9 @@ bool Item_func_case::fix_fields(THD *thd, Item **ref)
|
|||
buff should match stack usage from
|
||||
Item_func_case::val_int() -> Item_func_case::find_item()
|
||||
*/
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
char buff[MAX_FIELD_WIDTH*2+sizeof(String)*2+sizeof(String*)*2+sizeof(double)*2+sizeof(longlong)*2];
|
||||
#endif
|
||||
bool res= Item_func::fix_fields(thd, ref);
|
||||
/*
|
||||
Call check_stack_overrun after fix_fields to be sure that stack variable
|
||||
|
|
@ -2254,11 +2257,11 @@ void cmp_item_row::store_value(Item *item)
|
|||
{
|
||||
if (!comparators[i])
|
||||
if (!(comparators[i]=
|
||||
cmp_item::get_comparator(item->el(i)->result_type(),
|
||||
item->el(i)->collation.collation)))
|
||||
cmp_item::get_comparator(item->element_index(i)->result_type(),
|
||||
item->element_index(i)->collation.collation)))
|
||||
break; // new failed
|
||||
comparators[i]->store_value(item->el(i));
|
||||
item->null_value|= item->el(i)->null_value;
|
||||
comparators[i]->store_value(item->element_index(i));
|
||||
item->null_value|= item->element_index(i)->null_value;
|
||||
}
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
|
|
@ -2283,8 +2286,8 @@ void cmp_item_row::store_value_by_template(cmp_item *t, Item *item)
|
|||
if (!(comparators[i]= tmpl->comparators[i]->make_same()))
|
||||
break; // new failed
|
||||
comparators[i]->store_value_by_template(tmpl->comparators[i],
|
||||
item->el(i));
|
||||
item->null_value|= item->el(i)->null_value;
|
||||
item->element_index(i));
|
||||
item->null_value|= item->element_index(i)->null_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2302,9 +2305,9 @@ int cmp_item_row::cmp(Item *arg)
|
|||
arg->bring_value();
|
||||
for (uint i=0; i < n; i++)
|
||||
{
|
||||
if (comparators[i]->cmp(arg->el(i)))
|
||||
if (comparators[i]->cmp(arg->element_index(i)))
|
||||
{
|
||||
if (!arg->el(i)->null_value)
|
||||
if (!arg->element_index(i)->null_value)
|
||||
return 1;
|
||||
was_null= 1;
|
||||
}
|
||||
|
|
@ -2315,11 +2318,11 @@ int cmp_item_row::cmp(Item *arg)
|
|||
|
||||
int cmp_item_row::compare(cmp_item *c)
|
||||
{
|
||||
cmp_item_row *cmp= (cmp_item_row *) c;
|
||||
cmp_item_row *l_cmp= (cmp_item_row *) c;
|
||||
for (uint i=0; i < n; i++)
|
||||
{
|
||||
int res;
|
||||
if ((res= comparators[i]->compare(cmp->comparators[i])))
|
||||
if ((res= comparators[i]->compare(l_cmp->comparators[i])))
|
||||
return res;
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -2346,8 +2349,8 @@ int cmp_item_decimal::cmp(Item *arg)
|
|||
|
||||
int cmp_item_decimal::compare(cmp_item *arg)
|
||||
{
|
||||
cmp_item_decimal *cmp= (cmp_item_decimal*) arg;
|
||||
return my_decimal_cmp(&value, &cmp->value);
|
||||
cmp_item_decimal *l_cmp= (cmp_item_decimal*) arg;
|
||||
return my_decimal_cmp(&value, &l_cmp->value);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue