Skip to content

Commit

Permalink
planner: remove some unnecessary estimation code (#46498)
Browse files Browse the repository at this point in the history
ref #46358
  • Loading branch information
qw4990 authored Aug 30, 2023
1 parent f516603 commit a43d267
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 326 deletions.
4 changes: 1 addition & 3 deletions planner/cardinality/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ go_library(
name = "cardinality",
srcs = [
"cross_estimation.go",
"histogram.go",
"join.go",
"ndv.go",
"pseudo.go",
Expand Down Expand Up @@ -60,7 +59,7 @@ go_test(
data = glob(["testdata/**"]),
embed = [":cardinality"],
flaky = True,
shard_count = 32,
shard_count = 31,
deps = [
"//config",
"//domain",
Expand All @@ -83,7 +82,6 @@ go_test(
"//testkit/testmain",
"//testkit/testsetup",
"//types",
"//util/chunk",
"//util/codec",
"//util/collate",
"//util/mock",
Expand Down
211 changes: 0 additions & 211 deletions planner/cardinality/histogram.go

This file was deleted.

16 changes: 8 additions & 8 deletions planner/cardinality/row_count_column.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func GetRowCountByColumnRanges(sctx sessionctx.Context, coll *statistics.HistCol
if !ok || c.IsInvalid(sctx, coll.Pseudo) {
result, err = getPseudoRowCountByColumnRanges(sc, float64(coll.RealtimeCount), colRanges, 0)
if err == nil && sc.EnableOptimizerCETrace && ok {
CETraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, colRanges, "Column Stats-Pseudo", uint64(result))
ceTraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, colRanges, "Column Stats-Pseudo", uint64(result))
}
return result, err
}
Expand All @@ -65,7 +65,7 @@ func GetRowCountByColumnRanges(sctx sessionctx.Context, coll *statistics.HistCol
}
result, err = GetColumnRowCount(sctx, c, colRanges, coll.RealtimeCount, coll.ModifyCount, false)
if sc.EnableOptimizerCETrace {
CETraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, colRanges, "Column Stats", uint64(result))
ceTraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, colRanges, "Column Stats", uint64(result))
}
return result, errors.Trace(err)
}
Expand Down Expand Up @@ -97,7 +97,7 @@ func GetRowCountByIntColumnRanges(sctx sessionctx.Context, coll *statistics.Hist
result = getPseudoRowCountByUnsignedIntRanges(intRanges, float64(coll.RealtimeCount))
}
if sc.EnableOptimizerCETrace && ok {
CETraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, intRanges, "Column Stats-Pseudo", uint64(result))
ceTraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, intRanges, "Column Stats-Pseudo", uint64(result))
}
return result, nil
}
Expand All @@ -110,7 +110,7 @@ func GetRowCountByIntColumnRanges(sctx sessionctx.Context, coll *statistics.Hist
}
result, err = GetColumnRowCount(sctx, c, intRanges, coll.RealtimeCount, coll.ModifyCount, true)
if sc.EnableOptimizerCETrace {
CETraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, intRanges, "Column Stats", uint64(result))
ceTraceRange(sctx, coll.PhysicalID, []string{c.Info.Name.O}, intRanges, "Column Stats", uint64(result))
}
return result, errors.Trace(err)
}
Expand Down Expand Up @@ -316,17 +316,17 @@ func ColumnGreaterRowCount(sctx sessionctx.Context, t *statistics.Table, value t
return c.GreaterRowCount(value) * c.GetIncreaseFactor(t.RealtimeCount)
}

// ColumnLessRowCount estimates the row count where the column less than value. Note that null values are not counted.
func ColumnLessRowCount(sctx sessionctx.Context, t *statistics.Table, value types.Datum, colID int64) float64 {
// columnLessRowCount estimates the row count where the column less than value. Note that null values are not counted.
func columnLessRowCount(sctx sessionctx.Context, t *statistics.Table, value types.Datum, colID int64) float64 {
c, ok := t.Columns[colID]
if !ok || c.IsInvalid(sctx, t.Pseudo) {
return float64(t.RealtimeCount) / pseudoLessRate
}
return c.LessRowCount(sctx, value) * c.GetIncreaseFactor(t.RealtimeCount)
}

// ColumnBetweenRowCount estimates the row count where column greater or equal to a and less than b.
func ColumnBetweenRowCount(sctx sessionctx.Context, t *statistics.Table, a, b types.Datum, colID int64) (float64, error) {
// columnBetweenRowCount estimates the row count where column greater or equal to a and less than b.
func columnBetweenRowCount(sctx sessionctx.Context, t *statistics.Table, a, b types.Datum, colID int64) (float64, error) {
sc := sctx.GetSessionVars().StmtCtx
c, ok := t.Columns[colID]
if !ok || c.IsInvalid(sctx, t.Pseudo) {
Expand Down
4 changes: 2 additions & 2 deletions planner/cardinality/row_count_index.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func GetRowCountByIndexRanges(sctx sessionctx.Context, coll *statistics.HistColl
}
result, err = getPseudoRowCountByIndexRanges(sc, indexRanges, float64(coll.RealtimeCount), colsLen)
if err == nil && sc.EnableOptimizerCETrace && ok {
CETraceRange(sctx, coll.PhysicalID, colNames, indexRanges, "Index Stats-Pseudo", uint64(result))
ceTraceRange(sctx, coll.PhysicalID, colNames, indexRanges, "Index Stats-Pseudo", uint64(result))
}
return result, err
}
Expand All @@ -82,7 +82,7 @@ func GetRowCountByIndexRanges(sctx sessionctx.Context, coll *statistics.HistColl
result, err = getIndexRowCountForStatsV2(sctx, idx, coll, indexRanges, coll.RealtimeCount, coll.ModifyCount)
}
if sc.EnableOptimizerCETrace {
CETraceRange(sctx, coll.PhysicalID, colNames, indexRanges, "Index Stats", uint64(result))
ceTraceRange(sctx, coll.PhysicalID, colNames, indexRanges, "Index Stats", uint64(result))
}
return result, errors.Trace(err)
}
Expand Down
4 changes: 2 additions & 2 deletions planner/cardinality/row_count_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ func TestPseudoTable(t *testing.T) {
require.Len(t, tbl.Columns, 1)
require.Greater(t, tbl.RealtimeCount, int64(0))
sctx := mock.NewContext()
count := ColumnLessRowCount(sctx, tbl, types.NewIntDatum(100), colInfo.ID)
count := columnLessRowCount(sctx, tbl, types.NewIntDatum(100), colInfo.ID)
require.Equal(t, 3333, int(count))
count, err := ColumnEqualRowCount(sctx, tbl, types.NewIntDatum(1000), colInfo.ID)
require.NoError(t, err)
require.Equal(t, 10, int(count))
count, _ = ColumnBetweenRowCount(sctx, tbl, types.NewIntDatum(1000), types.NewIntDatum(5000), colInfo.ID)
count, _ = columnBetweenRowCount(sctx, tbl, types.NewIntDatum(1000), types.NewIntDatum(5000), colInfo.ID)
require.Equal(t, 250, int(count))
ti.Columns = append(ti.Columns, &model.ColumnInfo{
ID: 2,
Expand Down
Loading

0 comments on commit a43d267

Please sign in to comment.