Merge sanja.is.com.ua:/home/bell/mysql/bk/work-top3-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-simple_in-4.1
This commit is contained in:
commit
d9b108c12f
@ -1085,7 +1085,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||||||
out=line;
|
out=line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (*ml_comment && !*in_string && inchar == '*' && *(pos+1) == '/')
|
else if (*ml_comment && inchar == '*' && *(pos + 1) == '/')
|
||||||
{
|
{
|
||||||
pos++;
|
pos++;
|
||||||
*ml_comment= 0;
|
*ml_comment= 0;
|
||||||
@ -1093,11 +1093,12 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||||||
else
|
else
|
||||||
{ // Add found char to buffer
|
{ // Add found char to buffer
|
||||||
if (inchar == *in_string)
|
if (inchar == *in_string)
|
||||||
*in_string=0;
|
*in_string= 0;
|
||||||
else if (!*in_string && (inchar == '\'' || inchar == '"' || inchar == '`'))
|
else if (!*ml_comment && !*in_string &&
|
||||||
*in_string=(char) inchar;
|
(inchar == '\'' || inchar == '"' || inchar == '`'))
|
||||||
if (!(*ml_comment))
|
*in_string= (char) inchar;
|
||||||
*out++ = (char) inchar;
|
if (!*ml_comment)
|
||||||
|
*out++= (char) inchar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (out != line || !buffer.is_empty())
|
if (out != line || !buffer.is_empty())
|
||||||
|
@ -281,3 +281,42 @@ ALTER TABLE t1 DISABLE KEYS;
|
|||||||
INSERT DELAYED INTO t1 VALUES(1),(2),(3);
|
INSERT DELAYED INTO t1 VALUES(1),(2),(3);
|
||||||
ALTER TABLE t1 ENABLE KEYS;
|
ALTER TABLE t1 ENABLE KEYS;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set names koi8r;
|
||||||
|
create table t1 (a char(10) character set koi8r);
|
||||||
|
insert into t1 values ('ÔÅÓÔ');
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ D4C5D3D4
|
||||||
|
alter table t1 change a a char(10) character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ F2E5F1F2
|
||||||
|
alter table t1 change a a char(10) binary;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
òåñò F2E5F1F2
|
||||||
|
alter table t1 change a a char(10) character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ F2E5F1F2
|
||||||
|
alter table t1 change a a char(10) character set koi8r;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ D4C5D3D4
|
||||||
|
alter table t1 change a a varchar(10) character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ F2E5F1F2
|
||||||
|
alter table t1 change a a char(10) character set koi8r;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ D4C5D3D4
|
||||||
|
alter table t1 change a a text character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ F2E5F1F2
|
||||||
|
alter table t1 change a a char(10) character set koi8r;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
a hex(a)
|
||||||
|
ÔÅÓÔ D4C5D3D4
|
||||||
|
drop table t1;
|
||||||
|
@ -71,3 +71,24 @@ orange
|
|||||||
yellow
|
yellow
|
||||||
green
|
green
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
SET NAMES latin1;
|
||||||
|
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
|
||||||
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (latin2_general_ci,COERCIBLE) for operation 'coalesce'
|
||||||
|
CREATE TABLE t1 SELECT COALESCE('a' COLLATE latin1_swedish_ci,'b' COLLATE latin1_bin);
|
||||||
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation 'coalesce'
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
COALESCE(1), COALESCE(1.0),COALESCE('a'),
|
||||||
|
COALESCE(1,1.0), COALESCE(1,'1'),COALESCE(1.1,'1'),
|
||||||
|
COALESCE('a' COLLATE latin1_bin,'b');
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`COALESCE(1)` int(1) NOT NULL default '0',
|
||||||
|
`COALESCE(1.0)` double(3,1) NOT NULL default '0.0',
|
||||||
|
`COALESCE('a')` char(1) NOT NULL default '',
|
||||||
|
`COALESCE(1,1.0)` double(3,1) NOT NULL default '0.0',
|
||||||
|
`COALESCE(1,'1')` char(1) NOT NULL default '',
|
||||||
|
`COALESCE(1.1,'1')` char(3) NOT NULL default '',
|
||||||
|
`COALESCE('a' COLLATE latin1_bin,'b')` char(1) character set latin1 collate latin1_bin NOT NULL default ''
|
||||||
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -111,3 +111,35 @@ id
|
|||||||
5
|
5
|
||||||
9
|
9
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
a char(1) character set latin1 collate latin1_general_ci,
|
||||||
|
b char(1) character set latin1 collate latin1_swedish_ci,
|
||||||
|
c char(1) character set latin1 collate latin1_danish_ci
|
||||||
|
);
|
||||||
|
insert into t1 values ('A','B','C');
|
||||||
|
insert into t1 values ('a','c','c');
|
||||||
|
select * from t1 where a in (b);
|
||||||
|
ERROR HY000: Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation ' IN '
|
||||||
|
select * from t1 where a in (b,c);
|
||||||
|
ERROR HY000: Illegal mix of collations (latin1_general_ci,IMPLICIT), (latin1_swedish_ci,IMPLICIT), (latin1_danish_ci,IMPLICIT) for operation ' IN '
|
||||||
|
select * from t1 where 'a' in (a,b,c);
|
||||||
|
ERROR HY000: Illegal mix of collations for operation ' IN '
|
||||||
|
select * from t1 where 'a' in (a);
|
||||||
|
a b c
|
||||||
|
A B C
|
||||||
|
a c c
|
||||||
|
select * from t1 where a in ('a');
|
||||||
|
a b c
|
||||||
|
A B C
|
||||||
|
a c c
|
||||||
|
select * from t1 where 'a' collate latin1_general_ci in (a,b,c);
|
||||||
|
a b c
|
||||||
|
A B C
|
||||||
|
a c c
|
||||||
|
select * from t1 where 'a' collate latin1_bin in (a,b,c);
|
||||||
|
a b c
|
||||||
|
a c c
|
||||||
|
select * from t1 where 'a' in (a,b,c collate latin1_bin);
|
||||||
|
a b c
|
||||||
|
a c c
|
||||||
|
drop table t1;
|
||||||
|
@ -297,9 +297,9 @@ select FIELD('b','A' COLLATE latin1_bin,'B');
|
|||||||
FIELD('b','A' COLLATE latin1_bin,'B')
|
FIELD('b','A' COLLATE latin1_bin,'B')
|
||||||
0
|
0
|
||||||
select FIELD(_latin2'b','A','B');
|
select FIELD(_latin2'b','A','B');
|
||||||
ERROR HY000: Illegal mix of collations for operation 'field'
|
ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation 'field'
|
||||||
select FIELD('b',_latin2'A','B');
|
select FIELD('b',_latin2'A','B');
|
||||||
ERROR HY000: Illegal mix of collations for operation 'field'
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation 'field'
|
||||||
select FIELD('b',_latin2'A','B',1);
|
select FIELD('b',_latin2'A','B',1);
|
||||||
FIELD('b',_latin2'A','B',1)
|
FIELD('b',_latin2'A','B',1)
|
||||||
1
|
1
|
||||||
@ -363,15 +363,15 @@ select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
|
|||||||
_latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin)
|
_latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin)
|
||||||
0
|
0
|
||||||
select _latin2'B' in (_latin1'a',_latin1'b');
|
select _latin2'B' in (_latin1'a',_latin1'b');
|
||||||
ERROR HY000: Illegal mix of collations for operation ' IN '
|
ERROR HY000: Illegal mix of collations (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
|
||||||
select _latin1'B' in (_latin2'a',_latin1'b');
|
select _latin1'B' in (_latin2'a',_latin1'b');
|
||||||
ERROR HY000: Illegal mix of collations for operation ' IN '
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
|
||||||
select _latin1'B' in (_latin1'a',_latin2'b');
|
select _latin1'B' in (_latin1'a',_latin2'b');
|
||||||
ERROR HY000: Illegal mix of collations for operation ' IN '
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE), (latin2_general_ci,COERCIBLE) for operation ' IN '
|
||||||
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
|
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
|
||||||
ERROR HY000: Illegal mix of collations for operation ' IN '
|
ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_bin,EXPLICIT), (latin1_swedish_ci,COERCIBLE) for operation ' IN '
|
||||||
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
|
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
|
||||||
ERROR HY000: Illegal mix of collations for operation ' IN '
|
ERROR HY000: Illegal mix of collations (latin1_general_ci,EXPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_bin,EXPLICIT) for operation ' IN '
|
||||||
select collation(bin(130)), coercibility(bin(130));
|
select collation(bin(130)), coercibility(bin(130));
|
||||||
collation(bin(130)) coercibility(bin(130))
|
collation(bin(130)) coercibility(bin(130))
|
||||||
latin1_swedish_ci 3
|
latin1_swedish_ci 3
|
||||||
@ -532,3 +532,24 @@ t1 CREATE TABLE `t1` (
|
|||||||
`replace(_latin2'abcd',_latin2'b',_latin2'B')` char(4) 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
|
) TYPE=MyISAM CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
select SUBSTR('abcdefg',3,2);
|
||||||
|
SUBSTR('abcdefg',3,2)
|
||||||
|
cd
|
||||||
|
select SUBSTRING('abcdefg',3,2);
|
||||||
|
SUBSTRING('abcdefg',3,2)
|
||||||
|
cd
|
||||||
|
select SUBSTR('abcdefg',-3,2) FROM DUAL;
|
||||||
|
SUBSTR('abcdefg',-3,2)
|
||||||
|
ef
|
||||||
|
select SUBSTR('abcdefg',-1,5) FROM DUAL;
|
||||||
|
SUBSTR('abcdefg',-1,5)
|
||||||
|
g
|
||||||
|
select SUBSTR('abcdefg',0,0) FROM DUAL;
|
||||||
|
SUBSTR('abcdefg',0,0)
|
||||||
|
|
||||||
|
select SUBSTR('abcdefg',-1,-1) FROM DUAL;
|
||||||
|
SUBSTR('abcdefg',-1,-1)
|
||||||
|
|
||||||
|
select SUBSTR('abcdefg',1,-1) FROM DUAL;
|
||||||
|
SUBSTR('abcdefg',1,-1)
|
||||||
|
|
||||||
|
@ -10,22 +10,22 @@ select * from t1;
|
|||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
delete from t1;
|
||||||
Access denied for user: 'ssl_user1@localhost' to database 'test'
|
ERROR 42000: Access denied for user: 'ssl_user1@localhost' to database 'test'
|
||||||
select * from t1;
|
select * from t1;
|
||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
delete from t1;
|
||||||
Access denied for user: 'ssl_user2@localhost' to database 'test'
|
ERROR 42000: Access denied for user: 'ssl_user2@localhost' to database 'test'
|
||||||
select * from t1;
|
select * from t1;
|
||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
delete from t1;
|
||||||
Access denied for user: 'ssl_user3@localhost' to database 'test'
|
ERROR 42000: Access denied for user: 'ssl_user3@localhost' to database 'test'
|
||||||
select * from t1;
|
select * from t1;
|
||||||
f1
|
f1
|
||||||
5
|
5
|
||||||
delete from t1;
|
delete from t1;
|
||||||
Access denied for user: 'ssl_user4@localhost' to database 'test'
|
ERROR 42000: Access denied for user: 'ssl_user4@localhost' to database 'test'
|
||||||
delete from mysql.user where user='ssl_user%';
|
delete from mysql.user where user='ssl_user%';
|
||||||
delete from mysql.db where user='ssl_user%';
|
delete from mysql.db where user='ssl_user%';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
|
@ -144,3 +144,30 @@ ALTER TABLE t1 DISABLE KEYS;
|
|||||||
INSERT DELAYED INTO t1 VALUES(1),(2),(3);
|
INSERT DELAYED INTO t1 VALUES(1),(2),(3);
|
||||||
ALTER TABLE t1 ENABLE KEYS;
|
ALTER TABLE t1 ENABLE KEYS;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test that data get converted when character set is changed
|
||||||
|
# Test that data doesn't get converted when src or dst is BINARY/BLOB
|
||||||
|
#
|
||||||
|
set names koi8r;
|
||||||
|
create table t1 (a char(10) character set koi8r);
|
||||||
|
insert into t1 values ('ÔÅÓÔ');
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a char(10) character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a char(10) binary;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a char(10) character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a char(10) character set koi8r;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a varchar(10) character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a char(10) character set koi8r;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a text character set cp1251;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
alter table t1 change a a char(10) character set koi8r;
|
||||||
|
select a,hex(a) from t1;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
@ -41,3 +41,25 @@ create table t1 (row int not null, col int not null, val varchar(255) not null);
|
|||||||
insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium'),(3,1,'green'),(3,2,'small');
|
insert into t1 values (1,1,'orange'),(1,2,'large'),(2,1,'yellow'),(2,2,'medium'),(3,1,'green'),(3,2,'small');
|
||||||
select max(case col when 1 then val else null end) as color from t1 group by row;
|
select max(case col when 1 then val else null end) as color from t1 group by row;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# COALESCE is a CASE abbrevation:
|
||||||
|
#
|
||||||
|
# COALESCE(v1,v2) == CASE WHEN v1 IS NOT NULL THEN v1 ELSE v2 END
|
||||||
|
#
|
||||||
|
# COALESCE(V1, V2, . . . ,Vn ) =
|
||||||
|
# CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2, . . . ,Vn) END
|
||||||
|
#
|
||||||
|
# Check COALESCE argument types aggregation
|
||||||
|
|
||||||
|
SET NAMES latin1;
|
||||||
|
--error 1265
|
||||||
|
CREATE TABLE t1 SELECT COALESCE(_latin1'a',_latin2'a');
|
||||||
|
--error 1265
|
||||||
|
CREATE TABLE t1 SELECT COALESCE('a' COLLATE latin1_swedish_ci,'b' COLLATE latin1_bin);
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
COALESCE(1), COALESCE(1.0),COALESCE('a'),
|
||||||
|
COALESCE(1,1.0), COALESCE(1,'1'),COALESCE(1.1,'1'),
|
||||||
|
COALESCE('a' COLLATE latin1_bin,'b');
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -54,3 +54,22 @@ insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
|
|||||||
select * from t1 where id in (2,5,9);
|
select * from t1 where id in (2,5,9);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (
|
||||||
|
a char(1) character set latin1 collate latin1_general_ci,
|
||||||
|
b char(1) character set latin1 collate latin1_swedish_ci,
|
||||||
|
c char(1) character set latin1 collate latin1_danish_ci
|
||||||
|
);
|
||||||
|
insert into t1 values ('A','B','C');
|
||||||
|
insert into t1 values ('a','c','c');
|
||||||
|
--error 1265
|
||||||
|
select * from t1 where a in (b);
|
||||||
|
--error 1268
|
||||||
|
select * from t1 where a in (b,c);
|
||||||
|
--error 1269
|
||||||
|
select * from t1 where 'a' in (a,b,c);
|
||||||
|
select * from t1 where 'a' in (a);
|
||||||
|
select * from t1 where a in ('a');
|
||||||
|
select * from t1 where 'a' collate latin1_general_ci in (a,b,c);
|
||||||
|
select * from t1 where 'a' collate latin1_bin in (a,b,c);
|
||||||
|
select * from t1 where 'a' in (a,b,c collate latin1_bin);
|
||||||
|
drop table t1;
|
||||||
|
@ -167,9 +167,9 @@ select FIELD('b','A','B');
|
|||||||
select FIELD('B','A','B');
|
select FIELD('B','A','B');
|
||||||
select FIELD('b' COLLATE latin1_bin,'A','B');
|
select FIELD('b' COLLATE latin1_bin,'A','B');
|
||||||
select FIELD('b','A' COLLATE latin1_bin,'B');
|
select FIELD('b','A' COLLATE latin1_bin,'B');
|
||||||
--error 1269
|
--error 1268
|
||||||
select FIELD(_latin2'b','A','B');
|
select FIELD(_latin2'b','A','B');
|
||||||
--error 1269
|
--error 1268
|
||||||
select FIELD('b',_latin2'A','B');
|
select FIELD('b',_latin2'A','B');
|
||||||
select FIELD('b',_latin2'A','B',1);
|
select FIELD('b',_latin2'A','B',1);
|
||||||
|
|
||||||
@ -217,15 +217,15 @@ select _latin1'B' in (_latin1'a',_latin1'b');
|
|||||||
select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b');
|
select _latin1'B' collate latin1_bin in (_latin1'a',_latin1'b');
|
||||||
select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b');
|
select _latin1'B' in (_latin1'a' collate latin1_bin,_latin1'b');
|
||||||
select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
|
select _latin1'B' in (_latin1'a',_latin1'b' collate latin1_bin);
|
||||||
--error 1269
|
--error 1268
|
||||||
select _latin2'B' in (_latin1'a',_latin1'b');
|
select _latin2'B' in (_latin1'a',_latin1'b');
|
||||||
--error 1269
|
--error 1268
|
||||||
select _latin1'B' in (_latin2'a',_latin1'b');
|
select _latin1'B' in (_latin2'a',_latin1'b');
|
||||||
--error 1269
|
--error 1268
|
||||||
select _latin1'B' in (_latin1'a',_latin2'b');
|
select _latin1'B' in (_latin1'a',_latin2'b');
|
||||||
--error 1269
|
--error 1268
|
||||||
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
|
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a' COLLATE latin1_bin,_latin1'b');
|
||||||
--error 1269
|
--error 1268
|
||||||
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
|
select _latin1'B' COLLATE latin1_general_ci in (_latin1'a',_latin1'b' COLLATE latin1_bin);
|
||||||
|
|
||||||
select collation(bin(130)), coercibility(bin(130));
|
select collation(bin(130)), coercibility(bin(130));
|
||||||
@ -294,3 +294,14 @@ select
|
|||||||
;
|
;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# test for SUBSTR
|
||||||
|
#
|
||||||
|
select SUBSTR('abcdefg',3,2);
|
||||||
|
select SUBSTRING('abcdefg',3,2);
|
||||||
|
select SUBSTR('abcdefg',-3,2) FROM DUAL;
|
||||||
|
select SUBSTR('abcdefg',-1,5) FROM DUAL;
|
||||||
|
select SUBSTR('abcdefg',0,0) FROM DUAL;
|
||||||
|
select SUBSTR('abcdefg',-1,-1) FROM DUAL;
|
||||||
|
select SUBSTR('abcdefg',1,-1) FROM DUAL;
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
# Use mysql-test-run with --with-openssl option.
|
# Use mysql-test-run with --with-openssl option.
|
||||||
-- source include/have_openssl_1.inc
|
-- source include/have_openssl_1.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
create table t1(f1 int);
|
create table t1(f1 int);
|
||||||
insert into t1 values (5);
|
insert into t1 values (5);
|
||||||
|
|
||||||
|
@ -1154,7 +1154,13 @@ void Item_func_coalesce::fix_length_and_dec()
|
|||||||
{
|
{
|
||||||
set_if_bigger(max_length,args[i]->max_length);
|
set_if_bigger(max_length,args[i]->max_length);
|
||||||
set_if_bigger(decimals,args[i]->decimals);
|
set_if_bigger(decimals,args[i]->decimals);
|
||||||
|
cached_result_type=item_store_type(cached_result_type,
|
||||||
|
args[i]->result_type());
|
||||||
}
|
}
|
||||||
|
if (cached_result_type == STRING_RESULT)
|
||||||
|
agg_arg_collations(collation, args, arg_count);
|
||||||
|
else if (cached_result_type != REAL_RESULT)
|
||||||
|
decimals= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -1419,7 +1425,7 @@ int cmp_item_row::compare(cmp_item *c)
|
|||||||
bool Item_func_in::nulls_in_row()
|
bool Item_func_in::nulls_in_row()
|
||||||
{
|
{
|
||||||
Item **arg,**arg_end;
|
Item **arg,**arg_end;
|
||||||
for (arg= args, arg_end= args+arg_count; arg != arg_end ; arg++)
|
for (arg= args+1, arg_end= args+arg_count; arg != arg_end ; arg++)
|
||||||
{
|
{
|
||||||
if ((*arg)->null_inside())
|
if ((*arg)->null_inside())
|
||||||
return 1;
|
return 1;
|
||||||
@ -1436,42 +1442,43 @@ static int srtcmp_in(CHARSET_INFO *cs, const String *x,const String *y)
|
|||||||
|
|
||||||
void Item_func_in::fix_length_and_dec()
|
void Item_func_in::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
|
Item **arg, **arg_end;
|
||||||
|
uint const_itm= 1;
|
||||||
|
|
||||||
|
if ((args[0]->result_type() == STRING_RESULT) &&
|
||||||
|
(agg_arg_collations_for_comparison(cmp_collation, args, arg_count)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (arg=args+1, arg_end=args+arg_count; arg != arg_end ; arg++)
|
||||||
|
const_itm&= arg[0]->const_item();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Row item with NULLs inside can return NULL or FALSE =>
|
Row item with NULLs inside can return NULL or FALSE =>
|
||||||
they can't be processed as static
|
they can't be processed as static
|
||||||
*/
|
*/
|
||||||
if (const_item() && !nulls_in_row())
|
if (const_itm && !nulls_in_row())
|
||||||
{
|
{
|
||||||
switch (item->result_type()) {
|
switch (args[0]->result_type()) {
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
uint i;
|
uint i;
|
||||||
cmp_collation.set(item->collation);
|
array=new in_string(arg_count-1,(qsort2_cmp) srtcmp_in,
|
||||||
for (i=0 ; i<arg_count; i++)
|
|
||||||
if (cmp_collation.aggregate(args[i]->collation))
|
|
||||||
break;
|
|
||||||
if (cmp_collation.derivation == DERIVATION_NONE)
|
|
||||||
{
|
|
||||||
my_error(ER_CANT_AGGREGATE_NCOLLATIONS,MYF(0),func_name());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
array=new in_string(arg_count,(qsort2_cmp) srtcmp_in,
|
|
||||||
cmp_collation.collation);
|
cmp_collation.collation);
|
||||||
break;
|
break;
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
array= new in_longlong(arg_count);
|
array= new in_longlong(arg_count-1);
|
||||||
break;
|
break;
|
||||||
case REAL_RESULT:
|
case REAL_RESULT:
|
||||||
array= new in_double(arg_count);
|
array= new in_double(arg_count-1);
|
||||||
break;
|
break;
|
||||||
case ROW_RESULT:
|
case ROW_RESULT:
|
||||||
array= new in_row(arg_count, item);
|
array= new in_row(arg_count-1, args[0]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint j=0;
|
uint j=0;
|
||||||
for (uint i=0 ; i < arg_count ; i++)
|
for (uint i=1 ; i < arg_count ; i++)
|
||||||
{
|
{
|
||||||
array->set(j,args[i]);
|
array->set(j,args[i]);
|
||||||
if (!args[i]->null_value) // Skip NULL values
|
if (!args[i]->null_value) // Skip NULL values
|
||||||
@ -1484,19 +1491,19 @@ void Item_func_in::fix_length_and_dec()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
in_item= cmp_item::get_comparator(item);
|
in_item= cmp_item::get_comparator(args[0]);
|
||||||
|
if (args[0]->result_type() == STRING_RESULT)
|
||||||
|
in_item->cmp_charset= cmp_collation.collation;
|
||||||
}
|
}
|
||||||
maybe_null= item->maybe_null;
|
maybe_null= args[0]->maybe_null;
|
||||||
max_length= 1;
|
max_length= 1;
|
||||||
used_tables_cache|=item->used_tables();
|
const_item_cache&=args[0]->const_item();
|
||||||
const_item_cache&=item->const_item();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Item_func_in::print(String *str)
|
void Item_func_in::print(String *str)
|
||||||
{
|
{
|
||||||
str->append('(');
|
str->append('(');
|
||||||
item->print(str);
|
|
||||||
Item_func::print(str);
|
Item_func::print(str);
|
||||||
str->append(')');
|
str->append(')');
|
||||||
}
|
}
|
||||||
@ -1506,15 +1513,15 @@ longlong Item_func_in::val_int()
|
|||||||
{
|
{
|
||||||
if (array)
|
if (array)
|
||||||
{
|
{
|
||||||
int tmp=array->find(item);
|
int tmp=array->find(args[0]);
|
||||||
null_value=item->null_value || (!tmp && have_null);
|
null_value=args[0]->null_value || (!tmp && have_null);
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
in_item->store_value(item);
|
in_item->store_value(args[0]);
|
||||||
if ((null_value=item->null_value))
|
if ((null_value=args[0]->null_value))
|
||||||
return 0;
|
return 0;
|
||||||
have_null= 0;
|
have_null= 0;
|
||||||
for (uint i=0 ; i < arg_count ; i++)
|
for (uint i=1 ; i < arg_count ; i++)
|
||||||
{
|
{
|
||||||
if (!in_item->cmp(args[i]) && !args[i]->null_value)
|
if (!in_item->cmp(args[i]) && !args[i]->null_value)
|
||||||
return 1; // Would maybe be nice with i ?
|
return 1; // Would maybe be nice with i ?
|
||||||
@ -1525,29 +1532,6 @@ longlong Item_func_in::val_int()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Item_func_in::update_used_tables()
|
|
||||||
{
|
|
||||||
Item_func::update_used_tables();
|
|
||||||
item->update_used_tables();
|
|
||||||
used_tables_cache|=item->used_tables();
|
|
||||||
const_item_cache&=item->const_item();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Item_func_in::split_sum_func(Item **ref_pointer_array, List<Item> &fields)
|
|
||||||
{
|
|
||||||
if (item->with_sum_func && item->type() != SUM_FUNC_ITEM)
|
|
||||||
item->split_sum_func(ref_pointer_array, fields);
|
|
||||||
else if (item->used_tables() || item->type() == SUM_FUNC_ITEM)
|
|
||||||
{
|
|
||||||
uint el= fields.elements;
|
|
||||||
fields.push_front(item);
|
|
||||||
ref_pointer_array[el]= item;
|
|
||||||
item= new Item_ref(ref_pointer_array + el, 0, item->name);
|
|
||||||
}
|
|
||||||
Item_func::split_sum_func(ref_pointer_array, fields);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
longlong Item_func_bit_or::val_int()
|
longlong Item_func_bit_or::val_int()
|
||||||
{
|
{
|
||||||
ulonglong arg1= (ulonglong) args[0]->val_int();
|
ulonglong arg1= (ulonglong) args[0]->val_int();
|
||||||
|
@ -600,42 +600,26 @@ public:
|
|||||||
|
|
||||||
class Item_func_in :public Item_int_func
|
class Item_func_in :public Item_int_func
|
||||||
{
|
{
|
||||||
Item *item;
|
|
||||||
in_vector *array;
|
in_vector *array;
|
||||||
cmp_item *in_item;
|
cmp_item *in_item;
|
||||||
bool have_null;
|
bool have_null;
|
||||||
DTCollation cmp_collation;
|
DTCollation cmp_collation;
|
||||||
public:
|
public:
|
||||||
Item_func_in(Item *a,List<Item> &list)
|
Item_func_in(List<Item> &list)
|
||||||
:Item_int_func(list), item(a), array(0), in_item(0), have_null(0)
|
:Item_int_func(list), array(0), in_item(0), have_null(0)
|
||||||
{
|
{
|
||||||
allowed_arg_cols= item->cols();
|
allowed_arg_cols= args[0]->cols();
|
||||||
}
|
}
|
||||||
longlong val_int();
|
longlong val_int();
|
||||||
bool fix_fields(THD *thd, struct st_table_list *tlist, Item **ref)
|
|
||||||
{
|
|
||||||
// We do not check item->cols(), because allowed_arg_cols assigned from it
|
|
||||||
bool res=(item->fix_fields(thd, tlist, &item) ||
|
|
||||||
Item_func::fix_fields(thd, tlist, ref));
|
|
||||||
with_sum_func= with_sum_func || item->with_sum_func;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
void fix_length_and_dec();
|
void fix_length_and_dec();
|
||||||
~Item_func_in() { delete item; delete array; delete in_item; }
|
~Item_func_in() { delete array; delete in_item; }
|
||||||
optimize_type select_optimize() const
|
optimize_type select_optimize() const
|
||||||
{ return array ? OPTIMIZE_KEY : OPTIMIZE_NONE; }
|
{ return array ? OPTIMIZE_KEY : OPTIMIZE_NONE; }
|
||||||
Item *key_item() const { return item; }
|
Item *key_item() const { return args[0]; }
|
||||||
void print(String *str);
|
void print(String *str);
|
||||||
enum Functype functype() const { return IN_FUNC; }
|
enum Functype functype() const { return IN_FUNC; }
|
||||||
const char *func_name() const { return " IN "; }
|
const char *func_name() const { return " IN "; }
|
||||||
void update_used_tables();
|
|
||||||
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
|
|
||||||
bool nulls_in_row();
|
bool nulls_in_row();
|
||||||
bool walk(Item_processor processor, byte *arg)
|
|
||||||
{
|
|
||||||
return item->walk(processor, arg) ||
|
|
||||||
Item_int_func::walk(processor, arg);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Functions used by where clause */
|
/* Functions used by where clause */
|
||||||
|
@ -1174,32 +1174,32 @@ longlong Item_func_field::val_int()
|
|||||||
if (cmp_type == STRING_RESULT)
|
if (cmp_type == STRING_RESULT)
|
||||||
{
|
{
|
||||||
String *field;
|
String *field;
|
||||||
if (!(field=item->val_str(&value)))
|
if (!(field=args[0]->val_str(&value)))
|
||||||
return 0; // -1 if null ?
|
return 0; // -1 if null ?
|
||||||
for (uint i=0 ; i < arg_count ; i++)
|
for (uint i=1 ; i < arg_count ; i++)
|
||||||
{
|
{
|
||||||
String *tmp_value=args[i]->val_str(&tmp);
|
String *tmp_value=args[i]->val_str(&tmp);
|
||||||
if (tmp_value && field->length() == tmp_value->length() &&
|
if (tmp_value && field->length() == tmp_value->length() &&
|
||||||
!sortcmp(field,tmp_value,cmp_collation.collation))
|
!sortcmp(field,tmp_value,cmp_collation.collation))
|
||||||
return (longlong) (i+1);
|
return (longlong) (i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cmp_type == INT_RESULT)
|
else if (cmp_type == INT_RESULT)
|
||||||
{
|
{
|
||||||
longlong val= item->val_int();
|
longlong val= args[0]->val_int();
|
||||||
for (uint i=0; i < arg_count ; i++)
|
for (uint i=1; i < arg_count ; i++)
|
||||||
{
|
{
|
||||||
if (val == args[i]->val_int())
|
if (val == args[i]->val_int())
|
||||||
return (longlong) (i+1);
|
return (longlong) (i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double val= item->val();
|
double val= args[0]->val();
|
||||||
for (uint i=0; i < arg_count ; i++)
|
for (uint i=1; i < arg_count ; i++)
|
||||||
{
|
{
|
||||||
if (val == args[i]->val())
|
if (val == args[i]->val())
|
||||||
return (longlong) (i+1);
|
return (longlong) (i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -1208,42 +1208,11 @@ longlong Item_func_field::val_int()
|
|||||||
void Item_func_field::fix_length_and_dec()
|
void Item_func_field::fix_length_and_dec()
|
||||||
{
|
{
|
||||||
maybe_null=0; max_length=3;
|
maybe_null=0; max_length=3;
|
||||||
used_tables_cache|= item->used_tables();
|
cmp_type= args[0]->result_type();
|
||||||
const_item_cache&= item->const_item();
|
for (uint i=1; i < arg_count ; i++)
|
||||||
with_sum_func= with_sum_func || item->with_sum_func;
|
|
||||||
|
|
||||||
cmp_type= item->result_type();
|
|
||||||
for (uint i=0; i < arg_count ; i++)
|
|
||||||
cmp_type= item_cmp_type(cmp_type, args[i]->result_type());
|
cmp_type= item_cmp_type(cmp_type, args[i]->result_type());
|
||||||
|
|
||||||
if (cmp_type == STRING_RESULT)
|
if (cmp_type == STRING_RESULT)
|
||||||
{
|
agg_arg_collations_for_comparison(cmp_collation, args, arg_count);
|
||||||
cmp_collation.set(item->collation);
|
|
||||||
for (uint i=0 ; i < arg_count ; i++)
|
|
||||||
{
|
|
||||||
if (cmp_collation.aggregate(args[i]->collation))
|
|
||||||
{
|
|
||||||
my_error(ER_CANT_AGGREGATE_NCOLLATIONS,MYF(0),func_name());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Item_func_field::split_sum_func(Item **ref_pointer_array,
|
|
||||||
List<Item> &fields)
|
|
||||||
{
|
|
||||||
if (item->with_sum_func && item->type() != SUM_FUNC_ITEM)
|
|
||||||
item->split_sum_func(ref_pointer_array, fields);
|
|
||||||
else if (item->used_tables() || item->type() == SUM_FUNC_ITEM)
|
|
||||||
{
|
|
||||||
uint el= fields.elements;
|
|
||||||
fields.push_front(item);
|
|
||||||
ref_pointer_array[el]= item;
|
|
||||||
item= new Item_ref(ref_pointer_array + el, 0, item->name);
|
|
||||||
}
|
|
||||||
Item_func::split_sum_func(ref_pointer_array, fields);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -626,33 +626,14 @@ public:
|
|||||||
|
|
||||||
class Item_func_field :public Item_int_func
|
class Item_func_field :public Item_int_func
|
||||||
{
|
{
|
||||||
Item *item;
|
|
||||||
String value,tmp;
|
String value,tmp;
|
||||||
Item_result cmp_type;
|
Item_result cmp_type;
|
||||||
DTCollation cmp_collation;
|
DTCollation cmp_collation;
|
||||||
public:
|
public:
|
||||||
Item_func_field(Item *a,List<Item> &list) :Item_int_func(list),item(a) {}
|
Item_func_field(List<Item> &list) :Item_int_func(list) {}
|
||||||
~Item_func_field() { delete item; }
|
|
||||||
longlong val_int();
|
longlong val_int();
|
||||||
bool fix_fields(THD *thd,struct st_table_list *tlist, Item **ref)
|
|
||||||
{
|
|
||||||
return (item->fix_fields(thd, tlist, &item) || item->check_cols(1) ||
|
|
||||||
Item_func::fix_fields(thd, tlist, ref));
|
|
||||||
}
|
|
||||||
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
|
|
||||||
void update_used_tables()
|
|
||||||
{
|
|
||||||
item->update_used_tables() ; Item_func::update_used_tables();
|
|
||||||
used_tables_cache|= item->used_tables();
|
|
||||||
const_item_cache&= item->const_item();
|
|
||||||
}
|
|
||||||
const char *func_name() const { return "field"; }
|
const char *func_name() const { return "field"; }
|
||||||
void fix_length_and_dec();
|
void fix_length_and_dec();
|
||||||
bool walk(Item_processor processor, byte *arg)
|
|
||||||
{
|
|
||||||
return item->walk(processor, arg) ||
|
|
||||||
Item_int_func::walk(processor, arg);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -979,13 +979,14 @@ void Item_func_right::fix_length_and_dec()
|
|||||||
String *Item_func_substr::val_str(String *str)
|
String *Item_func_substr::val_str(String *str)
|
||||||
{
|
{
|
||||||
String *res = args[0]->val_str(str);
|
String *res = args[0]->val_str(str);
|
||||||
int32 start = (int32) args[1]->val_int()-1;
|
int32 start = (int32) args[1]->val_int();
|
||||||
int32 length = arg_count == 3 ? (int32) args[2]->val_int() : INT_MAX32;
|
int32 length = arg_count == 3 ? (int32) args[2]->val_int() : INT_MAX32;
|
||||||
int32 tmp_length;
|
int32 tmp_length;
|
||||||
|
|
||||||
if ((null_value=(args[0]->null_value || args[1]->null_value ||
|
if ((null_value=(args[0]->null_value || args[1]->null_value ||
|
||||||
(arg_count == 3 && args[2]->null_value))))
|
(arg_count == 3 && args[2]->null_value))))
|
||||||
return 0; /* purecov: inspected */
|
return 0; /* purecov: inspected */
|
||||||
|
start= (int32)((start < 0) ? res->length() + start : start -1);
|
||||||
start=res->charpos(start);
|
start=res->charpos(start);
|
||||||
length=res->charpos(length,start);
|
length=res->charpos(length,start);
|
||||||
if (start < 0 || (uint) start+1 > res->length() || length <= 0)
|
if (start < 0 || (uint) start+1 > res->length() || length <= 0)
|
||||||
@ -1659,81 +1660,53 @@ void Item_func_elt::fix_length_and_dec()
|
|||||||
max_length=0;
|
max_length=0;
|
||||||
decimals=0;
|
decimals=0;
|
||||||
|
|
||||||
if (agg_arg_collations(collation, args, arg_count))
|
if (agg_arg_collations(collation, args+1, arg_count-1))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (uint i=0 ; i < arg_count ; i++)
|
for (uint i=1 ; i < arg_count ; i++)
|
||||||
{
|
{
|
||||||
set_if_bigger(max_length,args[i]->max_length);
|
set_if_bigger(max_length,args[i]->max_length);
|
||||||
set_if_bigger(decimals,args[i]->decimals);
|
set_if_bigger(decimals,args[i]->decimals);
|
||||||
}
|
}
|
||||||
maybe_null=1; // NULL if wrong first arg
|
maybe_null=1; // NULL if wrong first arg
|
||||||
with_sum_func= with_sum_func || item->with_sum_func;
|
|
||||||
used_tables_cache|=item->used_tables();
|
|
||||||
const_item_cache&=item->const_item();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Item_func_elt::split_sum_func(Item **ref_pointer_array,
|
|
||||||
List<Item> &fields)
|
|
||||||
{
|
|
||||||
if (item->with_sum_func && item->type() != SUM_FUNC_ITEM)
|
|
||||||
item->split_sum_func(ref_pointer_array, fields);
|
|
||||||
else if (item->used_tables() || item->type() == SUM_FUNC_ITEM)
|
|
||||||
{
|
|
||||||
uint el= fields.elements;
|
|
||||||
fields.push_front(item);
|
|
||||||
ref_pointer_array[el]= item;
|
|
||||||
item= new Item_ref(ref_pointer_array + el, 0, item->name);
|
|
||||||
}
|
|
||||||
Item_str_func::split_sum_func(ref_pointer_array, fields);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Item_func_elt::update_used_tables()
|
|
||||||
{
|
|
||||||
Item_func::update_used_tables();
|
|
||||||
item->update_used_tables();
|
|
||||||
used_tables_cache|=item->used_tables();
|
|
||||||
const_item_cache&=item->const_item();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double Item_func_elt::val()
|
double Item_func_elt::val()
|
||||||
{
|
{
|
||||||
uint tmp;
|
uint tmp;
|
||||||
if ((tmp=(uint) item->val_int()) == 0 || tmp > arg_count)
|
if ((tmp=(uint) args[0]->val_int()) == 0 || tmp >= arg_count)
|
||||||
{
|
{
|
||||||
null_value=1;
|
null_value=1;
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
null_value=0;
|
null_value=0;
|
||||||
return args[tmp-1]->val();
|
return args[tmp]->val();
|
||||||
}
|
}
|
||||||
|
|
||||||
longlong Item_func_elt::val_int()
|
longlong Item_func_elt::val_int()
|
||||||
{
|
{
|
||||||
uint tmp;
|
uint tmp;
|
||||||
if ((tmp=(uint) item->val_int()) == 0 || tmp > arg_count)
|
if ((tmp=(uint) args[0]->val_int()) == 0 || tmp >= arg_count)
|
||||||
{
|
{
|
||||||
null_value=1;
|
null_value=1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
null_value=0;
|
null_value=0;
|
||||||
return args[tmp-1]->val_int();
|
return args[tmp]->val_int();
|
||||||
}
|
}
|
||||||
|
|
||||||
String *Item_func_elt::val_str(String *str)
|
String *Item_func_elt::val_str(String *str)
|
||||||
{
|
{
|
||||||
uint tmp;
|
uint tmp;
|
||||||
String *res;
|
String *res;
|
||||||
if ((tmp=(uint) item->val_int()) == 0 || tmp > arg_count)
|
if ((tmp=(uint) args[0]->val_int()) == 0 || tmp >= arg_count)
|
||||||
{
|
{
|
||||||
null_value=1;
|
null_value=1;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
null_value=0;
|
null_value=0;
|
||||||
res= args[tmp-1]->val_str(str);
|
res= args[tmp]->val_str(str);
|
||||||
res->set_charset(charset());
|
res->set_charset(charset());
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -372,29 +372,13 @@ public:
|
|||||||
|
|
||||||
class Item_func_elt :public Item_str_func
|
class Item_func_elt :public Item_str_func
|
||||||
{
|
{
|
||||||
Item *item;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Item_func_elt(Item *a,List<Item> &list) :Item_str_func(list),item(a) {}
|
Item_func_elt(List<Item> &list) :Item_str_func(list) {}
|
||||||
~Item_func_elt() { delete item; }
|
|
||||||
double val();
|
double val();
|
||||||
longlong val_int();
|
longlong val_int();
|
||||||
String *val_str(String *str);
|
String *val_str(String *str);
|
||||||
bool fix_fields(THD *thd, TABLE_LIST *tlist, Item **ref)
|
|
||||||
{
|
|
||||||
return (item->fix_fields(thd, tlist, &item) ||
|
|
||||||
item->check_cols(1) ||
|
|
||||||
Item_func::fix_fields(thd, tlist, ref));
|
|
||||||
}
|
|
||||||
void split_sum_func(Item **ref_pointer_array, List<Item> &fields);
|
|
||||||
void fix_length_and_dec();
|
void fix_length_and_dec();
|
||||||
void update_used_tables();
|
|
||||||
const char *func_name() const { return "elt"; }
|
const char *func_name() const { return "elt"; }
|
||||||
bool walk(Item_processor processor, byte *arg)
|
|
||||||
{
|
|
||||||
return item->walk(processor, arg) ||
|
|
||||||
Item_str_func::walk(processor, arg);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ longlong Item_func_time_to_sec::val_int()
|
|||||||
static bool get_interval_value(Item *args,interval_type int_type,
|
static bool get_interval_value(Item *args,interval_type int_type,
|
||||||
String *str_value, INTERVAL *t)
|
String *str_value, INTERVAL *t)
|
||||||
{
|
{
|
||||||
long array[4],value;
|
long array[5],value;
|
||||||
const char *str;
|
const char *str;
|
||||||
uint32 length;
|
uint32 length;
|
||||||
LINT_INIT(value); LINT_INIT(str); LINT_INIT(length);
|
LINT_INIT(value); LINT_INIT(str); LINT_INIT(length);
|
||||||
|
@ -627,6 +627,7 @@ static SYMBOL sql_functions[] = {
|
|||||||
{ "STD", SYM(STD_SYM),0,0},
|
{ "STD", SYM(STD_SYM),0,0},
|
||||||
{ "STDDEV", SYM(STD_SYM),0,0},
|
{ "STDDEV", SYM(STD_SYM),0,0},
|
||||||
{ "STRCMP", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_strcmp)},
|
{ "STRCMP", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_strcmp)},
|
||||||
|
{ "SUBSTR", SYM(SUBSTRING),0,0},
|
||||||
{ "SUBSTRING", SYM(SUBSTRING),0,0},
|
{ "SUBSTRING", SYM(SUBSTRING),0,0},
|
||||||
{ "SUBSTRING_INDEX", SYM(SUBSTRING_INDEX),0,0},
|
{ "SUBSTRING_INDEX", SYM(SUBSTRING_INDEX),0,0},
|
||||||
{ "SUBTIME", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_subtime)},
|
{ "SUBTIME", SYM(FUNC_ARG2),0,CREATE_FUNC(create_func_subtime)},
|
||||||
|
@ -959,5 +959,5 @@ my_net_read(NET *net)
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* EMBEDDED_LIBRARY */
|
#endif /* #ifndef EMBEDDED_LIBRARY */
|
||||||
|
|
||||||
|
@ -832,10 +832,10 @@ static SEL_TREE *get_mm_tree(PARAM *param,COND *cond)
|
|||||||
Field *field=((Item_field*) (func->key_item()))->field;
|
Field *field=((Item_field*) (func->key_item()))->field;
|
||||||
Item_result cmp_type=field->cmp_type();
|
Item_result cmp_type=field->cmp_type();
|
||||||
tree= get_mm_parts(param,field,Item_func::EQ_FUNC,
|
tree= get_mm_parts(param,field,Item_func::EQ_FUNC,
|
||||||
func->arguments()[0],cmp_type);
|
func->arguments()[1],cmp_type);
|
||||||
if (!tree)
|
if (!tree)
|
||||||
DBUG_RETURN(tree); // Not key field
|
DBUG_RETURN(tree); // Not key field
|
||||||
for (uint i=1 ; i < func->argument_count(); i++)
|
for (uint i=2 ; i < func->argument_count(); i++)
|
||||||
{
|
{
|
||||||
SEL_TREE *new_tree=get_mm_parts(param,field,Item_func::EQ_FUNC,
|
SEL_TREE *new_tree=get_mm_parts(param,field,Item_func::EQ_FUNC,
|
||||||
func->arguments()[i],cmp_type);
|
func->arguments()[i],cmp_type);
|
||||||
|
@ -16,7 +16,7 @@ v/*
|
|||||||
"ANO",
|
"ANO",
|
||||||
"Nemohu vytvo-Bøit soubor '%-.64s' (chybový kód: %d)",
|
"Nemohu vytvo-Bøit soubor '%-.64s' (chybový kód: %d)",
|
||||||
"Nemohu vytvo-Bøit tabulku '%-.64s' (chybový kód: %d)",
|
"Nemohu vytvo-Bøit tabulku '%-.64s' (chybový kód: %d)",
|
||||||
"Nemohu vytvo-Bøit databázi '%-.64s', chyba %d",
|
"Nemohu vytvo-Bøit databázi '%-.64s' (chybový kód: %d)",
|
||||||
"Nemohu vytvo-Bøit databázi '%-.64s'; databáze ji¾ existuje",
|
"Nemohu vytvo-Bøit databázi '%-.64s'; databáze ji¾ existuje",
|
||||||
"Nemohu zru-B¹it databázi '%-.64s', databáze neexistuje",
|
"Nemohu zru-B¹it databázi '%-.64s', databáze neexistuje",
|
||||||
"Chyba p-Bøi ru¹ení databáze (nemohu vymazat '%-.64s', chyba %d)",
|
"Chyba p-Bøi ru¹ení databáze (nemohu vymazat '%-.64s', chyba %d)",
|
||||||
@ -222,7 +222,7 @@ v/*
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
"JA",
|
"JA",
|
||||||
"Kan ikke oprette filen '%-.64s' (Fejlkode: %d)",
|
"Kan ikke oprette filen '%-.64s' (Fejlkode: %d)",
|
||||||
"Kan ikke oprette tabellen '%-.64s' (Fejlkode: %d)",
|
"Kan ikke oprette tabellen '%-.64s' (Fejlkode: %d)",
|
||||||
"Kan ikke oprette databasen '%-.64s'. Fejl %d",
|
"Kan ikke oprette databasen '%-.64s' (Fejlkode: %d)",
|
||||||
"Kan ikke oprette databasen '%-.64s'; databasen eksisterer",
|
"Kan ikke oprette databasen '%-.64s'; databasen eksisterer",
|
||||||
"Kan ikke slette (droppe) '%-.64s'; databasen eksisterer ikke",
|
"Kan ikke slette (droppe) '%-.64s'; databasen eksisterer ikke",
|
||||||
"Fejl ved sletning (drop) af databasen (kan ikke slette '%-.64s', Fejl %d)",
|
"Fejl ved sletning (drop) af databasen (kan ikke slette '%-.64s', Fejl %d)",
|
||||||
@ -216,7 +216,7 @@
|
|||||||
"CREATE DATABASE er ikke tilladt mens en tråd holder på globalt read lock",
|
"CREATE DATABASE er ikke tilladt mens en tråd holder på globalt read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -224,7 +224,7 @@
|
|||||||
"CREATE DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit",
|
"CREATE DATABASE niet toegestaan terwijl thread een globale 'read lock' bezit",
|
||||||
"Foutieve parameters voor %s",
|
"Foutieve parameters voor %s",
|
||||||
"%-.32s@%-.64s mag geen nieuwe gebruikers creeren",
|
"%-.32s@%-.64s mag geen nieuwe gebruikers creeren",
|
||||||
"Incorrecte tabel definitie; Alle MERGE tabellen moeten tot dezelfde database behoren",
|
"Incorrecte tabel definitie; alle MERGE tabellen moeten tot dezelfde database behoren",
|
||||||
"Deadlock gevonden tijdens lock-aanvraag poging; Probeer herstart van de transactie",
|
"Deadlock gevonden tijdens lock-aanvraag poging; Probeer herstart van de transactie",
|
||||||
"Het gebruikte tabel type ondersteund geen FULLTEXT indexen",
|
"Het gebruikte tabel type ondersteund geen FULLTEXT indexen",
|
||||||
"Kan foreign key beperking niet toevoegen",
|
"Kan foreign key beperking niet toevoegen",
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"YES",
|
"YES",
|
||||||
"Can't create file '%-.64s' (errno: %d)",
|
"Can't create file '%-.64s' (errno: %d)",
|
||||||
"Can't create table '%-.64s' (errno: %d)",
|
"Can't create table '%-.64s' (errno: %d)",
|
||||||
"Can't create database '%-.64s'. (errno: %d)",
|
"Can't create database '%-.64s' (errno: %d)",
|
||||||
"Can't create database '%-.64s'; database exists",
|
"Can't create database '%-.64s'; database exists",
|
||||||
"Can't drop database '%-.64s'; database doesn't exist",
|
"Can't drop database '%-.64s'; database doesn't exist",
|
||||||
"Error dropping database (can't delete '%-.64s', errno: %d)",
|
"Error dropping database (can't delete '%-.64s', errno: %d)",
|
||||||
@ -213,7 +213,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
"JAH",
|
"JAH",
|
||||||
"Ei suuda luua faili '%-.64s' (veakood: %d)",
|
"Ei suuda luua faili '%-.64s' (veakood: %d)",
|
||||||
"Ei suuda luua tabelit '%-.64s' (veakood: %d)",
|
"Ei suuda luua tabelit '%-.64s' (veakood: %d)",
|
||||||
"Ei suuda luua andmebaasi '%-.64s'. (veakood: %d)",
|
"Ei suuda luua andmebaasi '%-.64s' (veakood: %d)",
|
||||||
"Ei suuda luua andmebaasi '%-.64s': andmebaas juba eksisteerib",
|
"Ei suuda luua andmebaasi '%-.64s': andmebaas juba eksisteerib",
|
||||||
"Ei suuda kustutada andmebaasi '%-.64s': andmebaasi ei eksisteeri",
|
"Ei suuda kustutada andmebaasi '%-.64s': andmebaasi ei eksisteeri",
|
||||||
"Viga andmebaasi kustutamisel (ei suuda kustutada faili '%-.64s', veakood: %d)",
|
"Viga andmebaasi kustutamisel (ei suuda kustutada faili '%-.64s', veakood: %d)",
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"OUI",
|
"OUI",
|
||||||
"Ne peut créer le fichier '%-.64s' (Errcode: %d)",
|
"Ne peut créer le fichier '%-.64s' (Errcode: %d)",
|
||||||
"Ne peut créer la table '%-.64s' (Errcode: %d)",
|
"Ne peut créer la table '%-.64s' (Errcode: %d)",
|
||||||
"Ne peut créer la base '%-.64s'. Erreur %d",
|
"Ne peut créer la base '%-.64s' (Erreur %d)",
|
||||||
"Ne peut créer la base '%-.64s'; elle existe déjà",
|
"Ne peut créer la base '%-.64s'; elle existe déjà",
|
||||||
"Ne peut effacer la base '%-.64s'; elle n'existe pas",
|
"Ne peut effacer la base '%-.64s'; elle n'existe pas",
|
||||||
"Ne peut effacer la base '%-.64s' (erreur %d)",
|
"Ne peut effacer la base '%-.64s' (erreur %d)",
|
||||||
@ -213,7 +213,7 @@
|
|||||||
"CREATE DATABASE n'est pas autorisée pendant qu'une tâche possède un verrou global en lecture",
|
"CREATE DATABASE n'est pas autorisée pendant qu'une tâche possède un verrou global en lecture",
|
||||||
"Mauvais arguments à %s",
|
"Mauvais arguments à %s",
|
||||||
"%-.32s@%-.64s n'est pas autorisé à créer de nouveaux utilisateurs",
|
"%-.32s@%-.64s n'est pas autorisé à créer de nouveaux utilisateurs",
|
||||||
"Définition de table incorrecte : toutes les tables MERGE doivent être dans la même base de donnée",
|
"Définition de table incorrecte; toutes les tables MERGE doivent être dans la même base de donnée",
|
||||||
"Deadlock découvert en essayant d'obtenir les verrous : essayez de redémarrer la transaction",
|
"Deadlock découvert en essayant d'obtenir les verrous : essayez de redémarrer la transaction",
|
||||||
"Le type de table utilisé ne supporte pas les index FULLTEXT",
|
"Le type de table utilisé ne supporte pas les index FULLTEXT",
|
||||||
"Impossible d'ajouter des contraintes d'index externe",
|
"Impossible d'ajouter des contraintes d'index externe",
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
"isamchk",
|
"isamchk",
|
||||||
"Nein",
|
"Nein",
|
||||||
"Ja",
|
"Ja",
|
||||||
"Kann Datei '%-.64s' nicht erzeugen. (Fehler: %d)",
|
"Kann Datei '%-.64s' nicht erzeugen (Fehler: %d)",
|
||||||
"Kann Tabelle '%-.64s' nicht erzeugen. (Fehler: %d)",
|
"Kann Tabelle '%-.64s' nicht erzeugen (Fehler: %d)",
|
||||||
"Kann Datenbank '%-.64s' nicht erzeugen. (Fehler: %d)",
|
"Kann Datenbank '%-.64s' nicht erzeugen (Fehler: %d)",
|
||||||
"Kann Datenbank '%-.64s' nicht erzeugen; datenbank '%-.64s' existiert bereits.",
|
"Kann Datenbank '%-.64s' nicht erzeugen; datenbank '%-.64s' existiert bereits.",
|
||||||
"Kann Datenbank '%-.64s' nicht löschen; keine Datenbank '%-.64s' vorhanden.",
|
"Kann Datenbank '%-.64s' nicht löschen; keine Datenbank '%-.64s' vorhanden.",
|
||||||
"Fehler beim Löschen der Datenbank. ('%-.64s' kann nicht gelöscht werden, Fehlernuumer: %d)",
|
"Fehler beim Löschen der Datenbank. ('%-.64s' kann nicht gelöscht werden, Fehlernuumer: %d)",
|
||||||
@ -222,7 +222,7 @@
|
|||||||
"Solange ein globaler Read LOCK gesetzt ist, ist CREATE DATABASE nicht zulässig.",
|
"Solange ein globaler Read LOCK gesetzt ist, ist CREATE DATABASE nicht zulässig.",
|
||||||
"Falsche Argumente für %s",
|
"Falsche Argumente für %s",
|
||||||
"%-.32s@%-.64s is nicht berechtigt neue Benutzer hinzuzufügen.",
|
"%-.32s@%-.64s is nicht berechtigt neue Benutzer hinzuzufügen.",
|
||||||
"Falsche Tabellendefinition: Sämtliche MERGE-Tabellen müssen in derselben Datenbank sein.",
|
"Falsche Tabellendefinition; sämtliche MERGE-Tabellen müssen in derselben Datenbank sein.",
|
||||||
"Beim Versuch einen Lock anzufordern ist ein Deadlock aufgetreten. Es wird versucht die Transaktion erneut zu starten.",
|
"Beim Versuch einen Lock anzufordern ist ein Deadlock aufgetreten. Es wird versucht die Transaktion erneut zu starten.",
|
||||||
"Der verwendete Tabellentyp unterstützt keinen FULLTEXT-Index.",
|
"Der verwendete Tabellentyp unterstützt keinen FULLTEXT-Index.",
|
||||||
"Foreign_Key Beschränkung konnte nicht hinzugefügt werden.",
|
"Foreign_Key Beschränkung konnte nicht hinzugefügt werden.",
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
"ΝΑΙ",
|
"ΝΑΙ",
|
||||||
"Αδύνατη η δημιουργία του αρχείου '%-.64s' (κωδικός λάθους: %d)",
|
"Αδύνατη η δημιουργία του αρχείου '%-.64s' (κωδικός λάθους: %d)",
|
||||||
"Αδύνατη η δημιουργία του πίνακα '%-.64s' (κωδικός λάθους: %d)",
|
"Αδύνατη η δημιουργία του πίνακα '%-.64s' (κωδικός λάθους: %d)",
|
||||||
"Αδύνατη η δημιουργία της βάσης δεδομένων '%-.64s'. (κωδικός λάθους: %d)",
|
"Αδύνατη η δημιουργία της βάσης δεδομένων '%-.64s' (κωδικός λάθους: %d)",
|
||||||
"Αδύνατη η δημιουργία της βάσης δεδομένων '%-.64s'. Η βάση δεδομένων υπάρχει ήδη",
|
"Αδύνατη η δημιουργία της βάσης δεδομένων '%-.64s'; Η βάση δεδομένων υπάρχει ήδη",
|
||||||
"Αδύνατη η διαγραφή της βάσης δεδομένων '%-.64s'. Η βάση δεδομένων δεν υπάρχει",
|
"Αδύνατη η διαγραφή της βάσης δεδομένων '%-.64s'. Η βάση δεδομένων δεν υπάρχει",
|
||||||
"Παρουσιάστηκε πρόβλημα κατά τη διαγραφή της βάσης δεδομένων (αδύνατη η διαγραφή '%-.64s', κωδικός λάθους: %d)",
|
"Παρουσιάστηκε πρόβλημα κατά τη διαγραφή της βάσης δεδομένων (αδύνατη η διαγραφή '%-.64s', κωδικός λάθους: %d)",
|
||||||
"Παρουσιάστηκε πρόβλημα κατά τη διαγραφή της βάσης δεδομένων (αδύνατη η διαγραφή του φακέλλου '%-.64s', κωδικός λάθους: %d)",
|
"Παρουσιάστηκε πρόβλημα κατά τη διαγραφή της βάσης δεδομένων (αδύνατη η διαγραφή του φακέλλου '%-.64s', κωδικός λάθους: %d)",
|
||||||
@ -213,7 +213,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -215,7 +215,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"SI",
|
"SI",
|
||||||
"Impossibile creare il file '%-.64s' (errno: %d)",
|
"Impossibile creare il file '%-.64s' (errno: %d)",
|
||||||
"Impossibile creare la tabella '%-.64s' (errno: %d)",
|
"Impossibile creare la tabella '%-.64s' (errno: %d)",
|
||||||
"Impossibile creare il database '%-.64s'. (errno: %d)",
|
"Impossibile creare il database '%-.64s' (errno: %d)",
|
||||||
"Impossibile creare il database '%-.64s'; il database esiste",
|
"Impossibile creare il database '%-.64s'; il database esiste",
|
||||||
"Impossibile cancellare '%-.64s'; il database non esiste",
|
"Impossibile cancellare '%-.64s'; il database non esiste",
|
||||||
"Errore durante la cancellazione del database (impossibile cancellare '%-.64s', errno: %d)",
|
"Errore durante la cancellazione del database (impossibile cancellare '%-.64s', errno: %d)",
|
||||||
|
@ -215,7 +215,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -213,7 +213,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"JA",
|
"JA",
|
||||||
"Kan ikkje opprette fila '%-.64s' (Feilkode: %d)",
|
"Kan ikkje opprette fila '%-.64s' (Feilkode: %d)",
|
||||||
"Kan ikkje opprette tabellen '%-.64s' (Feilkode: %d)",
|
"Kan ikkje opprette tabellen '%-.64s' (Feilkode: %d)",
|
||||||
"Kan ikkje opprette databasen '%-.64s'. Feil %d",
|
"Kan ikkje opprette databasen '%-.64s' (Feilkode: %d)",
|
||||||
"Kan ikkje opprette databasen '%-.64s'; databasen eksisterer",
|
"Kan ikkje opprette databasen '%-.64s'; databasen eksisterer",
|
||||||
"Kan ikkje fjerne (drop) '%-.64s'; databasen eksisterer ikkje",
|
"Kan ikkje fjerne (drop) '%-.64s'; databasen eksisterer ikkje",
|
||||||
"Feil ved fjerning (drop) av databasen (kan ikkje slette '%-.64s', feil %d)",
|
"Feil ved fjerning (drop) av databasen (kan ikkje slette '%-.64s', feil %d)",
|
||||||
@ -215,7 +215,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"JA",
|
"JA",
|
||||||
"Kan ikke opprette fila '%-.64s' (Feilkode: %d)",
|
"Kan ikke opprette fila '%-.64s' (Feilkode: %d)",
|
||||||
"Kan ikke opprette tabellen '%-.64s' (Feilkode: %d)",
|
"Kan ikke opprette tabellen '%-.64s' (Feilkode: %d)",
|
||||||
"Kan ikke opprette databasen '%-.64s'. Feil %d",
|
"Kan ikke opprette databasen '%-.64s' (Feilkode: %d)",
|
||||||
"Kan ikke opprette databasen '%-.64s'; databasen eksisterer",
|
"Kan ikke opprette databasen '%-.64s'; databasen eksisterer",
|
||||||
"Kan ikke fjerne (drop) '%-.64s'; databasen eksisterer ikke",
|
"Kan ikke fjerne (drop) '%-.64s'; databasen eksisterer ikke",
|
||||||
"Feil ved fjerning (drop) av databasen (kan ikke slette '%-.64s', feil %d)",
|
"Feil ved fjerning (drop) av databasen (kan ikke slette '%-.64s', feil %d)",
|
||||||
@ -215,7 +215,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
"TAK",
|
"TAK",
|
||||||
"Nie mo¿na stworzyæ pliku '%-.64s' (Kod b³êdu: %d)",
|
"Nie mo¿na stworzyæ pliku '%-.64s' (Kod b³êdu: %d)",
|
||||||
"Nie mo¿na stworzyæ tabeli '%-.64s' (Kod b³êdu: %d)",
|
"Nie mo¿na stworzyæ tabeli '%-.64s' (Kod b³êdu: %d)",
|
||||||
"Nie mo¿na stworzyæ bazy danych '%-.64s'. B³?d %d",
|
"Nie mo¿na stworzyæ bazy danych '%-.64s' (Kod b³êdu: %d)",
|
||||||
"Nie mo¿na stworzyæ bazy danych '%-.64s'; baza danych ju¿ istnieje",
|
"Nie mo¿na stworzyæ bazy danych '%-.64s'; baza danych ju¿ istnieje",
|
||||||
"Nie mo¿na usun?æ bazy danych '%-.64s'; baza danych nie istnieje",
|
"Nie mo¿na usun?æ bazy danych '%-.64s'; baza danych nie istnieje",
|
||||||
"B³?d podczas usuwania bazy danych (nie mo¿na usun?æ '%-.64s', b³?d %d)",
|
"B³?d podczas usuwania bazy danych (nie mo¿na usun?æ '%-.64s', b³?d %d)",
|
||||||
@ -217,7 +217,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
"DA",
|
"DA",
|
||||||
"Nu pot sa creez fisierul '%-.64s' (Eroare: %d)",
|
"Nu pot sa creez fisierul '%-.64s' (Eroare: %d)",
|
||||||
"Nu pot sa creez tabla '%-.64s' (Eroare: %d)",
|
"Nu pot sa creez tabla '%-.64s' (Eroare: %d)",
|
||||||
"Nu pot sa creez baza de date '%-.64s'. (Eroare: %d)",
|
"Nu pot sa creez baza de date '%-.64s' (Eroare: %d)",
|
||||||
"Nu pot sa creez baza de date '%-.64s'; baza de date exista deja",
|
"Nu pot sa creez baza de date '%-.64s'; baza de date exista deja",
|
||||||
"Nu pot sa drop baza de date '%-.64s'; baza da date este inexistenta",
|
"Nu pot sa drop baza de date '%-.64s'; baza da date este inexistenta",
|
||||||
"Eroare dropuind baza de date (nu pot sa sterg '%-.64s', Eroare: %d)",
|
"Eroare dropuind baza de date (nu pot sa sterg '%-.64s', Eroare: %d)",
|
||||||
@ -217,7 +217,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"ДА",
|
"ДА",
|
||||||
"Невозможно создать файл '%-.64s' (ошибка: %d)",
|
"Невозможно создать файл '%-.64s' (ошибка: %d)",
|
||||||
"Невозможно создать таблицу '%-.64s' (ошибка: %d)",
|
"Невозможно создать таблицу '%-.64s' (ошибка: %d)",
|
||||||
"Невозможно создать базу данных '%-.64s'. (ошибка: %d)",
|
"Невозможно создать базу данных '%-.64s' (ошибка: %d)",
|
||||||
"Невозможно создать базу данных '%-.64s'. База данных уже существует",
|
"Невозможно создать базу данных '%-.64s'. База данных уже существует",
|
||||||
"Невозможно удалить базу данных '%-.64s'. Такой базы данных нет",
|
"Невозможно удалить базу данных '%-.64s'. Такой базы данных нет",
|
||||||
"Ошибка при удалении базы данных (невозможно удалить '%-.64s', ошибка: %d)",
|
"Ошибка при удалении базы данных (невозможно удалить '%-.64s', ошибка: %d)",
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
"DA",
|
"DA",
|
||||||
"Ne mogu da kreiram file '%-.64s' (errno: %d)",
|
"Ne mogu da kreiram file '%-.64s' (errno: %d)",
|
||||||
"Ne mogu da kreiram tabelu '%-.64s' (errno: %d)",
|
"Ne mogu da kreiram tabelu '%-.64s' (errno: %d)",
|
||||||
"Ne mogu da kreiram bazu '%-.64s'. (errno: %d)",
|
"Ne mogu da kreiram bazu '%-.64s' (errno: %d)",
|
||||||
"Ne mogu da kreiram bazu '%-.64s'; baza veæ postoji.",
|
"Ne mogu da kreiram bazu '%-.64s'; baza veæ postoji.",
|
||||||
"Ne mogu da izbrišem bazu '%-.64s'; baza ne postoji.",
|
"Ne mogu da izbrišem bazu '%-.64s'; baza ne postoji.",
|
||||||
"Ne mogu da izbrišem bazu (ne mogu da izbrišem '%-.64s', errno: %d)",
|
"Ne mogu da izbrišem bazu (ne mogu da izbrišem '%-.64s', errno: %d)",
|
||||||
@ -219,7 +219,7 @@
|
|||||||
"Komanda 'CREATE DATABASE' nije dozvoljena dok thread globalno zakljuèava èitanje podataka",
|
"Komanda 'CREATE DATABASE' nije dozvoljena dok thread globalno zakljuèava èitanje podataka",
|
||||||
"Pogrešni argumenti prosleðeni na %s",
|
"Pogrešni argumenti prosleðeni na %s",
|
||||||
"Korisniku %-.32s@%-.64s nije dozvoljeno da kreira nove korisnike",
|
"Korisniku %-.32s@%-.64s nije dozvoljeno da kreira nove korisnike",
|
||||||
"Pogrešna definicija tabele; Sve 'MERGE' tabele moraju biti u istoj bazi podataka",
|
"Pogrešna definicija tabele; sve 'MERGE' tabele moraju biti u istoj bazi podataka",
|
||||||
"Unakrsno zakljuèavanje pronaðeno kada sam pokušao da dobijem pravo na zakljuèavanje; Probajte da restartujete transakciju",
|
"Unakrsno zakljuèavanje pronaðeno kada sam pokušao da dobijem pravo na zakljuèavanje; Probajte da restartujete transakciju",
|
||||||
"Upotrebljeni tip tabele ne podržava 'FULLTEXT' indekse",
|
"Upotrebljeni tip tabele ne podržava 'FULLTEXT' indekse",
|
||||||
"Ne mogu da dodam proveru spoljnog kljuèa",
|
"Ne mogu da dodam proveru spoljnog kljuèa",
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
"Áno",
|
"Áno",
|
||||||
"Nemô¾em vytvori» súbor '%-.64s' (chybový kód: %d)",
|
"Nemô¾em vytvori» súbor '%-.64s' (chybový kód: %d)",
|
||||||
"Nemô¾em vytvori» tabuµku '%-.64s' (chybový kód: %d)",
|
"Nemô¾em vytvori» tabuµku '%-.64s' (chybový kód: %d)",
|
||||||
"Nemô¾em vytvori» databázu '%-.64s'. (chybový kód: %d)",
|
"Nemô¾em vytvori» databázu '%-.64s' (chybový kód: %d)",
|
||||||
"Nemô¾em vytvori» databázu '%-.64s'; databáza existuje",
|
"Nemô¾em vytvori» databázu '%-.64s'; databáza existuje",
|
||||||
"Nemô¾em zmaza» databázu '%-.64s'; databáza neexistuje",
|
"Nemô¾em zmaza» databázu '%-.64s'; databáza neexistuje",
|
||||||
"Chyba pri mazaní databázy (nemô¾em zmaza» '%-.64s', chybový kód: %d)",
|
"Chyba pri mazaní databázy (nemô¾em zmaza» '%-.64s', chybový kód: %d)",
|
||||||
@ -221,7 +221,7 @@
|
|||||||
"CREATE DATABASE not allowed while thread is holding global read lock",
|
"CREATE DATABASE not allowed while thread is holding global read lock",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"SI",
|
"SI",
|
||||||
"No puedo crear archivo '%-.64s' (Error: %d)",
|
"No puedo crear archivo '%-.64s' (Error: %d)",
|
||||||
"No puedo crear tabla '%-.64s' (Error: %d)",
|
"No puedo crear tabla '%-.64s' (Error: %d)",
|
||||||
"No puedo crear base de datos '%-.64s'. Error %d",
|
"No puedo crear base de datos '%-.64s' (Error: %d)",
|
||||||
"No puedo crear base de datos '%-.64s'; la base de datos ya existe",
|
"No puedo crear base de datos '%-.64s'; la base de datos ya existe",
|
||||||
"No puedo eliminar base de datos '%-.64s'; la base de datos no existe",
|
"No puedo eliminar base de datos '%-.64s'; la base de datos no existe",
|
||||||
"Error eliminando la base de datos(no puedo borrar '%-.64s', error %d)",
|
"Error eliminando la base de datos(no puedo borrar '%-.64s', error %d)",
|
||||||
@ -214,7 +214,7 @@
|
|||||||
"CREATE DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global",
|
"CREATE DATABASE no permitido mientras un thread está ejerciendo un bloqueo de lectura global",
|
||||||
"Wrong arguments to %s",
|
"Wrong arguments to %s",
|
||||||
"%-.32s@%-.64s is not allowed to create new users",
|
"%-.32s@%-.64s is not allowed to create new users",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"The used table type doesn't support FULLTEXT indexes",
|
"The used table type doesn't support FULLTEXT indexes",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"YES",
|
"YES",
|
||||||
"Kan inte skapa filen '%-.64s' (Felkod: %d)",
|
"Kan inte skapa filen '%-.64s' (Felkod: %d)",
|
||||||
"Kan inte skapa tabellen '%-.64s' (Felkod: %d)",
|
"Kan inte skapa tabellen '%-.64s' (Felkod: %d)",
|
||||||
"Kan inte skapa databasen '%-.64s'. (Felkod: %d)",
|
"Kan inte skapa databasen '%-.64s' (Felkod: %d)",
|
||||||
"Databasen '%-.64s' existerar redan",
|
"Databasen '%-.64s' existerar redan",
|
||||||
"Kan inte radera databasen '%-.64s'; databasen finns inte",
|
"Kan inte radera databasen '%-.64s'; databasen finns inte",
|
||||||
"Fel vid radering av databasen (Kan inte radera '%-.64s'. Felkod: %d)",
|
"Fel vid radering av databasen (Kan inte radera '%-.64s'. Felkod: %d)",
|
||||||
@ -213,7 +213,7 @@
|
|||||||
"CREATE DATABASE är inte tillåtet när man har ett globalt läslås",
|
"CREATE DATABASE är inte tillåtet när man har ett globalt läslås",
|
||||||
"Felaktiga argument till %s",
|
"Felaktiga argument till %s",
|
||||||
"%-.32s@%-.64s har inte rättighet att skapa nya användare",
|
"%-.32s@%-.64s har inte rättighet att skapa nya användare",
|
||||||
"Felaktig tabelldefinition. Alla tabeller i en MERGE-tabell måste vara i samma databas",
|
"Felaktig tabelldefinition; alla tabeller i en MERGE-tabell måste vara i samma databas",
|
||||||
"Fick 'DEADLOCK' vid låsförsök av block/rad. Försök att starta om transaktionen",
|
"Fick 'DEADLOCK' vid låsförsök av block/rad. Försök att starta om transaktionen",
|
||||||
"Tabelltypen har inte hantering av FULLTEXT-index",
|
"Tabelltypen har inte hantering av FULLTEXT-index",
|
||||||
"Kan inte lägga till 'FOREIGN KEY constraint'",
|
"Kan inte lägga till 'FOREIGN KEY constraint'",
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
"ТАК",
|
"ТАК",
|
||||||
"Не можу створити файл '%-.64s' (помилка: %d)",
|
"Не можу створити файл '%-.64s' (помилка: %d)",
|
||||||
"Не можу створити таблицю '%-.64s' (помилка: %d)",
|
"Не можу створити таблицю '%-.64s' (помилка: %d)",
|
||||||
"îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ '%-.64s'. (ÐÏÍÉÌËÁ: %d)",
|
"îÅ ÍÏÖÕ ÓÔ×ÏÒÉÔÉ ÂÁÚÕ ÄÁÎÎÉÈ '%-.64s' (ÐÏÍÉÌËÁ: %d)",
|
||||||
"Не можу створити базу данних '%-.64s'. База данних ╕сну╓",
|
"Не можу створити базу данних '%-.64s'. База данних ╕сну╓",
|
||||||
"Не можу видалити базу данних '%-.64s'. База данних не ╕сну╓",
|
"Не можу видалити базу данних '%-.64s'. База данних не ╕сну╓",
|
||||||
"Не можу видалити базу данних (Не можу видалити '%-.64s', помилка: %d)",
|
"Не можу видалити базу данних (Не можу видалити '%-.64s', помилка: %d)",
|
||||||
@ -218,7 +218,7 @@
|
|||||||
"CREATE DATABASE не дозволено доки г╕лка перебува╓ п╕д загальним блокуванням читання",
|
"CREATE DATABASE не дозволено доки г╕лка перебува╓ п╕д загальним блокуванням читання",
|
||||||
"Хибний аргумент для %s",
|
"Хибний аргумент для %s",
|
||||||
"Користувачу %-.32s@%-.64s не дозволено створювати нових користувач╕в",
|
"Користувачу %-.32s@%-.64s не дозволено створювати нових користувач╕в",
|
||||||
"Incorrect table definition; All MERGE tables must be in the same database",
|
"Incorrect table definition; all MERGE tables must be in the same database",
|
||||||
"Deadlock found when trying to get lock; Try restarting transaction",
|
"Deadlock found when trying to get lock; Try restarting transaction",
|
||||||
"Використаний тип таблиц╕ не п╕дтриму╓ FULLTEXT ╕ндекс╕в",
|
"Використаний тип таблиц╕ не п╕дтриму╓ FULLTEXT ╕ндекс╕в",
|
||||||
"Cannot add foreign key constraint",
|
"Cannot add foreign key constraint",
|
||||||
|
@ -404,13 +404,12 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
{
|
{
|
||||||
char buff[160];
|
char buff[160];
|
||||||
if (duplic == DUP_IGNORE)
|
if (duplic == DUP_IGNORE)
|
||||||
sprintf(buff,ER(ER_INSERT_INFO),info.records,
|
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
|
||||||
(lock_type == TL_WRITE_DELAYED) ? 0 :
|
(lock_type == TL_WRITE_DELAYED) ? (ulong) 0 :
|
||||||
info.records-info.copied,
|
(ulong) (info.records - info.copied), (ulong) thd->cuted_fields);
|
||||||
thd->cuted_fields);
|
|
||||||
else
|
else
|
||||||
sprintf(buff,ER(ER_INSERT_INFO),info.records,info.deleted,
|
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
|
||||||
thd->cuted_fields);
|
(ulong) info.deleted, (ulong) thd->cuted_fields);
|
||||||
::send_ok(thd,info.copied+info.deleted,(ulonglong)id,buff);
|
::send_ok(thd,info.copied+info.deleted,(ulonglong)id,buff);
|
||||||
}
|
}
|
||||||
free_underlaid_joins(thd, &thd->lex.select_lex);
|
free_underlaid_joins(thd, &thd->lex.select_lex);
|
||||||
@ -1494,11 +1493,11 @@ bool select_insert::send_eof()
|
|||||||
{
|
{
|
||||||
char buff[160];
|
char buff[160];
|
||||||
if (info.handle_duplicates == DUP_IGNORE)
|
if (info.handle_duplicates == DUP_IGNORE)
|
||||||
sprintf(buff,ER(ER_INSERT_INFO),info.records,info.records-info.copied,
|
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
|
||||||
thd->cuted_fields);
|
(ulong) (info.records - info.copied), (ulong) thd->cuted_fields);
|
||||||
else
|
else
|
||||||
sprintf(buff,ER(ER_INSERT_INFO),info.records,info.deleted,
|
sprintf(buff, ER(ER_INSERT_INFO), (ulong) info.records,
|
||||||
thd->cuted_fields);
|
(ulong) info.deleted, (ulong) thd->cuted_fields);
|
||||||
::send_ok(thd,info.copied+info.deleted,last_insert_id,buff);
|
::send_ok(thd,info.copied+info.deleted,last_insert_id,buff);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -318,8 +318,8 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||||||
error= -1; // Error on read
|
error= -1; // Error on read
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
sprintf(name,ER(ER_LOAD_INFO),info.records,info.deleted,
|
sprintf(name, ER(ER_LOAD_INFO), (ulong) info.records, (ulong) info.deleted,
|
||||||
info.records-info.copied,thd->cuted_fields);
|
(ulong) (info.records - info.copied), (ulong) thd->cuted_fields);
|
||||||
send_ok(thd,info.copied+info.deleted,0L,name);
|
send_ok(thd,info.copied+info.deleted,0L,name);
|
||||||
// on the slave thd->query is never initialized
|
// on the slave thd->query is never initialized
|
||||||
if (!thd->slave_thread)
|
if (!thd->slave_thread)
|
||||||
|
@ -2416,8 +2416,8 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
|||||||
query_cache_invalidate3(thd, table_list, 0);
|
query_cache_invalidate3(thd, table_list, 0);
|
||||||
|
|
||||||
end_temporary:
|
end_temporary:
|
||||||
sprintf(tmp_name,ER(ER_INSERT_INFO),(ulong) (copied+deleted),
|
sprintf(tmp_name, ER(ER_INSERT_INFO), (ulong) (copied + deleted),
|
||||||
(ulong) deleted, thd->cuted_fields);
|
(ulong) deleted, (ulong) thd->cuted_fields);
|
||||||
send_ok(thd,copied+deleted,0L,tmp_name);
|
send_ok(thd,copied+deleted,0L,tmp_name);
|
||||||
thd->some_tables_deleted=0;
|
thd->some_tables_deleted=0;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
@ -373,8 +373,8 @@ int mysql_update(THD *thd,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
char buff[80];
|
char buff[80];
|
||||||
sprintf(buff,ER(ER_UPDATE_INFO), (long) found, (long) updated,
|
sprintf(buff, ER(ER_UPDATE_INFO), (ulong) found, (ulong) updated,
|
||||||
(long) thd->cuted_fields);
|
(ulong) thd->cuted_fields);
|
||||||
send_ok(thd,
|
send_ok(thd,
|
||||||
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
||||||
thd->insert_id_used ? thd->insert_id() : 0L,buff);
|
thd->insert_id_used ? thd->insert_id() : 0L,buff);
|
||||||
@ -993,8 +993,8 @@ bool multi_update::send_eof()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sprintf(buff,ER(ER_UPDATE_INFO), (long) found, (long) updated,
|
sprintf(buff, ER(ER_UPDATE_INFO), (ulong) found, (ulong) updated,
|
||||||
(long) thd->cuted_fields);
|
(ulong) thd->cuted_fields);
|
||||||
::send_ok(thd,
|
::send_ok(thd,
|
||||||
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
(thd->client_capabilities & CLIENT_FOUND_ROWS) ? found : updated,
|
||||||
thd->insert_id_used ? thd->insert_id() : 0L,buff);
|
thd->insert_id_used ? thd->insert_id() : 0L,buff);
|
||||||
|
@ -2109,9 +2109,9 @@ all_or_any: ALL { $$ = 1; }
|
|||||||
/* expressions that begin with 'expr' */
|
/* expressions that begin with 'expr' */
|
||||||
expr_expr:
|
expr_expr:
|
||||||
expr IN_SYM '(' expr_list ')'
|
expr IN_SYM '(' expr_list ')'
|
||||||
{ $$= new Item_func_in($1,*$4); }
|
{ $4->push_front($1); $$= new Item_func_in(*$4); }
|
||||||
| expr NOT IN_SYM '(' expr_list ')'
|
| expr NOT IN_SYM '(' expr_list ')'
|
||||||
{ $$= new Item_func_not(new Item_func_in($1,*$5)); }
|
{ $5->push_front($1); $$= new Item_func_not(new Item_func_in(*$5)); }
|
||||||
| expr IN_SYM in_subselect
|
| expr IN_SYM in_subselect
|
||||||
{ $$= new Item_in_subselect(YYTHD, $1, $3); }
|
{ $$= new Item_in_subselect(YYTHD, $1, $3); }
|
||||||
| expr NOT IN_SYM in_subselect
|
| expr NOT IN_SYM in_subselect
|
||||||
@ -2211,9 +2211,9 @@ no_in_expr:
|
|||||||
/* expressions that begin with 'expr' that does NOT follow AND */
|
/* expressions that begin with 'expr' that does NOT follow AND */
|
||||||
no_and_expr:
|
no_and_expr:
|
||||||
no_and_expr IN_SYM '(' expr_list ')'
|
no_and_expr IN_SYM '(' expr_list ')'
|
||||||
{ $$= new Item_func_in($1,*$4); }
|
{ $4->push_front($1); $$= new Item_func_in(*$4); }
|
||||||
| no_and_expr NOT IN_SYM '(' expr_list ')'
|
| no_and_expr NOT IN_SYM '(' expr_list ')'
|
||||||
{ $$= new Item_func_not(new Item_func_in($1,*$5)); }
|
{ $5->push_front($1); $$= new Item_func_not(new Item_func_in(*$5)); }
|
||||||
| no_and_expr IN_SYM in_subselect
|
| no_and_expr IN_SYM in_subselect
|
||||||
{ $$= new Item_in_subselect(YYTHD, $1, $3); }
|
{ $$= new Item_in_subselect(YYTHD, $1, $3); }
|
||||||
| no_and_expr NOT IN_SYM in_subselect
|
| no_and_expr NOT IN_SYM in_subselect
|
||||||
@ -2389,7 +2389,7 @@ simple_expr:
|
|||||||
| DAY_SYM '(' expr ')'
|
| DAY_SYM '(' expr ')'
|
||||||
{ $$= new Item_func_dayofmonth($3); }
|
{ $$= new Item_func_dayofmonth($3); }
|
||||||
| ELT_FUNC '(' expr ',' expr_list ')'
|
| ELT_FUNC '(' expr ',' expr_list ')'
|
||||||
{ $$= new Item_func_elt($3, *$5); }
|
{ $5->push_front($3); $$= new Item_func_elt(*$5); }
|
||||||
| MAKE_SET_SYM '(' expr ',' expr_list ')'
|
| MAKE_SET_SYM '(' expr ',' expr_list ')'
|
||||||
{ $$= new Item_func_make_set($3, *$5); }
|
{ $$= new Item_func_make_set($3, *$5); }
|
||||||
| ENCRYPT '(' expr ')'
|
| ENCRYPT '(' expr ')'
|
||||||
@ -2427,7 +2427,7 @@ simple_expr:
|
|||||||
$$= new Item_func_date_format (new Item_func_from_unixtime($3),$5,0);
|
$$= new Item_func_date_format (new Item_func_from_unixtime($3),$5,0);
|
||||||
}
|
}
|
||||||
| FIELD_FUNC '(' expr ',' expr_list ')'
|
| FIELD_FUNC '(' expr ',' expr_list ')'
|
||||||
{ $$= new Item_func_field($3, *$5); }
|
{ $5->push_front($3); $$= new Item_func_field(*$5); }
|
||||||
| GEOMFROMTEXT '(' expr ')'
|
| GEOMFROMTEXT '(' expr ')'
|
||||||
{ $$= new Item_func_geometry_from_text($3); }
|
{ $$= new Item_func_geometry_from_text($3); }
|
||||||
| GEOMFROMTEXT '(' expr ',' expr ')'
|
| GEOMFROMTEXT '(' expr ',' expr ')'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user