summaryrefslogtreecommitdiff
path: root/ext/pdo_pgsql/tests
diff options
context:
space:
mode:
authorWez Furlong <wez@php.net>2005-11-29 02:11:39 +0000
committerWez Furlong <wez@php.net>2005-11-29 02:11:39 +0000
commit131033352d3a0d6ff59b9af4dbc8b2908ec30d11 (patch)
treea2f8329492c9484274cbe3a0831b013899908b39 /ext/pdo_pgsql/tests
parent2ad81f4584d81ce36c8071d3c1715257dd09f400 (diff)
downloadphp-git-131033352d3a0d6ff59b9af4dbc8b2908ec30d11.tar.gz
Added PDO::pgsqlLOBCreate(), PDO::pgsqlLOBOpen() and PDO::pgsqlLOBUnlink().
Diffstat (limited to 'ext/pdo_pgsql/tests')
-rw-r--r--ext/pdo_pgsql/tests/bug_33876.phpt1
-rw-r--r--ext/pdo_pgsql/tests/common.phpt1
-rw-r--r--ext/pdo_pgsql/tests/config.inc14
-rw-r--r--ext/pdo_pgsql/tests/large_objects.phpt61
4 files changed, 77 insertions, 0 deletions
diff --git a/ext/pdo_pgsql/tests/bug_33876.phpt b/ext/pdo_pgsql/tests/bug_33876.phpt
index 1184e7627e..725d44db9d 100644
--- a/ext/pdo_pgsql/tests/bug_33876.phpt
+++ b/ext/pdo_pgsql/tests/bug_33876.phpt
@@ -3,6 +3,7 @@ PDO PgSQL Bug #33876
--SKIPIF--
<?php
if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
PDOTest::skip();
?>
diff --git a/ext/pdo_pgsql/tests/common.phpt b/ext/pdo_pgsql/tests/common.phpt
index 383700904c..2ecc2025f0 100644
--- a/ext/pdo_pgsql/tests/common.phpt
+++ b/ext/pdo_pgsql/tests/common.phpt
@@ -5,6 +5,7 @@ Postgres
if (!extension_loaded('pdo_pgsql')) print 'skip'; ?>
--REDIRECTTEST--
# magic auto-configuration
+# Also update config.inc if you make changes here...
$config = array(
'TESTS' => 'ext/pdo/tests'
diff --git a/ext/pdo_pgsql/tests/config.inc b/ext/pdo_pgsql/tests/config.inc
new file mode 100644
index 0000000000..6d616cddb5
--- /dev/null
+++ b/ext/pdo_pgsql/tests/config.inc
@@ -0,0 +1,14 @@
+<?php # vim:se ft=php:
+if (false !== getenv('PDO_PGSQL_TEST_DSN')) {
+ # user set them from their shell
+ $config['ENV']['PDOTEST_DSN'] = getenv('PDO_PGSQL_TEST_DSN');
+ if (false !== getenv('PDO_PGSQL_TEST_ATTR')) {
+ $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_PGSQL_TEST_ATTR');
+ }
+} else {
+ $config['ENV']['PDOTEST_DSN'] = 'pgsql:host=localhost port=5432 dbname=test user=root password=';
+}
+
+foreach ($config['ENV'] as $k => $v) {
+ putenv("$k=$v");
+}
diff --git a/ext/pdo_pgsql/tests/large_objects.phpt b/ext/pdo_pgsql/tests/large_objects.phpt
new file mode 100644
index 0000000000..f6ee9e29c0
--- /dev/null
+++ b/ext/pdo_pgsql/tests/large_objects.phpt
@@ -0,0 +1,61 @@
+--TEST--
+PDO PgSQL Large Objects
+--SKIPIF--
+<?php # vim:se ft=php:
+if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
+require dirname(__FILE__) . '/config.inc';
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+PDOTest::skip();
+?>
+--FILE--
+<?php
+require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
+$db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
+$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
+
+$db->exec('CREATE TABLE test (blobid integer not null primary key, bloboid OID)');
+
+$db->beginTransaction();
+$oid = $db->pgsqlLOBCreate();
+try {
+$stm = $db->pgsqlLOBOpen($oid);
+fwrite($stm, "Hello dude\n");
+
+$stmt = $db->prepare("INSERT INTO test (blobid, bloboid) values (?, ?)");
+$stmt->bindValue(1, 1);
+/* bind as LOB; the oid from the pgsql stream will be inserted instead
+ * of the stream contents. Binding other streams will attempt to bind
+ * as bytea, and will most likely lead to an error.
+ * You can also just bind the $oid in as a string. */
+$stmt->bindParam(2, $stm, PDO::PARAM_LOB);
+$stmt->execute();
+$stm = null;
+
+/* Pull it out */
+$stmt = $db->prepare("SELECT * from test");
+$stmt->execute();
+$stmt->bindColumn('bloboid', $lob, PDO::PARAM_LOB);
+echo "Fetching:\n";
+while (($row = $stmt->fetch(PDO::FETCH_ASSOC))) {
+ var_dump($row['blobid']);
+ var_dump(stream_get_contents($lob));
+}
+echo "Fetched!\n";
+} catch (Exception $e) {
+ /* catch exceptions so that we can guarantee to clean
+ * up the LOB */
+ echo "Exception! at line ", $e->getLine(), "\n";
+ var_dump($e->getMessage());
+}
+
+/* Now to remove the large object from the database, so it doesn't
+ * linger and clutter up the storage */
+$db->pgsqlLOBUnlink($oid);
+
+--EXPECT--
+Fetching:
+int(1)
+string(11) "Hello dude
+"
+Fetched!