author | Vladimir Marek <Vladimir.Marek@oracle.com> |
Wed, 27 Jul 2016 08:28:16 -0700 | |
changeset 6541 | e00afd505b4e |
permissions | -rw-r--r-- |
6541
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
1 |
https://rt.cpan.org/Public/Bug/Display.html?id=108000 |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
2 |
https://bugs.mysql.com/bug.php?id=78778 |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
3 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
4 |
The fix will be available in next DBD::mysql stable release |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
5 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
6 |
commit 85459c2f43243e41841180e554e4ef142d95d56b |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
7 |
Author: Michiel Beijen <[email protected]> |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
8 |
Date: Mon Aug 1 08:10:33 2016 +0200 |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
9 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
10 |
$dbh->{mysql_insertid} is cleared after SELECT |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
11 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
12 |
Apparently, on t/31insertid.t, there is one test that fails when |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
13 |
compiled against libmysqlclient 5.7 or up; issuing a SELECT statement |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
14 |
on the same database handle that previously executed an INSERT clears |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
15 |
$dbh->{mysql_insertid}, while previously this was retained. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
16 |
(https://rt.cpan.org/Ticket/Display.html?id=108000) |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
17 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
18 |
--- a/Changes |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
19 |
+++ b/Changes |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
20 |
@@ -1,3 +1,10 @@ |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
21 |
+2016-08-01 Patrick Galbraith, Michiel Beijen, DBI/DBD community (4.035_01) |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
22 |
+* Apparently, on t/31insertid.t, there is one test that fails when compiled |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
23 |
+ against libmysqlclient 5.7 or up; issuing a SELECT statement on the same |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
24 |
+ database handle that previously executed an INSERT clears |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
25 |
+ $dbh->{mysql_insertid}, while previously this was retained. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
26 |
+ (https://rt.cpan.org/Ticket/Display.html?id=108000) |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
27 |
+ |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
28 |
2016-07-09 Patrick Galbraith, Michiel Beijen, DBI/DBD community (4.035) |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
29 |
* Add DBI back to configure_requires, fix by miyagawa. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
30 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
31 |
diff --git a/lib/DBD/mysql.pm b/lib/DBD/mysql.pm |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
32 |
index 069e882..4830b9d 100644 |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
33 |
--- a/lib/DBD/mysql.pm |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
34 |
+++ b/lib/DBD/mysql.pm |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
35 |
@@ -1733,10 +1733,14 @@ have impact on the I<max_length> attribute. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
36 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
37 |
=item mysql_insertid |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
38 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
39 |
-MySQL has the ability to choose unique key values automatically. If this |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
40 |
-happened, the new ID will be stored in this attribute. An alternative |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
41 |
-way for accessing this attribute is via $dbh->{'mysql_insertid'}. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
42 |
-(Note we are using the $dbh in this case!) |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
43 |
+If the statement you executed performs an INSERT, and there is an AUTO_INCREMENT |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
44 |
+column in the table you inserted in, this attribute holds the value stored into |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
45 |
+the AUTO_INCREMENT column, if that value is automatically generated, by |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
46 |
+storing NULL or 0 or was specified as an explicit value. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
47 |
+ |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
48 |
+Typically, you'd access the value via $sth->{mysql_insertid}. The value can |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
49 |
+also be accessed via $dbh->{mysql_insertid} but this can easily |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
50 |
+produce incorrect results in case one database handle is shared. |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
51 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
52 |
=item mysql_is_blob |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
53 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
54 |
diff --git a/t/31insertid.t b/t/31insertid.t |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
55 |
index 18a6d3b..f00c5a4 100644 |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
56 |
--- a/t/31insertid.t |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
57 |
+++ b/t/31insertid.t |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
58 |
@@ -16,7 +16,7 @@ if ($@) { |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
59 |
plan skip_all => |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
60 |
"no database connection"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
61 |
} |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
62 |
-plan tests => 18; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
63 |
+plan tests => 19; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
64 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
65 |
ok $dbh->do('SET @@auto_increment_offset = 1'); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
66 |
ok $dbh->do('SET @@auto_increment_increment = 1'); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
67 |
@@ -38,7 +38,8 @@ ok defined $sth; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
68 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
69 |
ok $sth->execute("Jochen"); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
70 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
71 |
-is $dbh->{'mysql_insertid'}, 1, "insert id == $dbh->{mysql_insertid}"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
72 |
+is $sth->{mysql_insertid}, 1, "insert id == $sth->{mysql_insertid}"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
73 |
+is $dbh->{mysql_insertid}, 1, "insert id == $dbh->{mysql_insertid}"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
74 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
75 |
ok $sth->execute("Patrick"); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
76 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
77 |
@@ -53,12 +54,15 @@ ok ($max_id= $sth2->fetch()); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
78 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
79 |
ok defined $max_id; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
80 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
81 |
-cmp_ok $sth->{'mysql_insertid'}, '==', $max_id->[0], "sth insert id $sth->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
82 |
- |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
83 |
-cmp_ok $dbh->{'mysql_insertid'}, '==', $max_id->[0], "dbh insert id $dbh->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
84 |
+SKIP: { |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
85 |
+ skip 'using libmysqlclient 5.7 or up we now have an empty dbh insertid', |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
86 |
+ 1, if $dbh->{mysql_clientversion} >= 50700; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
87 |
+ cmp_ok $dbh->{mysql_insertid}, '==', $max_id->[0], |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
88 |
+ "dbh insert id $dbh->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
89 |
+} |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
90 |
+cmp_ok $sth->{mysql_insertid}, '==', $max_id->[0], |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
91 |
+ "sth insert id $sth->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31"; |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
92 |
|
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
93 |
ok $sth->finish(); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
94 |
- |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
95 |
ok $sth2->finish(); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
96 |
- |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
97 |
ok $dbh->disconnect(); |
e00afd505b4e
24384275 Make DBD::mysql use mysql 5.7
Vladimir Marek <Vladimir.Marek@oracle.com>
parents:
diff
changeset
|
98 |