summaryrefslogtreecommitdiff
path: root/UPGRADING
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-12-14 15:05:23 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-12-17 10:15:02 +0100
commit33e904915ec9f19b697589d7b73c908953671020 (patch)
treeb521886510aa192e72f3aaf1cde0b70ed7994a50 /UPGRADING
parent890e4caf0be2bf625614e549f312ac18395651a0 (diff)
downloadphp-git-33e904915ec9f19b697589d7b73c908953671020.tar.gz
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.
Diffstat (limited to 'UPGRADING')
-rw-r--r--UPGRADING5
1 files changed, 5 insertions, 0 deletions
diff --git a/UPGRADING b/UPGRADING
index 7f43588048..7f530497e7 100644
--- a/UPGRADING
+++ b/UPGRADING
@@ -25,6 +25,11 @@ PHP 8.1 UPGRADE NOTES
result set and taking the maximum length. This is what PHP was doing
internally previously.
. The MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH option no longer has an effect.
+ . The MYSQLI_STORE_RESULT_COPY_DATA option no longer has an effect.
+
+- MySQLnd:
+ . The mysqlnd.fetch_copy_data ini setting has been removed. However, this
+ should not result in user-visible behavior changes.
- Standard:
. version_compare() no longer accepts undocumented operator abbreviations.