1
0
mirror of https://github.com/php/php-src.git synced 2026-04-01 21:22:13 +02:00
Files
archived-php-src/ext/pgsql/tests/28large_object_import_oid.phpt
George Peter Banyard 053a5fc141 Promote E_NOTICE to Value/TypeError in PostgreSQL extension
Add some tests to cover related codepaths.
With the small caveat that the ones in build_assignment_string()
still don't seem to be tested as it looks the condtions are checked
beforehand, might need some more investigation.

Closes GH-6226
2020-09-29 15:13:01 +01:00

98 lines
2.4 KiB
PHP

--TEST--
PostgreSQL import large object with given oid
--SKIPIF--
<?php
include("skipif.inc");
$v = pg_version($conn);
if (version_compare("8.4devel", $v["client"]) > 0) die("skip - requires pg client >= 8.4\n");
if (version_compare("8.4devel", $v["server"]) > 0) die("skip - requires pg server >= 8.4\n");
?>
--FILE--
<?php
include('config.inc');
$db = pg_connect($conn_str);
echo "import LO from int\n";
pg_exec($db, 'begin');
$oid = pg_lo_import($db, __FILE__, 21003);
if (!$oid) echo ("pg_lo_import() error\n");
if ($oid != 21003) echo ("pg_lo_import() wrong id\n");
pg_lo_unlink ($db, $oid);
pg_exec($db, 'commit');
echo "import LO from string\n";
pg_exec($db, 'begin');
$oid = pg_lo_import($db, __FILE__, "21004");
if (!$oid) echo ("pg_lo_import() error\n");
if ($oid != 21004) echo ("pg_lo_import() wrong id\n");
pg_lo_unlink ($db, $oid);
pg_exec($db, 'commit');
echo "import LO using default connection\n";
pg_exec('begin');
$oid = pg_lo_import($db, __FILE__, 21005);
if (!$oid) echo ("pg_lo_import() error\n");
if ($oid != 21005) echo ("pg_lo_import() wrong id\n");
pg_lo_unlink ($oid);
pg_exec('commit');
/* Invalide OID */
try {
pg_lo_import(__FILE__, -15);
} catch (\ValueError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import($db, __FILE__, -15);
} catch (\ValueError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import(__FILE__, 'giberrish');
} catch (\ValueError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import($db, __FILE__, 'giberrish');
} catch (\ValueError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import(__FILE__, true);
} catch (\TypeError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import($db, __FILE__, []);
} catch (\TypeError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import($db, __FILE__, new stdClass());
} catch (\TypeError $e) {
echo $e->getMessage(), \PHP_EOL;
}
try {
pg_lo_import($db, __FILE__, $db);
} catch (\TypeError $e) {
echo $e->getMessage(), \PHP_EOL;
}
echo "OK";
?>
--EXPECT--
import LO from int
import LO from string
import LO using default connection
Invalid OID value passed
Invalid OID value passed
Invalid OID value passed
Invalid OID value passed
OID value must be of type string|int, bool given
OID value must be of type string|int, array given
OID value must be of type string|int, stdClass given
OID value must be of type string|int, resource given
OK