Annotation of embedaddon/php/ext/pdo_pgsql/tests/bug48764.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Bug #48764 (PDO_pgsql::query always uses implicit prepared statements if v3 proto available)
! 3: --SKIPIF--
! 4: <?php
! 5: if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
! 6: require dirname(__FILE__) . '/config.inc';
! 7: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
! 8: PDOTest::skip();
! 9:
! 10: $db = PDOTest::factory();
! 11:
! 12: $client_version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
! 13: $server_version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
! 14:
! 15: if (version_compare($server_version, '7.4', '<') || version_compare($client_version, '7.4', '<')) {
! 16: die('skip');
! 17: }
! 18:
! 19: ?>
! 20: --FILE--
! 21: <?php
! 22: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
! 23: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
! 24: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
! 25:
! 26: echo "Test 1\n";
! 27: bug($db);
! 28:
! 29: echo "Test 2\n";
! 30: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
! 31: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 1));
! 32:
! 33: echo "Test 3\n";
! 34: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
! 35: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 1));
! 36:
! 37: echo "Test 4\n";
! 38: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
! 39: bug($db);
! 40: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
! 41: bug($db);
! 42:
! 43: echo "Test 5\n";
! 44: $db->setAttribute(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, 1);
! 45: bug($db);
! 46: $db->setAttribute(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, 0);
! 47: bug($db);
! 48:
! 49:
! 50: putenv('PDOTEST_ATTR='.serialize(array(
! 51: PDO::ATTR_EMULATE_PREPARES => 1,
! 52: )));
! 53: $db = PDOTest::factory('PDO', false);
! 54: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
! 55:
! 56: echo "Test 6\n";
! 57: bug($db);
! 58: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
! 59: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
! 60:
! 61:
! 62: putenv('PDOTEST_ATTR='.serialize(array(
! 63: PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 1,
! 64: )));
! 65:
! 66: $db = PDOTest::factory('PDO', false);
! 67: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
! 68:
! 69: echo "Test 7\n";
! 70: bug($db);
! 71: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
! 72: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
! 73:
! 74:
! 75: putenv('PDOTEST_ATTR='.serialize(array(
! 76: PDO::ATTR_EMULATE_PREPARES => 1,
! 77: PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 1,
! 78: )));
! 79:
! 80: $db = PDOTest::factory('PDO', false);
! 81: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
! 82:
! 83: echo "Test 8\n";
! 84: bug($db);
! 85: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
! 86: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
! 87: bug($db, array(
! 88: PDO::ATTR_EMULATE_PREPARES => 0,
! 89: PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0,
! 90: ));
! 91:
! 92:
! 93: putenv('PDOTEST_ATTR');
! 94:
! 95:
! 96: function bug($db, $options = array()) {
! 97: try {
! 98: $stmt = $db->prepare("SELECT ?", $options);
! 99: $stmt->execute(array(1));
! 100: echo "OK\n";
! 101: } catch (PDOException $e) {
! 102: // Indetermined data type when using native prepared statements
! 103: echo $e->getCode()."\n";
! 104: }
! 105: }
! 106:
! 107: --EXPECT--
! 108: Test 1
! 109: 42P18
! 110: Test 2
! 111: 42P18
! 112: OK
! 113: Test 3
! 114: 42P18
! 115: OK
! 116: Test 4
! 117: OK
! 118: 42P18
! 119: Test 5
! 120: OK
! 121: 42P18
! 122: Test 6
! 123: OK
! 124: 42P18
! 125: OK
! 126: Test 7
! 127: OK
! 128: OK
! 129: 42P18
! 130: Test 8
! 131: OK
! 132: OK
! 133: OK
! 134: 42P18
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>