From 3555c05893bb2d707a481422cc5cad757534be73 Mon Sep 17 00:00:00 2001 From: Yahor Yuzefovich Date: Thu, 22 Dec 2022 09:37:38 -0800 Subject: [PATCH] fetchpb: extract index fetch spec proto into new package This will allow us to import the index fetch spec into `roachpb` which is needed for the KV projection pushdown work. This required changing the custom cast types used in the spec from type aliases defined in `descpb` to one level lower ones from `catid`. Epic: None Release note: None --- docs/generated/http/BUILD.bazel | 1 + pkg/BUILD.bazel | 2 + pkg/ccl/changefeedccl/cdcevent/BUILD.bazel | 1 + .../cdcevent/rowfetcher_cache.go | 3 +- pkg/gen/protobuf.bzl | 1 + pkg/sql/BUILD.bazel | 2 + pkg/sql/backfill/BUILD.bazel | 1 + pkg/sql/backfill/backfill.go | 5 +- pkg/sql/catalog/BUILD.bazel | 1 + pkg/sql/catalog/descpb/BUILD.bazel | 3 -- pkg/sql/catalog/descriptor.go | 7 +-- pkg/sql/catalog/fetchpb/BUILD.bazel | 49 +++++++++++++++++++ .../{descpb => fetchpb}/index_fetch.go | 8 ++- .../{descpb => fetchpb}/index_fetch.proto | 14 +++--- pkg/sql/catalog/tabledesc/BUILD.bazel | 1 + pkg/sql/catalog/tabledesc/column.go | 15 +++--- pkg/sql/catalog/tabledesc/table_desc.go | 5 +- pkg/sql/colencoding/BUILD.bazel | 2 +- pkg/sql/colencoding/key_encoding.go | 4 +- pkg/sql/colexec/colbuilder/BUILD.bazel | 1 + pkg/sql/colexec/colbuilder/execplan_test.go | 3 +- pkg/sql/colexec/colexecspan/BUILD.bazel | 2 + pkg/sql/colexec/colexecspan/span_assembler.go | 3 +- .../colexecspan/span_assembler_test.go | 3 +- pkg/sql/colfetcher/BUILD.bazel | 1 + pkg/sql/colfetcher/cfetcher.go | 3 +- pkg/sql/colfetcher/cfetcher_setup.go | 8 +-- pkg/sql/colflow/BUILD.bazel | 1 + pkg/sql/colflow/colbatch_scan_test.go | 5 +- pkg/sql/delete_preserving_index_test.go | 3 +- pkg/sql/delete_range.go | 4 +- pkg/sql/execinfra/version.go | 8 +-- pkg/sql/execinfrapb/BUILD.bazel | 4 ++ pkg/sql/execinfrapb/flow_diagram.go | 3 +- pkg/sql/execinfrapb/flow_diagram_test.go | 18 +++---- pkg/sql/execinfrapb/processors_sql.proto | 2 +- pkg/sql/flowinfra/BUILD.bazel | 1 + pkg/sql/flowinfra/cluster_test.go | 5 +- pkg/sql/indexbackfiller_test.go | 3 +- pkg/sql/row/BUILD.bazel | 2 + pkg/sql/row/errors.go | 9 ++-- pkg/sql/row/fetcher.go | 9 ++-- pkg/sql/row/fetcher_mvcc_test.go | 4 +- pkg/sql/row/fetcher_test.go | 6 +-- pkg/sql/rowenc/BUILD.bazel | 2 + pkg/sql/rowenc/index_encoding.go | 13 ++--- pkg/sql/rowenc/index_fetch.go | 11 +++-- pkg/sql/rowenc/index_fetch_test.go | 3 +- pkg/sql/rowexec/BUILD.bazel | 2 + pkg/sql/rowexec/inverted_joiner.go | 9 ++-- pkg/sql/rowexec/inverted_joiner_test.go | 5 +- pkg/sql/rowexec/joinreader.go | 3 +- pkg/sql/rowexec/joinreader_span_generator.go | 7 +-- pkg/sql/rowexec/joinreader_test.go | 13 ++--- pkg/sql/rowexec/utils_test.go | 5 +- pkg/sql/rowexec/zigzagjoiner.go | 5 +- pkg/sql/span/BUILD.bazel | 1 + pkg/sql/span/span_builder.go | 5 +- 58 files changed, 213 insertions(+), 107 deletions(-) create mode 100644 pkg/sql/catalog/fetchpb/BUILD.bazel rename pkg/sql/catalog/{descpb => fetchpb}/index_fetch.go (86%) rename pkg/sql/catalog/{descpb => fetchpb}/index_fetch.proto (89%) diff --git a/docs/generated/http/BUILD.bazel b/docs/generated/http/BUILD.bazel index d9cc3bb53423..583fd386381a 100644 --- a/docs/generated/http/BUILD.bazel +++ b/docs/generated/http/BUILD.bazel @@ -21,6 +21,7 @@ genrule( "//pkg/sql/catalog/catenumpb:catenumpb_proto", "//pkg/sql/catalog/catpb:catpb_proto", "//pkg/sql/catalog/descpb:descpb_proto", + "//pkg/sql/catalog/fetchpb:fetchpb_proto", "//pkg/sql/contentionpb:contentionpb_proto", "//pkg/sql/execinfrapb:execinfrapb_proto", "//pkg/sql/inverted:inverted_proto", diff --git a/pkg/BUILD.bazel b/pkg/BUILD.bazel index a92c761f0091..f9bcfc03c6f4 100644 --- a/pkg/BUILD.bazel +++ b/pkg/BUILD.bazel @@ -1422,6 +1422,7 @@ GO_TARGETS = [ "//pkg/sql/catalog/descs:descs", "//pkg/sql/catalog/descs:descs_test", "//pkg/sql/catalog/desctestutils:desctestutils", + "//pkg/sql/catalog/fetchpb:fetchpb", "//pkg/sql/catalog/funcdesc:funcdesc", "//pkg/sql/catalog/funcdesc:funcdesc_test", "//pkg/sql/catalog/hydrateddesc:hydrateddesc", @@ -2692,6 +2693,7 @@ GET_X_DATA_TARGETS = [ "//pkg/sql/catalog/descpb:get_x_data", "//pkg/sql/catalog/descs:get_x_data", "//pkg/sql/catalog/desctestutils:get_x_data", + "//pkg/sql/catalog/fetchpb:get_x_data", "//pkg/sql/catalog/funcdesc:get_x_data", "//pkg/sql/catalog/hydrateddesc:get_x_data", "//pkg/sql/catalog/ingesting:get_x_data", diff --git a/pkg/ccl/changefeedccl/cdcevent/BUILD.bazel b/pkg/ccl/changefeedccl/cdcevent/BUILD.bazel index d49ae73713b9..350bf0c4e157 100644 --- a/pkg/ccl/changefeedccl/cdcevent/BUILD.bazel +++ b/pkg/ccl/changefeedccl/cdcevent/BUILD.bazel @@ -23,6 +23,7 @@ go_library( "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/lease", "//pkg/sql/pgwire/pgcode", "//pkg/sql/pgwire/pgerror", diff --git a/pkg/ccl/changefeedccl/cdcevent/rowfetcher_cache.go b/pkg/ccl/changefeedccl/cdcevent/rowfetcher_cache.go index e379c28eb8e1..bbaa5df7ca5d 100644 --- a/pkg/ccl/changefeedccl/cdcevent/rowfetcher_cache.go +++ b/pkg/ccl/changefeedccl/cdcevent/rowfetcher_cache.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descs" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/lease" "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -216,7 +217,7 @@ func (c *rowFetcherCache) RowFetcherForColumnFamily( } } - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec var relevantColumns descpb.ColumnIDs if keyOnly { diff --git a/pkg/gen/protobuf.bzl b/pkg/gen/protobuf.bzl index 7e8859a79b51..f0f1c539b554 100644 --- a/pkg/gen/protobuf.bzl +++ b/pkg/gen/protobuf.bzl @@ -51,6 +51,7 @@ PROTOBUF_SRCS = [ "//pkg/sql/catalog/catenumpb:catenumpb_go_proto", "//pkg/sql/catalog/catpb:catpb_go_proto", "//pkg/sql/catalog/descpb:descpb_go_proto", + "//pkg/sql/catalog/fetchpb:fetchpb_go_proto", "//pkg/sql/catalog/schematelemetry/schematelemetrycontroller:schematelemetrycontroller_go_proto", "//pkg/sql/contentionpb:contentionpb_go_proto", "//pkg/sql/execinfrapb:execinfrapb_go_proto", diff --git a/pkg/sql/BUILD.bazel b/pkg/sql/BUILD.bazel index c2a583af546d..44c6232f5774 100644 --- a/pkg/sql/BUILD.bazel +++ b/pkg/sql/BUILD.bazel @@ -337,6 +337,7 @@ go_library( "//pkg/sql/catalog/descidgen", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/funcdesc", "//pkg/sql/catalog/lease", "//pkg/sql/catalog/multiregion", @@ -712,6 +713,7 @@ go_test( "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/funcdesc", "//pkg/sql/catalog/lease", "//pkg/sql/catalog/multiregion", diff --git a/pkg/sql/backfill/BUILD.bazel b/pkg/sql/backfill/BUILD.bazel index 211ca7888a9e..680f8fb3cd5d 100644 --- a/pkg/sql/backfill/BUILD.bazel +++ b/pkg/sql/backfill/BUILD.bazel @@ -19,6 +19,7 @@ go_library( "//pkg/sql/catalog", "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/schemaexpr", "//pkg/sql/catalog/tabledesc", "//pkg/sql/catalog/typedesc", diff --git a/pkg/sql/backfill/backfill.go b/pkg/sql/backfill/backfill.go index e4ccfe48fca9..35c3726eeca4 100644 --- a/pkg/sql/backfill/backfill.go +++ b/pkg/sql/backfill/backfill.go @@ -22,6 +22,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/settings" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr" "github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -146,7 +147,7 @@ func (cb *ColumnBackfiller) init( } cb.colIdxMap = catalog.ColumnIDToOrdinalMap(desc.PublicColumns()) - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&spec, evalCtx.Codec, desc, desc.GetPrimaryIndex(), cb.fetcherCols); err != nil { return err } @@ -825,7 +826,7 @@ func (ib *IndexBackfiller) BuildIndexEntriesChunk( // during the scan. Index entries in the new index are being // populated and deleted by the OLTP commands but not otherwise // read or used - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &spec, ib.evalCtx.Codec, tableDesc, tableDesc.GetPrimaryIndex(), fetcherCols, ); err != nil { diff --git a/pkg/sql/catalog/BUILD.bazel b/pkg/sql/catalog/BUILD.bazel index 2358e2ecc5bb..e6127c0f6172 100644 --- a/pkg/sql/catalog/BUILD.bazel +++ b/pkg/sql/catalog/BUILD.bazel @@ -31,6 +31,7 @@ go_library( "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/catpb", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/pgwire/pgcode", "//pkg/sql/pgwire/pgerror", "//pkg/sql/privilege", diff --git a/pkg/sql/catalog/descpb/BUILD.bazel b/pkg/sql/catalog/descpb/BUILD.bazel index 2c1692f4d696..0f63b3b1511e 100644 --- a/pkg/sql/catalog/descpb/BUILD.bazel +++ b/pkg/sql/catalog/descpb/BUILD.bazel @@ -12,7 +12,6 @@ go_library( "constraint.go", "descriptor.go", "index.go", - "index_fetch.go", "join_type.go", "locking.go", "structured.go", @@ -32,7 +31,6 @@ go_library( "//pkg/sql/sem/catid", "//pkg/sql/sem/tree", "//pkg/sql/types", - "//pkg/util/encoding", "//pkg/util/errorutil/unimplemented", "//pkg/util/hlc", "//pkg/util/intsets", @@ -51,7 +49,6 @@ go_test( proto_library( name = "descpb_proto", srcs = [ - "index_fetch.proto", "join_type.proto", "locking.proto", "structured.proto", diff --git a/pkg/sql/catalog/descriptor.go b/pkg/sql/catalog/descriptor.go index 5e1df02ffb90..facf48501951 100644 --- a/pkg/sql/catalog/descriptor.go +++ b/pkg/sql/catalog/descriptor.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/privilege" @@ -539,8 +540,8 @@ type TableDescriptor interface { IndexKeysPerRow(idx Index) int // IndexFetchSpecKeyAndSuffixColumns returns information about the key and - // suffix columns, suitable for populating a descpb.IndexFetchSpec. - IndexFetchSpecKeyAndSuffixColumns(idx Index) []descpb.IndexFetchSpec_KeyColumn + // suffix columns, suitable for populating a fetchpb.IndexFetchSpec. + IndexFetchSpecKeyAndSuffixColumns(idx Index) []fetchpb.IndexFetchSpec_KeyColumn // FindColumnWithID returns the first column found whose ID matches the // provided target ID, in the canonical order. @@ -590,7 +591,7 @@ type TableDescriptor interface { // FamilyDefaultColumns returns the default column IDs for families with a // default column. See IndexFetchSpec.FamilyDefaultColumns. - FamilyDefaultColumns() []descpb.IndexFetchSpec_FamilyDefaultColumn + FamilyDefaultColumns() []fetchpb.IndexFetchSpec_FamilyDefaultColumn // HasColumnBackfillMutation returns whether the table has any queued column // mutations that require a backfill. diff --git a/pkg/sql/catalog/fetchpb/BUILD.bazel b/pkg/sql/catalog/fetchpb/BUILD.bazel new file mode 100644 index 000000000000..59c11116225b --- /dev/null +++ b/pkg/sql/catalog/fetchpb/BUILD.bazel @@ -0,0 +1,49 @@ +load("//build/bazelutil/unused_checker:unused.bzl", "get_x_data") +load("@rules_proto//proto:defs.bzl", "proto_library") +load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "fetchpb", + srcs = ["index_fetch.go"], + embed = [":fetchpb_go_proto"], + importpath = "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb", + visibility = ["//visibility:public"], + deps = [ + "//pkg/sql/catalog/catenumpb", + "//pkg/sql/sem/catid", # keep + "//pkg/sql/types", + "//pkg/util/encoding", + ], +) + +proto_library( + name = "fetchpb_proto", + srcs = [ + "index_fetch.proto", + ], + strip_import_prefix = "/pkg", + visibility = ["//visibility:public"], + deps = [ + "//pkg/geo/geoindex:geoindex_proto", + "//pkg/sql/catalog/catenumpb:catenumpb_proto", + "//pkg/sql/types:types_proto", + "@com_github_gogo_protobuf//gogoproto:gogo_proto", + ], +) + +go_proto_library( + name = "fetchpb_go_proto", + compilers = ["//pkg/cmd/protoc-gen-gogoroach:protoc-gen-gogoroach_compiler"], + importpath = "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb", + proto = ":fetchpb_proto", + visibility = ["//visibility:public"], + deps = [ + "//pkg/geo/geoindex", + "//pkg/sql/catalog/catenumpb", + "//pkg/sql/types", + "@com_github_gogo_protobuf//gogoproto", + ], +) + +get_x_data(name = "get_x_data") diff --git a/pkg/sql/catalog/descpb/index_fetch.go b/pkg/sql/catalog/fetchpb/index_fetch.go similarity index 86% rename from pkg/sql/catalog/descpb/index_fetch.go rename to pkg/sql/catalog/fetchpb/index_fetch.go index 12557148ca0d..fad86a4824de 100644 --- a/pkg/sql/catalog/descpb/index_fetch.go +++ b/pkg/sql/catalog/fetchpb/index_fetch.go @@ -8,7 +8,7 @@ // by the Apache License, Version 2.0, included in the file // licenses/APL.txt. -package descpb +package fetchpb import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" @@ -16,6 +16,12 @@ import ( "github.com/cockroachdb/cockroach/pkg/util/encoding" ) +// TODO(yuzefovich): consider moving this package somewhere close to rowenc +// given that effectively using this package in roachpb is saying that rows and +// column encoding is a shared concept between sql and KV. Furthermore, we could +// probably make keyside and valueside not depend on sql/catalog and then pull +// them out of the sql tree altogether. + // IndexFetchSpecVersionInitial is the initial IndexFetchSpec version. const IndexFetchSpecVersionInitial = 1 diff --git a/pkg/sql/catalog/descpb/index_fetch.proto b/pkg/sql/catalog/fetchpb/index_fetch.proto similarity index 89% rename from pkg/sql/catalog/descpb/index_fetch.proto rename to pkg/sql/catalog/fetchpb/index_fetch.proto index 70cf180a9849..a70a7f715703 100644 --- a/pkg/sql/catalog/descpb/index_fetch.proto +++ b/pkg/sql/catalog/fetchpb/index_fetch.proto @@ -11,7 +11,7 @@ // Cannot be proto3 because we use nullable primitives. syntax = "proto2"; package cockroach.sql.sqlbase; -option go_package = "descpb"; +option go_package = "fetchpb"; import "gogoproto/gogo.proto"; import "sql/types/types.proto"; @@ -24,7 +24,7 @@ message IndexFetchSpec { message Column { optional uint32 column_id = 1 [(gogoproto.nullable) = false, (gogoproto.customname) = "ColumnID", - (gogoproto.casttype) = "ColumnID"]; + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.ColumnID"]; // Name of the column, as it is expected to appear in debug and error // messages. @@ -60,13 +60,13 @@ message IndexFetchSpec { message FamilyDefaultColumn { optional uint32 family_id = 1 [(gogoproto.nullable) = false, (gogoproto.customname) = "FamilyID", - (gogoproto.casttype) = "FamilyID"]; + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.FamilyID"]; // DefaultColumnID is the implicit column ID when a single value is encoded // for the family. See ColumnFamilyDescriptor.DefaultColumnID. optional uint32 default_column_id = 2 [(gogoproto.nullable) = false, (gogoproto.customname) = "DefaultColumnID", - (gogoproto.casttype) = "ColumnID"]; + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.ColumnID"]; } // Version is used to allow providing backward compatibility if this spec @@ -76,12 +76,12 @@ message IndexFetchSpec { optional uint32 table_id = 2 [(gogoproto.nullable) = false, (gogoproto.customname) = "TableID", - (gogoproto.casttype) = "ID"]; + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.DescID"]; optional string table_name = 3 [(gogoproto.nullable) = false]; optional uint32 index_id = 4 [(gogoproto.nullable) = false, (gogoproto.customname) = "IndexID", - (gogoproto.casttype) = "IndexID"]; + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.IndexID"]; optional string index_name = 5 [(gogoproto.nullable) = false]; @@ -116,7 +116,7 @@ message IndexFetchSpec { optional uint32 max_family_id = 12 [(gogoproto.nullable) = false, (gogoproto.customname) = "MaxFamilyID", - (gogoproto.casttype) = "FamilyID"]; + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/sem/catid.FamilyID"]; // FamilyDefaultColumns contains the default column IDs for families with a // default column. This is used to decode values that use the single column diff --git a/pkg/sql/catalog/tabledesc/BUILD.bazel b/pkg/sql/catalog/tabledesc/BUILD.bazel index 341bf488332d..5687dd2e2445 100644 --- a/pkg/sql/catalog/tabledesc/BUILD.bazel +++ b/pkg/sql/catalog/tabledesc/BUILD.bazel @@ -32,6 +32,7 @@ go_library( "//pkg/sql/catalog/catprivilege", "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/internal/validate", "//pkg/sql/catalog/multiregion", "//pkg/sql/catalog/schemaexpr", diff --git a/pkg/sql/catalog/tabledesc/column.go b/pkg/sql/catalog/tabledesc/column.go index 44f1aeb28070..e415298d6e37 100644 --- a/pkg/sql/catalog/tabledesc/column.go +++ b/pkg/sql/catalog/tabledesc/column.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/schemaexpr" "github.com/cockroachdb/cockroach/pkg/sql/parser" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" @@ -296,7 +297,7 @@ type columnCache struct { readable []catalog.Column withUDTs []catalog.Column system []catalog.Column - familyDefaultColumns []descpb.IndexFetchSpec_FamilyDefaultColumn + familyDefaultColumns []fetchpb.IndexFetchSpec_FamilyDefaultColumn index []indexColumnCache } @@ -309,7 +310,7 @@ type indexColumnCache struct { keySuffix []catalog.Column full []catalog.Column fullDirs []catenumpb.IndexColumn_Direction - keyAndSuffix []descpb.IndexFetchSpec_KeyColumn + keyAndSuffix []fetchpb.IndexFetchSpec_KeyColumn } // newColumnCache returns a fresh fully-populated columnCache struct for the @@ -378,9 +379,9 @@ func newColumnCache(desc *descpb.TableDescriptor, mutations *mutationCache) *col for i := range desc.Families { if f := &desc.Families[i]; f.DefaultColumnID != 0 { if c.familyDefaultColumns == nil { - c.familyDefaultColumns = make([]descpb.IndexFetchSpec_FamilyDefaultColumn, 0, len(desc.Families)-i) + c.familyDefaultColumns = make([]fetchpb.IndexFetchSpec_FamilyDefaultColumn, 0, len(desc.Families)-i) } - c.familyDefaultColumns = append(c.familyDefaultColumns, descpb.IndexFetchSpec_FamilyDefaultColumn{ + c.familyDefaultColumns = append(c.familyDefaultColumns, fetchpb.IndexFetchSpec_FamilyDefaultColumn{ FamilyID: f.ID, DefaultColumnID: f.DefaultColumnID, }) @@ -436,7 +437,7 @@ func makeIndexColumnCache(idx *descpb.IndexDescriptor, all []catalog.Column) (ic for _, colID := range idx.CompositeColumnIDs { compositeIDs.Add(colID) } - ic.keyAndSuffix = make([]descpb.IndexFetchSpec_KeyColumn, nKey+nKeySuffix) + ic.keyAndSuffix = make([]fetchpb.IndexFetchSpec_KeyColumn, nKey+nKeySuffix) for i := range ic.keyAndSuffix { col := ic.all[i] if col == nil { @@ -448,8 +449,8 @@ func makeIndexColumnCache(idx *descpb.IndexDescriptor, all []catalog.Column) (ic if colID != 0 && colID == invertedColumnID { typ = idx.InvertedColumnKeyType() } - ic.keyAndSuffix[i] = descpb.IndexFetchSpec_KeyColumn{ - IndexFetchSpec_Column: descpb.IndexFetchSpec_Column{ + ic.keyAndSuffix[i] = fetchpb.IndexFetchSpec_KeyColumn{ + IndexFetchSpec_Column: fetchpb.IndexFetchSpec_Column{ Name: col.GetName(), ColumnID: colID, Type: typ, diff --git a/pkg/sql/catalog/tabledesc/table_desc.go b/pkg/sql/catalog/tabledesc/table_desc.go index 86dcb871c7dc..73b0d303d6f7 100644 --- a/pkg/sql/catalog/tabledesc/table_desc.go +++ b/pkg/sql/catalog/tabledesc/table_desc.go @@ -17,6 +17,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/privilege" @@ -476,7 +477,7 @@ func (desc *wrapper) SystemColumns() []catalog.Column { } // FamilyDefaultColumns implements the TableDescriptor interface. -func (desc *wrapper) FamilyDefaultColumns() []descpb.IndexFetchSpec_FamilyDefaultColumn { +func (desc *wrapper) FamilyDefaultColumns() []fetchpb.IndexFetchSpec_FamilyDefaultColumn { return desc.getExistingOrNewColumnCache().familyDefaultColumns } @@ -605,7 +606,7 @@ func (desc *wrapper) UniqueWithoutIndexColumns( // IndexFetchSpecKeyAndSuffixColumns implements the TableDescriptor interface. func (desc *wrapper) IndexFetchSpecKeyAndSuffixColumns( idx catalog.Index, -) []descpb.IndexFetchSpec_KeyColumn { +) []fetchpb.IndexFetchSpec_KeyColumn { if ic := desc.getExistingOrNewIndexColumnCache(idx); ic != nil { return ic.keyAndSuffix } diff --git a/pkg/sql/colencoding/BUILD.bazel b/pkg/sql/colencoding/BUILD.bazel index 3036103ae1b1..5f118f41be10 100644 --- a/pkg/sql/colencoding/BUILD.bazel +++ b/pkg/sql/colencoding/BUILD.bazel @@ -13,7 +13,7 @@ go_library( "//pkg/col/coldata", "//pkg/roachpb", "//pkg/sql/catalog/catenumpb", - "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/rowenc/keyside", "//pkg/sql/rowenc/valueside", "//pkg/sql/sem/tree", diff --git a/pkg/sql/colencoding/key_encoding.go b/pkg/sql/colencoding/key_encoding.go index 86ea484a6bc1..32f6641a3532 100644 --- a/pkg/sql/colencoding/key_encoding.go +++ b/pkg/sql/colencoding/key_encoding.go @@ -17,7 +17,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/col/coldata" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" - "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/rowenc/keyside" "github.com/cockroachdb/cockroach/pkg/sql/rowenc/valueside" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" @@ -51,7 +51,7 @@ func DecodeKeyValsToCols( rowIdx int, indexColIdx []int, checkAllColsForNull bool, - keyCols []descpb.IndexFetchSpec_KeyColumn, + keyCols []fetchpb.IndexFetchSpec_KeyColumn, unseen *intsets.Fast, key []byte, scratch []byte, diff --git a/pkg/sql/colexec/colbuilder/BUILD.bazel b/pkg/sql/colexec/colbuilder/BUILD.bazel index ac9d725d245c..a3f0ff067a6b 100644 --- a/pkg/sql/colexec/colbuilder/BUILD.bazel +++ b/pkg/sql/colexec/colbuilder/BUILD.bazel @@ -66,6 +66,7 @@ go_test( "//pkg/settings/cluster", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/colexec", "//pkg/sql/colexec/colexecargs", "//pkg/sql/execinfra", diff --git a/pkg/sql/colexec/colbuilder/execplan_test.go b/pkg/sql/colexec/colbuilder/execplan_test.go index aaf9e9042539..40861e8cf5a9 100644 --- a/pkg/sql/colexec/colbuilder/execplan_test.go +++ b/pkg/sql/colexec/colbuilder/execplan_test.go @@ -23,6 +23,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/colexec" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecargs" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -89,7 +90,7 @@ func TestNewColOperatorExpectedTypeSchema(t *testing.T) { defer streamingMemAcc.Close(ctx) desc := desctestutils.TestingGetPublicTableDescriptor(kvDB, keys.SystemSQLCodec, "test", "t") - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &spec, keys.SystemSQLCodec, desc, desc.GetPrimaryIndex(), diff --git a/pkg/sql/colexec/colexecspan/BUILD.bazel b/pkg/sql/colexec/colexecspan/BUILD.bazel index 4b85433116b6..2d63f6150eb3 100644 --- a/pkg/sql/colexec/colexecspan/BUILD.bazel +++ b/pkg/sql/colexec/colexecspan/BUILD.bazel @@ -20,6 +20,7 @@ go_library( "//pkg/sql/catalog", # keep "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/descpb", # keep + "//pkg/sql/catalog/fetchpb", "//pkg/sql/colexecerror", # keep "//pkg/sql/colmem", # keep "//pkg/sql/execinfra/execreleasable", @@ -57,6 +58,7 @@ go_test( "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/catpb", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/tabledesc", "//pkg/sql/colconv", "//pkg/sql/colexec/colexectestutils", diff --git a/pkg/sql/colexec/colexecspan/span_assembler.go b/pkg/sql/colexec/colexecspan/span_assembler.go index 0817227e2113..de697048b00e 100644 --- a/pkg/sql/colexec/colexecspan/span_assembler.go +++ b/pkg/sql/colexec/colexecspan/span_assembler.go @@ -19,6 +19,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/colexecerror" "github.com/cockroachdb/cockroach/pkg/sql/colmem" "github.com/cockroachdb/cockroach/pkg/sql/execinfra/execreleasable" @@ -33,7 +34,7 @@ import ( func NewColSpanAssembler( codec keys.SQLCodec, allocator *colmem.Allocator, - fetchSpec *descpb.IndexFetchSpec, + fetchSpec *fetchpb.IndexFetchSpec, splitFamilyIDs []descpb.FamilyID, inputTypes []*types.T, ) ColSpanAssembler { diff --git a/pkg/sql/colexec/colexecspan/span_assembler_test.go b/pkg/sql/colexec/colexecspan/span_assembler_test.go index 9c2d95db4ab7..dda2a675a525 100644 --- a/pkg/sql/colexec/colexecspan/span_assembler_test.go +++ b/pkg/sql/colexec/colexecspan/span_assembler_test.go @@ -28,6 +28,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/tabledesc" "github.com/cockroachdb/cockroach/pkg/sql/colconv" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexectestutils" @@ -116,7 +117,7 @@ func TestSpanAssembler(t *testing.T) { builder.Init(&evalCtx, codec, testTable, testTable.GetPrimaryIndex()) splitter := span.MakeSplitter(testTable, testTable.GetPrimaryIndex(), neededColumns) - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, codec, testTable, testTable.GetPrimaryIndex(), nil, /* fetchedColumnIDs */ ); err != nil { diff --git a/pkg/sql/colfetcher/BUILD.bazel b/pkg/sql/colfetcher/BUILD.bazel index 81654e61d2cd..c53e83af1f05 100644 --- a/pkg/sql/colfetcher/BUILD.bazel +++ b/pkg/sql/colfetcher/BUILD.bazel @@ -26,6 +26,7 @@ go_library( "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/typedesc", "//pkg/sql/colconv", "//pkg/sql/colencoding", diff --git a/pkg/sql/colfetcher/cfetcher.go b/pkg/sql/colfetcher/cfetcher.go index 7d55c8b24590..f9bb76c83ae3 100644 --- a/pkg/sql/colfetcher/cfetcher.go +++ b/pkg/sql/colfetcher/cfetcher.go @@ -26,6 +26,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/colconv" "github.com/cockroachdb/cockroach/pkg/sql/colencoding" "github.com/cockroachdb/cockroach/pkg/sql/colexecerror" @@ -324,7 +325,7 @@ func (cf *cFetcher) resetBatch() { func (cf *cFetcher) Init( allocator *colmem.Allocator, kvFetcher *row.KVFetcher, tableArgs *cFetcherTableArgs, ) error { - if tableArgs.spec.Version != descpb.IndexFetchSpecVersionInitial { + if tableArgs.spec.Version != fetchpb.IndexFetchSpecVersionInitial { return errors.Newf("unsupported IndexFetchSpec version %d", tableArgs.spec.Version) } table := newCTableInfo() diff --git a/pkg/sql/colfetcher/cfetcher_setup.go b/pkg/sql/colfetcher/cfetcher_setup.go index 913446955c2b..48f707f17967 100644 --- a/pkg/sql/colfetcher/cfetcher_setup.go +++ b/pkg/sql/colfetcher/cfetcher_setup.go @@ -15,8 +15,8 @@ import ( "sync" "github.com/cockroachdb/cockroach/pkg/sql/catalog" - "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descs" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc" "github.com/cockroachdb/cockroach/pkg/sql/types" ) @@ -25,7 +25,7 @@ import ( // from. Note that only columns that need to be fetched (i.e. requested by the // caller) are included in the internal state. type cFetcherTableArgs struct { - spec descpb.IndexFetchSpec + spec fetchpb.IndexFetchSpec // ColIdxMap is a mapping from ColumnID to the ordinal of the corresponding // column within spec.FetchedColumns. ColIdxMap catalog.TableColMap @@ -48,7 +48,7 @@ func (a *cFetcherTableArgs) Release() { cFetcherTableArgsPool.Put(a) } -func (a *cFetcherTableArgs) populateTypes(cols []descpb.IndexFetchSpec_Column) { +func (a *cFetcherTableArgs) populateTypes(cols []fetchpb.IndexFetchSpec_Column) { if cap(a.typs) < len(cols) { a.typs = make([]*types.T, len(cols)) } else { @@ -61,7 +61,7 @@ func (a *cFetcherTableArgs) populateTypes(cols []descpb.IndexFetchSpec_Column) { // populateTableArgs fills in cFetcherTableArgs. func populateTableArgs( - ctx context.Context, fetchSpec *descpb.IndexFetchSpec, typeResolver *descs.DistSQLTypeResolver, + ctx context.Context, fetchSpec *fetchpb.IndexFetchSpec, typeResolver *descs.DistSQLTypeResolver, ) (_ *cFetcherTableArgs, _ error) { args := cFetcherTableArgsPool.Get().(*cFetcherTableArgs) diff --git a/pkg/sql/colflow/BUILD.bazel b/pkg/sql/colflow/BUILD.bazel index 35a4f95c0ec6..69b3de1ce0f3 100644 --- a/pkg/sql/colflow/BUILD.bazel +++ b/pkg/sql/colflow/BUILD.bazel @@ -101,6 +101,7 @@ go_test( "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/colcontainer", "//pkg/sql/colexec", "//pkg/sql/colexec/colbuilder", diff --git a/pkg/sql/colflow/colbatch_scan_test.go b/pkg/sql/colflow/colbatch_scan_test.go index fb95dfb81295..b82f5eb56898 100644 --- a/pkg/sql/colflow/colbatch_scan_test.go +++ b/pkg/sql/colflow/colbatch_scan_test.go @@ -25,6 +25,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colbuilder" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecargs" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -74,7 +75,7 @@ func TestColBatchScanMeta(t *testing.T) { Local: true, NodeID: evalCtx.NodeID, } - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, td, td.GetPrimaryIndex(), []descpb.ColumnID{td.PublicColumns()[0].GetID()}, @@ -138,7 +139,7 @@ func BenchmarkColBatchScan(b *testing.B) { tableDesc := desctestutils.TestingGetPublicTableDescriptor(kvDB, keys.SystemSQLCodec, "test", tableName) b.Run(fmt.Sprintf("rows=%d", numRows), func(b *testing.B) { span := tableDesc.PrimaryIndexSpan(keys.SystemSQLCodec) - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, tableDesc, tableDesc.GetPrimaryIndex(), []descpb.ColumnID{tableDesc.PublicColumns()[0].GetID(), tableDesc.PublicColumns()[1].GetID()}, diff --git a/pkg/sql/delete_preserving_index_test.go b/pkg/sql/delete_preserving_index_test.go index fed6ee76cf4c..04f6935e47d7 100644 --- a/pkg/sql/delete_preserving_index_test.go +++ b/pkg/sql/delete_preserving_index_test.go @@ -31,6 +31,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descs" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/lease" "github.com/cockroachdb/cockroach/pkg/sql/catalog/tabledesc" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -766,7 +767,7 @@ func fetchIndex( } } - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec require.NoError(t, rowenc.InitIndexFetchSpec(&spec, keys.SystemSQLCodec, table, idx, columns)) spans := []roachpb.Span{table.IndexSpan(keys.SystemSQLCodec, idx.GetID())} diff --git a/pkg/sql/delete_range.go b/pkg/sql/delete_range.go index 6a14f487aacb..4ab7757da5a0 100644 --- a/pkg/sql/delete_range.go +++ b/pkg/sql/delete_range.go @@ -18,7 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog" - "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" @@ -92,7 +92,7 @@ func (d *deleteRangeNode) startExec(params runParams) error { // Configure the fetcher, which is only used to decode the returned keys // from the Del and the DelRange operations, and is never used to actually // fetch kvs. - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &spec, params.ExecCfg().Codec, d.desc, d.desc.GetPrimaryIndex(), nil, /* columnIDs */ ); err != nil { diff --git a/pkg/sql/execinfra/version.go b/pkg/sql/execinfra/version.go index 6746c500c336..59602f25a9a5 100644 --- a/pkg/sql/execinfra/version.go +++ b/pkg/sql/execinfra/version.go @@ -83,11 +83,11 @@ Please add new entries at the top. - ProducerMessage no longer includes the typing information. - Version: 68 (MinAcceptedVersion: 68) - - ZigzagJoinerSpec now uses descpb.IndexFetchSpec instead of table and + - ZigzagJoinerSpec now uses fetchpb.IndexFetchSpec instead of table and index descriptors. - Version: 67 (MinAcceptedVersion: 67) - - InvertedJoinerSpec now uses descpb.IndexFetchSpec instead of table and + - InvertedJoinerSpec now uses fetchpb.IndexFetchSpec instead of table and index descriptors. - Version: 66 (MinAcceptedVersion: 66) @@ -106,11 +106,11 @@ Please add new entries at the top. running v63, thus the MinAcceptedVersion is kept at 63. - Version: 63 (MinAcceptedVersion: 63): - - Changed JoinReaderSpec to use a descpb.IndexFetchSpec and a list of family + - Changed JoinReaderSpec to use a fetchpb.IndexFetchSpec and a list of family IDs instead of table and index descriptors. - Version: 62 (MinAcceptedVersion: 62): - - Changed TableReaderSpec to use a descpb.IndexFetchSpec instead of table and + - Changed TableReaderSpec to use a fetchpb.IndexFetchSpec instead of table and index descriptors. - Version: 61 (MinAcceptedVersion: 60) diff --git a/pkg/sql/execinfrapb/BUILD.bazel b/pkg/sql/execinfrapb/BUILD.bazel index 7c043e044a65..597af8d5f101 100644 --- a/pkg/sql/execinfrapb/BUILD.bazel +++ b/pkg/sql/execinfrapb/BUILD.bazel @@ -30,6 +30,7 @@ go_library( "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/typedesc", "//pkg/sql/parser", "//pkg/sql/pgwire/pgcode", @@ -84,6 +85,7 @@ go_test( "//pkg/sql", "//pkg/sql/catalog/catpb", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/rowenc", "//pkg/sql/sem/eval", "//pkg/sql/sem/tree", @@ -116,6 +118,7 @@ proto_library( "//pkg/roachpb:roachpb_proto", "//pkg/sql/catalog/catenumpb:catenumpb_proto", "//pkg/sql/catalog/descpb:descpb_proto", + "//pkg/sql/catalog/fetchpb:fetchpb_proto", "//pkg/sql/inverted:inverted_proto", "//pkg/sql/sessiondatapb:sessiondatapb_proto", "//pkg/sql/types:types_proto", @@ -143,6 +146,7 @@ go_proto_library( "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/catpb", # keep "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/inverted", "//pkg/sql/sessiondatapb", "//pkg/sql/types", diff --git a/pkg/sql/execinfrapb/flow_diagram.go b/pkg/sql/execinfrapb/flow_diagram.go index 55a40b66021b..5ef0914881e4 100644 --- a/pkg/sql/execinfrapb/flow_diagram.go +++ b/pkg/sql/execinfrapb/flow_diagram.go @@ -24,6 +24,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkeys" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/util/encoding" "github.com/cockroachdb/cockroach/pkg/util/tracing/tracingpb" "github.com/cockroachdb/errors" @@ -124,7 +125,7 @@ func (a *AggregatorSpec) summary() (string, []string) { return "Aggregator", details } -func appendColumns(details []string, columns []descpb.IndexFetchSpec_Column) []string { +func appendColumns(details []string, columns []fetchpb.IndexFetchSpec_Column) []string { var b strings.Builder b.WriteString("Columns:") const wrapAt = 100 diff --git a/pkg/sql/execinfrapb/flow_diagram_test.go b/pkg/sql/execinfrapb/flow_diagram_test.go index 630694846a51..a3a7ca72b67d 100644 --- a/pkg/sql/execinfrapb/flow_diagram_test.go +++ b/pkg/sql/execinfrapb/flow_diagram_test.go @@ -18,7 +18,7 @@ import ( "testing" "github.com/cockroachdb/cockroach/pkg/base" - "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/stretchr/testify/require" ) @@ -49,10 +49,10 @@ func TestPlanDiagramIndexJoin(t *testing.T) { flows := make(map[base.SQLInstanceID]*FlowSpec) tr := TableReaderSpec{ - FetchSpec: descpb.IndexFetchSpec{ + FetchSpec: fetchpb.IndexFetchSpec{ TableName: "Table", IndexName: "SomeIndex", - FetchedColumns: []descpb.IndexFetchSpec_Column{ + FetchedColumns: []fetchpb.IndexFetchSpec_Column{ {Name: "a"}, {Name: "b"}, }, @@ -113,10 +113,10 @@ func TestPlanDiagramIndexJoin(t *testing.T) { }, }}, Core: ProcessorCoreUnion{JoinReader: &JoinReaderSpec{ - FetchSpec: descpb.IndexFetchSpec{ + FetchSpec: fetchpb.IndexFetchSpec{ TableName: "Table", IndexName: "primary", - FetchedColumns: []descpb.IndexFetchSpec_Column{ + FetchedColumns: []fetchpb.IndexFetchSpec_Column{ {Name: "x"}, {Name: "y"}, }, @@ -178,10 +178,10 @@ func TestPlanDiagramJoin(t *testing.T) { flows := make(map[base.SQLInstanceID]*FlowSpec) trA := TableReaderSpec{ - FetchSpec: descpb.IndexFetchSpec{ + FetchSpec: fetchpb.IndexFetchSpec{ TableName: "TableA", IndexName: "primary", - FetchedColumns: []descpb.IndexFetchSpec_Column{ + FetchedColumns: []fetchpb.IndexFetchSpec_Column{ {Name: "a"}, {Name: "b"}, {Name: "d"}, @@ -190,10 +190,10 @@ func TestPlanDiagramJoin(t *testing.T) { } trB := TableReaderSpec{ - FetchSpec: descpb.IndexFetchSpec{ + FetchSpec: fetchpb.IndexFetchSpec{ TableName: "TableB", IndexName: "primary", - FetchedColumns: []descpb.IndexFetchSpec_Column{ + FetchedColumns: []fetchpb.IndexFetchSpec_Column{ {Name: "b"}, {Name: "c"}, {Name: "e"}, diff --git a/pkg/sql/execinfrapb/processors_sql.proto b/pkg/sql/execinfrapb/processors_sql.proto index 5448f78e29bc..f83b2f91737f 100644 --- a/pkg/sql/execinfrapb/processors_sql.proto +++ b/pkg/sql/execinfrapb/processors_sql.proto @@ -24,7 +24,7 @@ import "roachpb/data.proto"; import "sql/catalog/descpb/structured.proto"; import "sql/catalog/descpb/join_type.proto"; import "sql/catalog/descpb/locking.proto"; -import "sql/catalog/descpb/index_fetch.proto"; +import "sql/catalog/fetchpb/index_fetch.proto"; import "sql/types/types.proto"; import "sql/execinfrapb/data.proto"; import "sql/execinfrapb/processors_base.proto"; diff --git a/pkg/sql/flowinfra/BUILD.bazel b/pkg/sql/flowinfra/BUILD.bazel index 70fcb7886c5b..6662f4ab5898 100644 --- a/pkg/sql/flowinfra/BUILD.bazel +++ b/pkg/sql/flowinfra/BUILD.bazel @@ -88,6 +88,7 @@ go_test( "//pkg/sql", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/distsql", "//pkg/sql/execinfra", "//pkg/sql/execinfrapb", diff --git a/pkg/sql/flowinfra/cluster_test.go b/pkg/sql/flowinfra/cluster_test.go index 8735b439921c..c83f0cccebb1 100644 --- a/pkg/sql/flowinfra/cluster_test.go +++ b/pkg/sql/flowinfra/cluster_test.go @@ -28,6 +28,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/rpc" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -101,7 +102,7 @@ func runTestClusterFlow( txn := kv.NewTxnFromProto(ctx, kvDB, roachpb.NodeID(servers[0].SQLInstanceID()), now, kv.RootTxn, &txnProto) leafInputState := txn.GetLeafTxnInputState(ctx) - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&spec, codec, desc, desc.ActiveIndexes()[1], []descpb.ColumnID{1, 2}); err != nil { t.Fatal(err) } @@ -161,7 +162,7 @@ func runTestClusterFlow( }, } - var pkSpec descpb.IndexFetchSpec + var pkSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &pkSpec, codec, desc, desc.GetPrimaryIndex(), []descpb.ColumnID{1, 2, 3}, ); err != nil { diff --git a/pkg/sql/indexbackfiller_test.go b/pkg/sql/indexbackfiller_test.go index cefeb35a8865..0e63bf6c094f 100644 --- a/pkg/sql/indexbackfiller_test.go +++ b/pkg/sql/indexbackfiller_test.go @@ -31,6 +31,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descs" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/lease" "github.com/cockroachdb/cockroach/pkg/sql/catalog/tabledesc" "github.com/cockroachdb/cockroach/pkg/sql/row" @@ -390,7 +391,7 @@ INSERT INTO foo VALUES (1), (10), (100); } } var alloc tree.DatumAlloc - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec require.NoError(t, rowenc.InitIndexFetchSpec( &spec, keys.SystemSQLCodec, diff --git a/pkg/sql/row/BUILD.bazel b/pkg/sql/row/BUILD.bazel index d92208d2e44f..e0e6cd35cb5f 100644 --- a/pkg/sql/row/BUILD.bazel +++ b/pkg/sql/row/BUILD.bazel @@ -44,6 +44,7 @@ go_library( "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/schemaexpr", "//pkg/sql/catalog/seqexpr", "//pkg/sql/pgwire/pgcode", @@ -113,6 +114,7 @@ go_test( "//pkg/sql/catalog/bootstrap", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/tabledesc", "//pkg/sql/pgwire/pgcode", "//pkg/sql/pgwire/pgerror", diff --git a/pkg/sql/row/errors.go b/pkg/sql/row/errors.go index cad5d202674e..56e3920f7a56 100644 --- a/pkg/sql/row/errors.go +++ b/pkg/sql/row/errors.go @@ -20,6 +20,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -62,7 +63,7 @@ func ConvertBatchError(ctx context.Context, tableDesc catalog.TableDescriptor, b if err != nil { return "", "", nil, nil, err } - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&spec, codec, tableDesc, index, nil /* fetchColumnIDs */); err != nil { return "", "", nil, nil, err } @@ -77,7 +78,7 @@ func ConvertBatchError(ctx context.Context, tableDesc catalog.TableDescriptor, b // ConvertFetchError attempts to map a key-value error generated during a // key-value fetch to a user friendly SQL error. -func ConvertFetchError(spec *descpb.IndexFetchSpec, err error) error { +func ConvertFetchError(spec *fetchpb.IndexFetchSpec, err error) error { var errs struct { wi *roachpb.WriteIntentError bs *roachpb.MinTimestampBoundUnsatisfiableError @@ -136,7 +137,7 @@ func NewUniquenessConstraintViolationError( // decodeKeyValsUsingSpec decodes an index key and returns the key column names // and values. func decodeKeyValsUsingSpec( - spec *descpb.IndexFetchSpec, key roachpb.Key, + spec *fetchpb.IndexFetchSpec, key roachpb.Key, ) (colNames []string, values []string, err error) { // We want the key columns without the suffix columns. keyCols := spec.KeyColumns() @@ -252,7 +253,7 @@ func DecodeRowInfo( } cols[i] = col } - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&spec, codec, tableDesc, index, colIDs); err != nil { return nil, nil, nil, err } diff --git a/pkg/sql/row/fetcher.go b/pkg/sql/row/fetcher.go index df9d75bd901d..fcdf8f9ae526 100644 --- a/pkg/sql/row/fetcher.go +++ b/pkg/sql/row/fetcher.go @@ -25,6 +25,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/rowenc/keyside" "github.com/cockroachdb/cockroach/pkg/sql/rowenc/valueside" @@ -96,7 +97,7 @@ type KVBatchFetcher interface { type tableInfo struct { // -- Fields initialized once -- - spec descpb.IndexFetchSpec + spec fetchpb.IndexFetchSpec // The set of indexes into spec.FetchedColumns that are required for columns // in the value part. @@ -249,7 +250,7 @@ type FetcherInitArgs struct { // Alloc is used for buffered allocation of decoded datums. Alloc *tree.DatumAlloc MemMonitor *mon.BytesMonitor - Spec *descpb.IndexFetchSpec + Spec *fetchpb.IndexFetchSpec // TraceKV indicates whether or not session tracing is enabled. TraceKV bool ForceProductionKVBatchSize bool @@ -263,7 +264,7 @@ type FetcherInitArgs struct { // Init sets up a Fetcher for a given table and index. func (rf *Fetcher) Init(ctx context.Context, args FetcherInitArgs) error { - if args.Spec.Version != descpb.IndexFetchSpecVersionInitial { + if args.Spec.Version != fetchpb.IndexFetchSpecVersionInitial { return errors.Newf("unsupported IndexFetchSpec version %d", args.Spec.Version) } @@ -731,7 +732,7 @@ func (rf *Fetcher) nextKey(ctx context.Context) (newRow bool, spanID int, _ erro } func (rf *Fetcher) prettyKeyDatums( - cols []descpb.IndexFetchSpec_KeyColumn, vals []rowenc.EncDatum, + cols []fetchpb.IndexFetchSpec_KeyColumn, vals []rowenc.EncDatum, ) string { var buf strings.Builder for i, v := range vals { diff --git a/pkg/sql/row/fetcher_mvcc_test.go b/pkg/sql/row/fetcher_mvcc_test.go index 1802efbf0f9e..49238a23e16d 100644 --- a/pkg/sql/row/fetcher_mvcc_test.go +++ b/pkg/sql/row/fetcher_mvcc_test.go @@ -20,8 +20,8 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv/kvserver" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/bootstrap" - "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/sem/eval" @@ -87,7 +87,7 @@ func TestRowFetcherMVCCMetadata(t *testing.T) { FAMILY (a, b, c), FAMILY (d) )`) desc := desctestutils.TestingGetPublicTableDescriptor(kvDB, keys.SystemSQLCodec, `d`, `parent`) - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &spec, keys.SystemSQLCodec, desc, desc.GetPrimaryIndex(), desc.PublicColumnIDs(), ); err != nil { diff --git a/pkg/sql/row/fetcher_test.go b/pkg/sql/row/fetcher_test.go index db75ac7062e1..92ba0da76aa3 100644 --- a/pkg/sql/row/fetcher_test.go +++ b/pkg/sql/row/fetcher_test.go @@ -22,8 +22,8 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/sql/catalog" - "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgcode" "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -43,7 +43,7 @@ type initFetcherArgs struct { columns []int } -func makeIndexFetchSpec(t *testing.T, entry initFetcherArgs) descpb.IndexFetchSpec { +func makeIndexFetchSpec(t *testing.T, entry initFetcherArgs) fetchpb.IndexFetchSpec { index := entry.tableDesc.ActiveIndexes()[entry.indexIdx] colIDs := entry.tableDesc.PublicColumnIDs() if entry.columns != nil { @@ -53,7 +53,7 @@ func makeIndexFetchSpec(t *testing.T, entry initFetcherArgs) descpb.IndexFetchSp colIDs = append(colIDs, allColIDs[ord]) } } - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&spec, keys.SystemSQLCodec, entry.tableDesc, index, colIDs); err != nil { t.Fatal(err) } diff --git a/pkg/sql/rowenc/BUILD.bazel b/pkg/sql/rowenc/BUILD.bazel index 38bb85fe7128..3f5387f87a16 100644 --- a/pkg/sql/rowenc/BUILD.bazel +++ b/pkg/sql/rowenc/BUILD.bazel @@ -22,6 +22,7 @@ go_library( "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/inverted", "//pkg/sql/parser", "//pkg/sql/rowenc/keyside", @@ -71,6 +72,7 @@ go_test( "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/tabledesc", "//pkg/sql/inverted", "//pkg/sql/parser", diff --git a/pkg/sql/rowenc/index_encoding.go b/pkg/sql/rowenc/index_encoding.go index ba64e26e8891..4406d8fa31da 100644 --- a/pkg/sql/rowenc/index_encoding.go +++ b/pkg/sql/rowenc/index_encoding.go @@ -23,6 +23,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkeys" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/inverted" "github.com/cockroachdb/cockroach/pkg/sql/rowenc/keyside" "github.com/cockroachdb/cockroach/pkg/sql/rowenc/rowencpb" @@ -82,7 +83,7 @@ func EncodeIndexKey( // given table, index, and values, with the same method as // EncodePartialIndexKey. func EncodePartialIndexSpan( - keyCols []descpb.IndexFetchSpec_KeyColumn, + keyCols []fetchpb.IndexFetchSpec_KeyColumn, colMap catalog.TableColMap, values []tree.Datum, keyPrefix []byte, @@ -99,7 +100,7 @@ func EncodePartialIndexSpan( // suffix) columns are encoded; these can be a prefix of the index key columns. // Does not directly append to keyPrefix. func EncodePartialIndexKey( - keyCols []descpb.IndexFetchSpec_KeyColumn, + keyCols []fetchpb.IndexFetchSpec_KeyColumn, colMap catalog.TableColMap, values []tree.Datum, keyPrefix []byte, @@ -147,7 +148,7 @@ func (d directions) get(i int) (encoding.Direction, error) { // specified in the same order as the index key columns and may be a prefix. func MakeSpanFromEncDatums( values EncDatumRow, - keyCols []descpb.IndexFetchSpec_KeyColumn, + keyCols []fetchpb.IndexFetchSpec_KeyColumn, alloc *tree.DatumAlloc, keyPrefix []byte, ) (_ roachpb.Span, containsNull bool, _ error) { @@ -343,7 +344,7 @@ func SplitRowKeyIntoFamilySpans( // encodings of the given EncDatum values. func MakeKeyFromEncDatums( values EncDatumRow, - keyCols []descpb.IndexFetchSpec_KeyColumn, + keyCols []fetchpb.IndexFetchSpec_KeyColumn, alloc *tree.DatumAlloc, keyPrefix []byte, ) (_ roachpb.Key, containsNull bool, _ error) { @@ -472,9 +473,9 @@ func DecodeKeyVals( } // DecodeKeyValsUsingSpec is a variant of DecodeKeyVals which uses -// descpb.IndexFetchSpec_KeyColumn for column metadata. +// fetchpb.IndexFetchSpec_KeyColumn for column metadata. func DecodeKeyValsUsingSpec( - keyCols []descpb.IndexFetchSpec_KeyColumn, key []byte, vals []EncDatum, + keyCols []fetchpb.IndexFetchSpec_KeyColumn, key []byte, vals []EncDatum, ) (remainingKey []byte, foundNull bool, _ error) { for j := range vals { c := keyCols[j] diff --git a/pkg/sql/rowenc/index_fetch.go b/pkg/sql/rowenc/index_fetch.go index c5baa494db6f..75f7fbf74d16 100644 --- a/pkg/sql/rowenc/index_fetch.go +++ b/pkg/sql/rowenc/index_fetch.go @@ -14,6 +14,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/util/buildutil" "github.com/cockroachdb/cockroach/pkg/util/encoding" "github.com/cockroachdb/errors" @@ -27,15 +28,15 @@ import ( // inverted and we fetch the inverted key, the corresponding Column contains the // inverted column type. func InitIndexFetchSpec( - s *descpb.IndexFetchSpec, + s *fetchpb.IndexFetchSpec, codec keys.SQLCodec, table catalog.TableDescriptor, index catalog.Index, fetchColumnIDs []descpb.ColumnID, ) error { oldFetchedCols := s.FetchedColumns - *s = descpb.IndexFetchSpec{ - Version: descpb.IndexFetchSpecVersionInitial, + *s = fetchpb.IndexFetchSpec{ + Version: fetchpb.IndexFetchSpecVersionInitial, TableID: table.GetID(), TableName: table.GetName(), IndexID: index.GetID(), @@ -72,7 +73,7 @@ func InitIndexFetchSpec( if cap(oldFetchedCols) >= len(fetchColumnIDs) { s.FetchedColumns = oldFetchedCols[:len(fetchColumnIDs)] } else { - s.FetchedColumns = make([]descpb.IndexFetchSpec_Column, len(fetchColumnIDs)) + s.FetchedColumns = make([]fetchpb.IndexFetchSpec_Column, len(fetchColumnIDs)) } for i, colID := range fetchColumnIDs { col, err := table.FindColumnWithID(colID) @@ -83,7 +84,7 @@ func InitIndexFetchSpec( if colID == invertedColumnID { typ = index.InvertedColumnKeyType() } - s.FetchedColumns[i] = descpb.IndexFetchSpec_Column{ + s.FetchedColumns[i] = fetchpb.IndexFetchSpec_Column{ Name: col.GetName(), ColumnID: colID, Type: typ, diff --git a/pkg/sql/rowenc/index_fetch_test.go b/pkg/sql/rowenc/index_fetch_test.go index a31e02213043..9bb270f839ac 100644 --- a/pkg/sql/rowenc/index_fetch_test.go +++ b/pkg/sql/rowenc/index_fetch_test.go @@ -19,6 +19,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" "github.com/cockroachdb/cockroach/pkg/testutils" @@ -72,7 +73,7 @@ func TestInitIndexFetchSpec(t *testing.T) { fetchColumnIDs[i] = col.GetID() } - var spec descpb.IndexFetchSpec + var spec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&spec, keys.SystemSQLCodec, table, index, fetchColumnIDs); err != nil { d.Fatalf(t, "%+v", err) } diff --git a/pkg/sql/rowexec/BUILD.bazel b/pkg/sql/rowexec/BUILD.bazel index 8e28afcb332c..1e4104918397 100644 --- a/pkg/sql/rowexec/BUILD.bazel +++ b/pkg/sql/rowexec/BUILD.bazel @@ -58,6 +58,7 @@ go_library( "//pkg/sql/catalog/colinfo", "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/catalog/typedesc", "//pkg/sql/execinfra", "//pkg/sql/execinfra/execagg", @@ -171,6 +172,7 @@ go_test( "//pkg/sql/catalog/descpb", "//pkg/sql/catalog/descs", "//pkg/sql/catalog/desctestutils", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/execinfra", "//pkg/sql/execinfrapb", "//pkg/sql/flowinfra", diff --git a/pkg/sql/rowexec/inverted_joiner.go b/pkg/sql/rowexec/inverted_joiner.go index 5e3bb8484923..16c964a29381 100644 --- a/pkg/sql/rowexec/inverted_joiner.go +++ b/pkg/sql/rowexec/inverted_joiner.go @@ -15,6 +15,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfra/execopnode" @@ -64,7 +65,7 @@ const ( type invertedJoiner struct { execinfra.ProcessorBase - fetchSpec descpb.IndexFetchSpec + fetchSpec fetchpb.IndexFetchSpec runningState invertedJoinerState diskMonitor *mon.BytesMonitor @@ -336,7 +337,7 @@ func newInvertedJoiner( // findFetchedColOrdinal finds the ordinal into fetchSpec.FetchedColumns for the // column with the given ID. func findFetchedColOrdinal( - fetchSpec *descpb.IndexFetchSpec, id descpb.ColumnID, + fetchSpec *fetchpb.IndexFetchSpec, id descpb.ColumnID, ) (ordinal int, _ error) { for i := range fetchSpec.FetchedColumns { if fetchSpec.FetchedColumns[i].ColumnID == id { @@ -348,7 +349,7 @@ func findFetchedColOrdinal( // findInvertedFetchedColOrdinal finds the ordinal into fetchSpec.FetchedColumns for the // inverted key column. -func findInvertedFetchedColOrdinal(fetchSpec *descpb.IndexFetchSpec) (ordinal int, _ error) { +func findInvertedFetchedColOrdinal(fetchSpec *fetchpb.IndexFetchSpec) (ordinal int, _ error) { for i := range fetchSpec.KeyAndSuffixColumns { if c := &fetchSpec.KeyAndSuffixColumns[i]; c.IsInverted { return findFetchedColOrdinal(fetchSpec, c.ColumnID) @@ -717,7 +718,7 @@ func (ij *invertedJoiner) renderUnmatchedRow(row rowenc.EncDatumRow) { // appendPrefixColumn encodes a datum corresponding to an index prefix column // and appends it to ij.prefixKey. func (ij *invertedJoiner) appendPrefixColumn( - keyCol *descpb.IndexFetchSpec_KeyColumn, encDatum rowenc.EncDatum, + keyCol *fetchpb.IndexFetchSpec_KeyColumn, encDatum rowenc.EncDatum, ) error { var err error ij.prefixKey, err = encDatum.Encode(keyCol.Type, &ij.alloc, keyCol.DatumEncoding(), ij.prefixKey) diff --git a/pkg/sql/rowexec/inverted_joiner_test.go b/pkg/sql/rowexec/inverted_joiner_test.go index ef8ec009566a..6d6e6443cb7d 100644 --- a/pkg/sql/rowexec/inverted_joiner_test.go +++ b/pkg/sql/rowexec/inverted_joiner_test.go @@ -21,6 +21,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/inverted" @@ -670,7 +671,7 @@ func TestInvertedJoiner(t *testing.T) { if err != nil { t.Fatal(err) } - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, @@ -788,7 +789,7 @@ func TestInvertedJoinerDrain(t *testing.T) { } testReaderProcessorDrain(ctx, t, func(out execinfra.RowReceiver) (execinfra.Processor, error) { - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, diff --git a/pkg/sql/rowexec/joinreader.go b/pkg/sql/rowexec/joinreader.go index 217a2080cc6a..d5c11a15310e 100644 --- a/pkg/sql/rowexec/joinreader.go +++ b/pkg/sql/rowexec/joinreader.go @@ -21,6 +21,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/settings" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfra/execopnode" @@ -100,7 +101,7 @@ type joinReader struct { limitedMemMonitor *mon.BytesMonitor diskMonitor *mon.BytesMonitor - fetchSpec descpb.IndexFetchSpec + fetchSpec fetchpb.IndexFetchSpec splitFamilyIDs []descpb.FamilyID // Indicates that the join reader should maintain the ordering of the input diff --git a/pkg/sql/rowexec/joinreader_span_generator.go b/pkg/sql/rowexec/joinreader_span_generator.go index c46bb329c451..4740eb228d21 100644 --- a/pkg/sql/rowexec/joinreader_span_generator.go +++ b/pkg/sql/rowexec/joinreader_span_generator.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/memsize" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -179,7 +180,7 @@ type defaultSpanGenerator struct { func (g *defaultSpanGenerator) init( evalCtx *eval.Context, codec keys.SQLCodec, - fetchSpec *descpb.IndexFetchSpec, + fetchSpec *fetchpb.IndexFetchSpec, splitFamilyIDs []descpb.FamilyID, uniqueRows bool, lookupCols []uint32, @@ -380,7 +381,7 @@ var _ multiSpanGeneratorColInfo = &multiSpanGeneratorIndexVarColInfo{} func (g *multiSpanGenerator) init( evalCtx *eval.Context, codec keys.SQLCodec, - fetchSpec *descpb.IndexFetchSpec, + fetchSpec *fetchpb.IndexFetchSpec, splitFamilyIDs []descpb.FamilyID, numInputCols int, exprHelper *execinfrapb.ExprHelper, @@ -766,7 +767,7 @@ type localityOptimizedSpanGenerator struct { func (g *localityOptimizedSpanGenerator) init( evalCtx *eval.Context, codec keys.SQLCodec, - fetchSpec *descpb.IndexFetchSpec, + fetchSpec *fetchpb.IndexFetchSpec, splitFamilyIDs []descpb.FamilyID, numInputCols int, localExprHelper *execinfrapb.ExprHelper, diff --git a/pkg/sql/rowexec/joinreader_test.go b/pkg/sql/rowexec/joinreader_test.go index 604eda2554ff..292fc645e5ef 100644 --- a/pkg/sql/rowexec/joinreader_test.go +++ b/pkg/sql/rowexec/joinreader_test.go @@ -30,6 +30,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/desctestutils" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/randgen" @@ -1127,7 +1128,7 @@ func TestJoinReader(t *testing.T) { neededOrds.Add(int(ord)) fetchColIDs = append(fetchColIDs, td.PublicColumns()[ord].GetID()) } - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, @@ -1297,7 +1298,7 @@ CREATE TABLE test.t (a INT, s STRING, INDEX (a, s))`); err != nil { rowenc.EncDatumRow{rowenc.EncDatum{Datum: tree.NewDInt(tree.DInt(key))}}, rowenc.EncDatumRow{rowenc.EncDatum{Datum: tree.NewDInt(tree.DInt(key))}}, } - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, @@ -1405,7 +1406,7 @@ func TestJoinReaderDrain(t *testing.T) { encRow := make(rowenc.EncDatumRow, 1) encRow[0] = rowenc.DatumToEncDatum(types.Int, tree.NewDInt(1)) - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, @@ -1579,7 +1580,7 @@ func TestIndexJoiner(t *testing.T) { for _, c := range testCases { t.Run(c.description, func(t *testing.T) { - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, @@ -1821,7 +1822,7 @@ func benchmarkJoinReader(b *testing.B, bc JRBenchConfig) { }), numLookupRows) output := rowDisposer{} - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, @@ -2031,7 +2032,7 @@ func BenchmarkJoinReaderLookupStress(b *testing.B) { fetchColumnIDs = append(fetchColumnIDs, descpb.ColumnID(i)) } - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec( &fetchSpec, keys.SystemSQLCodec, diff --git a/pkg/sql/rowexec/utils_test.go b/pkg/sql/rowexec/utils_test.go index fe2dffc2cb8d..3b26be455c2f 100644 --- a/pkg/sql/rowexec/utils_test.go +++ b/pkg/sql/rowexec/utils_test.go @@ -22,6 +22,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/rowcontainer" @@ -199,7 +200,7 @@ func (r *rowDisposer) NumRowsDisposed() int { // makeFetchSpec(t, table, "idx_c", "a,b,c") func makeFetchSpec( t testing.TB, table catalog.TableDescriptor, indexName string, colNames string, -) descpb.IndexFetchSpec { +) fetchpb.IndexFetchSpec { index, err := table.FindIndexWithName(indexName) if err != nil { t.Fatal(err) @@ -214,7 +215,7 @@ func makeFetchSpec( colIDs = append(colIDs, col.GetID()) } } - var fetchSpec descpb.IndexFetchSpec + var fetchSpec fetchpb.IndexFetchSpec if err := rowenc.InitIndexFetchSpec(&fetchSpec, keys.SystemSQLCodec, table, index, colIDs); err != nil { t.Fatal(err) } diff --git a/pkg/sql/rowexec/zigzagjoiner.go b/pkg/sql/rowexec/zigzagjoiner.go index d1bae4d049d6..21b210a55c34 100644 --- a/pkg/sql/rowexec/zigzagjoiner.go +++ b/pkg/sql/rowexec/zigzagjoiner.go @@ -16,6 +16,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/typedesc" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfra/execopnode" @@ -291,7 +292,7 @@ func newZigzagJoiner( // Make sure the key column types are hydrated. The fetched column types // will be hydrated in ProcessorBase.Init (via joinerBase.init below). resolver := flowCtx.NewTypeResolver(flowCtx.Txn) - for _, fetchSpec := range []descpb.IndexFetchSpec{spec.Sides[0].FetchSpec, spec.Sides[1].FetchSpec} { + for _, fetchSpec := range []fetchpb.IndexFetchSpec{spec.Sides[0].FetchSpec, spec.Sides[1].FetchSpec} { for i := range fetchSpec.KeyAndSuffixColumns { if err := typedesc.EnsureTypeIsHydrated( ctx, fetchSpec.KeyAndSuffixColumns[i].Type, &resolver, @@ -395,7 +396,7 @@ type zigzagJoinerInfo struct { // rowsRead is the total number of rows that this fetcher read from disk. rowsRead int64 alloc tree.DatumAlloc - fetchSpec descpb.IndexFetchSpec + fetchSpec fetchpb.IndexFetchSpec // Stores one batch of matches at a time. When all the rows are collected // the cartesian product of the containers will be emitted. diff --git a/pkg/sql/span/BUILD.bazel b/pkg/sql/span/BUILD.bazel index c94033a4fc1c..1185fd365a3a 100644 --- a/pkg/sql/span/BUILD.bazel +++ b/pkg/sql/span/BUILD.bazel @@ -16,6 +16,7 @@ go_library( "//pkg/sql/catalog/catalogkeys", "//pkg/sql/catalog/catenumpb", "//pkg/sql/catalog/descpb", + "//pkg/sql/catalog/fetchpb", "//pkg/sql/inverted", "//pkg/sql/opt/constraint", "//pkg/sql/rowenc", diff --git a/pkg/sql/span/span_builder.go b/pkg/sql/span/span_builder.go index 6a12dc1b0d28..0a1db3cfeebf 100644 --- a/pkg/sql/span/span_builder.go +++ b/pkg/sql/span/span_builder.go @@ -19,6 +19,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkeys" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catenumpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/fetchpb" "github.com/cockroachdb/cockroach/pkg/sql/inverted" "github.com/cockroachdb/cockroach/pkg/sql/opt/constraint" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -36,7 +37,7 @@ type Builder struct { evalCtx *eval.Context codec keys.SQLCodec - keyAndPrefixCols []descpb.IndexFetchSpec_KeyColumn + keyAndPrefixCols []fetchpb.IndexFetchSpec_KeyColumn // KeyPrefix is the prefix of keys generated by the builder. KeyPrefix []byte @@ -55,7 +56,7 @@ func (s *Builder) Init( // InitWithFetchSpec creates a Builder using IndexFetchSpec. func (s *Builder) InitWithFetchSpec( - evalCtx *eval.Context, codec keys.SQLCodec, spec *descpb.IndexFetchSpec, + evalCtx *eval.Context, codec keys.SQLCodec, spec *fetchpb.IndexFetchSpec, ) { s.evalCtx = evalCtx s.codec = codec