mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge mysql.com:/home/jimw/my/mysql-5.0-clean
into mysql.com:/home/jimw/my/mysql-5.1-clean client/mysqldump.c: Auto merged mysql-test/r/innodb.result: Auto merged sql/item_cmpfunc.cc: Auto merged sql/unireg.h: Auto merged mysql-test/r/mysqldump.result: Fix conflict mysql-test/t/mysqldump.test: Fix conflict
This commit is contained in:
@ -2162,6 +2162,8 @@ static void dump_table(char *table, char *db)
|
|||||||
for (i = 0; i < mysql_num_fields(res); i++)
|
for (i = 0; i < mysql_num_fields(res); i++)
|
||||||
{
|
{
|
||||||
int is_blob;
|
int is_blob;
|
||||||
|
ulong length= lengths[i];
|
||||||
|
|
||||||
if (!(field = mysql_fetch_field(res)))
|
if (!(field = mysql_fetch_field(res)))
|
||||||
{
|
{
|
||||||
my_snprintf(query, QUERY_LENGTH,
|
my_snprintf(query, QUERY_LENGTH,
|
||||||
@ -2188,7 +2190,6 @@ static void dump_table(char *table, char *db)
|
|||||||
field->type == MYSQL_TYPE_TINY_BLOB)) ? 1 : 0;
|
field->type == MYSQL_TYPE_TINY_BLOB)) ? 1 : 0;
|
||||||
if (extended_insert)
|
if (extended_insert)
|
||||||
{
|
{
|
||||||
ulong length = lengths[i];
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
dynstr_set(&extended_row,"(");
|
dynstr_set(&extended_row,"(");
|
||||||
else
|
else
|
||||||
@ -2278,19 +2279,19 @@ static void dump_table(char *table, char *db)
|
|||||||
{
|
{
|
||||||
print_xml_tag1(md_result_file, "\t\t", "field name=",
|
print_xml_tag1(md_result_file, "\t\t", "field name=",
|
||||||
field->name, "");
|
field->name, "");
|
||||||
print_quoted_xml(md_result_file, row[i], lengths[i]);
|
print_quoted_xml(md_result_file, row[i], length);
|
||||||
fputs("</field>\n", md_result_file);
|
fputs("</field>\n", md_result_file);
|
||||||
}
|
}
|
||||||
else if (opt_hex_blob && is_blob)
|
else if (opt_hex_blob && is_blob && length)
|
||||||
{
|
{
|
||||||
/* sakaik got the idea to to provide blob's in hex notation. */
|
/* sakaik got the idea to to provide blob's in hex notation. */
|
||||||
char *ptr= row[i], *end= ptr+ lengths[i];
|
char *ptr= row[i], *end= ptr + length;
|
||||||
fputs("0x", md_result_file);
|
fputs("0x", md_result_file);
|
||||||
for (; ptr < end ; ptr++)
|
for (; ptr < end ; ptr++)
|
||||||
fprintf(md_result_file, "%02X", *((uchar *)ptr));
|
fprintf(md_result_file, "%02X", *((uchar *)ptr));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
unescape(md_result_file, row[i], lengths[i]);
|
unescape(md_result_file, row[i], length);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1891,3 +1891,17 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
|
) ENGINE=BerkeleyDB DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set storage_engine=MyISAM;
|
set storage_engine=MyISAM;
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d)) engine=bdb;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
e varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d,e)) engine=bdb;
|
||||||
|
ERROR 42000: Specified key was too long; max key length is 3072 bytes
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -33,3 +33,12 @@ id value
|
|||||||
select * from t1 where id <=> value or value<=>id;
|
select * from t1 where id <=> value or value<=>id;
|
||||||
id value
|
id value
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
create table t1 (a bigint unsigned);
|
||||||
|
insert into t1 values (4828532208463511553);
|
||||||
|
select * from t1 where a = '4828532208463511553';
|
||||||
|
a
|
||||||
|
4828532208463511553
|
||||||
|
select * from t1 where a in ('4828532208463511553');
|
||||||
|
a
|
||||||
|
4828532208463511553
|
||||||
|
drop table t1;
|
||||||
|
@ -2772,3 +2772,17 @@ insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
commit;
|
commit;
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d)) engine=innodb;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
e varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d,e)) engine=innodb;
|
||||||
|
ERROR 42000: Specified key was too long; max key length is 3072 bytes
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -1696,6 +1696,75 @@ test.t1: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
Osnabr<EFBFBD>ck K<>ln
|
Osnabr<EFBFBD>ck K<>ln
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a binary(1), b blob);
|
||||||
|
insert into t1 values ('','');
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` binary(1) default NULL,
|
||||||
|
`b` blob
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
|
||||||
|
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||||
|
LOCK TABLES `t1` WRITE;
|
||||||
|
INSERT INTO `t1` VALUES (0x00,'');
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` binary(1) default NULL,
|
||||||
|
`b` blob
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
|
||||||
|
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||||
|
LOCK TABLES `t1` WRITE;
|
||||||
|
INSERT INTO `t1` VALUES (0x00,'');
|
||||||
|
UNLOCK TABLES;
|
||||||
|
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1(a int);
|
create table t1(a int);
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
@ -2588,3 +2657,4 @@ DELIMITER ;
|
|||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
DROP TRIGGER tr1;
|
DROP TRIGGER tr1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -974,3 +974,22 @@ drop table t1;
|
|||||||
|
|
||||||
# End varchar test
|
# End varchar test
|
||||||
eval set storage_engine=$default;
|
eval set storage_engine=$default;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test that we can create a large key
|
||||||
|
#
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d)) engine=bdb;
|
||||||
|
drop table t1;
|
||||||
|
--error ER_TOO_LONG_KEY
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
e varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d,e)) engine=bdb;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
||||||
|
@ -34,4 +34,13 @@ select * from t1 where value <=> value;
|
|||||||
select * from t1 where id <=> value or value<=>id;
|
select * from t1 where id <=> value or value<=>id;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #12612: quoted bigint unsigned value and the use of "in" in where clause
|
||||||
|
#
|
||||||
|
create table t1 (a bigint unsigned);
|
||||||
|
insert into t1 values (4828532208463511553);
|
||||||
|
select * from t1 where a = '4828532208463511553';
|
||||||
|
select * from t1 where a in ('4828532208463511553');
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -1751,3 +1751,22 @@ insert into t2 values (4,_ucs2 0x05612020,_ucs2 0x05612020,'taken');
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
commit;
|
commit;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test that we can create a large (>1K) key
|
||||||
|
#
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d)) engine=innodb;
|
||||||
|
drop table t1;
|
||||||
|
--error ER_TOO_LONG_KEY
|
||||||
|
create table t1 (a varchar(255) character set utf8,
|
||||||
|
b varchar(255) character set utf8,
|
||||||
|
c varchar(255) character set utf8,
|
||||||
|
d varchar(255) character set utf8,
|
||||||
|
e varchar(255) character set utf8,
|
||||||
|
key (a,b,c,d,e)) engine=innodb;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
||||||
|
@ -605,6 +605,7 @@ select * from t2 order by a;
|
|||||||
|
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
drop database db1;
|
drop database db1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #9558 mysqldump --no-data db t1 t2 format still dumps data
|
# Bug #9558 mysqldump --no-data db t1 t2 format still dumps data
|
||||||
#
|
#
|
||||||
@ -644,7 +645,7 @@ select '------ Testing with illegal table names ------' as test_sequence ;
|
|||||||
|
|
||||||
--error 6
|
--error 6
|
||||||
--exec $MYSQL_DUMP --compact --skip-comments mysqldump_test_db "\\t1" 2>&1
|
--exec $MYSQL_DUMP --compact --skip-comments mysqldump_test_db "\\t1" 2>&1
|
||||||
|
|
||||||
--error 6
|
--error 6
|
||||||
--exec $MYSQL_DUMP --compact --skip-comments mysqldump_test_db "\\\\t1" 2>&1
|
--exec $MYSQL_DUMP --compact --skip-comments mysqldump_test_db "\\\\t1" 2>&1
|
||||||
|
|
||||||
@ -685,6 +686,7 @@ drop table t1, t2, t3;
|
|||||||
drop database mysqldump_test_db;
|
drop database mysqldump_test_db;
|
||||||
use test;
|
use test;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #9657 mysqldump xml ( -x ) does not format NULL fields correctly
|
# Bug #9657 mysqldump xml ( -x ) does not format NULL fields correctly
|
||||||
#
|
#
|
||||||
@ -709,6 +711,16 @@ select * from t1;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #13318: Bad result with empty field and --hex-blob
|
||||||
|
#
|
||||||
|
create table t1 (a binary(1), b blob);
|
||||||
|
insert into t1 values ('','');
|
||||||
|
--exec $MYSQL_DUMP --skip-comments --skip-extended-insert --hex-blob test t1
|
||||||
|
--exec $MYSQL_DUMP --skip-comments --hex-blob test t1
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1035,3 +1047,4 @@ SET SQL_MODE = @old_sql_mode;
|
|||||||
--exec $MYSQL_DUMP --skip-comments --databases test
|
--exec $MYSQL_DUMP --skip-comments --databases test
|
||||||
|
|
||||||
DROP TRIGGER tr1;
|
DROP TRIGGER tr1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -25,6 +25,8 @@
|
|||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include "sql_select.h"
|
#include "sql_select.h"
|
||||||
|
|
||||||
|
static bool convert_constant_item(THD *thd, Field *field, Item **item);
|
||||||
|
|
||||||
static Item_result item_store_type(Item_result a,Item_result b)
|
static Item_result item_store_type(Item_result a,Item_result b)
|
||||||
{
|
{
|
||||||
if (a == STRING_RESULT || b == STRING_RESULT)
|
if (a == STRING_RESULT || b == STRING_RESULT)
|
||||||
@ -45,14 +47,37 @@ static void agg_result_type(Item_result *type, Item **items, uint nitems)
|
|||||||
type[0]= item_store_type(type[0], items[i]->result_type());
|
type[0]= item_store_type(type[0], items[i]->result_type());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void agg_cmp_type(Item_result *type, Item **items, uint nitems)
|
|
||||||
|
static void agg_cmp_type(THD *thd, Item_result *type, Item **items, uint nitems)
|
||||||
{
|
{
|
||||||
uint i;
|
uint i;
|
||||||
|
Field *field= NULL;
|
||||||
|
bool all_constant= TRUE;
|
||||||
|
|
||||||
|
/* If the first argument is a FIELD_ITEM, pull out the field. */
|
||||||
|
if (items[0]->type() == Item::FIELD_ITEM)
|
||||||
|
field=((Item_field *)items[0])->field;
|
||||||
|
/* But if it can't be compared as a longlong, we don't really care. */
|
||||||
|
if (field && !field->can_be_compared_as_longlong())
|
||||||
|
field= NULL;
|
||||||
|
|
||||||
type[0]= items[0]->result_type();
|
type[0]= items[0]->result_type();
|
||||||
for (i=1 ; i < nitems ; i++)
|
for (i= 1; i < nitems; i++)
|
||||||
|
{
|
||||||
type[0]= item_cmp_type(type[0], items[i]->result_type());
|
type[0]= item_cmp_type(type[0], items[i]->result_type());
|
||||||
|
if (field && !convert_constant_item(thd, field, &items[i]))
|
||||||
|
all_constant= FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
If we had a field that can be compared as a longlong, and all constant
|
||||||
|
items, then the aggregate result will be an INT_RESULT.
|
||||||
|
*/
|
||||||
|
if (field && all_constant)
|
||||||
|
type[0]= INT_RESULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void my_coll_agg_error(DTCollation &c1, DTCollation &c2,
|
static void my_coll_agg_error(DTCollation &c1, DTCollation &c2,
|
||||||
const char *fname)
|
const char *fname)
|
||||||
{
|
{
|
||||||
@ -1051,32 +1076,11 @@ void Item_func_between::fix_length_and_dec()
|
|||||||
*/
|
*/
|
||||||
if (!args[0] || !args[1] || !args[2])
|
if (!args[0] || !args[1] || !args[2])
|
||||||
return;
|
return;
|
||||||
agg_cmp_type(&cmp_type, args, 3);
|
agg_cmp_type(thd, &cmp_type, args, 3);
|
||||||
|
|
||||||
if (cmp_type == STRING_RESULT &&
|
if (cmp_type == STRING_RESULT &&
|
||||||
agg_arg_charsets(cmp_collation, args, 3, MY_COLL_CMP_CONV))
|
agg_arg_charsets(cmp_collation, args, 3, MY_COLL_CMP_CONV))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
|
||||||
Make a special ease of compare with date/time and longlong fields.
|
|
||||||
They are compared as integers, so for const item this time-consuming
|
|
||||||
conversion can be done only once, not for every single comparison
|
|
||||||
*/
|
|
||||||
if (args[0]->type() == FIELD_ITEM)
|
|
||||||
{
|
|
||||||
Field *field=((Item_field*) args[0])->field;
|
|
||||||
if (!thd->is_context_analysis_only() &&
|
|
||||||
field->can_be_compared_as_longlong())
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
The following can't be recoded with || as convert_constant_item
|
|
||||||
changes the argument
|
|
||||||
*/
|
|
||||||
if (convert_constant_item(thd, field,&args[1]))
|
|
||||||
cmp_type=INT_RESULT; // Works for all types.
|
|
||||||
if (convert_constant_item(thd, field,&args[2]))
|
|
||||||
cmp_type=INT_RESULT; // Works for all types.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1722,6 +1726,7 @@ void Item_func_case::fix_length_and_dec()
|
|||||||
{
|
{
|
||||||
Item **agg;
|
Item **agg;
|
||||||
uint nagg;
|
uint nagg;
|
||||||
|
THD *thd= current_thd;
|
||||||
|
|
||||||
if (!(agg= (Item**) sql_alloc(sizeof(Item*)*(ncases+1))))
|
if (!(agg= (Item**) sql_alloc(sizeof(Item*)*(ncases+1))))
|
||||||
return;
|
return;
|
||||||
@ -1753,7 +1758,7 @@ void Item_func_case::fix_length_and_dec()
|
|||||||
for (nagg= 0; nagg < ncases/2 ; nagg++)
|
for (nagg= 0; nagg < ncases/2 ; nagg++)
|
||||||
agg[nagg+1]= args[nagg*2];
|
agg[nagg+1]= args[nagg*2];
|
||||||
nagg++;
|
nagg++;
|
||||||
agg_cmp_type(&cmp_type, agg, nagg);
|
agg_cmp_type(thd, &cmp_type, agg, nagg);
|
||||||
if ((cmp_type == STRING_RESULT) &&
|
if ((cmp_type == STRING_RESULT) &&
|
||||||
agg_arg_charsets(cmp_collation, agg, nagg, MY_COLL_CMP_CONV))
|
agg_arg_charsets(cmp_collation, agg, nagg, MY_COLL_CMP_CONV))
|
||||||
return;
|
return;
|
||||||
@ -2346,7 +2351,7 @@ void Item_func_in::fix_length_and_dec()
|
|||||||
uint const_itm= 1;
|
uint const_itm= 1;
|
||||||
THD *thd= current_thd;
|
THD *thd= current_thd;
|
||||||
|
|
||||||
agg_cmp_type(&cmp_type, args, arg_count);
|
agg_cmp_type(thd, &cmp_type, args, arg_count);
|
||||||
|
|
||||||
if (cmp_type == STRING_RESULT &&
|
if (cmp_type == STRING_RESULT &&
|
||||||
agg_arg_charsets(cmp_collation, args, arg_count, MY_COLL_CMP_CONV))
|
agg_arg_charsets(cmp_collation, args, arg_count, MY_COLL_CMP_CONV))
|
||||||
|
@ -53,11 +53,7 @@
|
|||||||
#define MAX_SYS_VAR_LENGTH 32
|
#define MAX_SYS_VAR_LENGTH 32
|
||||||
#define MAX_KEY 64 /* Max used keys */
|
#define MAX_KEY 64 /* Max used keys */
|
||||||
#define MAX_REF_PARTS 16 /* Max parts used as ref */
|
#define MAX_REF_PARTS 16 /* Max parts used as ref */
|
||||||
#if SIZEOF_CHARP > 4
|
#define MAX_KEY_LENGTH 3072 /* max possible key */
|
||||||
#define MAX_KEY_LENGTH 3072 /* max possible key, if 64 bits */
|
|
||||||
#else
|
|
||||||
#define MAX_KEY_LENGTH 1024 /* max possible key, if 32 bits */
|
|
||||||
#endif
|
|
||||||
#if SIZEOF_OFF_T > 4
|
#if SIZEOF_OFF_T > 4
|
||||||
#define MAX_REFLENGTH 8 /* Max length for record ref */
|
#define MAX_REFLENGTH 8 /* Max length for record ref */
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user