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

query range colums partition report error #43459

Closed
aytrack opened this issue Apr 27, 2023 · 1 comment · Fixed by #43506
Closed

query range colums partition report error #43459

aytrack opened this issue Apr 27, 2023 · 1 comment · Fixed by #43506

Comments

@aytrack
Copy link
Contributor

aytrack commented Apr 27, 2023

Bug Report

Please answer these questions before submitting your issue. Thanks!

1. Minimal reproduce step (Required)

CREATE TABLE test1 (
ID VARCHAR(50) NOT NULL COMMENT '主键',
PARTITION_NO INT(11) NOT NULL DEFAULT '0' COMMENT '分区',
CREATE_TIME DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (ID,PARTITION_NO,CREATE_TIME) USING BTREE,
INDEX index_partition_no (PARTITION_NO) USING BTREE
)
COMMENT='测试表'
ENGINE=InnoDB
PARTITION BY RANGE COLUMNS(PARTITION_NO,CREATE_TIME)
(PARTITION 2023p1 VALUES LESS THAN (200000,'2023-01-01'),
PARTITION 2023p2 VALUES LESS THAN (300000,'2023-01-01'));
select * from test1 where partition_no >= 200000;

2. What did you expect to see? (Required)

query success

3. What did you see instead (Required)

[15:06:24]TiDB root:test> select * from test1 where partition_no >= 200000;
(1105, 'interface conversion: interface {} is nil, not types.Time')

error stack

"github.com/pingcap/tidb/server.(*clientConn).Run.func1
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/conn.go:1090
runtime.gopanic
	/usr/local/go1.19.8/src/runtime/panic.go:884
github.com/pingcap/tidb/executor.(*Compiler).Compile.func1
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/executor/compiler.go:72
runtime.gopanic
	/usr/local/go1.19.8/src/runtime/panic.go:884
runtime.panicdottypeE
	/usr/local/go1.19.8/src/runtime/iface.go:262
github.com/pingcap/tidb/types.(*Datum).GetMysqlTime
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/types/datum.go:412
github.com/pingcap/tidb/planner/core.minCmp.func1
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:997
sort.Search
	/usr/local/go1.19.8/src/sort/search.go:65
github.com/pingcap/tidb/planner/core.multiColumnRangeColumnsPruner
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:1082
github.com/pingcap/tidb/planner/core.partitionRangeForCNFExpr
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:1098
github.com/pingcap/tidb/planner/core.(*partitionProcessor).pruneRangeColumnsPartition
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:1652
github.com/pingcap/tidb/planner/core.(*partitionProcessor).pruneRangePartition
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:840
github.com/pingcap/tidb/planner/core.(*partitionProcessor).processRangePartition
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:870
github.com/pingcap/tidb/planner/core.(*partitionProcessor).prune
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:652
github.com/pingcap/tidb/planner/core.(*partitionProcessor).rewriteDataSource
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:72
github.com/pingcap/tidb/planner/core.(*partitionProcessor).rewriteDataSource
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:100
github.com/pingcap/tidb/planner/core.(*partitionProcessor).optimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/rule_partition_processor.go:64
github.com/pingcap/tidb/planner/core.logicalOptimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/optimizer.go:874
github.com/pingcap/tidb/planner/core.DoOptimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/optimizer.go:285
github.com/pingcap/tidb/planner.optimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/optimize.go:417
github.com/pingcap/tidb/planner.Optimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/optimize.go:245
github.com/pingcap/tidb/planner/core.(*PlanBuilder).buildExplain
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/planbuilder.go:4783
github.com/pingcap/tidb/planner/core.(*PlanBuilder).Build
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/core/planbuilder.go:779
github.com/pingcap/tidb/planner.buildLogicalPlan
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/optimize.go:461
github.com/pingcap/tidb/planner.optimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/optimize.go:382
github.com/pingcap/tidb/planner.Optimize
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/planner/optimize.go:245
github.com/pingcap/tidb/executor.(*Compiler).Compile
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/executor/compiler.go:116
github.com/pingcap/tidb/session.(*session).ExecuteStmt
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/session/session.go:2172
github.com/pingcap/tidb/server.(*TiDBContext).ExecuteStmt
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/driver_tidb.go:252
github.com/pingcap/tidb/server.(*clientConn).handleStmt
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/conn.go:2122
github.com/pingcap/tidb/server.(*clientConn).handleQuery
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/conn.go:1972
github.com/pingcap/tidb/server.(*clientConn).dispatch
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/conn.go:1403
github.com/pingcap/tidb/server.(*clientConn).Run
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/conn.go:1152
github.com/pingcap/tidb/server.(*Server).onConn
	/Users/pingcap/workspace/build-common@2/go/src/github.com/pingcap/tidb/server/server.go:648

4. What is your TiDB version? (Required)

[15:06:58]TiDB root:test> select tidb_version();
Reconnecting...
+-----------------------------------------------------------+
| tidb_version()                                            |
+-----------------------------------------------------------+
| Release Version: v6.5.2                                   |
| Edition: Community                                        |
| Git Commit Hash: 1a2b9bf971cd63ecef3162d7d7b7a7a434ccac21 |
| Git Branch: heads/refs/tags/v6.5.2                        |
| UTC Build Time: 2023-04-12 13:56:49                       |
| GoVersion: go1.19.8                                       |
| Race Enabled: false                                       |
| TiKV Min Version: 6.2.0-alpha                             |
| Check Table Before Drop: false                            |
| Store: unistore                             
@ti-chi-bot ti-chi-bot bot added may-affects-5.1 This bug maybe affects 5.1.x versions. may-affects-5.2 This bug maybe affects 5.2.x versions. may-affects-5.3 This bug maybe affects 5.3.x versions. may-affects-5.4 This bug maybe affects 5.4.x versions. may-affects-6.1 labels Apr 27, 2023
@aytrack aytrack removed may-affects-5.1 This bug maybe affects 5.1.x versions. may-affects-5.2 This bug maybe affects 5.2.x versions. may-affects-5.3 This bug maybe affects 5.3.x versions. may-affects-5.4 This bug maybe affects 5.4.x versions. may-affects-6.1 labels Apr 27, 2023
@jiyfhust
Copy link
Contributor

jiyfhust commented Apr 27, 2023

switch col.RetType.EvalType() {



			if con, ok := (*conExpr).(*expression.Constant); ok && col != nil {
				switch col.RetType.EvalType() {
				case types.ETInt:
					if mysql.HasUnsignedFlag(col.RetType.GetFlag()) {
						if con.Value.GetUint64() == 0 {
							return false
						}
					} else {
						if con.Value.GetInt64() == types.IntergerSignedLowerBound(col.GetType().GetType()) {
							return false
						}
					}
				case types.ETDatetime:
					if con.Value.GetMysqlTime().IsZero() {
						return false
					}
				case types.ETString:
					if len(con.Value.GetString()) == 0 {
						return false
					}
				}
				

The error position is:

if con.Value.GetMysqlTime().IsZero() {

				case types.ETDatetime:
					if con.Value.GetMysqlTime().IsZero() {
						return false
					}

hi @mjonss. Is it the reason that the col type is "types.ETDatetime",but con.Value type is not?

-- switch col.RetType.EvalType()
++ switch con.RetType ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants