mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge mleich@bk-internal.mysql.com:/home/bk/mysql-4.1
into three.local.lan:/home/matthias/Arbeit/mysql-4.1/src
This commit is contained in:
@ -164,9 +164,9 @@ static void _ftb_parse_query(FTB *ftb, byte **start, byte *end,
|
|||||||
if (param.trunc) ftbw->flags|=FTB_FLAG_TRUNC;
|
if (param.trunc) ftbw->flags|=FTB_FLAG_TRUNC;
|
||||||
ftbw->weight=weight;
|
ftbw->weight=weight;
|
||||||
ftbw->up=up;
|
ftbw->up=up;
|
||||||
ftbw->docid[0]=ftbw->docid[1]=HA_POS_ERROR;
|
ftbw->docid[0]=ftbw->docid[1]=HA_OFFSET_ERROR;
|
||||||
ftbw->ndepth= (param.yesno<0) + depth;
|
ftbw->ndepth= (param.yesno<0) + depth;
|
||||||
ftbw->key_root=HA_POS_ERROR;
|
ftbw->key_root=HA_OFFSET_ERROR;
|
||||||
memcpy(ftbw->word+1, w.pos, w.len);
|
memcpy(ftbw->word+1, w.pos, w.len);
|
||||||
ftbw->word[0]=w.len;
|
ftbw->word[0]=w.len;
|
||||||
if (param.yesno > 0) up->ythresh++;
|
if (param.yesno > 0) up->ythresh++;
|
||||||
@ -181,7 +181,7 @@ static void _ftb_parse_query(FTB *ftb, byte **start, byte *end,
|
|||||||
ftbe->weight=weight;
|
ftbe->weight=weight;
|
||||||
ftbe->up=up;
|
ftbe->up=up;
|
||||||
ftbe->ythresh=ftbe->yweaks=0;
|
ftbe->ythresh=ftbe->yweaks=0;
|
||||||
ftbe->docid[0]=ftbe->docid[1]=HA_POS_ERROR;
|
ftbe->docid[0]=ftbe->docid[1]=HA_OFFSET_ERROR;
|
||||||
if ((ftbe->quot=param.quot)) ftb->with_scan|=2;
|
if ((ftbe->quot=param.quot)) ftb->with_scan|=2;
|
||||||
if (param.yesno > 0) up->ythresh++;
|
if (param.yesno > 0) up->ythresh++;
|
||||||
_ftb_parse_query(ftb, start, end, ftbe, depth+1);
|
_ftb_parse_query(ftb, start, end, ftbe, depth+1);
|
||||||
@ -259,7 +259,7 @@ static int _ft2_search(FTB *ftb, FTB_WORD *ftbw, my_bool init_search)
|
|||||||
{
|
{
|
||||||
if (!ftbw->off || !(ftbw->flags & FTB_FLAG_TRUNC))
|
if (!ftbw->off || !(ftbw->flags & FTB_FLAG_TRUNC))
|
||||||
{
|
{
|
||||||
ftbw->docid[0]=HA_POS_ERROR;
|
ftbw->docid[0]=HA_OFFSET_ERROR;
|
||||||
if ((ftbw->flags & FTB_FLAG_YES) && ftbw->up->up==0)
|
if ((ftbw->flags & FTB_FLAG_YES) && ftbw->up->up==0)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -346,7 +346,7 @@ static void _ftb_init_index_search(FT_INFO *ftb)
|
|||||||
ftbe->up->ythresh - ftbe->up->yweaks >1) /* 1 */
|
ftbe->up->ythresh - ftbe->up->yweaks >1) /* 1 */
|
||||||
{
|
{
|
||||||
FTB_EXPR *top_ftbe=ftbe->up->up;
|
FTB_EXPR *top_ftbe=ftbe->up->up;
|
||||||
ftbw->docid[0]=HA_POS_ERROR;
|
ftbw->docid[0]=HA_OFFSET_ERROR;
|
||||||
for (ftbe=ftbw->up; ftbe != top_ftbe; ftbe=ftbe->up)
|
for (ftbe=ftbw->up; ftbe != top_ftbe; ftbe=ftbe->up)
|
||||||
if (ftbe->flags & FTB_FLAG_YES)
|
if (ftbe->flags & FTB_FLAG_YES)
|
||||||
ftbe->yweaks++;
|
ftbe->yweaks++;
|
||||||
@ -387,7 +387,7 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query,
|
|||||||
ftb->charset= ((keynr==NO_SUCH_KEY) ?
|
ftb->charset= ((keynr==NO_SUCH_KEY) ?
|
||||||
default_charset_info : info->s->keyinfo[keynr].seg->charset);
|
default_charset_info : info->s->keyinfo[keynr].seg->charset);
|
||||||
ftb->with_scan=0;
|
ftb->with_scan=0;
|
||||||
ftb->lastpos=HA_POS_ERROR;
|
ftb->lastpos=HA_OFFSET_ERROR;
|
||||||
bzero(& ftb->no_dupes, sizeof(TREE));
|
bzero(& ftb->no_dupes, sizeof(TREE));
|
||||||
|
|
||||||
init_alloc_root(&ftb->mem_root, 1024, 1024);
|
init_alloc_root(&ftb->mem_root, 1024, 1024);
|
||||||
@ -410,7 +410,7 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query,
|
|||||||
ftbe->quot=0;
|
ftbe->quot=0;
|
||||||
ftbe->up=0;
|
ftbe->up=0;
|
||||||
ftbe->ythresh=ftbe->yweaks=0;
|
ftbe->ythresh=ftbe->yweaks=0;
|
||||||
ftbe->docid[0]=ftbe->docid[1]=HA_POS_ERROR;
|
ftbe->docid[0]=ftbe->docid[1]=HA_OFFSET_ERROR;
|
||||||
ftb->root=ftbe;
|
ftb->root=ftbe;
|
||||||
_ftb_parse_query(ftb, &query, query+query_len, ftbe, 0);
|
_ftb_parse_query(ftb, &query, query+query_len, ftbe, 0);
|
||||||
ftb->list=(FTB_WORD **)alloc_root(&ftb->mem_root,
|
ftb->list=(FTB_WORD **)alloc_root(&ftb->mem_root,
|
||||||
@ -561,7 +561,7 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record)
|
|||||||
|
|
||||||
while (ftb->state == INDEX_SEARCH &&
|
while (ftb->state == INDEX_SEARCH &&
|
||||||
(curdoc=((FTB_WORD *)queue_top(& ftb->queue))->docid[0]) !=
|
(curdoc=((FTB_WORD *)queue_top(& ftb->queue))->docid[0]) !=
|
||||||
HA_POS_ERROR)
|
HA_OFFSET_ERROR)
|
||||||
{
|
{
|
||||||
while (curdoc == (ftbw=(FTB_WORD *)queue_top(& ftb->queue))->docid[0])
|
while (curdoc == (ftbw=(FTB_WORD *)queue_top(& ftb->queue))->docid[0])
|
||||||
{
|
{
|
||||||
@ -615,7 +615,7 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
|
|||||||
const byte *end;
|
const byte *end;
|
||||||
my_off_t docid=ftb->info->lastpos;
|
my_off_t docid=ftb->info->lastpos;
|
||||||
|
|
||||||
if (docid == HA_POS_ERROR)
|
if (docid == HA_OFFSET_ERROR)
|
||||||
return -2.0;
|
return -2.0;
|
||||||
if (!ftb->queue.elements)
|
if (!ftb->queue.elements)
|
||||||
return 0;
|
return 0;
|
||||||
@ -627,9 +627,9 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
|
|||||||
|
|
||||||
for (i=0; i < ftb->queue.elements; i++)
|
for (i=0; i < ftb->queue.elements; i++)
|
||||||
{
|
{
|
||||||
ftb->list[i]->docid[1]=HA_POS_ERROR;
|
ftb->list[i]->docid[1]=HA_OFFSET_ERROR;
|
||||||
for (x=ftb->list[i]->up; x; x=x->up)
|
for (x=ftb->list[i]->up; x; x=x->up)
|
||||||
x->docid[1]=HA_POS_ERROR;
|
x->docid[1]=HA_OFFSET_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,3 +487,18 @@ prepare stmt1 from @str2;
|
|||||||
execute stmt1 using @ivar;
|
execute stmt1 using @ivar;
|
||||||
?
|
?
|
||||||
1234
|
1234
|
||||||
|
SET TIMESTAMP=10000;
|
||||||
|
create table t2 (c char(30)) charset=ucs2;
|
||||||
|
set @v=convert('abc' using ucs2);
|
||||||
|
reset master;
|
||||||
|
insert into t2 values (@v);
|
||||||
|
show binlog events from 79;
|
||||||
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
|
master-bin.000001 79 User var 1 79 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
||||||
|
master-bin.000001 119 Query 1 119 use `test`; insert into t2 values (@v)
|
||||||
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
SET @`v`:=_ucs2 0x006100620063 COLLATE ucs2_general_ci;
|
||||||
|
use test;
|
||||||
|
SET TIMESTAMP=10000;
|
||||||
|
insert into t2 values (@v);
|
||||||
|
drop table t2;
|
||||||
|
@ -382,3 +382,12 @@ s
|
|||||||
p<EFBFBD>ra para para
|
p<EFBFBD>ra para para
|
||||||
para para para
|
para para para
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (h text, FULLTEXT (h));
|
||||||
|
INSERT INTO t1 VALUES ('Jesses Hasse Ling and his syncopators of Swing');
|
||||||
|
REPAIR TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 repair status OK
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
@ -169,18 +169,12 @@ SET @`a b`='hello';
|
|||||||
INSERT INTO t1 VALUES(@`a b`);
|
INSERT INTO t1 VALUES(@`a b`);
|
||||||
set @var1= "';aaa";
|
set @var1= "';aaa";
|
||||||
insert into t1 values (@var1);
|
insert into t1 values (@var1);
|
||||||
create table t2 (c char(30)) charset=ucs2;
|
|
||||||
set @v=convert('abc' using ucs2);
|
|
||||||
insert into t2 values (@v);
|
|
||||||
show binlog events from 79;
|
show binlog events from 79;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id Orig_log_pos Info
|
||||||
master-bin.000001 79 User var 1 79 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
master-bin.000001 79 User var 1 79 @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 120 Query 1 120 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
master-bin.000001 120 Query 1 120 use `test`; INSERT INTO t1 VALUES(@`a b`)
|
||||||
master-bin.000001 184 User var 1 184 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
master-bin.000001 184 User var 1 184 @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
|
||||||
master-bin.000001 226 Query 1 226 use `test`; insert into t1 values (@var1)
|
master-bin.000001 226 Query 1 226 use `test`; insert into t1 values (@var1)
|
||||||
master-bin.000001 290 Query 1 290 use `test`; create table t2 (c char(30)) charset=ucs2
|
|
||||||
master-bin.000001 366 User var 1 366 @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
|
|
||||||
master-bin.000001 406 Query 1 406 use `test`; insert into t2 values (@v)
|
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
SET @`a b`:=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci;
|
SET @`a b`:=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci;
|
||||||
use test;
|
use test;
|
||||||
@ -189,12 +183,7 @@ INSERT INTO t1 VALUES(@`a b`);
|
|||||||
SET @`var1`:=_latin1 0x273B616161 COLLATE latin1_swedish_ci;
|
SET @`var1`:=_latin1 0x273B616161 COLLATE latin1_swedish_ci;
|
||||||
SET TIMESTAMP=10000;
|
SET TIMESTAMP=10000;
|
||||||
insert into t1 values (@var1);
|
insert into t1 values (@var1);
|
||||||
SET TIMESTAMP=10000;
|
drop table t1;
|
||||||
create table t2 (c char(30)) charset=ucs2;
|
|
||||||
SET @`v`:=_ucs2 0x006100620063 COLLATE ucs2_general_ci;
|
|
||||||
SET TIMESTAMP=10000;
|
|
||||||
insert into t2 values (@v);
|
|
||||||
drop table t1, t2;
|
|
||||||
set @var= NULL ;
|
set @var= NULL ;
|
||||||
select FIELD( @var,'1it','Hit') as my_column;
|
select FIELD( @var,'1it','Hit') as my_column;
|
||||||
my_column
|
my_column
|
||||||
|
@ -323,3 +323,19 @@ set @str1 = 'select ?';
|
|||||||
set @str2 = convert(@str1 using ucs2);
|
set @str2 = convert(@str1 using ucs2);
|
||||||
prepare stmt1 from @str2;
|
prepare stmt1 from @str2;
|
||||||
execute stmt1 using @ivar;
|
execute stmt1 using @ivar;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check correct binlogging of UCS2 user variables (BUG#3875)
|
||||||
|
#
|
||||||
|
SET TIMESTAMP=10000;
|
||||||
|
create table t2 (c char(30)) charset=ucs2;
|
||||||
|
set @v=convert('abc' using ucs2);
|
||||||
|
reset master;
|
||||||
|
insert into t2 values (@v);
|
||||||
|
show binlog events from 79;
|
||||||
|
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
||||||
|
# absolutely need variables names to be quoted and strings to be
|
||||||
|
# escaped).
|
||||||
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
|
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
||||||
|
drop table t2;
|
||||||
|
@ -295,3 +295,14 @@ insert into t1 (s) values ('p
|
|||||||
select * from t1 where match(s) against('para' in boolean mode);
|
select * from t1 where match(s) against('para' in boolean mode);
|
||||||
select * from t1 where match(s) against('par*' in boolean mode);
|
select * from t1 where match(s) against('par*' in boolean mode);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# icc -ip bug (ip = interprocedural optimization)
|
||||||
|
# bug#5528
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (h text, FULLTEXT (h));
|
||||||
|
INSERT INTO t1 VALUES ('Jesses Hasse Ling and his syncopators of Swing');
|
||||||
|
REPAIR TABLE t1;
|
||||||
|
select count(*) from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
@ -108,16 +108,13 @@ SET @`a b`='hello';
|
|||||||
INSERT INTO t1 VALUES(@`a b`);
|
INSERT INTO t1 VALUES(@`a b`);
|
||||||
set @var1= "';aaa";
|
set @var1= "';aaa";
|
||||||
insert into t1 values (@var1);
|
insert into t1 values (@var1);
|
||||||
create table t2 (c char(30)) charset=ucs2;
|
|
||||||
set @v=convert('abc' using ucs2);
|
|
||||||
insert into t2 values (@v);
|
|
||||||
show binlog events from 79;
|
show binlog events from 79;
|
||||||
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
||||||
# absolutely need variables names to be quoted and strings to be
|
# absolutely need variables names to be quoted and strings to be
|
||||||
# escaped).
|
# escaped).
|
||||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
||||||
drop table t1, t2;
|
drop table t1;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -239,7 +239,11 @@ Dbdict::packTableIntoPagesImpl(SimpleProperties::Writer & w,
|
|||||||
|
|
||||||
w.add(DictTabInfo::TableName, tablePtr.p->tableName);
|
w.add(DictTabInfo::TableName, tablePtr.p->tableName);
|
||||||
w.add(DictTabInfo::TableId, tablePtr.i);
|
w.add(DictTabInfo::TableId, tablePtr.i);
|
||||||
|
#ifdef HAVE_TABLE_REORG
|
||||||
w.add(DictTabInfo::SecondTableId, tablePtr.p->secondTable);
|
w.add(DictTabInfo::SecondTableId, tablePtr.p->secondTable);
|
||||||
|
#else
|
||||||
|
w.add(DictTabInfo::SecondTableId, (Uint32)0);
|
||||||
|
#endif
|
||||||
w.add(DictTabInfo::TableVersion, tablePtr.p->tableVersion);
|
w.add(DictTabInfo::TableVersion, tablePtr.p->tableVersion);
|
||||||
w.add(DictTabInfo::NoOfKeyAttr, tablePtr.p->noOfPrimkey);
|
w.add(DictTabInfo::NoOfKeyAttr, tablePtr.p->noOfPrimkey);
|
||||||
w.add(DictTabInfo::NoOfAttributes, tablePtr.p->noOfAttributes);
|
w.add(DictTabInfo::NoOfAttributes, tablePtr.p->noOfAttributes);
|
||||||
@ -1436,6 +1440,7 @@ Uint32 Dbdict::getFreeTableRecord(Uint32 primaryTableId)
|
|||||||
jam();
|
jam();
|
||||||
return RNIL;
|
return RNIL;
|
||||||
}//if
|
}//if
|
||||||
|
#ifdef HAVE_TABLE_REORG
|
||||||
bool secondFound = false;
|
bool secondFound = false;
|
||||||
for (tablePtr.i = firstTablePtr.i + 1; tablePtr.i < tabSize ; tablePtr.i++) {
|
for (tablePtr.i = firstTablePtr.i + 1; tablePtr.i < tabSize ; tablePtr.i++) {
|
||||||
jam();
|
jam();
|
||||||
@ -1455,6 +1460,7 @@ Uint32 Dbdict::getFreeTableRecord(Uint32 primaryTableId)
|
|||||||
firstTablePtr.p->tabState = TableRecord::NOT_DEFINED;
|
firstTablePtr.p->tabState = TableRecord::NOT_DEFINED;
|
||||||
return RNIL;
|
return RNIL;
|
||||||
}//if
|
}//if
|
||||||
|
#endif
|
||||||
return firstTablePtr.i;
|
return firstTablePtr.i;
|
||||||
}//Dbdict::getFreeTableRecord()
|
}//Dbdict::getFreeTableRecord()
|
||||||
|
|
||||||
@ -4623,7 +4629,7 @@ void Dbdict::handleTabInfoInit(SimpleProperties::Reader & it,
|
|||||||
jam();
|
jam();
|
||||||
tablePtr.p->tabState = TableRecord::DEFINING;
|
tablePtr.p->tabState = TableRecord::DEFINING;
|
||||||
}//if
|
}//if
|
||||||
|
#ifdef HAVE_TABLE_REORG
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
// Get id of second table id and check that table doesn't already exist
|
// Get id of second table id and check that table doesn't already exist
|
||||||
// and set up links between first and second table.
|
// and set up links between first and second table.
|
||||||
@ -4637,7 +4643,7 @@ void Dbdict::handleTabInfoInit(SimpleProperties::Reader & it,
|
|||||||
secondTablePtr.p->tabState = TableRecord::REORG_TABLE_PREPARED;
|
secondTablePtr.p->tabState = TableRecord::REORG_TABLE_PREPARED;
|
||||||
secondTablePtr.p->secondTable = tablePtr.i;
|
secondTablePtr.p->secondTable = tablePtr.i;
|
||||||
tablePtr.p->secondTable = secondTablePtr.i;
|
tablePtr.p->secondTable = secondTablePtr.i;
|
||||||
|
#endif
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
// Set table version
|
// Set table version
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
@ -5535,10 +5541,12 @@ void Dbdict::releaseTableObject(Uint32 tableId, bool removeFromHash)
|
|||||||
nextAttrRecord = attrPtr.p->nextAttrInTable;
|
nextAttrRecord = attrPtr.p->nextAttrInTable;
|
||||||
c_attributeRecordPool.release(attrPtr);
|
c_attributeRecordPool.release(attrPtr);
|
||||||
}//if
|
}//if
|
||||||
|
#ifdef HAVE_TABLE_REORG
|
||||||
Uint32 secondTableId = tablePtr.p->secondTable;
|
Uint32 secondTableId = tablePtr.p->secondTable;
|
||||||
initialiseTableRecord(tablePtr);
|
initialiseTableRecord(tablePtr);
|
||||||
c_tableRecordPool.getPtr(tablePtr, secondTableId);
|
c_tableRecordPool.getPtr(tablePtr, secondTableId);
|
||||||
initialiseTableRecord(tablePtr);
|
initialiseTableRecord(tablePtr);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}//releaseTableObject()
|
}//releaseTableObject()
|
||||||
|
|
||||||
|
@ -151,10 +151,10 @@ public:
|
|||||||
|
|
||||||
/* Temporary record used during add/drop table */
|
/* Temporary record used during add/drop table */
|
||||||
Uint32 myConnect;
|
Uint32 myConnect;
|
||||||
|
#ifdef HAVE_TABLE_REORG
|
||||||
/* Second table used by this table (for table reorg) */
|
/* Second table used by this table (for table reorg) */
|
||||||
Uint32 secondTable;
|
Uint32 secondTable;
|
||||||
|
#endif
|
||||||
/* Next record in Pool */
|
/* Next record in Pool */
|
||||||
Uint32 nextPool;
|
Uint32 nextPool;
|
||||||
|
|
||||||
|
@ -1032,7 +1032,7 @@ bool net_request_file(NET* net, const char* fname)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char *rewrite_db(const char* db, uint *new_len)
|
const char *rewrite_db(const char* db, uint32 *new_len)
|
||||||
{
|
{
|
||||||
if (replicate_rewrite_db.is_empty() || !db)
|
if (replicate_rewrite_db.is_empty() || !db)
|
||||||
return db;
|
return db;
|
||||||
@ -1043,7 +1043,7 @@ const char *rewrite_db(const char* db, uint *new_len)
|
|||||||
{
|
{
|
||||||
if (!strcmp(tmp->key, db))
|
if (!strcmp(tmp->key, db))
|
||||||
{
|
{
|
||||||
*new_len= strlen(tmp->val);
|
*new_len= (uint32)strlen(tmp->val);
|
||||||
return tmp->val;
|
return tmp->val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -510,7 +510,7 @@ int add_table_rule(HASH* h, const char* table_spec);
|
|||||||
int add_wild_table_rule(DYNAMIC_ARRAY* a, const char* table_spec);
|
int add_wild_table_rule(DYNAMIC_ARRAY* a, const char* table_spec);
|
||||||
void init_table_rule_hash(HASH* h, bool* h_inited);
|
void init_table_rule_hash(HASH* h, bool* h_inited);
|
||||||
void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited);
|
void init_table_rule_array(DYNAMIC_ARRAY* a, bool* a_inited);
|
||||||
const char *rewrite_db(const char* db, uint *new_db_len);
|
const char *rewrite_db(const char* db, uint32 *new_db_len);
|
||||||
const char *print_slave_db_safe(const char *db);
|
const char *print_slave_db_safe(const char *db);
|
||||||
int check_expected_error(THD* thd, RELAY_LOG_INFO* rli, int error_code);
|
int check_expected_error(THD* thd, RELAY_LOG_INFO* rli, int error_code);
|
||||||
void skip_load_data_infile(NET* net);
|
void skip_load_data_infile(NET* net);
|
||||||
|
@ -4123,7 +4123,7 @@ bool mysql_test_parse_for_slave(THD *thd, char *inBuf, uint length)
|
|||||||
- SET uses tot_length.
|
- SET uses tot_length.
|
||||||
*/
|
*/
|
||||||
void calculate_interval_lengths(THD *thd, TYPELIB *interval,
|
void calculate_interval_lengths(THD *thd, TYPELIB *interval,
|
||||||
uint *max_length, uint *tot_length)
|
uint32 *max_length, uint32 *tot_length)
|
||||||
{
|
{
|
||||||
const char **pos;
|
const char **pos;
|
||||||
uint *len;
|
uint *len;
|
||||||
@ -4135,7 +4135,7 @@ void calculate_interval_lengths(THD *thd, TYPELIB *interval,
|
|||||||
*len= (uint) strip_sp((char*) *pos);
|
*len= (uint) strip_sp((char*) *pos);
|
||||||
uint length= cs->cset->numchars(cs, *pos, *pos + *len);
|
uint length= cs->cset->numchars(cs, *pos, *pos + *len);
|
||||||
*tot_length+= length;
|
*tot_length+= length;
|
||||||
set_if_bigger(*max_length, length);
|
set_if_bigger(*max_length, (uint32)length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4454,7 +4454,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
|
|||||||
if (new_field->pack_length > 4)
|
if (new_field->pack_length > 4)
|
||||||
new_field->pack_length=8;
|
new_field->pack_length=8;
|
||||||
new_field->interval=interval;
|
new_field->interval=interval;
|
||||||
uint dummy_max_length;
|
uint32 dummy_max_length;
|
||||||
calculate_interval_lengths(thd, interval,
|
calculate_interval_lengths(thd, interval,
|
||||||
&dummy_max_length, &new_field->length);
|
&dummy_max_length, &new_field->length);
|
||||||
new_field->length+= (interval->count - 1);
|
new_field->length+= (interval->count - 1);
|
||||||
@ -4484,7 +4484,7 @@ bool add_field_to_list(THD *thd, char *field_name, enum_field_types type,
|
|||||||
new_field->interval=interval;
|
new_field->interval=interval;
|
||||||
new_field->pack_length=interval->count < 256 ? 1 : 2; // Should be safe
|
new_field->pack_length=interval->count < 256 ? 1 : 2; // Should be safe
|
||||||
|
|
||||||
uint dummy_tot_length;
|
uint32 dummy_tot_length;
|
||||||
calculate_interval_lengths(thd, interval,
|
calculate_interval_lengths(thd, interval,
|
||||||
&new_field->length, &dummy_tot_length);
|
&new_field->length, &dummy_tot_length);
|
||||||
set_if_smaller(new_field->length,MAX_FIELD_WIDTH-1);
|
set_if_smaller(new_field->length,MAX_FIELD_WIDTH-1);
|
||||||
|
Reference in New Issue
Block a user