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
8f71e47a
Commit
8f71e47a
authored
Jul 10, 2006
by
gkodinov/kgeorge@macbook.gmz
Browse files
Options
Browse Files
Download
Plain Diff
Merge macbook.gmz:/Users/kgeorge/mysql/work/B14553-4.1-opt
into macbook.gmz:/Users/kgeorge/mysql/work/B14553-5.0-opt
parents
ece5fff4
893e9276
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
59 additions
and
2 deletions
+59
-2
mysql-test/r/odbc.result
mysql-test/r/odbc.result
+11
-0
mysql-test/r/rpl_insert_id.result
mysql-test/r/rpl_insert_id.result
+13
-0
mysql-test/t/odbc.test
mysql-test/t/odbc.test
+10
-0
mysql-test/t/rpl_insert_id.test
mysql-test/t/rpl_insert_id.test
+19
-0
sql/sql_class.cc
sql/sql_class.cc
+1
-0
sql/sql_class.h
sql/sql_class.h
+3
-0
sql/sql_select.cc
sql/sql_select.cc
+2
-2
No files found.
mysql-test/r/odbc.result
View file @
8f71e47a
...
...
@@ -14,3 +14,14 @@ explain select * from t1 where b is null;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
drop table t1;
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t1 VALUES (NULL);
SELECT sql_no_cache a, last_insert_id() FROM t1 WHERE a IS NULL;
a last_insert_id()
1 1
SELECT sql_no_cache a, last_insert_id() FROM t1 WHERE a IS NULL;
a last_insert_id()
SELECT sql_no_cache a, last_insert_id() FROM t1;
a last_insert_id()
1 1
DROP TABLE t1;
mysql-test/r/rpl_insert_id.result
View file @
8f71e47a
...
...
@@ -73,7 +73,20 @@ CREATE TABLE t1 ( a INT UNIQUE );
SET FOREIGN_KEY_CHECKS=0;
INSERT INTO t1 VALUES (1),(1);
ERROR 23000: Duplicate entry '1' for key 1
drop table if exists t1, t2;
create table t1(a int auto_increment, key(a));
create table t2(a int);
insert into t1 (a) values (null);
insert into t2 (a) select a from t1 where a is null;
insert into t2 (a) select a from t1 where a is null;
select * from t2;
a
1
select * from t2;
a
1
drop table t1;
drop table t2;
drop function if exists bug15728;
drop function if exists bug15728_insert;
drop table if exists t1, t2;
...
...
mysql-test/t/odbc.test
View file @
8f71e47a
...
...
@@ -21,4 +21,14 @@ select * from t1 where a is null;
explain
select
*
from
t1
where
b
is
null
;
drop
table
t1
;
#
# Bug #14553: NULL in WHERE resets LAST_INSERT_ID
#
CREATE
TABLE
t1
(
a
INT
AUTO_INCREMENT
PRIMARY
KEY
);
INSERT
INTO
t1
VALUES
(
NULL
);
SELECT
sql_no_cache
a
,
last_insert_id
()
FROM
t1
WHERE
a
IS
NULL
;
SELECT
sql_no_cache
a
,
last_insert_id
()
FROM
t1
WHERE
a
IS
NULL
;
SELECT
sql_no_cache
a
,
last_insert_id
()
FROM
t1
;
DROP
TABLE
t1
;
# End of 4.1 tests
mysql-test/t/rpl_insert_id.test
View file @
8f71e47a
...
...
@@ -77,6 +77,25 @@ sync_slave_with_master;
connection
master
;
drop
table
t1
;
sync_slave_with_master
;
#
# Bug#14553: NULL in WHERE resets LAST_INSERT_ID
#
connection
master
;
drop
table
if
exists
t1
,
t2
;
create
table
t1
(
a
int
auto_increment
,
key
(
a
));
create
table
t2
(
a
int
);
insert
into
t1
(
a
)
values
(
null
);
insert
into
t2
(
a
)
select
a
from
t1
where
a
is
null
;
insert
into
t2
(
a
)
select
a
from
t1
where
a
is
null
;
select
*
from
t2
;
sync_slave_with_master
;
connection
slave
;
select
*
from
t2
;
connection
master
;
drop
table
t1
;
drop
table
t2
;
sync_slave_with_master
;
# End of 4.1 tests
...
...
sql/sql_class.cc
View file @
8f71e47a
...
...
@@ -269,6 +269,7 @@ THD::THD()
tablespace_op
=
FALSE
;
ulong
tmp
=
sql_rnd_with_mutex
();
randominit
(
&
rand
,
tmp
+
(
ulong
)
&
rand
,
tmp
+
(
ulong
)
::
query_id
);
substitute_null_with_insert_id
=
FALSE
;
thr_lock_info_init
(
&
lock_info
);
/* safety: will be reset after start */
thr_lock_owner_init
(
&
main_lock_id
,
&
lock_info
);
}
...
...
sql/sql_class.h
View file @
8f71e47a
...
...
@@ -1321,6 +1321,8 @@ public:
bool
no_errors
,
password
,
is_fatal_error
;
bool
query_start_used
,
rand_used
,
time_zone_used
;
bool
last_insert_id_used
,
insert_id_used
,
clear_next_insert_id
;
/* for IS NULL => = last_insert_id() fix in remove_eq_conds() */
bool
substitute_null_with_insert_id
;
bool
in_lock_tables
;
bool
query_error
,
bootstrap
,
cleanup_done
;
bool
tmp_table_used
;
...
...
@@ -1452,6 +1454,7 @@ public:
{
last_insert_id
=
id_arg
;
insert_id_used
=
1
;
substitute_null_with_insert_id
=
TRUE
;
}
inline
ulonglong
insert_id
(
void
)
{
...
...
sql/sql_select.cc
View file @
8f71e47a
...
...
@@ -7854,7 +7854,7 @@ remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
Field
*
field
=
((
Item_field
*
)
args
[
0
])
->
field
;
if
(
field
->
flags
&
AUTO_INCREMENT_FLAG
&&
!
field
->
table
->
maybe_null
&&
(
thd
->
options
&
OPTION_AUTO_IS_NULL
)
&&
thd
->
insert_id
())
thd
->
insert_id
()
&&
thd
->
substitute_null_with_insert_id
)
{
#ifdef HAVE_QUERY_CACHE
query_cache_abort
(
&
thd
->
net
);
...
...
@@ -7873,7 +7873,7 @@ remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
*/
cond
->
fix_fields
(
thd
,
&
cond
);
}
thd
->
insert_id
(
0
);
// Clear for next request
thd
->
substitute_null_with_insert_id
=
FALSE
;
// Clear for next request
}
/* fix to replace 'NULL' dates with '0' (shreeve@uci.edu) */
else
if
(((
field
->
type
()
==
FIELD_TYPE_DATE
)
||
...
...
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