php-src/ext/mysqlnd
Dmitry Stogov 90b7bde615 Use more compact representation for packed arrays.
- for packed arrays we store just an array of zvals without keys.
- the elements of packed array are accessible throuf as ht->arPacked[i]
  instead of ht->arData[i]
- in addition to general ZEND_HASH_FOREACH_* macros, we introduced similar
  familied for packed (ZEND_HASH_PACKED_FORECH_*) and real hashes
  (ZEND_HASH_MAP_FOREACH_*)
- introduced an additional family of macros to access elements of array
  (packed or real hashes) ZEND_ARRAY_ELEMET_SIZE, ZEND_ARRAY_ELEMET_EX,
  ZEND_ARRAY_ELEMET, ZEND_ARRAY_NEXT_ELEMENT, ZEND_ARRAY_PREV_ELEMENT
- zend_hash_minmax() prototype was changed to compare only values

Because of smaller data set, this patch may show performance improvement
on some apps and benchmarks that use packed arrays. (~1% on PHP-Parser)

TODO:
    - sapi/phpdbg needs special support for packed arrays (WATCH_ON_BUCKET).
    - zend_hash_sort_ex() may require converting packed arrays to hash.
2021-11-03 15:18:26 +03:00
..
config-win.h Drop unnecessary stdint and inttypes header checks 2020-04-22 20:18:19 +02:00
config.w32 Native Windows support for mysqlnd sha256 authentification 2020-03-02 16:32:51 +01:00
config9.m4 Remove MYSQLND_COMPRESSION_WANTED define 2020-06-04 10:03:39 +02:00
CREDITS
mysql_float_to_double.h Move php_gcvt to zend_gcvt 2021-08-02 14:51:46 +02:00
mysqlnd.h Remove mysqlnd_unbuffered_skip_result and voidify skip_result 2021-10-22 11:10:53 +01:00
mysqlnd_alloc.c Remove wrappers for *printf functions (#7313) 2021-07-28 10:24:46 +02:00
mysqlnd_alloc.h Implement mysqlnd_set_persistent_string (#7371) 2021-08-20 12:03:46 +01:00
mysqlnd_auth.c Implement mysqlnd_set_persistent_string (#7371) 2021-08-20 12:03:46 +01:00
mysqlnd_auth.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_block_alloc.c Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_block_alloc.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_charset.c Fixed some spaces used instead of tabs 2021-06-29 11:30:26 +02:00
mysqlnd_charset.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_commands.c Implement mysqlnd_set_persistent_string (#7371) 2021-08-20 12:03:46 +01:00
mysqlnd_commands.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_connection.c (mysqlnd_conn_data, restart_psession) never fails 2021-10-22 11:10:53 +01:00
mysqlnd_connection.h Replace macro with inline function (#7365) 2021-08-13 20:03:26 +01:00
mysqlnd_debug.c Use more compact representation for packed arrays. 2021-11-03 15:18:26 +03:00
mysqlnd_debug.h Fix printf formats in mysql debug logging 2021-06-16 16:09:06 +02:00
mysqlnd_driver.c pfc & vio init methods cannot fail 2021-10-22 11:10:53 +01:00
mysqlnd_enum_n_def.h Remove mysqlnd local_tx functionality 2021-08-12 15:21:21 +02:00
mysqlnd_ext_plugin.c Mark various functions with void arguments. 2021-05-12 14:55:53 +01:00
mysqlnd_ext_plugin.h Mark various functions with void arguments. 2021-05-12 14:55:53 +01:00
mysqlnd_libmysql_compat.h Remove get_parameter_metadata 2021-07-29 14:21:13 +01:00
mysqlnd_loaddata.c Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_plugin.c Use more compact representation for packed arrays. 2021-11-03 15:18:26 +03:00
mysqlnd_plugin.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_portability.h Remove MYSQLND_SZ_T_SPEC 2021-08-12 15:29:06 +02:00
mysqlnd_priv.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_protocol_frame_codec.c Reset cannot fail. It was used in a condition, but it doesn't have to be. 2021-10-22 11:10:53 +01:00
mysqlnd_protocol_frame_codec.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_ps.c Remove MYSQLND_SZ_T_SPEC 2021-08-12 15:29:06 +02:00
mysqlnd_ps.h Mark various functions with void arguments. 2021-05-12 14:55:53 +01:00
mysqlnd_ps_codec.c Fixed some spaces used instead of tabs 2021-06-29 11:30:26 +02:00
mysqlnd_read_buffer.c Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_read_buffer.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_result.c Remove mysqlnd_unbuffered_skip_result and voidify skip_result 2021-10-22 11:10:53 +01:00
mysqlnd_result.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_result_meta.c Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_result_meta.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_reverse_api.c Use more compact representation for packed arrays. 2021-11-03 15:18:26 +03:00
mysqlnd_reverse_api.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_statistics.c Drop mysqlnd statistics triggers 2021-07-29 14:21:13 +01:00
mysqlnd_statistics.h Drop mysqlnd statistics triggers 2021-07-29 14:21:13 +01:00
mysqlnd_structs.h Remove mysqlnd_unbuffered_skip_result and voidify skip_result 2021-10-22 11:10:53 +01:00
mysqlnd_vio.c pfc & vio init methods cannot fail 2021-10-22 11:10:53 +01:00
mysqlnd_vio.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
mysqlnd_wireprotocol.c Use more compact representation for packed arrays. 2021-11-03 15:18:26 +03:00
mysqlnd_wireprotocol.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00
php_mysqlnd.c Use more compact representation for packed arrays. 2021-11-03 15:18:26 +03:00
php_mysqlnd.h Update http->https in license (#6945) 2021-05-06 12:16:35 +02:00