#!perl -w
require
'lib.pl'
;
$|= 1;
use
vars
qw($table $test_dsn $test_user $test_passwd)
;
my
$dbh
;
eval
{
$dbh
= DBI->
connect
(
$test_dsn
,
$test_user
,
$test_passwd
,
{
RaiseError
=> 1,
PrintError
=> 1,
AutoCommit
=> 0 });};
if
($@) {
plan
skip_all
=>
"ERROR: $DBI::errstr. Can't continue test"
;
}
plan
tests
=> 30;
ok(
defined
$dbh
,
"Connected to database for key info tests"
);
ok(
$dbh
->
do
(
"DROP TABLE IF EXISTS $table"
),
"Dropped table"
);
ok(
$dbh
->
do
("CREATE TABLE
$table
(a
int
, b varchar(20), c
int
,
primary key (a,b))"),
"Created table $table"
);
my
$sth
=
$dbh
->primary_key_info(
undef
,
undef
,
$table
);
ok(
$sth
,
"Got primary key info"
);
my
$key_info
=
$sth
->fetchall_arrayref({});
is(
$key_info
->[0]->{TABLE_NAME},
"test_cubrid"
);
is(
$key_info
->[0]->{COLUMN_NAME},
"a"
);
is(
$key_info
->[0]->{KEY_SEQ}, 1);
is(
$key_info
->[0]->{PK_NAME},
"pk_test_cubrid_a_b"
);
is(
$key_info
->[1]->{TABLE_NAME},
"test_cubrid"
);
is(
$key_info
->[1]->{COLUMN_NAME},
"b"
);
is(
$key_info
->[1]->{KEY_SEQ}, 2);
is(
$key_info
->[1]->{PK_NAME},
"pk_test_cubrid_a_b"
);
is_deeply([
$dbh
->primary_key(
undef
,
undef
,
$table
) ], [
'a'
,
'b'
],
"Check primary_key results"
);
ok(
$dbh
->
do
(
"DROP TABLE $table"
),
"Dropped table"
);
ok(
$dbh
->
do
(
qq{DROP TABLE IF EXISTS child, parent}
),
"cleaning up"
);
ok(
$dbh
->
do
(
qq{CREATE TABLE parent(id INT NOT NULL,
PRIMARY KEY (id))}
));
ok(
$dbh
->
do
(
qq{CREATE TABLE child(id INT, parent_id INT,
FOREIGN KEY (parent_id)
REFERENCES parent(id) ON DELETE SET NULL)}
));
$sth
=
$dbh
->foreign_key_info(
undef
,
undef
,
'parent'
,
undef
,
undef
,
'child'
);
my
(
$info
) =
$sth
->fetchall_arrayref({});
is(
$info
->[0]->{PKTABLE_NAME},
"parent"
);
is(
$info
->[0]->{PKCOLUMN_NAME},
"id"
);
is(
$info
->[0]->{FKTABLE_NAME},
"child"
);
is(
$info
->[0]->{FKCOLUMN_NAME},
"parent_id"
);
$sth
=
$dbh
->foreign_key_info(
undef
,
undef
,
'parent'
,
undef
,
undef
,
undef
);
(
$info
)=
$sth
->fetchall_arrayref({});
is(
$info
->[0]->{PKTABLE_NAME},
"parent"
);
is(
$info
->[0]->{PKCOLUMN_NAME},
"id"
);
is(
$info
->[0]->{FKTABLE_NAME},
"child"
);
is(
$info
->[0]->{FKCOLUMN_NAME},
"parent_id"
);
$sth
=
$dbh
->foreign_key_info(
undef
,
undef
,
undef
,
undef
,
undef
,
'child'
);
(
$info
)=
$sth
->fetchall_arrayref({});
is(
$info
->[0]->{PKTABLE_NAME},
"parent"
);
is(
$info
->[0]->{PKCOLUMN_NAME},
"id"
);
is(
$info
->[0]->{FKTABLE_NAME},
"child"
);
is(
$info
->[0]->{FKCOLUMN_NAME},
"parent_id"
);
ok(
$dbh
->
do
(
qq{DROP TABLE IF EXISTS child, parent}
),
"cleaning up"
);
$dbh
->disconnect();