Merge 4.1 - 5.0
This commit is contained in:
parent
cbe21a8eb6
commit
af50eff0d2
@ -668,11 +668,21 @@ ERROR 42S22: Unknown column 't2.a' in 'field list'
|
|||||||
insert into t1 select t2.a from t2 group by t2.a on duplicate key update a= t1.a + t2.b;
|
insert into t1 select t2.a from t2 group by t2.a on duplicate key update a= t1.a + t2.b;
|
||||||
ERROR 42S22: Unknown column 't2.b' in 'field list'
|
ERROR 42S22: Unknown column 't2.b' in 'field list'
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
create table t1(f1 varchar(5) key);
|
||||||
|
insert into t1(f1) select if(max(f1) is null, '2000',max(f1)+1) from t1;
|
||||||
|
insert into t1(f1) select if(max(f1) is null, '2000',max(f1)+1) from t1;
|
||||||
|
insert into t1(f1) select if(max(f1) is null, '2000',max(f1)+1) from t1;
|
||||||
|
select * from t1;
|
||||||
|
f1
|
||||||
|
2000
|
||||||
|
2001
|
||||||
|
2002
|
||||||
|
drop table t1;
|
||||||
create table t1(x int, y int);
|
create table t1(x int, y int);
|
||||||
create table t2(x int, z int);
|
create table t2(x int, z int);
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(x);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(x);
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
|
||||||
ERROR 42S22: Unknown column 'z' in 'field list'
|
ERROR 42S22: Unknown column 'z' in 'field list'
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
||||||
ERROR 42S02: Unknown table 't2' in field list
|
ERROR 42S22: Unknown column 't2.x' in 'field list'
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
@ -2700,6 +2700,14 @@ a b c d
|
|||||||
1 2 2 1
|
1 2 2 1
|
||||||
1 2 3 1
|
1 2 3 1
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
create table t1 (f1 int primary key, f2 int);
|
||||||
|
create table t2 (f3 int, f4 int, primary key(f3,f4));
|
||||||
|
insert into t1 values (1,1);
|
||||||
|
insert into t2 values (1,1),(1,2);
|
||||||
|
select distinct count(f2) >0 from t1 left join t2 on f1=f3 group by f1;
|
||||||
|
count(f2) >0
|
||||||
|
1
|
||||||
|
drop table t1,t2;
|
||||||
CREATE TABLE t1 ( city char(30) );
|
CREATE TABLE t1 ( city char(30) );
|
||||||
INSERT INTO t1 VALUES ('London');
|
INSERT INTO t1 VALUES ('London');
|
||||||
INSERT INTO t1 VALUES ('Paris');
|
INSERT INTO t1 VALUES ('Paris');
|
||||||
@ -2801,304 +2809,6 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 5
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 5
|
||||||
1 SIMPLE t2 ref a a 23 test.t1.a 2
|
1 SIMPLE t2 ref a a 23 test.t1.a 2
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 ( city char(30) );
|
|
||||||
INSERT INTO t1 VALUES ('London');
|
|
||||||
INSERT INTO t1 VALUES ('Paris');
|
|
||||||
SELECT * FROM t1 WHERE city='London';
|
|
||||||
city
|
|
||||||
London
|
|
||||||
SELECT * FROM t1 WHERE city='london';
|
|
||||||
city
|
|
||||||
London
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE city='London' AND city='london';
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
|
||||||
SELECT * FROM t1 WHERE city='London' AND city='london';
|
|
||||||
city
|
|
||||||
London
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London';
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 Using where
|
|
||||||
SELECT * FROM t1 WHERE city LIKE '%london%' AND city='London';
|
|
||||||
city
|
|
||||||
London
|
|
||||||
DROP TABLE t1;
|
|
||||||
create table t1 (a int(11) unsigned, b int(11) unsigned);
|
|
||||||
insert into t1 values (1,0), (1,1), (1,2);
|
|
||||||
select a-b from t1 order by 1;
|
|
||||||
a-b
|
|
||||||
0
|
|
||||||
1
|
|
||||||
18446744073709551615
|
|
||||||
select a-b , (a-b < 0) from t1 order by 1;
|
|
||||||
a-b (a-b < 0)
|
|
||||||
0 0
|
|
||||||
1 0
|
|
||||||
18446744073709551615 0
|
|
||||||
select a-b as d, (a-b >= 0), b from t1 group by b having d >= 0;
|
|
||||||
d (a-b >= 0) b
|
|
||||||
1 1 0
|
|
||||||
0 1 1
|
|
||||||
18446744073709551615 1 2
|
|
||||||
select cast((a - b) as unsigned) from t1 order by 1;
|
|
||||||
cast((a - b) as unsigned)
|
|
||||||
0
|
|
||||||
1
|
|
||||||
18446744073709551615
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int(11));
|
|
||||||
select all all * from t1;
|
|
||||||
a
|
|
||||||
select distinct distinct * from t1;
|
|
||||||
a
|
|
||||||
select all distinct * from t1;
|
|
||||||
ERROR HY000: Incorrect usage of ALL and DISTINCT
|
|
||||||
select distinct all * from t1;
|
|
||||||
ERROR HY000: Incorrect usage of ALL and DISTINCT
|
|
||||||
drop table t1;
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
kunde_intern_id int(10) unsigned NOT NULL default '0',
|
|
||||||
kunde_id int(10) unsigned NOT NULL default '0',
|
|
||||||
FK_firma_id int(10) unsigned NOT NULL default '0',
|
|
||||||
aktuell enum('Ja','Nein') NOT NULL default 'Ja',
|
|
||||||
vorname varchar(128) NOT NULL default '',
|
|
||||||
nachname varchar(128) NOT NULL default '',
|
|
||||||
geloescht enum('Ja','Nein') NOT NULL default 'Nein',
|
|
||||||
firma varchar(128) NOT NULL default ''
|
|
||||||
);
|
|
||||||
INSERT INTO t1 VALUES
|
|
||||||
(3964,3051,1,'Ja','Vorname1','1Nachname','Nein','Print Schau XXXX'),
|
|
||||||
(3965,3051111,1,'Ja','Vorname1111','1111Nachname','Nein','Print Schau XXXX');
|
|
||||||
SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname, geloescht FROM t1
|
|
||||||
WHERE
|
|
||||||
(
|
|
||||||
(
|
|
||||||
( '' != '' AND firma LIKE CONCAT('%', '', '%'))
|
|
||||||
OR
|
|
||||||
(vorname LIKE CONCAT('%', 'Vorname1', '%') AND
|
|
||||||
nachname LIKE CONCAT('%', '1Nachname', '%') AND
|
|
||||||
'Vorname1' != '' AND 'xxxx' != '')
|
|
||||||
)
|
|
||||||
AND
|
|
||||||
(
|
|
||||||
aktuell = 'Ja' AND geloescht = 'Nein' AND FK_firma_id = 2
|
|
||||||
)
|
|
||||||
)
|
|
||||||
;
|
|
||||||
kunde_id FK_firma_id aktuell vorname nachname geloescht
|
|
||||||
SELECT kunde_id ,FK_firma_id ,aktuell, vorname, nachname,
|
|
||||||
geloescht FROM t1
|
|
||||||
WHERE
|
|
||||||
(
|
|
||||||
(
|
|
||||||
aktuell = 'Ja' AND geloescht = 'Nein' AND FK_firma_id = 2
|
|
||||||
)
|
|
||||||
AND
|
|
||||||
(
|
|
||||||
( '' != '' AND firma LIKE CONCAT('%', '', '%') )
|
|
||||||
OR
|
|
||||||
( vorname LIKE CONCAT('%', 'Vorname1', '%') AND
|
|
||||||
nachname LIKE CONCAT('%', '1Nachname', '%') AND 'Vorname1' != '' AND
|
|
||||||
'xxxx' != '')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
;
|
|
||||||
kunde_id FK_firma_id aktuell vorname nachname geloescht
|
|
||||||
SELECT COUNT(*) FROM t1 WHERE
|
|
||||||
( 0 OR (vorname LIKE '%Vorname1%' AND nachname LIKE '%1Nachname%' AND 1))
|
|
||||||
AND FK_firma_id = 2;
|
|
||||||
COUNT(*)
|
|
||||||
0
|
|
||||||
drop table t1;
|
|
||||||
CREATE TABLE t1 (b BIGINT(20) UNSIGNED NOT NULL, PRIMARY KEY (b));
|
|
||||||
INSERT INTO t1 VALUES (0x8000000000000000);
|
|
||||||
SELECT b FROM t1 WHERE b=0x8000000000000000;
|
|
||||||
b
|
|
||||||
9223372036854775808
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE `t1` ( `gid` int(11) default NULL, `uid` int(11) default NULL);
|
|
||||||
CREATE TABLE `t2` ( `ident` int(11) default NULL, `level` char(16) default NULL);
|
|
||||||
INSERT INTO `t2` VALUES (0,'READ');
|
|
||||||
CREATE TABLE `t3` ( `id` int(11) default NULL, `name` char(16) default NULL);
|
|
||||||
INSERT INTO `t3` VALUES (1,'fs');
|
|
||||||
select * from t3 left join t1 on t3.id = t1.uid, t2 where t2.ident in (0, t1.gid, t3.id, 0);
|
|
||||||
id name gid uid ident level
|
|
||||||
1 fs NULL NULL 0 READ
|
|
||||||
drop table t1,t2,t3;
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
acct_id int(11) NOT NULL default '0',
|
|
||||||
profile_id smallint(6) default NULL,
|
|
||||||
UNIQUE KEY t1$acct_id (acct_id),
|
|
||||||
KEY t1$profile_id (profile_id)
|
|
||||||
);
|
|
||||||
INSERT INTO t1 VALUES (132,17),(133,18);
|
|
||||||
CREATE TABLE t2 (
|
|
||||||
profile_id smallint(6) default NULL,
|
|
||||||
queue_id int(11) default NULL,
|
|
||||||
seq int(11) default NULL,
|
|
||||||
KEY t2$queue_id (queue_id)
|
|
||||||
);
|
|
||||||
INSERT INTO t2 VALUES (17,31,4),(17,30,3),(17,36,2),(17,37,1);
|
|
||||||
CREATE TABLE t3 (
|
|
||||||
id int(11) NOT NULL default '0',
|
|
||||||
qtype int(11) default NULL,
|
|
||||||
seq int(11) default NULL,
|
|
||||||
warn_lvl int(11) default NULL,
|
|
||||||
crit_lvl int(11) default NULL,
|
|
||||||
rr1 tinyint(4) NOT NULL default '0',
|
|
||||||
rr2 int(11) default NULL,
|
|
||||||
default_queue tinyint(4) NOT NULL default '0',
|
|
||||||
KEY t3$qtype (qtype),
|
|
||||||
KEY t3$id (id)
|
|
||||||
);
|
|
||||||
INSERT INTO t3 VALUES (30,1,29,NULL,NULL,0,NULL,0),(31,1,28,NULL,NULL,0,NULL,0),
|
|
||||||
(36,1,34,NULL,NULL,0,NULL,0),(37,1,35,NULL,NULL,0,121,0);
|
|
||||||
SELECT COUNT(*) FROM t1 a STRAIGHT_JOIN t2 pq STRAIGHT_JOIN t3 q
|
|
||||||
WHERE
|
|
||||||
(pq.profile_id = a.profile_id) AND (a.acct_id = 132) AND
|
|
||||||
(pq.queue_id = q.id) AND (q.rr1 <> 1);
|
|
||||||
COUNT(*)
|
|
||||||
4
|
|
||||||
drop table t1,t2,t3;
|
|
||||||
create table t1 (f1 int);
|
|
||||||
insert into t1 values (1),(NULL);
|
|
||||||
create table t2 (f2 int, f3 int, f4 int);
|
|
||||||
create index idx1 on t2 (f4);
|
|
||||||
insert into t2 values (1,2,3),(2,4,6);
|
|
||||||
select A.f2 from t1 left join t2 A on A.f2 = f1 where A.f3=(select min(f3)
|
|
||||||
from t2 C where A.f4 = C.f4) or A.f3 IS NULL;
|
|
||||||
f2
|
|
||||||
1
|
|
||||||
NULL
|
|
||||||
drop table t1,t2;
|
|
||||||
create table t2 (a tinyint unsigned);
|
|
||||||
create index t2i on t2(a);
|
|
||||||
insert into t2 values (0), (254), (255);
|
|
||||||
explain select * from t2 where a > -1;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t2 index t2i t2i 2 NULL 3 Using where; Using index
|
|
||||||
select * from t2 where a > -1;
|
|
||||||
a
|
|
||||||
0
|
|
||||||
254
|
|
||||||
255
|
|
||||||
drop table t2;
|
|
||||||
CREATE TABLE t1 (a int, b int, c int);
|
|
||||||
INSERT INTO t1
|
|
||||||
SELECT 50, 3, 3 FROM DUAL
|
|
||||||
WHERE NOT EXISTS
|
|
||||||
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a b c
|
|
||||||
50 3 3
|
|
||||||
INSERT INTO t1
|
|
||||||
SELECT 50, 3, 3 FROM DUAL
|
|
||||||
WHERE NOT EXISTS
|
|
||||||
(SELECT * FROM t1 WHERE a = 50 AND b = 3);
|
|
||||||
select found_rows();
|
|
||||||
found_rows()
|
|
||||||
0
|
|
||||||
SELECT * FROM t1;
|
|
||||||
a b c
|
|
||||||
50 3 3
|
|
||||||
select count(*) from t1;
|
|
||||||
count(*)
|
|
||||||
1
|
|
||||||
select found_rows();
|
|
||||||
found_rows()
|
|
||||||
1
|
|
||||||
select count(*) from t1 limit 2,3;
|
|
||||||
count(*)
|
|
||||||
select found_rows();
|
|
||||||
found_rows()
|
|
||||||
0
|
|
||||||
select SQL_CALC_FOUND_ROWS count(*) from t1 limit 2,3;
|
|
||||||
count(*)
|
|
||||||
select found_rows();
|
|
||||||
found_rows()
|
|
||||||
1
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE t1 (a INT, b INT);
|
|
||||||
(SELECT a, b AS c FROM t1) ORDER BY c+1;
|
|
||||||
a c
|
|
||||||
(SELECT a, b AS c FROM t1) ORDER BY b+1;
|
|
||||||
a c
|
|
||||||
SELECT a, b AS c FROM t1 ORDER BY c+1;
|
|
||||||
a c
|
|
||||||
SELECT a, b AS c FROM t1 ORDER BY b+1;
|
|
||||||
a c
|
|
||||||
drop table t1;
|
|
||||||
create table t1(f1 int, f2 int);
|
|
||||||
create table t2(f3 int);
|
|
||||||
select f1 from t1,t2 where f1=f2 and (f1,f2) = ((1,1));
|
|
||||||
f1
|
|
||||||
select f1 from t1,t2 where f1=f2 and (f1,NULL) = ((1,1));
|
|
||||||
f1
|
|
||||||
select f1 from t1,t2 where f1=f2 and (f1,f2) = ((1,NULL));
|
|
||||||
f1
|
|
||||||
insert into t1 values(1,1),(2,null);
|
|
||||||
insert into t2 values(2);
|
|
||||||
select * from t1,t2 where f1=f3 and (f1,f2) = (2,null);
|
|
||||||
f1 f2 f3
|
|
||||||
select * from t1,t2 where f1=f3 and (f1,f2) <=> (2,null);
|
|
||||||
f1 f2 f3
|
|
||||||
2 NULL 2
|
|
||||||
drop table t1,t2;
|
|
||||||
create table t1 (f1 int not null auto_increment primary key, f2 varchar(10));
|
|
||||||
create table t11 like t1;
|
|
||||||
insert into t1 values(1,""),(2,"");
|
|
||||||
show table status like 't1%';
|
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
||||||
t1 MyISAM 9 Dynamic 2 20 X X X X X X X X latin1_swedish_ci NULL
|
|
||||||
t11 MyISAM 9 Dynamic 0 0 X X X X X X X X latin1_swedish_ci NULL
|
|
||||||
select 123 as a from t1 where f1 is null;
|
|
||||||
a
|
|
||||||
drop table t1,t11;
|
|
||||||
CREATE TABLE t1 (a INT, b INT);
|
|
||||||
(SELECT a, b AS c FROM t1) ORDER BY c+1;
|
|
||||||
a c
|
|
||||||
(SELECT a, b AS c FROM t1) ORDER BY b+1;
|
|
||||||
a c
|
|
||||||
SELECT a, b AS c FROM t1 ORDER BY c+1;
|
|
||||||
a c
|
|
||||||
SELECT a, b AS c FROM t1 ORDER BY b+1;
|
|
||||||
a c
|
|
||||||
drop table t1;
|
|
||||||
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, UNIQUE idx (a,b) );
|
|
||||||
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4);
|
|
||||||
CREATE TABLE t2 ( a INT NOT NULL, b INT NOT NULL, c INT );
|
|
||||||
INSERT INTO t2 VALUES ( 1,10,1), (1,10,2), (1,11,1), (1,11,2), (1,2,1), (1,2,2),
|
|
||||||
(1,2,3);
|
|
||||||
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
|
|
||||||
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
|
|
||||||
a b c d
|
|
||||||
1 2 1 1
|
|
||||||
1 2 2 1
|
|
||||||
1 2 3 1
|
|
||||||
1 10 2
|
|
||||||
1 11 2
|
|
||||||
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
|
|
||||||
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t1.a, t1.b, c;
|
|
||||||
a b c d
|
|
||||||
1 10 4
|
|
||||||
1 2 1 1
|
|
||||||
1 2 2 1
|
|
||||||
1 2 3 1
|
|
||||||
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
|
|
||||||
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t2.a, t2.b, c;
|
|
||||||
a b c d
|
|
||||||
1 2 1 1
|
|
||||||
1 2 2 1
|
|
||||||
1 2 3 1
|
|
||||||
1 10 2
|
|
||||||
1 11 2
|
|
||||||
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2,t1
|
|
||||||
WHERE t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
|
|
||||||
a b c d
|
|
||||||
1 2 1 1
|
|
||||||
1 2 2 1
|
|
||||||
1 2 3 1
|
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
|
||||||
create table t1 (a int, b int);
|
create table t1 (a int, b int);
|
||||||
create table t2 like t1;
|
create table t2 like t1;
|
||||||
select t1.a from (t1 inner join t2 on t1.a=t2.a) where t2.a=1;
|
select t1.a from (t1 inner join t2 on t1.a=t2.a) where t2.a=1;
|
||||||
@ -3478,14 +3188,6 @@ select count(*)
|
|||||||
from t1 inner join (t2 right join t3 on t2.id = t3.b_id) on t1.id = t3.a_id;
|
from t1 inner join (t2 right join t3 on t2.id = t3.b_id) on t1.id = t3.a_id;
|
||||||
count(*)
|
count(*)
|
||||||
6
|
6
|
||||||
create table t1 (f1 int primary key, f2 int);
|
|
||||||
create table t2 (f3 int, f4 int, primary key(f3,f4));
|
|
||||||
insert into t1 values (1,1);
|
|
||||||
insert into t2 values (1,1),(1,2);
|
|
||||||
select distinct count(f2) >0 from t1 left join t2 on f1=f3 group by f1;
|
|
||||||
count(f2) >0
|
|
||||||
1
|
|
||||||
drop table t1,t2;
|
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
create table t2 (b int);
|
create table t2 (b int);
|
||||||
|
@ -220,7 +220,7 @@ create table t2(x int, z int);
|
|||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(x);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(x);
|
||||||
--error 1054
|
--error 1054
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(z);
|
||||||
--error 1109
|
--error 1054
|
||||||
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
insert into t1(x,y) select x,z from t2 on duplicate key update x=values(t2.x);
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
@ -514,8 +514,8 @@ HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a)
|
|||||||
else
|
else
|
||||||
a= end;
|
a= end;
|
||||||
break;
|
break;
|
||||||
case HA_KEYTYPE_VARTEXT:
|
case HA_KEYTYPE_VARTEXT1:
|
||||||
case HA_KEYTYPE_VARBINARY:
|
case HA_KEYTYPE_VARBINARY1:
|
||||||
{
|
{
|
||||||
int a_length;
|
int a_length;
|
||||||
get_key_length(a_length, a);
|
get_key_length(a_length, a);
|
||||||
|
@ -755,7 +755,8 @@ bool Item_string::eq(const Item *item, bool binary_cmp) const
|
|||||||
{
|
{
|
||||||
if (binary_cmp)
|
if (binary_cmp)
|
||||||
return !stringcmp(&str_value, &item->str_value);
|
return !stringcmp(&str_value, &item->str_value);
|
||||||
return !sortcmp(&str_value, &item->str_value, collation.collation);
|
return (collation.collation == item->collation.collation &&
|
||||||
|
!sortcmp(&str_value, &item->str_value, collation.collation));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1611,15 +1611,6 @@ void Item_func_date_format::fix_length_and_dec()
|
|||||||
{ // Optimize the normal case
|
{ // Optimize the normal case
|
||||||
fixed_length=1;
|
fixed_length=1;
|
||||||
|
|
||||||
/*
|
|
||||||
Force case sensitive collation on format string.
|
|
||||||
This needed because format modifiers with different case,
|
|
||||||
for example %m and %M, have different meaning. Thus eq()
|
|
||||||
will distinguish them.
|
|
||||||
*/
|
|
||||||
args[1]->collation.set(
|
|
||||||
get_charset_by_csname(args[1]->collation.collation->csname,
|
|
||||||
MY_CS_BINSORT,MYF(0)), DERIVATION_COERCIBLE);
|
|
||||||
/*
|
/*
|
||||||
The result is a binary string (no reason to use collation->mbmaxlen
|
The result is a binary string (no reason to use collation->mbmaxlen
|
||||||
This is becasue make_date_time() only returns binary strings
|
This is becasue make_date_time() only returns binary strings
|
||||||
@ -1637,6 +1628,30 @@ void Item_func_date_format::fix_length_and_dec()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Item_func_date_format::eq(const Item *item, bool binary_cmp) const
|
||||||
|
{
|
||||||
|
Item_func_date_format *item_func;
|
||||||
|
if (item->type() != FUNC_ITEM)
|
||||||
|
return 0;
|
||||||
|
if (func_name() != ((Item_func*) item)->func_name())
|
||||||
|
return 0;
|
||||||
|
if (this == item)
|
||||||
|
return 1;
|
||||||
|
item_func= (Item_func_date_format*) item;
|
||||||
|
if (!args[0]->eq(item_func->args[0], binary_cmp))
|
||||||
|
return 0;
|
||||||
|
/*
|
||||||
|
We must compare format string case sensitive.
|
||||||
|
This needed because format modifiers with different case,
|
||||||
|
for example %m and %M, have different meaning.
|
||||||
|
*/
|
||||||
|
if (!args[1]->eq(item_func->args[1], 1))
|
||||||
|
return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint Item_func_date_format::format_length(const String *format)
|
uint Item_func_date_format::format_length(const String *format)
|
||||||
{
|
{
|
||||||
uint size=0;
|
uint size=0;
|
||||||
|
@ -537,6 +537,7 @@ public:
|
|||||||
{ return is_time_format ? "time_format" : "date_format"; }
|
{ return is_time_format ? "time_format" : "date_format"; }
|
||||||
void fix_length_and_dec();
|
void fix_length_and_dec();
|
||||||
uint format_length(const String *format);
|
uint format_length(const String *format);
|
||||||
|
bool eq(const Item *item, bool binary_cmp) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user