diff options
author | unknown <bell@sanja.is.com.ua> | 2004-05-05 21:21:41 +0300 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2004-05-05 21:21:41 +0300 |
commit | f6428e8bb9ac0cad24465513c5969a50cd13f6f2 (patch) | |
tree | dc6fc7f740dabf7da6ce3e21af3673dc04bbd8fd /sql/sql_union.cc | |
parent | ea646dce60994b8a5d36d575ed371144cd01eeb3 (diff) | |
download | mariadb-git-f6428e8bb9ac0cad24465513c5969a50cd13f6f2.tar.gz |
caching of queries with isammerge tables forbiden using general way
SQL_SELECT_LIMIT as default will be applied only for SELECT statement if there was not explicit LIMIT clause
correct table list passed to class constructor of select_update
mysql-test/r/subselect.result:
do not show limit if it is not explicit
mysql-test/r/union.result:
test of LIMIT + ORDER
mysql-test/t/union.test:
test of LIMIT + ORDER
sql/ha_isammrg.h:
caching of queries with isammerge tables forbiden
sql/sql_cache.cc:
removed check on isammerge
sql/sql_lex.cc:
tag of explicit limit in statement
sql/sql_lex.h:
tag of explicit limit in statement
sql/sql_parse.cc:
blanks in empty line removed
no limit by default (SQL_SELECT_LIMIT as default will be applied only for SELECT statement if there was not explicit LIMIT clause)
sql/sql_union.cc:
reverted incorrect patch
sql/sql_update.cc:
reverted incorrect patch
correct table list passed to class constructor
sql/sql_yacc.yy:
explicit LIMIT marked
Diffstat (limited to 'sql/sql_union.cc')
-rw-r--r-- | sql/sql_union.cc | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 1b3995f30be..42b67a79683 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -377,21 +377,12 @@ int st_select_lex_unit::exec() if (!thd->is_fatal_error) // Check if EOM { ulong options_tmp= thd->options; - /* - We have to take into the account a case when: - SET SQL_SELECT_LIMIT was set. - In mysql_new_select() function this value was copied to - the fake_select_lex node of the top-level unit. - Here below, we just take this value if global LIMIT was not applied - to the entire UNION. - */ - ha_rows select_limit= ((global_parameters->select_limit != HA_POS_ERROR) ? - global_parameters->select_limit : fake_select_lex->select_limit); thd->lex->current_select= fake_select_lex; offset_limit_cnt= global_parameters->offset_limit; - select_limit_cnt= select_limit + global_parameters->offset_limit; + select_limit_cnt= global_parameters->select_limit + + global_parameters->offset_limit; - if (select_limit_cnt < select_limit) + if (select_limit_cnt < global_parameters->select_limit) select_limit_cnt= HA_POS_ERROR; // no limit if (select_limit_cnt == HA_POS_ERROR) options_tmp&= ~OPTION_FOUND_ROWS; |