diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-17 12:05:37 +0100 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-12-22 15:56:34 +0100 |
| commit | caa710037e663fd78f67533b29611183090068b2 (patch) | |
| tree | 7acbcdf527eb148899d6cb90e9f2cb233a3ec2ed /ext/pdo_sqlite/tests | |
| parent | 57d69b51373bfb1aa5117022c63c93c612e707f6 (diff) | |
| download | php-git-caa710037e663fd78f67533b29611183090068b2.tar.gz | |
Rewrite PDO result binding
Instead of requiring the type to be determined in advance by the
describer function and then requiring get_col to return a buffer
of appropriate type, allow get_col to return an arbitrary zval.
See UPGRADING.INTERNALS for a more detailed description of the
change.
This makes the result fetching simpler, more efficient and more
flexible. The general possibility already existed via the special
PDO_PARAM_ZVAL type, but the usage was very inconvenient and/or
inefficient. Now it's possible to easily implement behavior like
"return int if it fits, otherwise string" and to avoid any kind
of complex management of temporary buffers.
This also fixes bug #40913 (our second highest voted bug of all
time, for some reason). PARAM_LOB result bindings will now
consistently return a stream resource, independently of the used
database driver.
I've tried my best to update all PDO drivers for this change, but
some of the changes may be broken, as I cannot test or even build
some of these drivers (in particular PDO dblib and PDO oci).
Fixes are appreciated -- a working CI setup would be even more
appreciated ;)
Diffstat (limited to 'ext/pdo_sqlite/tests')
| -rw-r--r-- | ext/pdo_sqlite/tests/bug79664.phpt | 4 | ||||
| -rw-r--r-- | ext/pdo_sqlite/tests/debugdumpparams_001.phpt | 6 |
2 files changed, 5 insertions, 5 deletions
diff --git a/ext/pdo_sqlite/tests/bug79664.phpt b/ext/pdo_sqlite/tests/bug79664.phpt index fae39aea3e..a3648099dc 100644 --- a/ext/pdo_sqlite/tests/bug79664.phpt +++ b/ext/pdo_sqlite/tests/bug79664.phpt @@ -21,12 +21,12 @@ array(6) { ["flags"]=> array(0) { } + ["pdo_type"]=> + int(3) ["name"]=> string(1) "1" ["len"]=> int(-1) ["precision"]=> int(0) - ["pdo_type"]=> - int(2) } diff --git a/ext/pdo_sqlite/tests/debugdumpparams_001.phpt b/ext/pdo_sqlite/tests/debugdumpparams_001.phpt index 4402b5c815..88dc21ce82 100644 --- a/ext/pdo_sqlite/tests/debugdumpparams_001.phpt +++ b/ext/pdo_sqlite/tests/debugdumpparams_001.phpt @@ -23,15 +23,15 @@ Key: Name: [2] :a paramno=-1 name=[2] ":a" is_param=1 -param_type=1 +param_type=2 Key: Name: [2] :b paramno=-1 name=[2] ":b" is_param=1 -param_type=2 +param_type=3 Key: Position #2: paramno=2 name=[0] "" is_param=1 -param_type=2 +param_type=3 NULL |
