diff --git a/go.mod b/go.mod index db41a94f4d975..d60b43d43be26 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/pingcap/goleveldb v0.0.0-20191226122134-f82aafb29989 github.com/pingcap/kvproto v0.0.0-20200210234432-a965739f8162 github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd - github.com/pingcap/parser v0.0.0-20200212063918-0829643f461c + github.com/pingcap/parser v0.0.0-20200218113622-517beb2e39c2 github.com/pingcap/pd v1.1.0-beta.0.20200106144140-f5a7aa985497 github.com/pingcap/sysutil v0.0.0-20200206130906-2bfa6dc40bcd github.com/pingcap/tidb-tools v3.0.6-0.20191106033616-90632dda3863+incompatible diff --git a/go.sum b/go.sum index f1dd1850baeb0..0a74a7f681878 100644 --- a/go.sum +++ b/go.sum @@ -211,8 +211,8 @@ github.com/pingcap/kvproto v0.0.0-20200210234432-a965739f8162/go.mod h1:IOdRDPLy github.com/pingcap/log v0.0.0-20191012051959-b742a5d432e9/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd h1:CV3VsP3Z02MVtdpTMfEgRJ4T9NGgGTxdHpJerent7rM= github.com/pingcap/log v0.0.0-20200117041106-d28c14d3b1cd/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= -github.com/pingcap/parser v0.0.0-20200212063918-0829643f461c h1:QbFj6Ng/PvHeQNN7aPWpulXIzoo+j/J8odEM7ERUt7g= -github.com/pingcap/parser v0.0.0-20200212063918-0829643f461c/go.mod h1:9v0Edh8IbgjGYW2ArJr19E+bvL8zKahsFp+ixWeId+4= +github.com/pingcap/parser v0.0.0-20200218113622-517beb2e39c2 h1:DsymejjOFdljM1q0BJ8yBZUYQ7718+7JTO046Rqd/3k= +github.com/pingcap/parser v0.0.0-20200218113622-517beb2e39c2/go.mod h1:9v0Edh8IbgjGYW2ArJr19E+bvL8zKahsFp+ixWeId+4= github.com/pingcap/pd v1.1.0-beta.0.20200106144140-f5a7aa985497 h1:FzLErYtcXnSxtC469OuVDlgBbh0trJZzNxw0mNKzyls= github.com/pingcap/pd v1.1.0-beta.0.20200106144140-f5a7aa985497/go.mod h1:cfT/xu4Zz+Tkq95QrLgEBZ9ikRcgzy4alHqqoaTftqI= github.com/pingcap/sysutil v0.0.0-20191216090214-5f9620d22b3b/go.mod h1:EB/852NMQ+aRKioCpToQ94Wl7fktV+FNnxf3CX/TTXI= diff --git a/planner/core/logical_plan_builder.go b/planner/core/logical_plan_builder.go index 0e15289700aec..46c8735cdc7cc 100644 --- a/planner/core/logical_plan_builder.go +++ b/planner/core/logical_plan_builder.go @@ -2240,10 +2240,10 @@ func (b *PlanBuilder) pushTableHints(hints []*ast.TableOptimizerHint, nodeType n }) } case HintReadFromStorage: - if hint.StoreType.L == HintTiFlash { + switch hint.HintData.(model.CIStr).L { + case HintTiFlash: tiflashTables = tableNames2HintTableInfo(b.ctx, hint.Tables, b.hintProcessor, nodeType, currentLevel) - } - if hint.StoreType.L == HintTiKV { + case HintTiKV: tikvTables = tableNames2HintTableInfo(b.ctx, hint.Tables, b.hintProcessor, nodeType, currentLevel) } case HintIndexMerge: diff --git a/planner/optimize.go b/planner/optimize.go index 5e1fe2bf3deda..b7fb01492508f 100644 --- a/planner/optimize.go +++ b/planner/optimize.go @@ -323,13 +323,13 @@ func handleStmtHints(hints []*ast.TableOptimizerHint) (stmtHints stmtctx.StmtHin warns = append(warns, warn) } // Executor use MemoryQuota <= 0 to indicate no memory limit, here use < 0 to handle hint syntax error. - if memoryQuotaHint.MemoryQuota < 0 { + if memoryQuota := memoryQuotaHint.HintData.(int64); memoryQuota < 0 { warn := errors.New("The use of MEMORY_QUOTA hint is invalid, valid usage: MEMORY_QUOTA(10 MB) or MEMORY_QUOTA(10 GB)") warns = append(warns, warn) } else { stmtHints.HasMemQuotaHint = true - stmtHints.MemQuotaQuery = memoryQuotaHint.MemoryQuota - if memoryQuotaHint.MemoryQuota == 0 { + stmtHints.MemQuotaQuery = memoryQuota + if memoryQuota == 0 { warn := errors.New("Setting the MEMORY_QUOTA to 0 means no memory limit") warns = append(warns, warn) } @@ -342,7 +342,7 @@ func handleStmtHints(hints []*ast.TableOptimizerHint) (stmtHints stmtctx.StmtHin warns = append(warns, warn) } stmtHints.HasAllowInSubqToJoinAndAggHint = true - stmtHints.AllowInSubqToJoinAndAgg = useToJAHint.HintFlag + stmtHints.AllowInSubqToJoinAndAgg = useToJAHint.HintData.(bool) } // Handle NO_INDEX_MERGE if noIndexMergeHintCnt != 0 { @@ -368,7 +368,7 @@ func handleStmtHints(hints []*ast.TableOptimizerHint) (stmtHints stmtctx.StmtHin warns = append(warns, warn) } stmtHints.HasMaxExecutionTime = true - stmtHints.MaxExecutionTime = maxExecutionTime.MaxExecutionTime + stmtHints.MaxExecutionTime = maxExecutionTime.HintData.(uint64) } return }