Annotation of embedaddon/php/ext/pdo/tests/bug_34630.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: PDO Common: Bug #34630 (inserting streams as LOBs)
! 3: --SKIPIF--
! 4: <?php # vim:ft=php
! 5: if (!extension_loaded('pdo')) die('skip');
! 6: $dir = getenv('REDIR_TEST_DIR');
! 7: if (false == $dir) die('skip no driver');
! 8: require_once $dir . 'pdo_test.inc';
! 9: PDOTest::skip();
! 10: ?>
! 11: --FILE--
! 12: <?php
! 13: if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.dirname(__FILE__) . '/../../pdo/tests/');
! 14: require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
! 15: $db = PDOTest::factory();
! 16:
! 17: $driver = $db->getAttribute(PDO::ATTR_DRIVER_NAME);
! 18: $is_oci = $driver == 'oci';
! 19:
! 20: if ($is_oci) {
! 21: $db->exec('CREATE TABLE test (id int NOT NULL PRIMARY KEY, val BLOB)');
! 22: } else {
! 23: $db->exec('CREATE TABLE test (id int NOT NULL PRIMARY KEY, val VARCHAR(256))');
! 24: }
! 25: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
! 26:
! 27: $fp = tmpfile();
! 28: fwrite($fp, "I am the LOB data");
! 29: rewind($fp);
! 30:
! 31: if ($is_oci) {
! 32: /* oracle is a bit different; you need to initiate a transaction otherwise
! 33: * the empty blob will be committed implicitly when the statement is
! 34: * executed */
! 35: $db->beginTransaction();
! 36: $insert = $db->prepare("insert into test (id, val) values (1, EMPTY_BLOB()) RETURNING val INTO :blob");
! 37: } else {
! 38: $insert = $db->prepare("insert into test (id, val) values (1, :blob)");
! 39: }
! 40: $insert->bindValue(':blob', $fp, PDO::PARAM_LOB);
! 41: $insert->execute();
! 42: $insert = null;
! 43:
! 44: $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
! 45: var_dump($db->query("SELECT * from test")->fetchAll(PDO::FETCH_ASSOC));
! 46:
! 47: ?>
! 48: --EXPECT--
! 49: array(1) {
! 50: [0]=>
! 51: array(2) {
! 52: ["id"]=>
! 53: string(1) "1"
! 54: ["val"]=>
! 55: string(17) "I am the LOB data"
! 56: }
! 57: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>