Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

planner: fix incorrect duration between compare (#22830) #23233

Merged
merged 39 commits into from
May 11, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
b8ee8af
cherry pick #22830 to release-4.0
b41sh Mar 10, 2021
f24a934
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot Apr 12, 2021
cd8f75a
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot Apr 30, 2021
8886bdc
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot Apr 30, 2021
17fff05
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot Apr 30, 2021
e717054
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
40b4dd7
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
b464e40
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
384bdd6
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
4f0efa8
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
66e9c9b
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
f52f0de
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
5ed1408
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
db9a879
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 6, 2021
d5a72a4
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 7, 2021
e1c27d1
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 7, 2021
13a1f83
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 7, 2021
0a64cdd
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 8, 2021
eaabb4a
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 8, 2021
4ccd9af
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 8, 2021
f48044a
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 8, 2021
8975485
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
fd8dbcb
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
7e85a59
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
16347ff
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
42edeaa
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
df7e455
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
e20bd6a
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
754d38b
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
c6da6f2
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
0ff8f22
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
4226481
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
4cd484a
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
8fe6ebb
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
2c39da8
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
c25b7d6
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
bdb6e4e
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 10, 2021
3c02b7a
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 11, 2021
66e2ed7
Merge branch 'release-4.0' into release-4.0-50d840f81b6e
ti-chi-bot May 11, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions expression/builtin_compare.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,14 +385,18 @@ func ResolveType4Between(args [3]Expression) types.EvalType {

hasTemporal := false
if cmpTp == types.ETString {
for _, arg := range args {
if types.IsTypeTemporal(arg.GetType().Tp) {
hasTemporal = true
break
if args[0].GetType().Tp == mysql.TypeDuration {
cmpTp = types.ETDuration
} else {
for _, arg := range args {
if types.IsTypeTemporal(arg.GetType().Tp) {
hasTemporal = true
break
}
}
if hasTemporal {
cmpTp = types.ETDatetime
}
}
if hasTemporal {
cmpTp = types.ETDatetime
}
}

Expand Down
5 changes: 5 additions & 0 deletions planner/core/expression_rewriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -1547,6 +1547,11 @@ func (er *expressionRewriter) wrapExpWithCast() (expr, lexp, rexp expression.Exp
}
return expression.WrapWithCastAsString(ctx, e)
}
case types.ETDuration:
expr = expression.WrapWithCastAsTime(er.sctx, expr, types.NewFieldType(mysql.TypeDuration))
lexp = expression.WrapWithCastAsTime(er.sctx, lexp, types.NewFieldType(mysql.TypeDuration))
rexp = expression.WrapWithCastAsTime(er.sctx, rexp, types.NewFieldType(mysql.TypeDuration))
return
case types.ETDatetime:
expr = expression.WrapWithCastAsTime(er.sctx, expr, types.NewFieldType(mysql.TypeDatetime))
lexp = expression.WrapWithCastAsTime(er.sctx, lexp, types.NewFieldType(mysql.TypeDatetime))
Expand Down
18 changes: 18 additions & 0 deletions planner/core/expression_rewriter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -377,3 +377,21 @@ func (s *testExpressionRewriterSuite) TestCompareMultiFieldsInSubquery(c *C) {
tk.MustQuery("SELECT * FROM t3 WHERE (SELECT c1, c2 FROM t3 LIMIT 1) != ALL(SELECT c1, c2 FROM t4);").Check(testkit.Rows())

}

func (s *testExpressionRewriterSuite) TestIssue22818(c *C) {
defer testleak.AfterTest(c)()
store, dom, err := newStoreWithBootstrap()
c.Assert(err, IsNil)
tk := testkit.NewTestKit(c, store)
defer func() {
dom.Close()
store.Close()
}()

tk.MustExec("use test;")
tk.MustExec("drop table if exists t;")
tk.MustExec("create table t(a time);")
tk.MustExec("insert into t values(\"23:22:22\");")
tk.MustQuery("select * from t where a between \"23:22:22\" and \"23:22:22\"").Check(
testkit.Rows("23:22:22"))
}