From: Mattias Jonsson Date: February 4 2011 2:02pm Subject: bzr commit into mysql-5.1 branch (mattias.jonsson:3576) List-Archive: http://lists.mysql.com/commits/130416 Message-Id: <201102041403.p14E30qi002000@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4280059145600311201==" --===============4280059145600311201== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/mattiasj/mysql-bzr/b28928-51/ based on revid:dmitry.shulga@stripped 3576 Mattias Jonsson 2011-02-04 Preliminary patch for supporting range pruning of UNIX_TIMESTAMP modified: mysql-test/t/partition.test sql/item_timefunc.cc sql/item_timefunc.h === modified file 'mysql-test/t/partition.test' --- a/mysql-test/t/partition.test 2010-12-22 09:50:36 +0000 +++ b/mysql-test/t/partition.test 2011-02-04 14:02:33 +0000 @@ -112,10 +112,16 @@ INSERT INTO t1 VALUES ('2009-07-14 17:35 INSERT INTO t1 VALUES ('2009-09-21 17:31:42', 'pmax'); SELECT * FROM t1; +SELECT * FROM t1 where a between '2007-01-01' and '2007-08-01'; +EXPLAIN PARTITIONS SELECT * FROM t1 where a between '2007-01-01' and '2007-08-01'; +EXPLAIN PARTITIONS SELECT * FROM t1 where a = '2007-07-30 17:35:48'; ALTER TABLE t1 REORGANIZE PARTITION pmax INTO ( PARTITION p3 VALUES LESS THAN (1247688000), PARTITION pmax VALUES LESS THAN MAXVALUE); SELECT * FROM t1; +SELECT * FROM t1 where a between '2007-01-01' and '2007-08-01'; +EXPLAIN PARTITIONS SELECT * FROM t1 where a between '2007-01-01' and '2007-08-01'; +EXPLAIN PARTITIONS SELECT * FROM t1 where a = '2007-07-30 17:35:48'; SHOW CREATE TABLE t1; DROP TABLE t1; === modified file 'sql/item_timefunc.cc' --- a/sql/item_timefunc.cc 2010-11-12 10:12:15 +0000 +++ b/sql/item_timefunc.cc 2011-02-04 14:02:33 +0000 @@ -1316,6 +1316,26 @@ longlong Item_func_unix_timestamp::val_i 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() { === modified file 'sql/item_timefunc.h' --- a/sql/item_timefunc.h 2011-01-28 12:37:39 +0000 +++ b/sql/item_timefunc.h 2011-02-04 14:02:33 +0000 @@ -349,6 +349,8 @@ public: Item_func_unix_timestamp(Item *a) :Item_int_func(a) {} longlong val_int(); const char *func_name() const { return "unix_timestamp"; } + enum_monotonicity_info get_monotonicity_info() const; + longlong val_int_endpoint(bool left_endp, bool *incl_endp); bool check_partition_func_processor(uchar *int_arg) {return FALSE;} /* UNIX_TIMESTAMP() depends on the current timezone --===============4280059145600311201== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/mattias.jonsson@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: mattias.jonsson@stripped\ # knce6bra5rc9jfs1 # target_branch: file:///Users/mattiasj/mysql-bzr/b28928-51/ # testament_sha1: 2c2de3160f5cad7317f0b58dc951416b7036bf15 # timestamp: 2011-02-04 15:02:52 +0100 # base_revision_id: dmitry.shulga@stripped\ # sakc2ctbjb9n7tqv # # Begin bundle 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 inChIK3O2DA= --===============4280059145600311201==--