diff options
author | Mattias Jonsson <mattias.jonsson@oracle.com> | 2011-03-16 11:59:01 +0100 |
---|---|---|
committer | Mattias Jonsson <mattias.jonsson@oracle.com> | 2011-03-16 11:59:01 +0100 |
commit | 11ad61f8c46e21deb2609ff73346fb4254be742f (patch) | |
tree | cea140d8d7b63bf9d57e1b8efda833a7a008cc7d /sql/item_timefunc.cc | |
parent | 6c777a622001b291190c89bfcc39627d055a7839 (diff) | |
download | mariadb-git-11ad61f8c46e21deb2609ff73346fb4254be742f.tar.gz |
Bug#11746819:
Bug#28928: UNIX_TIMESTAMP() should be considered unary monotonic by partition pruning
Made UNIX_TIMESTAMP MONOTONIC_INCREASING when it have TIMESTAMP argument (only).
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r-- | sql/item_timefunc.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index 6335199b8de..c986ec6c00b 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -1316,6 +1316,26 @@ longlong Item_func_unix_timestamp::val_int() return (longlong) TIME_to_timestamp(current_thd, <ime, ¬_used); } +enum_monotonicity_info Item_func_unix_timestamp::get_monotonicity_info() const +{ + if (args[0]->type() == Item::FIELD_ITEM && + (args[0]->field_type() == MYSQL_TYPE_TIMESTAMP)) + return MONOTONIC_INCREASING; + return NON_MONOTONIC; +} + + +longlong Item_func_unix_timestamp::val_int_endpoint(bool left_endp, bool *incl_endp) +{ + DBUG_ASSERT(fixed == 1); + DBUG_ASSERT(arg_count == 1 && + args[0]->type() == Item::FIELD_ITEM && + args[0]->field_type() == MYSQL_TYPE_TIMESTAMP); + Field *field=((Item_field*) args[0])->field; + /* Leave the incl_endp intact */ + return ((Field_timestamp*) field)->get_timestamp(&null_value); +} + longlong Item_func_time_to_sec::val_int() { |