From 632228dfa7ec941a024040db11deb30e325cebdd Mon Sep 17 00:00:00 2001 From: Max Hoffman Date: Mon, 5 Feb 2024 11:32:16 -0800 Subject: [PATCH 1/2] [no-release-notes] edits for stat funcs --- memory/stats.go | 9 +++++++++ sql/analyzer/catalog.go | 4 ++++ sql/catalog_map.go | 5 +++++ sql/statistics.go | 2 ++ test/test_catalog.go | 5 +++++ 5 files changed, 25 insertions(+) diff --git a/memory/stats.go b/memory/stats.go index 1bcf130b9e..78d39ca390 100644 --- a/memory/stats.go +++ b/memory/stats.go @@ -293,3 +293,12 @@ func (s *StatsProv) DataLength(ctx *sql.Context, db, table string) (uint64, erro } return size, nil } + +func (s *StatsProv) DropDbStats(ctx *sql.Context, db string) error { + for key, _ := range s.colStats { + if strings.HasPrefix(string(key), db) { + delete(s.colStats, key) + } + } + return nil +} diff --git a/sql/analyzer/catalog.go b/sql/analyzer/catalog.go index ada9e2d686..28cc2448ec 100644 --- a/sql/analyzer/catalog.go +++ b/sql/analyzer/catalog.go @@ -44,6 +44,10 @@ type Catalog struct { locks sessionLocks } +func (c *Catalog) DropDbStats(ctx *sql.Context, db string) error { + return c.StatsProvider.DropDbStats(ctx, db) +} + var _ sql.Catalog = (*Catalog)(nil) var _ sql.FunctionProvider = (*Catalog)(nil) var _ sql.TableFunctionProvider = (*Catalog)(nil) diff --git a/sql/catalog_map.go b/sql/catalog_map.go index 0539603ac4..f852f0e721 100644 --- a/sql/catalog_map.go +++ b/sql/catalog_map.go @@ -143,3 +143,8 @@ func (t MapCatalog) RowCount(ctx *Context, db, table string) (uint64, error) { func (t MapCatalog) DataLength(ctx *Context, db, table string) (uint64, error) { return 1, nil } + +func (t MapCatalog) DropDbStats(ctx *Context, db string) error { + //TODO implement me + panic("implement me") +} diff --git a/sql/statistics.go b/sql/statistics.go index 469cd562bd..7fc2fabc09 100644 --- a/sql/statistics.go +++ b/sql/statistics.go @@ -43,6 +43,8 @@ type StatsProvider interface { GetStats(ctx *Context, qual StatQualifier, cols []string) (Statistic, bool) // DropStats deletes a set of column statistics DropStats(ctx *Context, qual StatQualifier, cols []string) error + // DropAllStats deletes all database statistics + DropDbStats(ctx *Context, db string) error // RowCount returns the number of rows in a table RowCount(ctx *Context, db, table string) (uint64, error) // DataLength returns the estimated size of each row in the table diff --git a/test/test_catalog.go b/test/test_catalog.go index 670aef55fb..880766f5f5 100644 --- a/test/test_catalog.go +++ b/test/test_catalog.go @@ -208,3 +208,8 @@ func (c *Catalog) DataLength(ctx *sql.Context, db, table string) (uint64, error) //TODO implement me panic("implement me") } + +func (c *Catalog) DropDbStats(ctx *sql.Context, db string) error { + //TODO implement me + panic("implement me") +} From 840d387981a7d45cc8848cbc4523d9b2ce971b39 Mon Sep 17 00:00:00 2001 From: Max Hoffman Date: Tue, 6 Feb 2024 15:00:42 -0800 Subject: [PATCH 2/2] edit drop interface to switch on fisk flush --- memory/stats.go | 2 +- sql/analyzer/catalog.go | 4 ++-- sql/catalog_map.go | 2 +- sql/statistics.go | 2 +- test/test_catalog.go | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/memory/stats.go b/memory/stats.go index 78d39ca390..d68d59f3a9 100644 --- a/memory/stats.go +++ b/memory/stats.go @@ -294,7 +294,7 @@ func (s *StatsProv) DataLength(ctx *sql.Context, db, table string) (uint64, erro return size, nil } -func (s *StatsProv) DropDbStats(ctx *sql.Context, db string) error { +func (s *StatsProv) DropDbStats(ctx *sql.Context, db string, flush bool) error { for key, _ := range s.colStats { if strings.HasPrefix(string(key), db) { delete(s.colStats, key) diff --git a/sql/analyzer/catalog.go b/sql/analyzer/catalog.go index 28cc2448ec..9551e0052f 100644 --- a/sql/analyzer/catalog.go +++ b/sql/analyzer/catalog.go @@ -44,8 +44,8 @@ type Catalog struct { locks sessionLocks } -func (c *Catalog) DropDbStats(ctx *sql.Context, db string) error { - return c.StatsProvider.DropDbStats(ctx, db) +func (c *Catalog) DropDbStats(ctx *sql.Context, db string, flush bool) error { + return c.StatsProvider.DropDbStats(ctx, db, flush) } var _ sql.Catalog = (*Catalog)(nil) diff --git a/sql/catalog_map.go b/sql/catalog_map.go index f852f0e721..b4a19dd365 100644 --- a/sql/catalog_map.go +++ b/sql/catalog_map.go @@ -144,7 +144,7 @@ func (t MapCatalog) DataLength(ctx *Context, db, table string) (uint64, error) { return 1, nil } -func (t MapCatalog) DropDbStats(ctx *Context, db string) error { +func (t MapCatalog) DropDbStats(ctx *Context, db string, flush bool) error { //TODO implement me panic("implement me") } diff --git a/sql/statistics.go b/sql/statistics.go index 7fc2fabc09..303760d9e3 100644 --- a/sql/statistics.go +++ b/sql/statistics.go @@ -44,7 +44,7 @@ type StatsProvider interface { // DropStats deletes a set of column statistics DropStats(ctx *Context, qual StatQualifier, cols []string) error // DropAllStats deletes all database statistics - DropDbStats(ctx *Context, db string) error + DropDbStats(ctx *Context, db string, flush bool) error // RowCount returns the number of rows in a table RowCount(ctx *Context, db, table string) (uint64, error) // DataLength returns the estimated size of each row in the table diff --git a/test/test_catalog.go b/test/test_catalog.go index 880766f5f5..31d2c30e55 100644 --- a/test/test_catalog.go +++ b/test/test_catalog.go @@ -209,7 +209,7 @@ func (c *Catalog) DataLength(ctx *sql.Context, db, table string) (uint64, error) panic("implement me") } -func (c *Catalog) DropDbStats(ctx *sql.Context, db string) error { +func (c *Catalog) DropDbStats(ctx *sql.Context, db string, flush bool) error { //TODO implement me panic("implement me") }