Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
66e65eff
Commit
66e65eff
authored
Jul 26, 2006
by
gkodinov/kgeorge@macbook.gmz
Browse files
Options
Browse Files
Download
Plain Diff
Merge macbook.gmz:/Users/kgeorge/mysql/work/B21019-4.1-opt
into macbook.gmz:/Users/kgeorge/mysql/work/B21019-5.0-opt
parents
67dd8dce
6766cfcd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
2 deletions
+46
-2
mysql-test/r/select.result
mysql-test/r/select.result
+26
-0
mysql-test/t/select.test
mysql-test/t/select.test
+15
-0
sql/sql_select.cc
sql/sql_select.cc
+5
-2
No files found.
mysql-test/r/select.result
View file @
66e65eff
...
@@ -3125,6 +3125,32 @@ select count(*)
...
@@ -3125,6 +3125,32 @@ 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 (a int, b int);
INSERT INTO t1 VALUES (1,1), (2,1), (4,10);
CREATE TABLE t2 (a int PRIMARY KEY, b int, KEY b (b));
INSERT INTO t2 VALUES (1,NULL), (2,10);
ALTER TABLE t1 ENABLE KEYS;
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 index b b 5 NULL 2 Using index
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
a b a b
1 NULL 1 1
1 NULL 2 1
1 NULL 4 10
2 10 4 10
EXPLAIN SELECT STRAIGHT_JOIN SQL_NO_CACHE COUNT(*) FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 index b b 5 NULL 2 Using index
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
SELECT STRAIGHT_JOIN SQL_NO_CACHE * FROM t2, t1 WHERE t1.b = t2.b OR t2.b IS NULL;
a b a b
1 NULL 1 1
1 NULL 2 1
1 NULL 4 10
2 10 4 10
DROP TABLE IF EXISTS 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);
...
...
mysql-test/t/select.test
View file @
66e65eff
...
@@ -2304,6 +2304,21 @@ INSERT INTO t1 VALUES (10);
...
@@ -2304,6 +2304,21 @@ INSERT INTO t1 VALUES (10);
SELECT
i
=
'1e+01'
,
i
=
1
e
+
01
,
i
in
(
1
e
+
01
,
1
e
+
01
),
i
in
(
'1e+01'
,
'1e+01'
)
FROM
t1
;
SELECT
i
=
'1e+01'
,
i
=
1
e
+
01
,
i
in
(
1
e
+
01
,
1
e
+
01
),
i
in
(
'1e+01'
,
'1e+01'
)
FROM
t1
;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
#
# Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
#
CREATE
TABLE
t1
(
a
int
,
b
int
);
INSERT
INTO
t1
VALUES
(
1
,
1
),
(
2
,
1
),
(
4
,
10
);
CREATE
TABLE
t2
(
a
int
PRIMARY
KEY
,
b
int
,
KEY
b
(
b
));
INSERT
INTO
t2
VALUES
(
1
,
NULL
),
(
2
,
10
);
ALTER
TABLE
t1
ENABLE
KEYS
;
EXPLAIN
SELECT
STRAIGHT_JOIN
SQL_NO_CACHE
COUNT
(
*
)
FROM
t2
,
t1
WHERE
t1
.
b
=
t2
.
b
OR
t2
.
b
IS
NULL
;
SELECT
STRAIGHT_JOIN
SQL_NO_CACHE
*
FROM
t2
,
t1
WHERE
t1
.
b
=
t2
.
b
OR
t2
.
b
IS
NULL
;
EXPLAIN
SELECT
STRAIGHT_JOIN
SQL_NO_CACHE
COUNT
(
*
)
FROM
t2
,
t1
WHERE
t1
.
b
=
t2
.
b
OR
t2
.
b
IS
NULL
;
SELECT
STRAIGHT_JOIN
SQL_NO_CACHE
*
FROM
t2
,
t1
WHERE
t1
.
b
=
t2
.
b
OR
t2
.
b
IS
NULL
;
DROP
TABLE
IF
EXISTS
t1
,
t2
;
# End of 4.1 tests
# End of 4.1 tests
#
#
...
...
sql/sql_select.cc
View file @
66e65eff
...
@@ -2490,8 +2490,11 @@ merge_key_fields(KEY_FIELD *start,KEY_FIELD *new_fields,KEY_FIELD *end,
...
@@ -2490,8 +2490,11 @@ merge_key_fields(KEY_FIELD *start,KEY_FIELD *new_fields,KEY_FIELD *end,
/* field = expression OR field IS NULL */
/* field = expression OR field IS NULL */
old
->
level
=
and_level
;
old
->
level
=
and_level
;
old
->
optimize
=
KEY_OPTIMIZE_REF_OR_NULL
;
old
->
optimize
=
KEY_OPTIMIZE_REF_OR_NULL
;
/* Remember the NOT NULL value */
/*
if
(
old
->
val
->
is_null
())
Remember the NOT NULL value unless the value does not depend
on other tables.
*/
if
(
!
old
->
val
->
used_tables
()
&&
old
->
val
->
is_null
())
old
->
val
=
new_fields
->
val
;
old
->
val
=
new_fields
->
val
;
/* The referred expression can be NULL: */
/* The referred expression can be NULL: */
old
->
null_rejecting
=
0
;
old
->
null_rejecting
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment