Skip to content

Commit

Permalink
int vec
Browse files Browse the repository at this point in the history
  • Loading branch information
lcwangchao committed Dec 12, 2023
1 parent 56ff39f commit d914219
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
3 changes: 3 additions & 0 deletions pkg/expression/builtin_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -3420,9 +3420,12 @@ func (du *baseDateArithmetical) vecGetIntervalFromInt(b *baseBuiltinFunc, ctx se

result.ReserveString(n)
i64s := buf.Int64s()
unsigned := mysql.HasUnsignedFlag(b.args[1].GetType().GetFlag())
for i := 0; i < n; i++ {
if buf.IsNull(i) {
result.AppendNull()
} else if unsigned {
result.AppendString(strconv.FormatUint(uint64(i64s[i]), 10))
} else {
result.AppendString(strconv.FormatInt(i64s[i], 10))
}
Expand Down
102 changes: 102 additions & 0 deletions tests/integrationtest/r/expression/time.result
Original file line number Diff line number Diff line change
Expand Up @@ -868,6 +868,57 @@ a "1000-01-01 00:00:00" + INTERVAL a MICROSECOND
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as char) DAY from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL cast(a as char) DAY
-9223372036854775809.00 NULL
-9223372036854775808.00 NULL
-1000.50 0997-04-06 00:00:00
-1.60 0999-12-31 00:00:00
-1.50 0999-12-31 00:00:00
-1.40 0999-12-31 00:00:00
-1.00 0999-12-31 00:00:00
1.00 1000-01-02 00:00:00
1.40 1000-01-02 00:00:00
1.50 1000-01-02 00:00:00
1.60 1000-01-02 00:00:00
315600000000000000.00 NULL
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as signed) DAY from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL cast(a as signed) DAY
-9223372036854775809.00 NULL
-9223372036854775808.00 NULL
-1000.50 0997-04-05 00:00:00
-1.60 0999-12-30 00:00:00
-1.50 0999-12-30 00:00:00
-1.40 0999-12-31 00:00:00
-1.00 0999-12-31 00:00:00
1.00 1000-01-02 00:00:00
1.40 1000-01-02 00:00:00
1.50 1000-01-03 00:00:00
1.60 1000-01-03 00:00:00
315600000000000000.00 NULL
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as unsigned) DAY from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL cast(a as unsigned) DAY
-9223372036854775809.00 1000-01-01 00:00:00
-9223372036854775808.00 1000-01-01 00:00:00
-1000.50 1000-01-01 00:00:00
-1.60 1000-01-01 00:00:00
-1.50 1000-01-01 00:00:00
-1.40 1000-01-01 00:00:00
-1.00 1000-01-01 00:00:00
1.00 1000-01-02 00:00:00
1.40 1000-01-02 00:00:00
1.50 1000-01-03 00:00:00
1.60 1000-01-03 00:00:00
315600000000000000.00 NULL
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
set @@tidb_enable_vectorized_expression=1;
select a, "1000-01-01 00:00:00" + INTERVAL a YEAR from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL a YEAR
Expand Down Expand Up @@ -920,6 +971,57 @@ a "1000-01-01 00:00:00" + INTERVAL a MICROSECOND
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as char) DAY from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL cast(a as char) DAY
-9223372036854775809.00 NULL
-9223372036854775808.00 NULL
-1000.50 0997-04-06 00:00:00
-1.60 0999-12-31 00:00:00
-1.50 0999-12-31 00:00:00
-1.40 0999-12-31 00:00:00
-1.00 0999-12-31 00:00:00
1.00 1000-01-02 00:00:00
1.40 1000-01-02 00:00:00
1.50 1000-01-02 00:00:00
1.60 1000-01-02 00:00:00
315600000000000000.00 NULL
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as signed) DAY from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL cast(a as signed) DAY
-9223372036854775809.00 NULL
-9223372036854775808.00 NULL
-1000.50 0997-04-05 00:00:00
-1.60 0999-12-30 00:00:00
-1.50 0999-12-30 00:00:00
-1.40 0999-12-31 00:00:00
-1.00 0999-12-31 00:00:00
1.00 1000-01-02 00:00:00
1.40 1000-01-02 00:00:00
1.50 1000-01-03 00:00:00
1.60 1000-01-03 00:00:00
315600000000000000.00 NULL
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as unsigned) DAY from t1 order by a ASC;
a "1000-01-01 00:00:00" + INTERVAL cast(a as unsigned) DAY
-9223372036854775809.00 1000-01-01 00:00:00
-9223372036854775808.00 1000-01-01 00:00:00
-1000.50 1000-01-01 00:00:00
-1.60 1000-01-01 00:00:00
-1.50 1000-01-01 00:00:00
-1.40 1000-01-01 00:00:00
-1.00 1000-01-01 00:00:00
1.00 1000-01-02 00:00:00
1.40 1000-01-02 00:00:00
1.50 1000-01-03 00:00:00
1.60 1000-01-03 00:00:00
315600000000000000.00 NULL
9223372036854775808.00 NULL
18446744073709551615.00 NULL
18446744073709551616.00 NULL
create table t2(a decimal(65, 2), d datetime);
set @old_sql_mode=@@sql_mode;
set @@sql_mode='';
Expand Down
6 changes: 6 additions & 0 deletions tests/integrationtest/t/expression/time.test
Original file line number Diff line number Diff line change
Expand Up @@ -283,11 +283,17 @@ set @@tidb_enable_vectorized_expression=0;
select a, "1000-01-01 00:00:00" + INTERVAL a YEAR from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL a MINUTE from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL a MICROSECOND from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as char) DAY from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as signed) DAY from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as unsigned) DAY from t1 order by a ASC;

set @@tidb_enable_vectorized_expression=1;
select a, "1000-01-01 00:00:00" + INTERVAL a YEAR from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL a MINUTE from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL a MICROSECOND from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as char) DAY from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as signed) DAY from t1 order by a ASC;
select a, "1000-01-01 00:00:00" + INTERVAL cast(a as unsigned) DAY from t1 order by a ASC;

create table t2(a decimal(65, 2), d datetime);
set @old_sql_mode=@@sql_mode;
Expand Down

0 comments on commit d914219

Please sign in to comment.