Annotation of embedaddon/php/ext/pdo/tests/bug_34630.phpt, revision 1.1.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>