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>