mariadb/plugin
Alexander Barkov 14737a1cb0 MDEV-36850 SIGSEGV in Item_sp_variable::save_in_field | fill_record
Thanks to Sergei Golubchik for the idea and a working prototype of this patch.

Problem:

Inside these methods:
- Item_splocal_assoc_array_element::append_for_log()
- Item_splocal_assoc_array_element_field::append_for_log()

an expression like this:

  first_names(nick || CONVERT(' ' USING ucs2)

was converted to:

  first_names(nick || CONVERT(CONVERT(' ' USING ucs2) USING latin1)

i.e. an automatic CONVERT(... USING latin1) was added, as expected.

In the end of append_for_log() the destructor of
Item_change_list_savepoint_raii restored the Item changes, so
the automatically added CONVERT(..USING latin1) was removed from
the tree and the tree changed back to:

   first_names(nick || CONVERT(' ' USING ucs2)

But all Item_splocal_assoc_array_element* Items were left in the fixed state.

Later, duing the INSERT, a concatenation of the SP variable `nick`
and the space character in UCS2 evaluated 'Michael\x00\x20' instead
of the expected 'Michael\x20', so the assoc array
element with the given key was not found.

Note:

Item_change_list_savepoint_raii was needed to make this DBUG_ASSERT in
sp_lex_keeper::reset_lex_and_exec_core() happy:
  DBUG_ASSERT(thd->Item_change_list::is_empty());

The fix:

- Removing Item_change_list_savepoint_raii from the implementations of
  Item_splocal_assoc_array_element*::append_for_log()
  Removing the class Item_change_list_savepoint_raii as it's not needed
  any more.

- Relaxing the DBUG_ASSERT() in sp_lex_keeper::reset_lex_and_exec_core() to:
  DBUG_ASSERT(dbug_rqp_are_fixed(instr) || thd->Item_change_list::is_empty());

  where dbug_rqp_are_fixed() is a new debug function to check that
  all Rewritable_query_parameter's in instr::free_list are fixed.
2025-07-31 10:57:35 +04:00
..
audit_null MDEV-7389 Request: log warnings into SQL_ERROR_LOG 2023-05-24 13:21:55 +03:00
auth_dialog Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
auth_ed25519 ed25519: support empty password 2024-11-08 07:17:54 +01:00
auth_examples MDEV-31855 validate ssl certificates using client password in the internal client 2024-02-04 22:19:19 +01:00
auth_gssapi Fix typos in C comments in miscellaneous files 2025-03-24 13:36:28 +11:00
auth_pam Fix remaining typos 2025-04-29 11:18:00 +10:00
auth_parsec MDEV-35482 Raise the plugin PARSEC maturity 2024-12-06 20:28:46 +01:00
auth_pipe Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
auth_socket Merge 11.4 into 11.7 2024-12-02 17:51:17 +02:00
aws_key_management cleanup: CREATE_TYPELIB_FOR() helper 2024-11-05 14:00:47 -08:00
cracklib_password_check Merge 10.6 into 10.11 2024-02-08 15:04:46 +02:00
daemon_example MDEV-34534 main.plugin_load(daemon_example) - AddressSanitizer: Joining already joined thread, aborting 2024-11-18 22:35:40 +11:00
debug_key_management Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
disks Fix typos in C comments in miscellaneous files 2025-03-24 13:36:28 +11:00
example_key_management Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
feedback Fix typos in C comments in miscellaneous files 2025-03-24 13:36:28 +11:00
file_key_management MDEV-34712 Add support to sha2 and pbkdf2 key derivation in file_key_management 2025-04-28 13:43:32 +10:00
fulltext MDEV-28671 post-merge fixes 2024-05-27 12:39:02 +02:00
func_test MDEV-27277 Add a warning when max_sort_length is reached 2024-10-22 21:42:53 +07:00
handler_socket Fix typos in C comments in miscellaneous files 2025-03-24 13:36:28 +11:00
hashicorp_key_management Fix remaining typos 2025-04-29 11:18:00 +10:00
locale_info MDEV-31340 Remove MY_COLLATION_HANDLER::strcasecmp() 2024-04-18 15:22:10 +04:00
metadata_lock_info Merge remote-tracking branch 'origin/11.2' into 11.4 2024-07-09 21:45:37 +04:00
password_reuse_check Fix typos in C comments in miscellaneous files 2025-03-24 13:36:28 +11:00
provider_bzip2 SUMMARY/DESCRIPTION for compression provider RPMs 2021-12-08 14:57:37 +01:00
provider_lz4 SUMMARY/DESCRIPTION for compression provider RPMs 2021-12-08 14:57:37 +01:00
provider_lzma SUMMARY/DESCRIPTION for compression provider RPMs 2021-12-08 14:57:37 +01:00
provider_lzo SUMMARY/DESCRIPTION for compression provider RPMs 2021-12-08 14:57:37 +01:00
provider_snappy SUMMARY/DESCRIPTION for compression provider RPMs 2021-12-08 14:57:37 +01:00
qc_info MDEV-33091 pcre2 headers aren't found on Solaris 2024-09-05 12:14:06 +10:00
query_response_time Fix typos in C comments in miscellaneous files 2025-03-24 13:36:28 +11:00
server_audit MDEV-12182 post-merge 2025-05-02 13:56:25 +02:00
simple_password_check Merge branch '10.6' into 10.7 2022-08-08 17:12:32 +02:00
sql_errlog Tag the logger service with ATTRIBUTE_FORMAT 2025-02-12 10:17:44 +01:00
test_sql_service MDEV-28671 post-merge fixes 2024-05-27 12:39:02 +02:00
type_assoc_array MDEV-36850 SIGSEGV in Item_sp_variable::save_in_field | fill_record 2025-07-31 10:57:35 +04:00
type_cursor MDEV-20034 Add support for the pre-defined weak SYS_REFCURSOR 2025-04-19 10:59:58 +04:00
type_geom fix typo spatial_ref_sys 2025-04-22 16:26:36 -04:00
type_inet MDEV-34189 Unexpected error on WHERE inet6col 2025-01-29 09:08:19 +04:00
type_mysql_json Merge 10.6 into 10.11 2024-06-27 10:26:09 +03:00
type_mysql_timestamp MDEV-19123 Change default charset from latin1 to utf8mb4 2024-07-11 10:21:07 +04:00
type_test MDEV-19123 Change default charset from latin1 to utf8mb4 2024-07-11 10:21:07 +04:00
type_uuid Cleanup#2 for MDEV-34319: DECLARE TYPE .. TABLE OF .. INDEX BY - packed_col_length 2025-05-19 19:43:46 +04:00
user_variables Merge 10.6 into 10.11 2024-01-18 19:22:23 +02:00
userstat MDEV-34571 Add page accessed and pages read from disk to table_stats 2024-07-12 11:28:18 +03:00
versioning Merge branch '11.8' into main 2025-04-18 17:11:01 +02:00
win_auth_client Vanilla cleanups and refactorings 2021-10-26 17:07:46 +02:00
wsrep_info test.cnf files should !include default_my.cnf 2024-02-03 11:22:20 +01:00