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