#
33e90491 |
| 14-Dec-2020 |
Nikita Popov |
MySQLnd: Clean up and optimize mysqlnd result set handling This is a larger overhaul of the mysqlnd result set infrastructure: * Drop support for two different types of buffered re
MySQLnd: Clean up and optimize mysqlnd result set handling This is a larger overhaul of the mysqlnd result set infrastructure: * Drop support for two different types of buffered results sets ("c" and "zval"). Possibly these made sense at some earlier time, but now (with minor adjustments) one option is strictly worse than the other. Buffered result sets already buffer the full row packets, from which zvals can be decoded. The "zval" style additionally also buffered the decoded zvals. As result sets, even buffered ones, are generally only traversed once, this just ends up wasting memory. Now, a potentially useful variation here would be to buffer the decoded zvals instead of the row packets, but that's not what the code was doing. * To make it really strictly better, pre-allocate the zval row buffer and reuse it for all rows. Previously the "c" style always allocated a new buffer for each row. * The fetch_row API now provides a populated zval[]. The task of populating an array is deferred to fetch_row_into, which also avoids duplicating this code in multiple places. The fetch_row_c API is also implemented on top of fetch_row now, rather than duplicating large parts of the code. * The row fetching code for prepared statements and normal result sets has been mostly merged. These already used the same infrastructure, but prepared statements used separate row fetching functions that were nearly the same as the normal ones. This requires passing the stmt into the result set, rather than just a flag. The only part that remains separate is reading of unbuffered results in the presence of PS cursors.
show more ...
|
#
890e4caf |
| 14-Dec-2020 |
Nikita Popov |
Drop support for max_length in mysqli_fetch_fields() Retain the field, but always populate it with zero. This was already the case for PS without length updating. max_length has
Drop support for max_length in mysqli_fetch_fields() Retain the field, but always populate it with zero. This was already the case for PS without length updating. max_length has nothing lost in the field metadata -- it is a property of the specific result set, and requires scanning the whole result set to compute. PHP itself never uses max_length with mysqlnd, it is only exposed in the raw mysqli API. Keeping it for just that purpose is not worthwhile given the costs involved. People who actually need this for some reason can easily calculate it themselves, while making it obvious that the calculation requires a full result set scan.
show more ...
|
#
2b7eb0e2 |
| 13-Dec-2020 |
Christoph M. Becker |
Disallow version_compare() $operator abbreviations `version_compare()` does a sloppy check for the `$operators` argument which allows arbitrary abbreviations of the supported operators t
Disallow version_compare() $operator abbreviations `version_compare()` does a sloppy check for the `$operators` argument which allows arbitrary abbreviations of the supported operators to be accepted. This is both undocumented and unexpected, and could lead to subtle BC breaks, if the order of the comparisions will be changed. Therefore we change to strict comparisons. Closes GH-6510.
show more ...
|
#
c6d3c68f |
| 13-Dec-2020 |
Anatol Belski |
UPGRADING: Document algorithm specific hash options [ci skip] Signed-off-by: Anatol Belski <ab@php.net>
|
#
f1d11c11 |
| 18-Nov-2020 |
Christoph M. Becker |
Fix #62004: SplFileObject: fgets after seek returns wrong line As it is, `::seek(0)` sets the file pointer to the beginning of the file, but `::seek($n)` where `$n > 0` sets the file poi
Fix #62004: SplFileObject: fgets after seek returns wrong line As it is, `::seek(0)` sets the file pointer to the beginning of the file, but `::seek($n)` where `$n > 0` sets the file pointer to the beginning of the following line, having line `$n` already read into the line buffer. This is pretty inconsistent; we fix it by always seeking to the beginning of the line. We also add a test case for the duplicate bug #46569. Closes GH-6434.
show more ...
|
#
a55402d0 |
| 24-Nov-2020 |
George Peter Banyard |
Rename XmlParser to XMLParser for consistency with XMLWriter/XMLReader
|
#
306555e1 |
| 25-Nov-2020 |
Nikita Popov |
Add UPGRADING note for PDO::inTransaction() [ci skip]
|
#
cdd5ec7a |
| 24-Nov-2020 |
Florian Engelhardt |
[ci skip] Fix misspelled method names Closes GH-6452.
|
#
7965bc36 |
| 24-Nov-2020 |
Nikita Popov |
Use pkg-config for libargon2 We already tried this in PHP 7.4, but ran into issues, because alpine did not support pkg-config for libargon2 (or had a broken pc file, not sure). The A
Use pkg-config for libargon2 We already tried this in PHP 7.4, but ran into issues, because alpine did not support pkg-config for libargon2 (or had a broken pc file, not sure). The Alpine issue has been resolved in the meantime, so let's give this another try.
show more ...
|
#
860f46e2 |
| 20-Nov-2020 |
jrfnl |
UPGRADING: (real) cast has been removed .. but the removal wasn't mentioned in the `UPGRADING` docs yet. Ref: * https://github.com/php/php-src/pull/5220 * https://github.com
UPGRADING: (real) cast has been removed .. but the removal wasn't mentioned in the `UPGRADING` docs yet. Ref: * https://github.com/php/php-src/pull/5220 * https://github.com/php/php-src/commit/c9db32271a8083721582c5ec1dd09c4d4f562c74 Closes GH-6440. [ci-skip]
show more ...
|
#
7bbed180 |
| 14-Nov-2020 |
Pavel Djundik |
[ci skip] Add note that imagedestroy() no longer has an effect Closes GH-6427.
|
#
4d16d3cc |
| 02-Nov-2020 |
Chris Brown |
Fix typo in UPGRADING Closes GH-6395.
|
#
94938e4e |
| 02-Nov-2020 |
Chris Brown |
[ci skip] Fix small typo `as` -> `was` Closes GH-6394.
|
#
c3a6debc |
| 10-Oct-2020 |
Jakub Zelenka |
Bump minimal OpenSSL version to 1.0.2
|
#
347a3f87 |
| 31-Oct-2020 |
Anatol Belski |
UPGRADING: Add murmurhash note [ci skip] Signed-off-by: Anatol Belski <ab@php.net>
|
#
2693f799 |
| 28-Oct-2020 |
Dmitry Stogov |
Don't force rebuild of symbol table, when populating $http_response_header variable by the HTTP stream wrapper
|
#
d776d25a |
| 27-Oct-2020 |
Nikita Popov |
Don't throw for out of bounds offsets in strspn() Make strspn($str1, $str2, $offset, $length) behaviorally equivalent to strspn(substr($str1, $offset, $length), $str2) by not throwin
Don't throw for out of bounds offsets in strspn() Make strspn($str1, $str2, $offset, $length) behaviorally equivalent to strspn(substr($str1, $offset, $length), $str2) by not throwing for out of bounds offset. There have been two reports that this change cause issues, including bug #80285.
show more ...
|
#
9c28dc0c |
| 24-Oct-2020 |
Thiemo Kreuz |
Document breaking change in strspn/strcspn See https://phabricator.wikimedia.org/T264502. [ci skip]
|
#
fab76e3a |
| 25-Oct-2020 |
Christoph M. Becker |
[ci skip] Fix typos in UPGRADING
|
#
c97da0f8 |
| 19-Oct-2020 |
Nikita Popov |
Revert "Fix bug #64865: Use CONTEXT_DOCUMENT_ROOT for scanning dir tree" This reverts commit 98bfad738ad2734dfba5733323f7ba733daf3ec3. This doesn't work well in some setups, see bug
Revert "Fix bug #64865: Use CONTEXT_DOCUMENT_ROOT for scanning dir tree" This reverts commit 98bfad738ad2734dfba5733323f7ba733daf3ec3. This doesn't work well in some setups, see bug #80113 and GH-5051. Reverting this for now.
show more ...
|
#
521c36c8 |
| 18-Oct-2020 |
Christoph M. Becker |
Remove IGNORE_URL_WIN macro This macro is defined to zero as of PHP 5.0.0, and as the comment indicates, is no longer relevant. Thus, we remove the definition and all usages from th
Remove IGNORE_URL_WIN macro This macro is defined to zero as of PHP 5.0.0, and as the comment indicates, is no longer relevant. Thus, we remove the definition and all usages from the core and bundled extensions. Closes GH-6351.
show more ...
|
#
6669426a |
| 16-Oct-2020 |
Anatoly Pashin |
[ci skip] Make it clear what GD uses instead of resources Closes GH-6342.
|
#
d6264b09 |
| 13-Oct-2020 |
Máté Kocsis |
Verify parameter names of function aliases Closes GH-6335
|
#
5582490b |
| 13-Oct-2020 |
Nikita Popov |
Normalize mb_ereg() return value mb_ereg()/mb_eregi() currently have an inconsistent return value based on whether the $matches parameter is passed or not: > Returns the byte le
Normalize mb_ereg() return value mb_ereg()/mb_eregi() currently have an inconsistent return value based on whether the $matches parameter is passed or not: > Returns the byte length of the matched string if a match for > pattern was found in string, or FALSE if no matches were found > or an error occurred. > > If the optional parameter regs was not passed or the length of > the matched string is 0, this function returns 1. Coupling this behavior to the $matches parameter doesn't make sense -- we know the match length either way, there is no technical reason to distinguish them. However, returning the match length is not particularly useful either, especially due to the need to convert 0-length into 1-length to satisfy "truthy" checks. We could always return 1, which would kind of match the behavior of preg_match() -- however, preg_match() actually returns the number of matches, which is 0 or 1 for preg_match(), while false signals an error. However, mb_ereg() returns false both for no match and for an error. This would result in an odd 1|false return value. The patch canonicalizes mb_ereg() to always return a boolean, where true indicates a match and false indicates no match or error. This also matches the behavior of the mb_ereg_match() and mb_ereg_search() functions. This fixes the default value integrity violation in PHP 8. Closes GH-6331.
show more ...
|
#
fbf221ca |
| 11-Oct-2020 |
Christoph M. Becker |
XMLReader::open() and XMLReader::xml() are now static
|