diff options
author | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2008-10-15 22:50:56 -0300 |
---|---|---|
committer | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2008-10-15 22:50:56 -0300 |
commit | 65253483688b7e9f199cf20299fa1febd264cf5a (patch) | |
tree | c3cab179ea83ff8c07c7ff9cf4dedecb061df731 /sql | |
parent | e6fa9496f53503cd3f93d449f2a1d2b6047b7ac4 (diff) | |
parent | 3ad228d7fba6fa2e5b98569f798583b8f8b90db9 (diff) | |
download | mariadb-git-65253483688b7e9f199cf20299fa1febd264cf5a.tar.gz |
Merge mysql-5.0-bugteam into mysql-5.1-bugteam.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item.cc | 3 | ||||
-rw-r--r-- | sql/sql_lex.cc | 11 |
2 files changed, 10 insertions, 4 deletions
diff --git a/sql/item.cc b/sql/item.cc index 31f5bc06a9f..7b7c44b4719 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -1805,7 +1805,8 @@ Item_field::Item_field(THD *thd, Name_resolution_context *context_arg, be allocated in the statement memory, not in table memory (the table structure can go away and pop up again between subsequent executions of a prepared statement or after the close_tables_for_reopen() call - in mysql_multi_update_prepare()). + in mysql_multi_update_prepare() or due to wildcard expansion in stored + procedures). */ { if (db_name) diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 4ac73baa992..983d53a041d 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -2397,15 +2397,20 @@ void st_select_lex_unit::set_limit(st_select_lex *sl) val= sl->select_limit ? sl->select_limit->val_uint() : HA_POS_ERROR; select_limit_val= (ha_rows)val; #ifndef BIG_TABLES - /* + /* Check for overflow : ha_rows can be smaller then ulonglong if BIG_TABLES is off. */ if (val != (ulonglong)select_limit_val) select_limit_val= HA_POS_ERROR; #endif - offset_limit_cnt= (ha_rows)(sl->offset_limit ? sl->offset_limit->val_uint() : - ULL(0)); + val= sl->offset_limit ? sl->offset_limit->val_uint() : ULL(0); + offset_limit_cnt= (ha_rows)val; +#ifndef BIG_TABLES + /* Check for truncation. */ + if (val != (ulonglong)offset_limit_cnt) + offset_limit_cnt= HA_POS_ERROR; +#endif select_limit_cnt= select_limit_val + offset_limit_cnt; if (select_limit_cnt < select_limit_val) select_limit_cnt= HA_POS_ERROR; // no limit |