mariadb/client
Rex 7d46ee3336 MDEV-35673 Item_subselect::used_tables_cache issues with outer references and optimization.
This split from MDEV-32294, discovered when inspecting how
Item_subselect::used_tables_cache gets recalculated during 1st and 2nd
executions of prepared statements.

We build a list of outer references resolved against each select_lex.
This list is not reset at the end of a prepared statement, so each
element in this must be allocated on statement memory. Because of this
we rely on MDEV-30073, as prior to this patch, some outer references are
freed at the end of prepared statement execution.  We use this list to
recalculate Item_subselect::used_tables_cache

There are a number of additional processing steps that need to happen
during query merges.  A derived table merge will leave a mix of
SELECT_LEX::nest_base_level pointers in our query structure.  Some
Item::*processors will search for items that 'belong' only to the 'unit'
being searched.  We need to update this and nest_level when merging.

We update SELECT_LEX::outer_references_resolved_here, in case an Item in
a subquery is no longer an outer reference.

We introduce a number tests in main.outer_reference, along with a way of
wrapping each select to be executed in a number of different ways.
TODO, check that the result of each of these different ways of execution
is identical.  We could wrap this into client/mysqltest and perhaps
allow stacking of each execution method, such as --view (to create a
view from our test statement and then select from the view) and --ps (to
prepare our test statement, now selecting from a view, and compare data
output from first and second executions).

Name resolution fixes related to prepared statement execution.

We no longer call fix_outer_field after the first execution, we now
rely on the attribute depended_from, populated during the first execution.
Code is added to Item_field::fix_fields to compensate.

We allocate view field substituions on statement memory.  When run as a
prepared statement, this happens during the first execution.

table_map fixes related to prepared statement and view processing.

In setup_fields, during the 2nd execution of a prepared statement, we
can call used_tables() prior to any caches being set up.  This can
result in incorrect processing.

We also ban execution of EXPLAIN EXTENDED statements during mtr ps
protocol runs as the generation of warnings varies due to the fact that
some Item select_transformers cannot be run during execution of the
prepare statement, so we would normally expect a different warning
output.
2025-06-05 18:11:31 +11:00
..
async_example.c MDEV-25602 get rid of __WIN__ in favor of standard _WIN32 2021-06-06 13:21:03 +02:00
client_metadata.h MDEV-17832 Protocol: extensions for Pluggable types and JSON, GEOMETRY 2020-03-10 20:43:32 +04:00
client_priv.h Merge branch '10.6' into 10.11 2024-05-10 20:02:18 +02:00
CMakeLists.txt MDEV-33091 pcre2 headers aren't found on Solaris 2024-09-05 12:14:06 +10:00
completion_hash.cc Merge 10.4 into 10.5 2020-11-03 16:24:47 +02:00
completion_hash.h Update FSF Address 2019-05-11 21:29:06 +03:00
echo.c Fix typos in the codebase. 2022-08-09 18:41:09 +03:00
mariadb-conv.cc mariadb-conv --character-sets-dir 2021-05-20 18:33:07 +02:00
my_readline.h Update FSF Address 2019-05-11 21:29:06 +03:00
mysql.cc Merge 10.6 into 10.11 2025-01-08 12:51:26 +02:00
mysql_plugin.c Fixed compiler warning from strncpy in mysql_plugin.c 2024-09-11 16:15:37 +03:00
mysql_upgrade.c Merge branch '10.6' into 10.11 2025-03-31 17:57:43 +02:00
mysqladmin.cc Merge 10.6 into 10.11 2024-05-30 16:04:00 +03:00
mysqlbinlog.cc MDEV-35694: Mysqlbinlog --stop-position should warn if EOF not reached with --read-from-remote-server 2025-04-21 14:21:55 -06:00
mysqlcheck.c Merge 10.6 into 10.11 2025-05-21 07:36:35 +03:00
mysqldump.c Merge branch '10.6' into 10.11 2025-03-31 17:57:43 +02:00
mysqlimport.c Merge 10.6 into 10.11 2024-12-19 15:38:53 +02:00
mysqlshow.c Merge branch '10.6' into 10.11 2024-05-10 20:02:18 +02:00
mysqlslap.c Merge 10.6 into 10.11 2025-05-21 07:36:35 +03:00
mysqltest.cc MDEV-35673 Item_subselect::used_tables_cache issues with outer references and optimization. 2025-06-05 18:11:31 +11:00
readline.cc MDEV-27142 disable text mode for Windows stdio by default 2022-07-18 13:18:03 +02:00