-
Notifications
You must be signed in to change notification settings - Fork 75
/
Copy path31insertid.t
79 lines (58 loc) · 2.3 KB
/
31insertid.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
use strict;
use warnings;
use DBI;
use Test::More;
use vars qw($test_dsn $test_user $test_password);
use lib 't', '.';
require "lib.pl";
my $dbh;
eval{$dbh = DBI->connect($test_dsn, $test_user, $test_password,
{RaiseError => 1});};
if ($@) {
plan skip_all =>
"no database connection";
}
plan tests => 21;
SKIP: {
skip 'SET @@auto_increment_offset needs MySQL >= 5.0.2', 2 unless $dbh->{mysql_serverversion} >= 50002;
ok $dbh->do('SET @@auto_increment_offset = 1');
ok $dbh->do('SET @@auto_increment_increment = 1');
}
my $create = <<EOT;
CREATE TEMPORARY TABLE dbd_mysql_t31 (
id INT(3) PRIMARY KEY AUTO_INCREMENT NOT NULL,
name VARCHAR(64))
EOT
ok $dbh->do($create), "create dbd_mysql_t31";
my $query= "INSERT INTO dbd_mysql_t31 (name) VALUES (?)";
my $sth;
ok ($sth= $dbh->prepare($query));
ok defined $sth;
ok $sth->execute("Jochen");
is $sth->{mysql_insertid}, 1, "insert id == $sth->{mysql_insertid}";
is $dbh->{mysql_insertid}, 1, "insert id == $dbh->{mysql_insertid}";
is $dbh->last_insert_id(undef, undef, undef, undef), 1, "insert id == last_insert_id()";
ok $sth->execute("Patrick");
$dbh->ping();
SKIP: {
skip 'using libmysqlclient 5.7 or up we now have an empty dbh insertid',
1, if ($dbh->{mysql_clientversion} >= 50700 && $dbh->{mysql_clientversion} < 50718) || ($dbh->{mysql_clientversion} >= 60105 && $dbh->{mysql_clientversion} < 69999) || $dbh->{mysql_clientversion} == 80000;
is $dbh->last_insert_id(undef, undef, undef, undef), 2, "insert id == last_insert_id()";
}
ok (my $sth2= $dbh->prepare("SELECT max(id) FROM dbd_mysql_t31"));
ok defined $sth2;
ok $sth2->execute();
my $max_id;
ok ($max_id= $sth2->fetch());
ok defined $max_id;
SKIP: {
skip 'using libmysqlclient 5.7 below 5.7.18 we now have an empty dbh insertid',
1, if ($dbh->{mysql_clientversion} >= 50700 && $dbh->{mysql_clientversion} < 50718) || ($dbh->{mysql_clientversion} >= 60105 && $dbh->{mysql_clientversion} < 69999) || $dbh->{mysql_clientversion} == 80000;
cmp_ok $dbh->{mysql_insertid}, '==', $max_id->[0],
"dbh insert id $dbh->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31";
}
cmp_ok $sth->{mysql_insertid}, '==', $max_id->[0],
"sth insert id $sth->{'mysql_insertid'} == max(id) $max_id->[0] in dbd_mysql_t31";
ok $sth->finish();
ok $sth2->finish();
ok $dbh->disconnect();