mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 20:11:42 +01:00
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1
into rurik.mysql.com:/home/igor/mysql-4.1
This commit is contained in:
commit
5a6d0da277
5 changed files with 86 additions and 8 deletions
|
@ -249,6 +249,24 @@ INSERT INTO t1 VALUES (1, 'a545f661efdd1fb66fdee3aab79945bf');
|
|||
SELECT 1 FROM t1 WHERE tmp=AES_DECRYPT(tmp,"password");
|
||||
1
|
||||
DROP TABLE t1;
|
||||
select collation(bin(130)), coercibility(bin(130));
|
||||
collation(bin(130)) coercibility(bin(130))
|
||||
latin1_swedish_ci 3
|
||||
select collation(oct(130)), coercibility(oct(130));
|
||||
collation(oct(130)) coercibility(oct(130))
|
||||
latin1_swedish_ci 3
|
||||
select collation(conv(130,16,10)), coercibility(conv(130,16,10));
|
||||
collation(conv(130,16,10)) coercibility(conv(130,16,10))
|
||||
latin1_swedish_ci 3
|
||||
select collation(hex(130)), coercibility(hex(130));
|
||||
collation(hex(130)) coercibility(hex(130))
|
||||
latin1_swedish_ci 3
|
||||
select collation(char(130)), coercibility(hex(130));
|
||||
collation(char(130)) coercibility(hex(130))
|
||||
binary 3
|
||||
select collation(format(130,10)), coercibility(format(130,10));
|
||||
collation(format(130,10)) coercibility(format(130,10))
|
||||
latin1_swedish_ci 3
|
||||
select collation(lcase(_latin2'a')), coercibility(lcase(_latin2'a'));
|
||||
collation(lcase(_latin2'a')) coercibility(lcase(_latin2'a'))
|
||||
latin2_general_ci 3
|
||||
|
@ -306,8 +324,17 @@ latin2_general_ci 3
|
|||
select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
|
||||
collation(insert(_latin2'abcd',2,3,_latin2'ef')) coercibility(insert(_latin2'abcd',2,3,_latin2'ef'))
|
||||
latin2_general_ci 3
|
||||
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
|
||||
collation(replace(_latin2'abcd',_latin2'b',_latin2'B')) coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'))
|
||||
latin2_general_ci 3
|
||||
create table t1
|
||||
select
|
||||
bin(130),
|
||||
oct(130),
|
||||
conv(130,16,10),
|
||||
hex(130),
|
||||
char(130),
|
||||
format(130,10),
|
||||
left(_latin2'a',1),
|
||||
right(_latin2'a',1),
|
||||
lcase(_latin2'a'),
|
||||
|
@ -326,11 +353,20 @@ reverse(_latin2'ab'),
|
|||
quote(_latin2'ab'),
|
||||
soundex(_latin2'ab'),
|
||||
substring(_latin2'ab',1),
|
||||
insert(_latin2'abcd',2,3,_latin2'ef')
|
||||
insert(_latin2'abcd',2,3,_latin2'ef'),
|
||||
replace(_latin2'abcd',_latin2'b',_latin2'B')
|
||||
;
|
||||
Warnings:
|
||||
Warning 1263 Data truncated for column 'format(130,10)' at row 1
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`bin(130)` char(64) NOT NULL default '',
|
||||
`oct(130)` char(64) NOT NULL default '',
|
||||
`conv(130,16,10)` char(64) NOT NULL default '',
|
||||
`hex(130)` char(6) NOT NULL default '',
|
||||
`char(130)` char(1) NOT NULL default '',
|
||||
`format(130,10)` char(4) NOT NULL default '',
|
||||
`left(_latin2'a',1)` char(1) character set latin2 NOT NULL default '',
|
||||
`right(_latin2'a',1)` char(1) character set latin2 NOT NULL default '',
|
||||
`lcase(_latin2'a')` char(1) character set latin2 NOT NULL default '',
|
||||
|
@ -349,6 +385,7 @@ t1 CREATE TABLE `t1` (
|
|||
`quote(_latin2'ab')` char(6) character set latin2 NOT NULL default '',
|
||||
`soundex(_latin2'ab')` char(4) character set latin2 NOT NULL default '',
|
||||
`substring(_latin2'ab',1)` char(2) character set latin2 NOT NULL default '',
|
||||
`insert(_latin2'abcd',2,3,_latin2'ef')` char(6) character set latin2 NOT NULL default ''
|
||||
`insert(_latin2'abcd',2,3,_latin2'ef')` char(6) character set latin2 NOT NULL default '',
|
||||
`replace(_latin2'abcd',_latin2'b',_latin2'B')` char(4) character set latin2 NOT NULL default ''
|
||||
) TYPE=MyISAM CHARSET=latin1
|
||||
drop table t1;
|
||||
|
|
|
@ -136,6 +136,12 @@ DROP TABLE t1;
|
|||
#
|
||||
# Test collation and coercibility
|
||||
#
|
||||
select collation(bin(130)), coercibility(bin(130));
|
||||
select collation(oct(130)), coercibility(oct(130));
|
||||
select collation(conv(130,16,10)), coercibility(conv(130,16,10));
|
||||
select collation(hex(130)), coercibility(hex(130));
|
||||
select collation(char(130)), coercibility(hex(130));
|
||||
select collation(format(130,10)), coercibility(format(130,10));
|
||||
select collation(lcase(_latin2'a')), coercibility(lcase(_latin2'a'));
|
||||
select collation(ucase(_latin2'a')), coercibility(ucase(_latin2'a'));
|
||||
select collation(left(_latin2'a',1)), coercibility(left(_latin2'a',1));
|
||||
|
@ -155,9 +161,16 @@ select collation(quote(_latin2'ab')), coercibility(quote(_latin2'ab'));
|
|||
select collation(soundex(_latin2'ab')), coercibility(soundex(_latin2'ab'));
|
||||
select collation(substring(_latin2'ab',1)), coercibility(substring(_latin2'ab',1));
|
||||
select collation(insert(_latin2'abcd',2,3,_latin2'ef')), coercibility(insert(_latin2'abcd',2,3,_latin2'ef'));
|
||||
select collation(replace(_latin2'abcd',_latin2'b',_latin2'B')), coercibility(replace(_latin2'abcd',_latin2'b',_latin2'B'));
|
||||
|
||||
create table t1
|
||||
select
|
||||
bin(130),
|
||||
oct(130),
|
||||
conv(130,16,10),
|
||||
hex(130),
|
||||
char(130),
|
||||
format(130,10),
|
||||
left(_latin2'a',1),
|
||||
right(_latin2'a',1),
|
||||
lcase(_latin2'a'),
|
||||
|
@ -176,8 +189,8 @@ select
|
|||
quote(_latin2'ab'),
|
||||
soundex(_latin2'ab'),
|
||||
substring(_latin2'ab',1),
|
||||
insert(_latin2'abcd',2,3,_latin2'ef')
|
||||
insert(_latin2'abcd',2,3,_latin2'ef'),
|
||||
replace(_latin2'abcd',_latin2'b',_latin2'B')
|
||||
;
|
||||
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
|
|
@ -39,7 +39,7 @@ Item::Item():
|
|||
{
|
||||
marker= 0;
|
||||
maybe_null=null_value=with_sum_func=unsigned_flag=0;
|
||||
coercibility=COER_IMPLICIT;
|
||||
coercibility=COER_COERCIBLE;
|
||||
name= 0;
|
||||
decimals= 0; max_length= 0;
|
||||
THD *thd= current_thd;
|
||||
|
|
|
@ -813,6 +813,7 @@ null:
|
|||
|
||||
void Item_func_replace::fix_length_and_dec()
|
||||
{
|
||||
uint i;
|
||||
max_length=args[0]->max_length;
|
||||
int diff=(int) (args[2]->max_length - args[1]->max_length);
|
||||
if (diff > 0 && args[1]->max_length)
|
||||
|
@ -825,6 +826,20 @@ void Item_func_replace::fix_length_and_dec()
|
|||
max_length=MAX_BLOB_WIDTH;
|
||||
maybe_null=1;
|
||||
}
|
||||
set_charset(args[0]->charset(), args[0]->coercibility);
|
||||
|
||||
for (i=1; i<3; i++)
|
||||
{
|
||||
if (set_charset(charset(), coercibility,
|
||||
args[i]->charset(), args[i]->coercibility))
|
||||
{
|
||||
my_error(ER_CANT_AGGREGATE_COLLATIONS,MYF(0),
|
||||
charset()->name,coercion_name(coercibility),
|
||||
args[i]->charset()->name,coercion_name(args[i]->coercibility),
|
||||
func_name());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -433,6 +433,7 @@ public:
|
|||
String *val_str(String *);
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
set_charset(default_charset());
|
||||
max_length=args[0]->max_length+(args[0]->max_length-args[0]->decimals)/3;
|
||||
}
|
||||
const char *func_name() const { return "format"; }
|
||||
|
@ -444,7 +445,11 @@ class Item_func_char :public Item_str_func
|
|||
public:
|
||||
Item_func_char(List<Item> &list) :Item_str_func(list) {}
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec() { maybe_null=0; max_length=arg_count; }
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
set_charset(default_charset());
|
||||
maybe_null=0; max_length=arg_count;
|
||||
}
|
||||
const char *func_name() const { return "char"; }
|
||||
};
|
||||
|
||||
|
@ -490,7 +495,11 @@ public:
|
|||
Item_func_conv(Item *a,Item *b,Item *c) :Item_str_func(a,b,c) {}
|
||||
const char *func_name() const { return "conv"; }
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec() { decimals=0; max_length=64; }
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
set_charset(default_charset());
|
||||
decimals=0; max_length=64;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -501,7 +510,11 @@ public:
|
|||
Item_func_hex(Item *a) :Item_str_func(a) {}
|
||||
const char *func_name() const { return "hex"; }
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec() { decimals=0; max_length=args[0]->max_length*2; }
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
set_charset(default_charset());
|
||||
decimals=0; max_length=args[0]->max_length*2;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue