summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_result.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-12-18 12:13:17 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-12-18 12:27:30 +0100
commit037512cfce6048aae3d3900abb12310e66bc97a5 (patch)
treefd8e4d8c65e3d245f785305bdc0214ee5dc664f2 /ext/mysqlnd/mysqlnd_result.c
parentbe93e5a12002057922f5504a752c2a249e27ec8d (diff)
downloadphp-git-037512cfce6048aae3d3900abb12310e66bc97a5.tar.gz
Move fetch_all implementation out of mysqlnd
There doesn't seem to be any compelling reason to implement this in mysqlnd rather than mysqli. It's just a loop over fetch_into. This makes the function available under libmysqlclient as well, and thus fixes bug #79372.
Diffstat (limited to 'ext/mysqlnd/mysqlnd_result.c')
-rw-r--r--ext/mysqlnd/mysqlnd_result.c37
1 files changed, 0 insertions, 37 deletions
diff --git a/ext/mysqlnd/mysqlnd_result.c b/ext/mysqlnd/mysqlnd_result.c
index 620f205998..f7b69749d2 100644
--- a/ext/mysqlnd/mysqlnd_result.c
+++ b/ext/mysqlnd/mysqlnd_result.c
@@ -1050,49 +1050,12 @@ MYSQLND_METHOD(mysqlnd_res, fetch_row_c)(MYSQLND_RES * result)
/* }}} */
-/* {{{ mysqlnd_res::fetch_all */
-static void
-MYSQLND_METHOD(mysqlnd_res, fetch_all)(MYSQLND_RES * result, const unsigned int flags, zval *return_value ZEND_FILE_LINE_DC)
-{
- zval row;
- zend_ulong i = 0;
- MYSQLND_RES_BUFFERED *set = result->stored_data;
-
- DBG_ENTER("mysqlnd_res::fetch_all");
-
- if ((!result->unbuf && !set)) {
- php_error_docref(NULL, E_WARNING, "fetch_all can be used only with buffered sets");
- if (result->conn) {
- SET_CLIENT_ERROR(result->conn->error_info, CR_NOT_IMPLEMENTED, UNKNOWN_SQLSTATE, "fetch_all can be used only with buffered sets");
- }
- RETVAL_NULL();
- DBG_VOID_RETURN;
- }
-
- /* 4 is a magic value. The cast is safe, if larger then the array will be later extended - no big deal :) */
- array_init_size(return_value, set? (unsigned int) set->row_count : 4);
-
- do {
- mysqlnd_fetch_into(result, flags, &row);
- if (Z_TYPE(row) != IS_ARRAY) {
- zval_ptr_dtor_nogc(&row);
- break;
- }
- add_index_zval(return_value, i++, &row);
- } while (1);
-
- DBG_VOID_RETURN;
-}
-/* }}} */
-
-
MYSQLND_CLASS_METHODS_START(mysqlnd_res)
MYSQLND_METHOD(mysqlnd_res, fetch_row),
MYSQLND_METHOD(mysqlnd_res, use_result),
MYSQLND_METHOD(mysqlnd_res, store_result),
MYSQLND_METHOD(mysqlnd_res, fetch_into),
MYSQLND_METHOD(mysqlnd_res, fetch_row_c),
- MYSQLND_METHOD(mysqlnd_res, fetch_all),
MYSQLND_METHOD(mysqlnd_res, num_rows),
MYSQLND_METHOD(mysqlnd_res, num_fields),
MYSQLND_METHOD(mysqlnd_res, skip_result),