forked from pingcap/tidb
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This is an automated cherry-pick of pingcap#47550
Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
- Loading branch information
1 parent
739ff55
commit 2ec7023
Showing
12 changed files
with
3,208 additions
and
39 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1,413 changes: 1,413 additions & 0 deletions
1,413
pkg/planner/core/casetest/testdata/integration_suite_out.json
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
// Copyright 2023 PingCAP, Inc. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package fixcontrol | ||
|
||
import ( | ||
"strconv" | ||
"strings" | ||
) | ||
|
||
const ( | ||
// Fix44262 controls whether to allow to use dynamic-mode to access partitioning tables without global-stats (#44262). | ||
Fix44262 uint64 = 44262 | ||
// Fix44389 controls whether to consider non-point ranges of some CNF item when building ranges. | ||
Fix44389 uint64 = 44389 | ||
// Fix44830 controls whether to allow to cache Batch/PointGet from some complex scenarios. | ||
// See #44830 for more details. | ||
Fix44830 uint64 = 44830 | ||
// Fix44823 controls the maximum number of parameters for a query that can be cached in the Plan Cache. | ||
Fix44823 uint64 = 44823 | ||
// Fix44855 controls whether to use a more accurate upper bound when estimating row count of index | ||
// range scan under inner side of index join. | ||
Fix44855 uint64 = 44855 | ||
// Fix45132 controls whether to use access range row count to determine access path on the Skyline pruning. | ||
Fix45132 uint64 = 45132 | ||
// Fix45822 controls whether to eliminate apply operator. | ||
Fix45822 uint64 = 45822 | ||
// Fix45798 controls whether to cache plans that access generated columns. | ||
Fix45798 uint64 = 45798 | ||
// Fix46177 controls whether to explore enforced plans for DataSource if it has already found an unenforced plan. | ||
Fix46177 uint64 = 46177 | ||
) | ||
|
||
// GetStr fetches the given key from the fix control map as a string type. | ||
func GetStr(fixControlMap map[uint64]string, key uint64) (value string, exists bool) { | ||
if fixControlMap == nil { | ||
return "", false | ||
} | ||
rawValue, ok := fixControlMap[key] | ||
if !ok { | ||
return "", false | ||
} | ||
return rawValue, true | ||
} | ||
|
||
// GetStrWithDefault fetches the given key from the fix control map as a string type, | ||
// and a default value would be returned when fail to fetch the expected key. | ||
func GetStrWithDefault(fixControlMap map[uint64]string, key uint64, defaultVal string) string { | ||
value, exists := GetStr(fixControlMap, key) | ||
if !exists { | ||
return defaultVal | ||
} | ||
return value | ||
} | ||
|
||
// GetBool fetches the given key from the fix control map as a boolean type. | ||
func GetBool(fixControlMap map[uint64]string, key uint64) (value bool, exists bool) { | ||
if fixControlMap == nil { | ||
return false, false | ||
} | ||
rawValue, ok := fixControlMap[key] | ||
if !ok { | ||
return false, false | ||
} | ||
// The same as TiDBOptOn in sessionctx/variable. | ||
value = strings.EqualFold(rawValue, "ON") || rawValue == "1" | ||
return value, true | ||
} | ||
|
||
// GetBoolWithDefault fetches the given key from the fix control map as a boolean type, | ||
// and a default value would be returned when fail to fetch the expected key. | ||
func GetBoolWithDefault(fixControlMap map[uint64]string, key uint64, defaultVal bool) bool { | ||
value, exists := GetBool(fixControlMap, key) | ||
if !exists { | ||
return defaultVal | ||
} | ||
return value | ||
} | ||
|
||
// GetInt fetches the given key from the fix control map as an uint64 type. | ||
func GetInt(fixControlMap map[uint64]string, key uint64) (value int64, exists bool, parseErr error) { | ||
if fixControlMap == nil { | ||
return 0, false, nil | ||
} | ||
rawValue, ok := fixControlMap[key] | ||
if !ok { | ||
return 0, false, nil | ||
} | ||
// The same as TidbOptInt64 in sessionctx/variable. | ||
value, parseErr = strconv.ParseInt(rawValue, 10, 64) | ||
return value, true, parseErr | ||
} | ||
|
||
// GetIntWithDefault fetches the given key from the fix control map as an uint64 type, | ||
// // and a default value would be returned when fail to fetch the expected key. | ||
func GetIntWithDefault(fixControlMap map[uint64]string, key uint64, defaultVal int64) int64 { | ||
value, exists, err := GetInt(fixControlMap, key) | ||
if !exists || err != nil { | ||
return defaultVal | ||
} | ||
return value | ||
} | ||
|
||
// GetFloat fetches the given key from the fix control map as a float64 type. | ||
func GetFloat(fixControlMap map[uint64]string, key uint64) (value float64, exists bool, parseErr error) { | ||
if fixControlMap == nil { | ||
return 0, false, nil | ||
} | ||
rawValue, ok := fixControlMap[key] | ||
if !ok { | ||
return 0, false, nil | ||
} | ||
// The same as tidbOptFloat64 in sessionctx/variable. | ||
value, parseErr = strconv.ParseFloat(rawValue, 64) | ||
return value, true, parseErr | ||
} | ||
|
||
// GetFloatWithDefault fetches the given key from the fix control map as a float64 type, | ||
// // and a default value would be returned when fail to fetch the expected key. | ||
func GetFloatWithDefault(fixControlMap map[uint64]string, key uint64, defaultVal float64) float64 { | ||
value, exists, err := GetFloat(fixControlMap, key) | ||
if !exists || err != nil { | ||
return defaultVal | ||
} | ||
return value | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.