diff --git a/go/go.mod b/go/go.mod index 612a7c65a26..d7aca371d4b 100644 --- a/go/go.mod +++ b/go/go.mod @@ -57,7 +57,7 @@ require ( github.com/cespare/xxhash v1.1.0 github.com/creasty/defaults v1.6.0 github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 - github.com/dolthub/go-mysql-server v0.18.2-0.20240702022058-d7eb602c04ee + github.com/dolthub/go-mysql-server v0.18.2-0.20240703002444-01667a0198d3 github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 github.com/dolthub/swiss v0.1.0 github.com/goccy/go-json v0.10.2 diff --git a/go/go.sum b/go/go.sum index 34d088a4323..5be3e2882ef 100644 --- a/go/go.sum +++ b/go/go.sum @@ -183,8 +183,8 @@ github.com/dolthub/fslock v0.0.3 h1:iLMpUIvJKMKm92+N1fmHVdxJP5NdyDK5bK7z7Ba2s2U= github.com/dolthub/fslock v0.0.3/go.mod h1:QWql+P17oAAMLnL4HGB5tiovtDuAjdDTPbuqx7bYfa0= github.com/dolthub/go-icu-regex v0.0.0-20230524105445-af7e7991c97e h1:kPsT4a47cw1+y/N5SSCkma7FhAPw7KeGmD6c9PBZW9Y= github.com/dolthub/go-icu-regex v0.0.0-20230524105445-af7e7991c97e/go.mod h1:KPUcpx070QOfJK1gNe0zx4pA5sicIK1GMikIGLKC168= -github.com/dolthub/go-mysql-server v0.18.2-0.20240702022058-d7eb602c04ee h1:VYwVsWT3byEtq6W8ebAVO7cNCPUKeUNr590s/U6F3wo= -github.com/dolthub/go-mysql-server v0.18.2-0.20240702022058-d7eb602c04ee/go.mod h1:JahRYjx/Py6T/bWrnTu25CaGn94Df+McAuWGEG0shwU= +github.com/dolthub/go-mysql-server v0.18.2-0.20240703002444-01667a0198d3 h1:HoLlqFO9gQHwURwkpgCPOXH4wU3W00J3x6NeNL0B9/Q= +github.com/dolthub/go-mysql-server v0.18.2-0.20240703002444-01667a0198d3/go.mod h1:JahRYjx/Py6T/bWrnTu25CaGn94Df+McAuWGEG0shwU= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63 h1:OAsXLAPL4du6tfbBgK0xXHZkOlos63RdKYS3Sgw/dfI= github.com/dolthub/gozstd v0.0.0-20240423170813-23a2903bca63/go.mod h1:lV7lUeuDhH5thVGDCKXbatwKy2KW80L4rMT46n+Y2/Q= github.com/dolthub/ishell v0.0.0-20240701202509-2b217167d718 h1:lT7hE5k+0nkBdj/1UOSFwjWpNxf+LCApbRHgnCA17XE= diff --git a/go/libraries/doltcore/sqle/statsnoms/load.go b/go/libraries/doltcore/sqle/statsnoms/load.go index ea8e6b10698..b8eba011ec3 100644 --- a/go/libraries/doltcore/sqle/statsnoms/load.go +++ b/go/libraries/doltcore/sqle/statsnoms/load.go @@ -207,7 +207,13 @@ func loadLowerBound(ctx *sql.Context, qual sql.StatQualifier) (sql.Row, error) { if err != nil { return nil, err } - idx, err := table.GetIndexRowData(ctx, qual.Index()) + + var idx durable.Index + if qual.Index() == "primary" { + idx, err = table.GetRowData(ctx) + } else { + idx, err = table.GetIndexRowData(ctx, qual.Index()) + } if err != nil { return nil, err } diff --git a/go/libraries/doltcore/sqle/statspro/dolt_stats.go b/go/libraries/doltcore/sqle/statspro/dolt_stats.go index 8f2b3d117c2..7411b0fc52f 100644 --- a/go/libraries/doltcore/sqle/statspro/dolt_stats.go +++ b/go/libraries/doltcore/sqle/statspro/dolt_stats.go @@ -166,7 +166,7 @@ func (s *DoltStats) WithHistogram(h sql.Histogram) (sql.Statistic, error) { for _, b := range h { doltB, ok := b.(DoltBucket) if !ok { - return nil, fmt.Errorf("invalid bucket type: %T", b) + return nil, fmt.Errorf("invalid bucket type: %T, %s", b, h.DebugString()) } ret.Hist = append(ret.Hist, doltB) } @@ -206,11 +206,39 @@ func (s *DoltStats) UpdateActive() { type DoltHistogram []DoltBucket type DoltBucket struct { - *stats.Bucket + Bucket *stats.Bucket Chunk hash.Hash Created time.Time } +func (d DoltBucket) RowCount() uint64 { + return d.Bucket.RowCount() +} + +func (d DoltBucket) DistinctCount() uint64 { + return d.Bucket.DistinctCount() +} + +func (d DoltBucket) NullCount() uint64 { + return d.Bucket.NullCount() +} + +func (d DoltBucket) BoundCount() uint64 { + return d.Bucket.BoundCount() +} + +func (d DoltBucket) UpperBound() sql.Row { + return d.Bucket.UpperBound() +} + +func (d DoltBucket) McvCounts() []uint64 { + return d.Bucket.McvCounts() +} + +func (d DoltBucket) Mcvs() []sql.Row { + return d.Bucket.Mcvs() +} + func DoltBucketChunk(b sql.HistogramBucket) hash.Hash { return b.(DoltBucket).Chunk } @@ -243,7 +271,7 @@ func DoltHistFromSql(hist sql.Histogram, types []sql.Type) (sql.Histogram, error } } ret[i] = DoltBucket{ - Bucket: stats.NewHistogramBucket(b.RowCount(), b.DistinctCount(), b.NullCount(), b.BoundCount(), upperBound, b.McvCounts(), mcvs), + Bucket: stats.NewHistogramBucket(b.RowCount(), b.DistinctCount(), b.NullCount(), b.BoundCount(), upperBound, b.McvCounts(), mcvs).(*stats.Bucket), } } return ret, nil diff --git a/go/libraries/doltcore/sqle/statspro/update_test.go b/go/libraries/doltcore/sqle/statspro/update_test.go index e981aeca386..ef670e19c8b 100644 --- a/go/libraries/doltcore/sqle/statspro/update_test.go +++ b/go/libraries/doltcore/sqle/statspro/update_test.go @@ -209,7 +209,7 @@ func TestBucketBuilder(t *testing.T) { require.Equal(t, int(tt.bucket.DistinctCount()), int(bucket.DistinctCount())) require.Equal(t, int(tt.bucket.BoundCount()), int(bucket.BoundCount())) require.Equal(t, tt.bucket.UpperBound(), bucket.UpperBound()) - require.Equal(t, tt.bucket.McvsCnt, bucket.McvsCnt) + require.Equal(t, tt.bucket.McvCounts(), bucket.McvCounts()) require.Equal(t, tt.bucket.Mcvs(), bucket.Mcvs()) }) }