Skip to content

Commit f33e04f

Browse files
authored
expression: make sysdate unfoldable (#7838)
1 parent 177c155 commit f33e04f

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

cmd/explaintest/r/select.result

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,3 +328,7 @@ Point_Get_1 1.00 root table:t, handle:1
328328
desc select * from t where a = '1';
329329
id count task operator info
330330
Point_Get_1 1.00 root table:t, handle:1
331+
desc select sysdate(), sleep(1), sysdate();
332+
id count task operator info
333+
Projection_3 1.00 root sysdate(), sleep(1), sysdate()
334+
└─TableDual_4 1.00 root rows:1

cmd/explaintest/t/select.test

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,3 +163,5 @@ drop table if exists t;
163163
create table t(a bigint primary key, b bigint);
164164
desc select * from t where a = 1;
165165
desc select * from t where a = '1';
166+
167+
desc select sysdate(), sleep(1), sysdate();

expression/function_traits.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ var UnCacheableFunctions = map[string]struct{}{
4040

4141
// unFoldableFunctions stores functions which can not be folded duration constant folding stage.
4242
var unFoldableFunctions = map[string]struct{}{
43+
ast.Sysdate: {},
4344
ast.FoundRows: {},
4445
ast.Rand: {},
4546
ast.UUID: {},

expression/function_traits_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Copyright 2018 PingCAP, Inc.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
14+
package expression
15+
16+
import (
17+
. "github.com/pingcap/check"
18+
"github.com/pingcap/tidb/ast"
19+
"github.com/pingcap/tidb/util/testleak"
20+
)
21+
22+
func (s *testEvaluatorSuite) TestUnfoldableFuncs(c *C) {
23+
defer testleak.AfterTest(c)()
24+
_, ok := unFoldableFunctions[ast.Sysdate]
25+
c.Assert(ok, IsTrue)
26+
}

0 commit comments

Comments
 (0)