Commit 56d22262 authored by unknown's avatar unknown

Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0

into sinisa.nasamreza.org:/mnt/work/mysql-4.0


sql/sql_acl.cc:
  Auto merged
parents 88a11303 7989bbb4
...@@ -58,6 +58,16 @@ skr 2 ...@@ -58,6 +58,16 @@ skr 2
test 1 test 1
test 2 test 2
drop table t1; drop table t1;
create table t1 (id int NOT NULL DEFAULT 8);
insert into t1 values(NULL);
Column 'id' cannot be null
insert into t1 values (1), (NULL), (2);
select * from t1;
id
1
8
2
drop table t1;
drop database if exists foo; drop database if exists foo;
create database foo; create database foo;
use foo; use foo;
......
...@@ -5,7 +5,24 @@ type int(11) DEFAULT '0' NOT NULL, ...@@ -5,7 +5,24 @@ type int(11) DEFAULT '0' NOT NULL,
event_id int(11) DEFAULT '0' NOT NULL, event_id int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (event_date,type,event_id) PRIMARY KEY (event_date,type,event_id)
); );
INSERT INTO t1 VALUES ('1999-07-10',100100,24),('1999-07-11',100100,25),('1999-07-13',100600,0),('1999-07-13',100600,4),('1999-07-13',100600,26),('1999-07-14',100600,10),('1999-07-15',100600,16),('1999-07-15',100800,45),('1999-07-15',101000,47),('1999-07-16',100800,46),('1999-07-20',100600,5),('1999-07-20',100600,27),('1999-07-21',100600,11),('1999-07-22',100600,17),('1999-07-23',100100,39),('1999-07-24',100100,39),('1999-07-24',100500,40),('1999-07-25',100100,39),('1999-07-27',100600,1),('1999-07-27',100600,6),('1999-07-27',100600,28),('1999-07-28',100600,12),('1999-07-29',100500,41),('1999-07-29',100600,18),('1999-07-30',100500,41),('1999-07-31',100500,41),('1999-08-01',100700,34),('1999-08-03',100600,7),('1999-08-03',100600,29),('1999-08-04',100600,13),('1999-08-05',100500,42),('1999-08-05',100600,19),('1999-08-06',100500,42),('1999-08-07',100500,42),('1999-08-08',100500,42),('1999-08-10',100600,2),('1999-08-10',100600,9),('1999-08-10',100600,30),('1999-08-11',100600,14),('1999-08-12',100600,20),('1999-08-17',100500,8),('1999-08-17',100600,31),('1999-08-18',100600,15),('1999-08-19',100600,22),('1999-08-24',100600,3),('1999-08-24',100600,32),('1999-08-27',100500,43),('1999-08-31',100600,33),('1999-09-17',100100,37),('1999-09-18',100100,37),('1999-09-19',100100,37),('2000-12-18',100700,38); INSERT INTO t1 VALUES ('1999-07-10',100100,24), ('1999-07-11',100100,25),
('1999-07-13',100600,0), ('1999-07-13',100600,4), ('1999-07-13',100600,26),
('1999-07-14',100600,10), ('1999-07-15',100600,16), ('1999-07-15',100800,45),
('1999-07-15',101000,47), ('1999-07-16',100800,46), ('1999-07-20',100600,5),
('1999-07-20',100600,27), ('1999-07-21',100600,11), ('1999-07-22',100600,17),
('1999-07-23',100100,39), ('1999-07-24',100100,39), ('1999-07-24',100500,40),
('1999-07-25',100100,39), ('1999-07-27',100600,1), ('1999-07-27',100600,6),
('1999-07-27',100600,28), ('1999-07-28',100600,12), ('1999-07-29',100500,41),
('1999-07-29',100600,18), ('1999-07-30',100500,41), ('1999-07-31',100500,41),
('1999-08-01',100700,34), ('1999-08-03',100600,7), ('1999-08-03',100600,29),
('1999-08-04',100600,13), ('1999-08-05',100500,42), ('1999-08-05',100600,19),
('1999-08-06',100500,42), ('1999-08-07',100500,42), ('1999-08-08',100500,42),
('1999-08-10',100600,2), ('1999-08-10',100600,9), ('1999-08-10',100600,30),
('1999-08-11',100600,14), ('1999-08-12',100600,20), ('1999-08-17',100500,8),
('1999-08-17',100600,31), ('1999-08-18',100600,15), ('1999-08-19',100600,22),
('1999-08-24',100600,3), ('1999-08-24',100600,32), ('1999-08-27',100500,43),
('1999-08-31',100600,33), ('1999-09-17',100100,37), ('1999-09-18',100100,37),
('1999-09-19',100100,37), ('2000-12-18',100700,38);
select event_date,type,event_id from t1 WHERE event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date; select event_date,type,event_id from t1 WHERE event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date;
event_date type event_id event_date type event_id
1999-07-10 100100 24 1999-07-10 100100 24
...@@ -35,35 +52,21 @@ CLOSED tinyint(4) DEFAULT '0' NOT NULL, ...@@ -35,35 +52,21 @@ CLOSED tinyint(4) DEFAULT '0' NOT NULL,
ISS_DATE date DEFAULT '0000-00-00' NOT NULL, ISS_DATE date DEFAULT '0000-00-00' NOT NULL,
PRIMARY KEY (PAPER_ID,YEAR,ISSUE) PRIMARY KEY (PAPER_ID,YEAR,ISSUE)
); );
INSERT INTO t1 VALUES (3,1999,34,0,'1999-07-12'); INSERT INTO t1 VALUES (3,1999,34,0,'1999-07-12'), (1,1999,111,0,'1999-03-23'),
INSERT INTO t1 VALUES (1,1999,111,0,'1999-03-23'); (1,1999,222,0,'1999-03-23'), (3,1999,33,0,'1999-07-12'),
INSERT INTO t1 VALUES (1,1999,222,0,'1999-03-23'); (3,1999,32,0,'1999-07-12'), (3,1999,31,0,'1999-07-12'),
INSERT INTO t1 VALUES (3,1999,33,0,'1999-07-12'); (3,1999,30,0,'1999-07-12'), (3,1999,29,0,'1999-07-12'),
INSERT INTO t1 VALUES (3,1999,32,0,'1999-07-12'); (3,1999,28,0,'1999-07-12'), (1,1999,40,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,31,0,'1999-07-12'); (1,1999,41,1,'1999-05-01'), (1,1999,42,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,30,0,'1999-07-12'); (1,1999,46,1,'1999-05-01'), (1,1999,47,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,29,0,'1999-07-12'); (1,1999,48,1,'1999-05-01'), (1,1999,49,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,28,0,'1999-07-12'); (1,1999,50,0,'1999-05-01'), (1,1999,51,0,'1999-05-01'),
INSERT INTO t1 VALUES (1,1999,40,1,'1999-05-01'); (1,1999,200,0,'1999-06-28'), (1,1999,52,0,'1999-06-28'),
INSERT INTO t1 VALUES (1,1999,41,1,'1999-05-01'); (1,1999,53,0,'1999-06-28'), (1,1999,54,0,'1999-06-28'),
INSERT INTO t1 VALUES (1,1999,42,1,'1999-05-01'); (1,1999,55,0,'1999-06-28'), (1,1999,56,0,'1999-07-01'),
INSERT INTO t1 VALUES (1,1999,46,1,'1999-05-01'); (1,1999,57,0,'1999-07-01'), (1,1999,58,0,'1999-07-01'),
INSERT INTO t1 VALUES (1,1999,47,1,'1999-05-01'); (1,1999,59,0,'1999-07-01'), (1,1999,60,0,'1999-07-01'),
INSERT INTO t1 VALUES (1,1999,48,1,'1999-05-01'); (3,1999,35,0,'1999-07-12');
INSERT INTO t1 VALUES (1,1999,49,1,'1999-05-01');
INSERT INTO t1 VALUES (1,1999,50,0,'1999-05-01');
INSERT INTO t1 VALUES (1,1999,51,0,'1999-05-01');
INSERT INTO t1 VALUES (1,1999,200,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,52,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,53,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,54,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,55,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,56,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,57,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,58,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,59,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,60,0,'1999-07-01');
INSERT INTO t1 VALUES (3,1999,35,0,'1999-07-12');
select YEAR,ISSUE from t1 where PAPER_ID=3 and (YEAR>1999 or (YEAR=1999 and ISSUE>28)) order by YEAR,ISSUE; select YEAR,ISSUE from t1 where PAPER_ID=3 and (YEAR>1999 or (YEAR=1999 and ISSUE>28)) order by YEAR,ISSUE;
YEAR ISSUE YEAR ISSUE
1999 29 1999 29
...@@ -88,7 +91,12 @@ PRIMARY KEY (id), ...@@ -88,7 +91,12 @@ PRIMARY KEY (id),
KEY parent_id (parent_id), KEY parent_id (parent_id),
KEY level (level) KEY level (level)
); );
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2); INSERT INTO t1 VALUES (1,0,0), (3,1,1), (4,1,1), (8,2,2), (9,2,2), (17,3,2),
(22,4,2), (24,4,2), (28,5,2), (29,5,2), (30,5,2), (31,6,2), (32,6,2), (33,6,2),
(203,7,2), (202,7,2), (20,3,2), (157,0,0), (193,5,2), (40,7,2), (2,1,1),
(15,2,2), (6,1,1), (34,6,2), (35,6,2), (16,3,2), (7,1,1), (36,7,2), (18,3,2),
(26,5,2), (27,5,2), (183,4,2), (38,7,2), (25,5,2), (37,7,2), (21,4,2),
(19,3,2), (5,1,1), (179,5,2);
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1; SELECT * FROM t1 WHERE level = 1 AND parent_id = 1;
id parent_id level id parent_id level
3 1 1 3 1 1
...@@ -207,3 +215,14 @@ select count(*) from t1 where art = 'J'; ...@@ -207,3 +215,14 @@ select count(*) from t1 where art = 'J';
count(*) count(*)
213 213
drop table t1; drop table t1;
create table t1 ( id1 int not null, id2 int not null, idnull int null, c char(20), primary key (id1,id2));
insert into t1 values (0,1,NULL,"aaa"), (1,1,NULL,"aaa"), (2,1,NULL,"aaa"),
(3,1,NULL,"aaa"), (4,1,NULL,"aaa"), (5,1,NULL,"aaa"),
(6,1,NULL,"aaa"), (7,1,NULL,"aaa"), (8,1,NULL,"aaa"),
(9,1,NULL,"aaa"), (10,1,NULL,"aaa"), (11,1,NULL,"aaa"),
(12,1,NULL,"aaa"), (13,1,NULL,"aaa"), (14,1,NULL,"aaa"),
(15,1,NULL,"aaa"), (16,1,NULL,"aaa"), (17,1,NULL,"aaa"),
(18,1,NULL,"aaa"), (19,1,NULL,"aaa"), (20,1,NULL,"aaa");
select a.id1, b.idnull from t1 as a, t1 as b where a.id2=1 and a.id1=1 and b.id1=a.idnull order by b.id2 desc limit 1;
id1 idnull
drop table t1;
...@@ -50,6 +50,17 @@ insert into t1 values ('rts',NULL),('rts',NULL),('test',NULL); ...@@ -50,6 +50,17 @@ insert into t1 values ('rts',NULL),('rts',NULL),('test',NULL);
select * from t1; select * from t1;
drop table t1; drop table t1;
#
#Test of behaviour with INSERT VALUES (NULL)
#
create table t1 (id int NOT NULL DEFAULT 8);
-- error 1048
insert into t1 values(NULL);
insert into t1 values (1), (NULL), (2);
select * from t1;
drop table t1;
# #
# Test of mysqld crash with fully qualified column names # Test of mysqld crash with fully qualified column names
# #
...@@ -60,3 +71,4 @@ use foo; ...@@ -60,3 +71,4 @@ use foo;
create table t1 (c int); create table t1 (c int);
insert into foo.t1 set foo.t1.c = '1'; insert into foo.t1 set foo.t1.c = '1';
drop database foo; drop database foo;
# #
# Problem med range optimizer # Problem with range optimizer
# #
drop table if exists t1; drop table if exists t1;
...@@ -10,7 +10,24 @@ CREATE TABLE t1 ( ...@@ -10,7 +10,24 @@ CREATE TABLE t1 (
PRIMARY KEY (event_date,type,event_id) PRIMARY KEY (event_date,type,event_id)
); );
INSERT INTO t1 VALUES ('1999-07-10',100100,24),('1999-07-11',100100,25),('1999-07-13',100600,0),('1999-07-13',100600,4),('1999-07-13',100600,26),('1999-07-14',100600,10),('1999-07-15',100600,16),('1999-07-15',100800,45),('1999-07-15',101000,47),('1999-07-16',100800,46),('1999-07-20',100600,5),('1999-07-20',100600,27),('1999-07-21',100600,11),('1999-07-22',100600,17),('1999-07-23',100100,39),('1999-07-24',100100,39),('1999-07-24',100500,40),('1999-07-25',100100,39),('1999-07-27',100600,1),('1999-07-27',100600,6),('1999-07-27',100600,28),('1999-07-28',100600,12),('1999-07-29',100500,41),('1999-07-29',100600,18),('1999-07-30',100500,41),('1999-07-31',100500,41),('1999-08-01',100700,34),('1999-08-03',100600,7),('1999-08-03',100600,29),('1999-08-04',100600,13),('1999-08-05',100500,42),('1999-08-05',100600,19),('1999-08-06',100500,42),('1999-08-07',100500,42),('1999-08-08',100500,42),('1999-08-10',100600,2),('1999-08-10',100600,9),('1999-08-10',100600,30),('1999-08-11',100600,14),('1999-08-12',100600,20),('1999-08-17',100500,8),('1999-08-17',100600,31),('1999-08-18',100600,15),('1999-08-19',100600,22),('1999-08-24',100600,3),('1999-08-24',100600,32),('1999-08-27',100500,43),('1999-08-31',100600,33),('1999-09-17',100100,37),('1999-09-18',100100,37),('1999-09-19',100100,37),('2000-12-18',100700,38); INSERT INTO t1 VALUES ('1999-07-10',100100,24), ('1999-07-11',100100,25),
('1999-07-13',100600,0), ('1999-07-13',100600,4), ('1999-07-13',100600,26),
('1999-07-14',100600,10), ('1999-07-15',100600,16), ('1999-07-15',100800,45),
('1999-07-15',101000,47), ('1999-07-16',100800,46), ('1999-07-20',100600,5),
('1999-07-20',100600,27), ('1999-07-21',100600,11), ('1999-07-22',100600,17),
('1999-07-23',100100,39), ('1999-07-24',100100,39), ('1999-07-24',100500,40),
('1999-07-25',100100,39), ('1999-07-27',100600,1), ('1999-07-27',100600,6),
('1999-07-27',100600,28), ('1999-07-28',100600,12), ('1999-07-29',100500,41),
('1999-07-29',100600,18), ('1999-07-30',100500,41), ('1999-07-31',100500,41),
('1999-08-01',100700,34), ('1999-08-03',100600,7), ('1999-08-03',100600,29),
('1999-08-04',100600,13), ('1999-08-05',100500,42), ('1999-08-05',100600,19),
('1999-08-06',100500,42), ('1999-08-07',100500,42), ('1999-08-08',100500,42),
('1999-08-10',100600,2), ('1999-08-10',100600,9), ('1999-08-10',100600,30),
('1999-08-11',100600,14), ('1999-08-12',100600,20), ('1999-08-17',100500,8),
('1999-08-17',100600,31), ('1999-08-18',100600,15), ('1999-08-19',100600,22),
('1999-08-24',100600,3), ('1999-08-24',100600,32), ('1999-08-27',100500,43),
('1999-08-31',100600,33), ('1999-09-17',100100,37), ('1999-09-18',100100,37),
('1999-09-19',100100,37), ('2000-12-18',100700,38);
select event_date,type,event_id from t1 WHERE event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date; select event_date,type,event_id from t1 WHERE event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date;
explain select event_date,type,event_id from t1 WHERE type = 100601 and event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date; explain select event_date,type,event_id from t1 WHERE type = 100601 and event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date;
...@@ -25,35 +42,21 @@ CREATE TABLE t1 ( ...@@ -25,35 +42,21 @@ CREATE TABLE t1 (
ISS_DATE date DEFAULT '0000-00-00' NOT NULL, ISS_DATE date DEFAULT '0000-00-00' NOT NULL,
PRIMARY KEY (PAPER_ID,YEAR,ISSUE) PRIMARY KEY (PAPER_ID,YEAR,ISSUE)
); );
INSERT INTO t1 VALUES (3,1999,34,0,'1999-07-12'); INSERT INTO t1 VALUES (3,1999,34,0,'1999-07-12'), (1,1999,111,0,'1999-03-23'),
INSERT INTO t1 VALUES (1,1999,111,0,'1999-03-23'); (1,1999,222,0,'1999-03-23'), (3,1999,33,0,'1999-07-12'),
INSERT INTO t1 VALUES (1,1999,222,0,'1999-03-23'); (3,1999,32,0,'1999-07-12'), (3,1999,31,0,'1999-07-12'),
INSERT INTO t1 VALUES (3,1999,33,0,'1999-07-12'); (3,1999,30,0,'1999-07-12'), (3,1999,29,0,'1999-07-12'),
INSERT INTO t1 VALUES (3,1999,32,0,'1999-07-12'); (3,1999,28,0,'1999-07-12'), (1,1999,40,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,31,0,'1999-07-12'); (1,1999,41,1,'1999-05-01'), (1,1999,42,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,30,0,'1999-07-12'); (1,1999,46,1,'1999-05-01'), (1,1999,47,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,29,0,'1999-07-12'); (1,1999,48,1,'1999-05-01'), (1,1999,49,1,'1999-05-01'),
INSERT INTO t1 VALUES (3,1999,28,0,'1999-07-12'); (1,1999,50,0,'1999-05-01'), (1,1999,51,0,'1999-05-01'),
INSERT INTO t1 VALUES (1,1999,40,1,'1999-05-01'); (1,1999,200,0,'1999-06-28'), (1,1999,52,0,'1999-06-28'),
INSERT INTO t1 VALUES (1,1999,41,1,'1999-05-01'); (1,1999,53,0,'1999-06-28'), (1,1999,54,0,'1999-06-28'),
INSERT INTO t1 VALUES (1,1999,42,1,'1999-05-01'); (1,1999,55,0,'1999-06-28'), (1,1999,56,0,'1999-07-01'),
INSERT INTO t1 VALUES (1,1999,46,1,'1999-05-01'); (1,1999,57,0,'1999-07-01'), (1,1999,58,0,'1999-07-01'),
INSERT INTO t1 VALUES (1,1999,47,1,'1999-05-01'); (1,1999,59,0,'1999-07-01'), (1,1999,60,0,'1999-07-01'),
INSERT INTO t1 VALUES (1,1999,48,1,'1999-05-01'); (3,1999,35,0,'1999-07-12');
INSERT INTO t1 VALUES (1,1999,49,1,'1999-05-01');
INSERT INTO t1 VALUES (1,1999,50,0,'1999-05-01');
INSERT INTO t1 VALUES (1,1999,51,0,'1999-05-01');
INSERT INTO t1 VALUES (1,1999,200,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,52,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,53,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,54,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,55,0,'1999-06-28');
INSERT INTO t1 VALUES (1,1999,56,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,57,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,58,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,59,0,'1999-07-01');
INSERT INTO t1 VALUES (1,1999,60,0,'1999-07-01');
INSERT INTO t1 VALUES (3,1999,35,0,'1999-07-12');
select YEAR,ISSUE from t1 where PAPER_ID=3 and (YEAR>1999 or (YEAR=1999 and ISSUE>28)) order by YEAR,ISSUE; select YEAR,ISSUE from t1 where PAPER_ID=3 and (YEAR>1999 or (YEAR=1999 and ISSUE>28)) order by YEAR,ISSUE;
check table t1; check table t1;
repair table t1; repair table t1;
...@@ -67,7 +70,12 @@ CREATE TABLE t1 ( ...@@ -67,7 +70,12 @@ CREATE TABLE t1 (
KEY parent_id (parent_id), KEY parent_id (parent_id),
KEY level (level) KEY level (level)
); );
INSERT INTO t1 VALUES (1,0,0),(3,1,1),(4,1,1),(8,2,2),(9,2,2),(17,3,2),(22,4,2),(24,4,2),(28,5,2),(29,5,2),(30,5,2),(31,6,2),(32,6,2),(33,6,2),(203,7,2),(202,7,2),(20,3,2),(157,0,0),(193,5,2),(40,7,2),(2,1,1),(15,2,2),(6,1,1),(34,6,2),(35,6,2),(16,3,2),(7,1,1),(36,7,2),(18,3,2),(26,5,2),(27,5,2),(183,4,2),(38,7,2),(25,5,2),(37,7,2),(21,4,2),(19,3,2),(5,1,1),(179,5,2); INSERT INTO t1 VALUES (1,0,0), (3,1,1), (4,1,1), (8,2,2), (9,2,2), (17,3,2),
(22,4,2), (24,4,2), (28,5,2), (29,5,2), (30,5,2), (31,6,2), (32,6,2), (33,6,2),
(203,7,2), (202,7,2), (20,3,2), (157,0,0), (193,5,2), (40,7,2), (2,1,1),
(15,2,2), (6,1,1), (34,6,2), (35,6,2), (16,3,2), (7,1,1), (36,7,2), (18,3,2),
(26,5,2), (27,5,2), (183,4,2), (38,7,2), (25,5,2), (37,7,2), (21,4,2),
(19,3,2), (5,1,1), (179,5,2);
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1; SELECT * FROM t1 WHERE level = 1 AND parent_id = 1;
# The following select returned 0 rows in 3.23.8 # The following select returned 0 rows in 3.23.8
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1 order by id; SELECT * FROM t1 WHERE level = 1 AND parent_id = 1 order by id;
...@@ -163,3 +171,15 @@ select count(*) from t1 where art = 'j' or art = 'J'; ...@@ -163,3 +171,15 @@ select count(*) from t1 where art = 'j' or art = 'J';
select count(*) from t1 where art = 'j'; select count(*) from t1 where art = 'j';
select count(*) from t1 where art = 'J'; select count(*) from t1 where art = 'J';
drop table t1; drop table t1;
create table t1 ( id1 int not null, id2 int not null, idnull int null, c char(20), primary key (id1,id2));
insert into t1 values (0,1,NULL,"aaa"), (1,1,NULL,"aaa"), (2,1,NULL,"aaa"),
(3,1,NULL,"aaa"), (4,1,NULL,"aaa"), (5,1,NULL,"aaa"),
(6,1,NULL,"aaa"), (7,1,NULL,"aaa"), (8,1,NULL,"aaa"),
(9,1,NULL,"aaa"), (10,1,NULL,"aaa"), (11,1,NULL,"aaa"),
(12,1,NULL,"aaa"), (13,1,NULL,"aaa"), (14,1,NULL,"aaa"),
(15,1,NULL,"aaa"), (16,1,NULL,"aaa"), (17,1,NULL,"aaa"),
(18,1,NULL,"aaa"), (19,1,NULL,"aaa"), (20,1,NULL,"aaa");
select a.id1, b.idnull from t1 as a, t1 as b where a.id2=1 and a.id1=1 and b.id1=a.idnull order by b.id2 desc limit 1;
drop table t1;
...@@ -72,10 +72,12 @@ class Field { ...@@ -72,10 +72,12 @@ class Field {
virtual void reset_fields() {} virtual void reset_fields() {}
virtual void set_default() virtual void set_default()
{ {
memcpy(ptr, ptr + table->rec_buff_length, pack_length()); my_ptrdiff_t offset = (my_ptrdiff_t) (table->record[2] -
table->record[0]);
memcpy(ptr, ptr + offset, pack_length());
if (null_ptr) if (null_ptr)
*null_ptr= ((*null_ptr & (uchar) ~null_bit) | *null_ptr= ((*null_ptr & (uchar) ~null_bit) |
null_ptr[table->rec_buff_length] & null_bit); null_ptr[offset] & null_bit);
} }
virtual bool binary() const { return 1; } virtual bool binary() const { return 1; }
virtual bool zero_pack() const { return 1; } virtual bool zero_pack() const { return 1; }
......
...@@ -118,7 +118,7 @@ set_field_to_null(Field *field) ...@@ -118,7 +118,7 @@ set_field_to_null(Field *field)
field->reset(); field->reset();
return 0; return 0;
} }
field->reset(); field->set_default();
if (current_thd->count_cuted_fields) if (current_thd->count_cuted_fields)
{ {
current_thd->cuted_fields++; // Increment error counter current_thd->cuted_fields++; // Increment error counter
...@@ -170,7 +170,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions) ...@@ -170,7 +170,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
((Field_timestamp*) field)->set_time(); ((Field_timestamp*) field)->set_time();
return 0; // Ok to set time to NULL return 0; // Ok to set time to NULL
} }
field->reset(); field->set_default();
if (field == field->table->next_number_field) if (field == field->table->next_number_field)
return 0; // field is set in handler.cc return 0; // field is set in handler.cc
if (current_thd->count_cuted_fields) if (current_thd->count_cuted_fields)
......
...@@ -2408,9 +2408,13 @@ QUICK_SELECT *get_quick_select_for_ref(TABLE *table, TABLE_REF *ref) ...@@ -2408,9 +2408,13 @@ QUICK_SELECT *get_quick_select_for_ref(TABLE *table, TABLE_REF *ref)
if (!quick) if (!quick)
return 0; return 0;
if (cp_buffer_from_ref(ref))
return quick; /* empty range */
QUICK_RANGE *range= new QUICK_RANGE(); QUICK_RANGE *range= new QUICK_RANGE();
if (!range || cp_buffer_from_ref(ref)) if (!range)
goto err; goto err;
range->min_key=range->max_key=(char*) ref->key_buff; range->min_key=range->max_key=(char*) ref->key_buff;
range->min_length=range->max_length=ref->key_length; range->min_length=range->max_length=ref->key_length;
range->flag= ((ref->key_length == key_info->key_length && range->flag= ((ref->key_length == key_info->key_length &&
......
...@@ -552,7 +552,9 @@ ulong acl_getroot(THD *thd, const char *host, const char *ip, const char *user, ...@@ -552,7 +552,9 @@ ulong acl_getroot(THD *thd, const char *host, const char *ip, const char *user,
We need to check for absence of SSL because without SSL We need to check for absence of SSL because without SSL
we should reject connection. we should reject connection.
*/ */
if (vio_type(vio) == VIO_TYPE_SSL && SSL_get_peer_certificate(vio->ssl_)) if (vio_type(vio) == VIO_TYPE_SSL &&
SSL_get_verify_result(vio->ssl_) == X509_V_OK &&
SSL_get_peer_certificate(vio->ssl_))
user_access=acl_user->access; user_access=acl_user->access;
break; break;
case SSL_TYPE_SPECIFIED: /* Client should have specified attrib */ case SSL_TYPE_SPECIFIED: /* Client should have specified attrib */
...@@ -560,7 +562,8 @@ ulong acl_getroot(THD *thd, const char *host, const char *ip, const char *user, ...@@ -560,7 +562,8 @@ ulong acl_getroot(THD *thd, const char *host, const char *ip, const char *user,
We need to check for absence of SSL because without SSL We need to check for absence of SSL because without SSL
we should reject connection. we should reject connection.
*/ */
if (vio_type(vio) == VIO_TYPE_SSL) if (vio_type(vio) == VIO_TYPE_SSL &&
SSL_get_verify_result(vio->ssl_) == X509_V_OK)
{ {
if (acl_user->ssl_cipher) if (acl_user->ssl_cipher)
{ {
......
...@@ -287,8 +287,7 @@ int sslaccept(struct st_VioSSLAcceptorFd* ptr, Vio* vio, long timeout) ...@@ -287,8 +287,7 @@ int sslaccept(struct st_VioSSLAcceptorFd* ptr, Vio* vio, long timeout)
SSL_SESSION_set_timeout(SSL_get_session(vio->ssl_), timeout); SSL_SESSION_set_timeout(SSL_get_session(vio->ssl_), timeout);
SSL_set_fd(vio->ssl_,vio->sd); SSL_set_fd(vio->ssl_,vio->sd);
SSL_set_accept_state(vio->ssl_); SSL_set_accept_state(vio->ssl_);
if (SSL_do_handshake(vio->ssl_) < 1 || if (SSL_do_handshake(vio->ssl_) < 1)
SSL_get_verify_result(vio->ssl_) != X509_V_OK)
{ {
DBUG_PRINT("error", ("SSL_do_handshake failure")); DBUG_PRINT("error", ("SSL_do_handshake failure"));
report_errors(); report_errors();
...@@ -361,8 +360,7 @@ int sslconnect(struct st_VioSSLConnectorFd* ptr, Vio* vio, long timeout) ...@@ -361,8 +360,7 @@ int sslconnect(struct st_VioSSLConnectorFd* ptr, Vio* vio, long timeout)
SSL_SESSION_set_timeout(SSL_get_session(vio->ssl_), timeout); SSL_SESSION_set_timeout(SSL_get_session(vio->ssl_), timeout);
SSL_set_fd (vio->ssl_, vio->sd); SSL_set_fd (vio->ssl_, vio->sd);
SSL_set_connect_state(vio->ssl_); SSL_set_connect_state(vio->ssl_);
if (SSL_do_handshake(vio->ssl_) < 1 || if (SSL_do_handshake(vio->ssl_) < 1)
SSL_get_verify_result(vio->ssl_) != X509_V_OK)
{ {
DBUG_PRINT("error", ("SSL_do_handshake failure")); DBUG_PRINT("error", ("SSL_do_handshake failure"));
report_errors(); report_errors();
......
...@@ -178,6 +178,11 @@ vio_verify_callback(int ok, X509_STORE_CTX *ctx) ...@@ -178,6 +178,11 @@ vio_verify_callback(int ok, X509_STORE_CTX *ctx)
/************************ VioSSLConnectorFd **********************************/ /************************ VioSSLConnectorFd **********************************/
/*
TODO:
Add option --verify to mysql to be able to change verification mode
*/
struct st_VioSSLConnectorFd * struct st_VioSSLConnectorFd *
new_VioSSLConnectorFd(const char* key_file, new_VioSSLConnectorFd(const char* key_file,
const char* cert_file, const char* cert_file,
...@@ -185,7 +190,7 @@ new_VioSSLConnectorFd(const char* key_file, ...@@ -185,7 +190,7 @@ new_VioSSLConnectorFd(const char* key_file,
const char* ca_path, const char* ca_path,
const char* cipher) const char* cipher)
{ {
int verify = SSL_VERIFY_PEER; int verify = SSL_VERIFY_NONE;
struct st_VioSSLConnectorFd* ptr; struct st_VioSSLConnectorFd* ptr;
int result; int result;
DH *dh=NULL; DH *dh=NULL;
...@@ -264,7 +269,10 @@ new_VioSSLConnectorFd(const char* key_file, ...@@ -264,7 +269,10 @@ new_VioSSLConnectorFd(const char* key_file,
/************************ VioSSLAcceptorFd **********************************/ /************************ VioSSLAcceptorFd **********************************/
/*
TODO:
Add option --verify to mysqld to be able to change verification mode
*/
struct st_VioSSLAcceptorFd* struct st_VioSSLAcceptorFd*
new_VioSSLAcceptorFd(const char *key_file, new_VioSSLAcceptorFd(const char *key_file,
const char *cert_file, const char *cert_file,
...@@ -273,7 +281,6 @@ new_VioSSLAcceptorFd(const char *key_file, ...@@ -273,7 +281,6 @@ new_VioSSLAcceptorFd(const char *key_file,
const char *cipher) const char *cipher)
{ {
int verify = (SSL_VERIFY_PEER | int verify = (SSL_VERIFY_PEER |
SSL_VERIFY_FAIL_IF_NO_PEER_CERT |
SSL_VERIFY_CLIENT_ONCE); SSL_VERIFY_CLIENT_ONCE);
struct st_VioSSLAcceptorFd* ptr; struct st_VioSSLAcceptorFd* ptr;
int result; int result;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment