mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 07:35:32 +02:00
MDEV-4978 - Server cursor is broken with blobs in the select list,
ORDER BY does not work Use "dynamic" row format (instead of "block") for MARIA internal temporary tables created for cursors. With "block" row format MARIA may shuffle rows, with "dynamic" row format records are inserted sequentially (there are no gaps in data file while we fill temporary tables). This is needed to preserve row order when scanning materialized cursors.
This commit is contained in:
parent
078388f39c
commit
bbc9e57981
9 changed files with 94 additions and 10 deletions
|
|
@ -129,6 +129,7 @@ bool select_union::flush()
|
|||
table_alias name of the temporary table
|
||||
bit_fields_as_long convert bit fields to ulonglong
|
||||
create_table whether to physically create result table
|
||||
keep_row_order keep rows in order as they were inserted
|
||||
|
||||
DESCRIPTION
|
||||
Create a temporary table that is used to store the result of a UNION,
|
||||
|
|
@ -143,7 +144,8 @@ bool
|
|||
select_union::create_result_table(THD *thd_arg, List<Item> *column_types,
|
||||
bool is_union_distinct, ulonglong options,
|
||||
const char *alias,
|
||||
bool bit_fields_as_long, bool create_table)
|
||||
bool bit_fields_as_long, bool create_table,
|
||||
bool keep_row_order)
|
||||
{
|
||||
DBUG_ASSERT(table == 0);
|
||||
tmp_table_param.init();
|
||||
|
|
@ -153,7 +155,7 @@ select_union::create_result_table(THD *thd_arg, List<Item> *column_types,
|
|||
if (! (table= create_tmp_table(thd_arg, &tmp_table_param, *column_types,
|
||||
(ORDER*) 0, is_union_distinct, 1,
|
||||
options, HA_POS_ERROR, alias,
|
||||
!create_table)))
|
||||
!create_table, keep_row_order)))
|
||||
return TRUE;
|
||||
|
||||
table->keys_in_use_for_query.clear_all();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue