diff --git a/mysql-test/suite/tianmu/r/issue829.result b/mysql-test/suite/tianmu/r/issue829.result new file mode 100644 index 000000000..39f99b075 --- /dev/null +++ b/mysql-test/suite/tianmu/r/issue829.result @@ -0,0 +1,74 @@ +CREATE TABLE t1 +( +t1_tinyint TINYINT DEFAULT 0, +t1_int INT DEFAULT NULL, +t1_bigint BIGINT, +t1_decimal DECIMAL(5,2), +t1_text TEXT, +t1_char CHAR(5), +t1_varchar VARCHAR(255) DEFAULT 'hello world!', +t1_datetime DATETIME +)ENGINE=tianmu; +INSERT INTO t1 VALUES(); +INSERT INTO t1 VALUES(NULL, NULL, NULL, NULL, '', '', '', NULL); +INSERT INTO t1 VALUES(1, 123456, 987654321, 122.32, repeat('z', 20), 'aaa', repeat('a', 20), '1111-11-11 11:11:11'); +INSERT INTO t1 VALUES(0, 1023456, 887654321, 222.32, repeat('y', 20), 'aaa', repeat('b', 20), '1111-11-11 11:11:11'); +INSERT INTO t1 VALUES(1, -123456, -987654321, -122.32, repeat('z', 20), 'bbb', repeat('a', 20), '1111-11-11 11:11:11'); +INSERT INTO t1 VALUES(0, -1023456, -887654321, -222.32, repeat('x', 20), 'bbb', repeat('b', 20), '1111-11-11 11:11:11'); +SELECT * FROM t1 WHERE t1_datetime IN ('1111-11-11 11:11:11','1111-11-13 0:0:0'); +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +1 123456 987654321 122.32 zzzzzzzzzzzzzzzzzzzz aaa aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 1023456 887654321 222.32 yyyyyyyyyyyyyyyyyyyy aaa bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 -1023456 -887654321 -222.32 xxxxxxxxxxxxxxxxxxxx bbb bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +SELECT * FROM t1 WHERE t1_datetime = '1111-11-13 0:0:0'; +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +SELECT * FROM t1 WHERE t1_datetime = '1111-11-11 11:11:11'; +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +1 123456 987654321 122.32 zzzzzzzzzzzzzzzzzzzz aaa aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 1023456 887654321 222.32 yyyyyyyyyyyyyyyyyyyy aaa bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 -1023456 -887654321 -222.32 xxxxxxxxxxxxxxxxxxxx bbb bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +SELECT * FROM t1 WHERE t1_datetime < '1111-11-13 0:0:0'; +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +1 123456 987654321 122.32 zzzzzzzzzzzzzzzzzzzz aaa aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 1023456 887654321 222.32 yyyyyyyyyyyyyyyyyyyy aaa bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 -1023456 -887654321 -222.32 xxxxxxxxxxxxxxxxxxxx bbb bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +SELECT * FROM t1 WHERE t1_datetime > '1111-11-13 0:0:0'; +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +SELECT * FROM t1 WHERE t1_datetime > '1111-11-10 0:0:0'; +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +1 123456 987654321 122.32 zzzzzzzzzzzzzzzzzzzz aaa aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 1023456 887654321 222.32 yyyyyyyyyyyyyyyyyyyy aaa bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 +0 -1023456 -887654321 -222.32 xxxxxxxxxxxxxxxxxxxx bbb bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 +CREATE TABLE t2 +( +t1_tinyint TINYINT DEFAULT 0, +t1_int INT DEFAULT NULL, +t1_bigint BIGINT, +t1_decimal DECIMAL(5,2), +t1_text TEXT, +t1_char CHAR(5), +t1_varchar VARCHAR(255) DEFAULT 'hello world!', +t1_datetime DATETIME +)ENGINE=tianmu; +INSERT INTO t2 VALUES(); +INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, '', '', '', NULL); +INSERT INTO t2 VALUES(1, 123456, 987654321, 122.32, repeat('z', 20), 'aaa', repeat('a', 20), '1111-11-11 22:22:22'); +INSERT INTO t2 VALUES(0, 1023456, 887654321, 222.32, repeat('y', 20), 'aaa', repeat('b', 20), '1111-11-12 11:11:11'); +INSERT INTO t2 VALUES(1, -123456, -987654321, -122.32, repeat('z', 20), 'bbb', repeat('a', 20), '1111-11-13 11:11:11'); +INSERT INTO t2 VALUES(0, -1023456, -887654321, -222.32, repeat('x', 20), 'bbb', repeat('b', 20), '1111-11-14 11:11:11'); +SELECT * FROM t2 WHERE t1_datetime IN ('1111-11-11 0:0:0','1111-11-13 11:11:11'); +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-13 11:11:11 +SELECT * FROM t1,t2 WHERE +t1.t1_datetime IN ('1111-11-11 11:11:11','1111-11-13 0:0:0') and +t2.t1_datetime IN ('1111-11-11 0:0:0','1111-11-13 11:11:11'); +t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime t1_tinyint t1_int t1_bigint t1_decimal t1_text t1_char t1_varchar t1_datetime +1 123456 987654321 122.32 zzzzzzzzzzzzzzzzzzzz aaa aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-13 11:11:11 +0 1023456 887654321 222.32 yyyyyyyyyyyyyyyyyyyy aaa bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-13 11:11:11 +1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-11 11:11:11 1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-13 11:11:11 +0 -1023456 -887654321 -222.32 xxxxxxxxxxxxxxxxxxxx bbb bbbbbbbbbbbbbbbbbbbb 1111-11-11 11:11:11 1 -123456 -987654321 -122.32 zzzzzzzzzzzzzzzzzzzz bbb aaaaaaaaaaaaaaaaaaaa 1111-11-13 11:11:11 +drop table t1 ,t2; diff --git a/mysql-test/suite/tianmu/t/issue829.test b/mysql-test/suite/tianmu/t/issue829.test new file mode 100644 index 000000000..8626b724d --- /dev/null +++ b/mysql-test/suite/tianmu/t/issue829.test @@ -0,0 +1,61 @@ +--source include/have_tianmu.inc + +CREATE TABLE t1 +( + t1_tinyint TINYINT DEFAULT 0, + t1_int INT DEFAULT NULL, + t1_bigint BIGINT, + t1_decimal DECIMAL(5,2), + t1_text TEXT, + t1_char CHAR(5), + t1_varchar VARCHAR(255) DEFAULT 'hello world!', + t1_datetime DATETIME +)ENGINE=tianmu; + +INSERT INTO t1 VALUES(); +INSERT INTO t1 VALUES(NULL, NULL, NULL, NULL, '', '', '', NULL); +INSERT INTO t1 VALUES(1, 123456, 987654321, 122.32, repeat('z', 20), 'aaa', repeat('a', 20), '1111-11-11 11:11:11'); +INSERT INTO t1 VALUES(0, 1023456, 887654321, 222.32, repeat('y', 20), 'aaa', repeat('b', 20), '1111-11-11 11:11:11'); +INSERT INTO t1 VALUES(1, -123456, -987654321, -122.32, repeat('z', 20), 'bbb', repeat('a', 20), '1111-11-11 11:11:11'); +INSERT INTO t1 VALUES(0, -1023456, -887654321, -222.32, repeat('x', 20), 'bbb', repeat('b', 20), '1111-11-11 11:11:11'); + +SELECT * FROM t1 WHERE t1_datetime IN ('1111-11-11 11:11:11','1111-11-13 0:0:0'); + +SELECT * FROM t1 WHERE t1_datetime = '1111-11-13 0:0:0'; + +SELECT * FROM t1 WHERE t1_datetime = '1111-11-11 11:11:11'; + +SELECT * FROM t1 WHERE t1_datetime < '1111-11-13 0:0:0'; + +SELECT * FROM t1 WHERE t1_datetime > '1111-11-13 0:0:0'; + +SELECT * FROM t1 WHERE t1_datetime > '1111-11-10 0:0:0'; + + +CREATE TABLE t2 +( + t1_tinyint TINYINT DEFAULT 0, + t1_int INT DEFAULT NULL, + t1_bigint BIGINT, + t1_decimal DECIMAL(5,2), + t1_text TEXT, + t1_char CHAR(5), + t1_varchar VARCHAR(255) DEFAULT 'hello world!', + t1_datetime DATETIME +)ENGINE=tianmu; + +INSERT INTO t2 VALUES(); +INSERT INTO t2 VALUES(NULL, NULL, NULL, NULL, '', '', '', NULL); +INSERT INTO t2 VALUES(1, 123456, 987654321, 122.32, repeat('z', 20), 'aaa', repeat('a', 20), '1111-11-11 22:22:22'); +INSERT INTO t2 VALUES(0, 1023456, 887654321, 222.32, repeat('y', 20), 'aaa', repeat('b', 20), '1111-11-12 11:11:11'); +INSERT INTO t2 VALUES(1, -123456, -987654321, -122.32, repeat('z', 20), 'bbb', repeat('a', 20), '1111-11-13 11:11:11'); +INSERT INTO t2 VALUES(0, -1023456, -887654321, -222.32, repeat('x', 20), 'bbb', repeat('b', 20), '1111-11-14 11:11:11'); + +SELECT * FROM t2 WHERE t1_datetime IN ('1111-11-11 0:0:0','1111-11-13 11:11:11'); + +SELECT * FROM t1,t2 WHERE + t1.t1_datetime IN ('1111-11-11 11:11:11','1111-11-13 0:0:0') and + t2.t1_datetime IN ('1111-11-11 0:0:0','1111-11-13 11:11:11'); + + +drop table t1 ,t2; \ No newline at end of file diff --git a/storage/tianmu/types/rc_datetime.cpp b/storage/tianmu/types/rc_datetime.cpp index 8e4de8471..98233fa83 100644 --- a/storage/tianmu/types/rc_datetime.cpp +++ b/storage/tianmu/types/rc_datetime.cpp @@ -82,11 +82,10 @@ RCDateTime::RCDateTime(short year, short month, short day, short hour, short min dt_.second = std::abs(second); } -RCDateTime::RCDateTime(const MYSQL_TIME &myt, common::CT at) { +RCDateTime::RCDateTime(const MYSQL_TIME &myt, common::CT at) : at_(at) { ASSERT(at == common::CT::DATETIME || at == common::CT::TIMESTAMP || at == common::CT::DATE, "should be 'at == common::CT::DATETIME || at == common::CT::TIMESTAMP || common::CT::DATE'"); null_ = false; - dt_.year = myt.year; dt_.month = myt.month; dt_.day = myt.day;