| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 55f7303 commit 94dc6ae
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -38,8 +38,7 @@ if %errorlevel% neq 0 exit /b 3 | |||
| 38 | 38 | rem setup PostgreSQL related exts | |
| 39 | 39 | set PGUSER=postgres | |
| 40 | 40 | set PGPASSWORD=Password12! | |
| 41 | - rem set PGSQL_TEST_CONNSTR=host=127.0.0.1 dbname=test port=5432 user=postgres password=Password12! | ||
| 42 | - echo ^<?php $conn_str = "host=127.0.0.1 dbname=test port=5432 user=%PGUSER% password=%PGPASSWORD%"; ?^> >> "./ext/pgsql/tests/config.inc" | ||
| 41 | + set PGSQL_TEST_CONNSTR=host=127.0.0.1 dbname=test port=5432 user=%PGUSER% password=%PGPASSWORD% | ||
| 43 | 42 | set PDO_PGSQL_TEST_DSN=pgsql:host=127.0.0.1 port=5432 dbname=test user=%PGUSER% password=%PGPASSWORD% | |
| 44 | 43 | set TMP_POSTGRESQL_BIN=%PGBIN% | |
| 45 | 44 | "%TMP_POSTGRESQL_BIN%\createdb.exe" test | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1873,7 +1873,10 @@ static void php_pgsql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, zend_long result_ | |||
| 1873 | 1873 | zval dataset; | |
| 1874 | 1874 | ||
| 1875 | 1875 | ZVAL_COPY_VALUE(&dataset, return_value); | |
| 1876 | - object_init_ex(return_value, ce); | ||
| 1876 | + zend_result obj_initialized = object_init_ex(return_value, ce); | ||
| 1877 | + if (UNEXPECTED(obj_initialized == FAILURE)) { | ||
| 1878 | + RETURN_THROWS(); | ||
| 1879 | + } | ||
| 1877 | 1880 | if (!ce->default_properties_count && !ce->__set) { | |
| 1878 | 1881 | Z_OBJ_P(return_value)->properties = Z_ARR(dataset); | |
| 1879 | 1882 | } else { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -19,5 +19,3 @@ $view_def = "CREATE VIEW {$view_name} AS SELECT * FROM {$table_name};"; | |||
| 19 | 19 | $table_def = "CREATE TABLE {$table_name} (num int, str text, bin bytea);"; | |
| 20 | 20 | $table_def_92 = "CREATE TABLE {$table_name_92} (textary text[], jsn json);"; | |
| 21 | 21 | $field_name = "num"; // For pg_field_num() | |
| 22 | - | ||
| 23 | - ?> | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -17,5 +17,3 @@ function _set_lc_messages($conn, $lc_messages = 'C') | |||
| 17 | 17 | ||
| 18 | 18 | return true; | |
| 19 | 19 | } | |
| 20 | - | ||
| 21 | - ?> | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,59 @@ | |||
| 1 | + --TEST-- | ||
| 2 | + pg_fetch_object() with abstract class name | ||
| 3 | + --EXTENSIONS-- | ||
| 4 | + pgsql | ||
| 5 | + --SKIPIF-- | ||
| 6 | + <?php | ||
| 7 | + include("skipif.inc"); | ||
| 8 | + ?> | ||
| 9 | + --FILE-- | ||
| 10 | + <?php | ||
| 11 | + | ||
| 12 | + interface I {} | ||
| 13 | + | ||
| 14 | + abstract class C {} | ||
| 15 | + | ||
| 16 | + enum E { | ||
| 17 | + case A; | ||
| 18 | + } | ||
| 19 | + | ||
| 20 | + include "config.inc"; | ||
| 21 | + $table_name = "pg_fetch_object_abstract_class"; | ||
| 22 | + $db = pg_connect($conn_str); | ||
| 23 | + pg_query($db, "CREATE TABLE {$table_name} (a integer, b text)"); | ||
| 24 | + pg_query($db, "INSERT INTO {$table_name} VALUES(0, 'ABC')"); | ||
| 25 | + | ||
| 26 | + $sql = "SELECT * FROM $table_name WHERE a = 0"; | ||
| 27 | + | ||
| 28 | + try { | ||
| 29 | + $result = pg_query($db, $sql); | ||
| 30 | + var_dump(pg_fetch_object($result, NULL, 'I')); | ||
| 31 | + } catch(Throwable $e) { | ||
| 32 | + echo $e::class, ': ', $e->getMessage(), PHP_EOL; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + try { | ||
| 36 | + $result = pg_query($db, $sql); | ||
| 37 | + var_dump(pg_fetch_object($result, NULL, 'C')); | ||
| 38 | + } catch(Throwable $e) { | ||
| 39 | + echo $e::class, ': ', $e->getMessage(), PHP_EOL; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + try { | ||
| 43 | + $result = pg_query($db, $sql); | ||
| 44 | + var_dump(pg_fetch_object($result, NULL, 'E')); | ||
| 45 | + } catch(Throwable $e) { | ||
| 46 | + echo $e::class, ': ', $e->getMessage(), PHP_EOL; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + ?> | ||
| 50 | + --CLEAN-- | ||
| 51 | + <?php | ||
| 52 | + include('config.inc'); | ||
| 53 | + $db = @pg_connect($conn_str); | ||
| 54 | + @pg_query($db, "DROP TABLE IF EXISTS pg_fetch_object_abstract_class cascade"); | ||
| 55 | + ?> | ||
| 56 | + --EXPECT-- | ||
| 57 | + Error: Cannot instantiate interface I | ||
| 58 | + Error: Cannot instantiate abstract class C | ||
| 59 | + Error: Cannot instantiate enum E | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,4 +1,3 @@ | |||
| 1 | - | ||
| 2 | 1 | <?php | |
| 3 | 2 | // This script prints "skip" unless: | |
| 4 | 3 | // * the pgsql extension is built-in or loadable, AND | |
@@ -47,5 +46,3 @@ function skip_bytea_not_escape() | |||
| 47 | 46 | die("skip libpq or backend >= 9.0\n"); | |
| 48 | 47 | } | |
| 49 | 48 | } | |
| 50 | - | ||
| 51 | - ?> | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments