diff options
author | Michael Widenius <monty@askmonty.org> | 2013-06-05 23:53:35 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2013-06-05 23:53:35 +0300 |
commit | bef95a4bbea0a3a42ad26798d3c3aa326dc282bf (patch) | |
tree | 9adc5ff47acfe5633c05ebcb4c3cd26d13d5878e /sql/opt_range.cc | |
parent | 33ef993773449cb3917665b188f6b6575d399bd0 (diff) | |
download | mariadb-git-bef95a4bbea0a3a42ad26798d3c3aa326dc282bf.tar.gz |
-Run test suite with smaller aria keybuffer size (to make it possible to run more tests in parallel)
-Added test and extra code to ensure we don't leave keyread on for a handler table.
-Create on disk temporary files always with long data pointers if SQL_SMALL_RESULT is not used. This ensures that we can handle temporary files bigger than 4G.
mysql-test/include/default_mysqld.cnf:
Run test suite with smaller aria keybuffer size
mysql-test/suite/maria/maria3.result:
Run test suite with smaller aria keybuffer size
mysql-test/suite/sys_vars/r/aria_pagecache_buffer_size_basic.result:
Run test suite with smaller aria keybuffer size
sql/handler.cc:
Disable key read (extra safety if something went wrong)
sql/multi_range_read.cc:
Ensure we have don't leave keyread on for secondary_file
sql/opt_range.cc:
Simplify code with mark_columns_used_by_index_no_reset()
Ensure that read_keys_and_merge() disableds keyread if it enables it
sql/opt_subselect.cc:
Remove not anymore used argument for create_internal_tmp_table()
sql/sql_derived.cc:
Remove not anymore used argument for create_internal_tmp_table()
sql/sql_select.cc:
Use 'enable_keyread()' instead of calling HA_EXTRA_RESET. (Makes debugging easier)
Create on disk temporary files always with long data pointers if SQL_SMALL_RESULT is not used. This ensures that we can handle temporary files bigger than 4G.
Remove not anymore used argument for create_internal_tmp_table()
More DBUG
sql/sql_select.h:
Remove not anymore used argument for create_internal_tmp_table()
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r-- | sql/opt_range.cc | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 5d71ec71903..bcd522c8065 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -2069,30 +2069,16 @@ end: org_key_read= head->key_read; head->file= file; head->key_read= 0; + head->mark_columns_used_by_index_no_reset(index, head->read_set); + if (!head->no_keyread) { doing_key_read= 1; - head->mark_columns_used_by_index_no_reset(index, head->read_set); head->enable_keyread(); } head->prepare_for_position(); - if (head->no_keyread) - { - /* - We can get here when doing multi-table delete and having index_merge - condition on a table that we're deleting from. It probably doesn't make - sense to use index_merge, but de-facto it is used. - - When it is used, we need to index columns to be read (before maria-5.3, - read_multi_range_first() would set it). - We shouldn't call mark_columns_used_by_index(), because it calls - enable_keyread(), which is not allowed. - */ - head->mark_columns_used_by_index_no_reset(index, head->read_set); - } - head->file= org_file; head->key_read= org_key_read; @@ -10598,12 +10584,13 @@ int read_keys_and_merge_scans(THD *thd, Unique *unique= *unique_ptr; handler *file= head->file; bool with_cpk_filter= pk_quick_select != NULL; - + bool enabled_keyread= 0; DBUG_ENTER("read_keys_and_merge"); /* We're going to just read rowids. */ if (!head->key_read) { + enabled_keyread= 1; head->enable_keyread(); } head->prepare_for_position(); @@ -10697,13 +10684,15 @@ int read_keys_and_merge_scans(THD *thd, /* index merge currently doesn't support "using index" at all */ - head->disable_keyread(); + if (enabled_keyread) + head->disable_keyread(); if (init_read_record(read_record, thd, head, (SQL_SELECT*) 0, 1 , 1, TRUE)) result= 1; DBUG_RETURN(result); err: - head->disable_keyread(); + if (enabled_keyread) + head->disable_keyread(); DBUG_RETURN(1); } |