diff --git a/Makefile b/Makefile index e7ef845c988d..6f6fabd3c359 100644 --- a/Makefile +++ b/Makefile @@ -1442,7 +1442,7 @@ ui-watch ui-watch-secure: $(UI_CCL_DLLS) pkg/ui/yarn.opt.installed ui-clean: ## Remove build artifacts. find pkg/ui/distccl/assets pkg/ui/distoss/assets -mindepth 1 -not -name .gitkeep -delete rm -rf pkg/ui/assets.ccl.installed pkg/ui/assets.oss.installed - rm -rf pkg/ui/dist/* + rm -rf pkg/ui/dist_vendor/* rm -f $(UI_PROTOS_CCL) $(UI_PROTOS_OSS) rm -f pkg/ui/workspaces/db-console/*manifest.json rm -rf pkg/ui/workspaces/cluster-ui/dist diff --git a/build/teamcity-nightly-pebble-metamorphic.sh b/build/teamcity-nightly-pebble-metamorphic.sh index 2669913432f2..3c88d6164d6e 100755 --- a/build/teamcity-nightly-pebble-metamorphic.sh +++ b/build/teamcity-nightly-pebble-metamorphic.sh @@ -43,6 +43,10 @@ mkdir -p $ARTIFACTS_DIR # Use an `if` so that the `-e` option doesn't stop the script on error. pushd ./vendor/github.com/cockroachdb/pebble/internal/metamorphic if ! stdbuf -oL -eL \ + + # NB: If adjusting the metamorphic test flags below, be sure to also update + # pkg/cmd/github-post/main.go to ensure the GitHub issue poster includes the + # correct flags in the reproduction command. go test -mod=vendor -exec "stress ${STRESSFLAGS}" -run 'TestMeta$$' \ -timeout 0 -tags 'invariants' -test.v \ -dir $ARTIFACTS_DIR -ops "uniform:5000-25000" 2>&1 | tee $ARTIFACTS_DIR/metamorphic.log; then diff --git a/docs/generated/sql/bnf/create_database_stmt.bnf b/docs/generated/sql/bnf/create_database_stmt.bnf index 04131090fb5d..44b0319c9e53 100644 --- a/docs/generated/sql/bnf/create_database_stmt.bnf +++ b/docs/generated/sql/bnf/create_database_stmt.bnf @@ -1,3 +1,3 @@ create_database_stmt ::= - 'CREATE' 'DATABASE' database_name ( 'WITH' | ) opt_template_clause ( 'ENCODING' ( '=' | ) encoding | ) opt_lc_collate_clause opt_lc_ctype_clause ( 'CONNECTION' 'LIMIT' ( '=' | ) limit | ) ( ( 'PRIMARY' 'REGION' ( '=' | ) region_name ) | ) ( ( 'REGIONS' ) ( '=' | ) region_name_list | ) ( ( 'SURVIVE' ( '=' | ) 'REGION' 'FAILURE' | 'SURVIVE' ( '=' | ) 'ZONE' 'FAILURE' ) | ) + 'CREATE' 'DATABASE' database_name ( 'WITH' | ) opt_template_clause ( 'ENCODING' ( '=' | ) encoding | ) opt_lc_collate_clause opt_lc_ctype_clause ( 'CONNECTION' 'LIMIT' ( '=' | ) limit | ) ( ( 'PRIMARY' 'REGION' ( '=' | ) region_name ) | ) ( ( 'REGIONS' ) ( '=' | ) region_name_list | ) ( ( 'SURVIVE' ( '=' | ) 'REGION' 'FAILURE' | 'SURVIVE' ( '=' | ) 'ZONE' 'FAILURE' ) | ) opt_owner_clause | 'CREATE' 'DATABASE' 'IF' 'NOT' 'EXISTS' database_name ( 'WITH' | ) opt_template_clause ( 'ENCODING' ( '=' | ) encoding | ) opt_lc_collate_clause opt_lc_ctype_clause ( 'CONNECTION' 'LIMIT' ( '=' | ) limit | ) ( ( 'PRIMARY' 'REGION' ( '=' | ) region_name ) | ) ( ( 'REGIONS' ) ( '=' | ) region_name_list | ) ( ( 'SURVIVE' ( '=' | ) 'REGION' 'FAILURE' | 'SURVIVE' ( '=' | ) 'ZONE' 'FAILURE' ) | ) diff --git a/docs/generated/sql/bnf/stmt_block.bnf b/docs/generated/sql/bnf/stmt_block.bnf index 1b3b5ea905c3..c533ac62cd00 100644 --- a/docs/generated/sql/bnf/stmt_block.bnf +++ b/docs/generated/sql/bnf/stmt_block.bnf @@ -1415,7 +1415,7 @@ for_schedules_clause ::= | 'FOR' 'SCHEDULE' a_expr create_database_stmt ::= - 'CREATE' 'DATABASE' database_name opt_with opt_template_clause opt_encoding_clause opt_lc_collate_clause opt_lc_ctype_clause opt_connection_limit opt_primary_region_clause opt_regions_list opt_survival_goal_clause + 'CREATE' 'DATABASE' database_name opt_with opt_template_clause opt_encoding_clause opt_lc_collate_clause opt_lc_ctype_clause opt_connection_limit opt_primary_region_clause opt_regions_list opt_survival_goal_clause opt_owner_clause | 'CREATE' 'DATABASE' 'IF' 'NOT' 'EXISTS' database_name opt_with opt_template_clause opt_encoding_clause opt_lc_collate_clause opt_lc_ctype_clause opt_connection_limit opt_primary_region_clause opt_regions_list opt_survival_goal_clause create_index_stmt ::= @@ -1959,6 +1959,10 @@ opt_survival_goal_clause ::= survival_goal_clause | +opt_owner_clause ::= + 'OWNER' opt_equal role_spec + | + opt_unique ::= 'UNIQUE' | diff --git a/pkg/ccl/changefeedccl/BUILD.bazel b/pkg/ccl/changefeedccl/BUILD.bazel index 372969c5e1d5..6e6e60f74c09 100644 --- a/pkg/ccl/changefeedccl/BUILD.bazel +++ b/pkg/ccl/changefeedccl/BUILD.bazel @@ -78,7 +78,6 @@ go_library( "//pkg/sql/sem/tree", "//pkg/sql/sessiondatapb", "//pkg/sql/types", - "//pkg/util", "//pkg/util/bitarray", "//pkg/util/bufalloc", "//pkg/util/cache", diff --git a/pkg/ccl/changefeedccl/rowfetcher_cache.go b/pkg/ccl/changefeedccl/rowfetcher_cache.go index 744b2cd00366..a76b5f5cabcb 100644 --- a/pkg/ccl/changefeedccl/rowfetcher_cache.go +++ b/pkg/ccl/changefeedccl/rowfetcher_cache.go @@ -22,7 +22,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" - "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/cockroach/pkg/util/cache" "github.com/cockroachdb/cockroach/pkg/util/encoding" "github.com/cockroachdb/cockroach/pkg/util/hlc" @@ -155,22 +154,13 @@ func (c *rowFetcherCache) RowFetcherForTableDesc( } // TODO(dan): Allow for decoding a subset of the columns. - var colIdxMap catalog.TableColMap - var valNeededForCol util.FastIntSet - for _, col := range tableDesc.PublicColumns() { - colIdxMap.Set(col.GetID(), col.Ordinal()) - valNeededForCol.Add(col.Ordinal()) - } - - var rf row.Fetcher rfArgs := row.FetcherTableArgs{ Desc: tableDesc, Index: tableDesc.GetPrimaryIndex(), - ColIdxMap: colIdxMap, IsSecondaryIndex: false, - Cols: tableDesc.PublicColumns(), - ValNeededForCol: valNeededForCol, + Columns: tableDesc.PublicColumns(), } + var rf row.Fetcher if err := rf.Init( context.TODO(), c.codec, diff --git a/pkg/ccl/cliccl/BUILD.bazel b/pkg/ccl/cliccl/BUILD.bazel index 5dfb4dde1d2f..a75669533f50 100644 --- a/pkg/ccl/cliccl/BUILD.bazel +++ b/pkg/ccl/cliccl/BUILD.bazel @@ -42,7 +42,6 @@ go_library( "//pkg/sql/sem/tree", "//pkg/storage", "//pkg/storage/enginepb", - "//pkg/util", "//pkg/util/envutil", "//pkg/util/hlc", "//pkg/util/humanizeutil", diff --git a/pkg/ccl/cliccl/debug_backup.go b/pkg/ccl/cliccl/debug_backup.go index dd3e5095c88a..289653f891dc 100644 --- a/pkg/ccl/cliccl/debug_backup.go +++ b/pkg/ccl/cliccl/debug_backup.go @@ -46,7 +46,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" "github.com/cockroachdb/cockroach/pkg/storage" - "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/cockroach/pkg/util/hlc" "github.com/cockroachdb/cockroach/pkg/util/humanizeutil" "github.com/cockroachdb/cockroach/pkg/util/timeutil" @@ -564,33 +563,24 @@ func makeIters( func makeRowFetcher( ctx context.Context, entry backupccl.BackupTableEntry, codec keys.SQLCodec, ) (row.Fetcher, error) { - var colIdxMap catalog.TableColMap - var valNeededForCol util.FastIntSet colDescs := make([]catalog.Column, len(entry.Desc.PublicColumns())) for i, col := range entry.Desc.PublicColumns() { - colIdxMap.Set(col.GetID(), i) - valNeededForCol.Add(i) colDescs[i] = col } if debugBackupArgs.withRevisions { - newIndex := len(entry.Desc.PublicColumns()) newCol, err := entry.Desc.FindColumnWithName(colinfo.MVCCTimestampColumnName) if err != nil { return row.Fetcher{}, errors.Wrapf(err, "get mvcc timestamp column") } - colIdxMap.Set(newCol.GetID(), newIndex) - valNeededForCol.Add(newIndex) colDescs = append(colDescs, newCol) } table := row.FetcherTableArgs{ Desc: entry.Desc, Index: entry.Desc.GetPrimaryIndex(), - ColIdxMap: colIdxMap, IsSecondaryIndex: false, - Cols: colDescs, - ValNeededForCol: valNeededForCol, + Columns: colDescs, } var rf row.Fetcher diff --git a/pkg/ccl/logictestccl/testdata/logic_test/multi_region_query_behavior b/pkg/ccl/logictestccl/testdata/logic_test/multi_region_query_behavior index 5c9415b693d7..55fefc390b2d 100644 --- a/pkg/ccl/logictestccl/testdata/logic_test/multi_region_query_behavior +++ b/pkg/ccl/logictestccl/testdata/logic_test/multi_region_query_behavior @@ -300,7 +300,7 @@ vectorized: true table: orders@orders_pkey spans: [/'ap-southeast-2'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727' - /'ap-southeast-2'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727'] [/'us-east-1'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727' - /'us-east-1'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727'] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykUttO20AQfe9XjOaFizZKfIEES0hGbUqD0oQmVK3UtZDxjmHbZNfdXauuUJ76bf2vyjYUghoE9MHWzuXMnHM012i_LzDC4efT8dFoAttvRvOz-YfxDsyH4-HrM9BGkDmXgkFh9FLfvGRGcDRvH-c_pLvSpTtvGm6ruyCkzXSp3Hpj2wVvZ9P37WwLJ9PRpJ1u4eN8NDmG7dtdO_Dp3XA2_MsCDmHrIKTwYhD2O4Pczzthmu11BkHudfZDT-xTIPK-399ChkoLmqRLshh9wRAThoXRGVmrTZ26bhpGosKox1CqonR1OmGYaUMYXaOTbkEY4Vl6saAZpYJMt4cMBblULpqxrYK4MHKZmp_IcF6kykbQ5Rhz7HLkvDoIOa-o_l0MjjmvBnn35PcvzqvcE5xXnlCHddDf4tjtQaoEeKDdFRlkOC1dBLHHYp_FASYrhrp0d0ytSy8JI2_FXqbGe7KamnfvRYqerMLfqOKOvCUj0wWUqqFKYo1_svqH3Inu6KLrrwsdy6V04G2k0nuOoSdaqhs_g_U17U3f83Os9beygK9aKtAqgrgGzEgJMo1BEAcMYr_-duO9jfSC59CbkS20svTAqk3CE4YkLqm13erSZHRqdNasacNpg2sSgqxrq34bjFRTag7yPtj7H7D_KDhYA_cegoNHweEDcLJ69ScAAP__fLWm2w== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskttO20AQhu_7FKO54aCNEh8gwRKSEU1pUBpoQtVK3QgZ7wS2dXbd3bXqCuWqz9b3qmxDwVGDBO2FrT3MP_N_v_YW7bcMIxx-Oh8fjSaw_Xo0u5i9H-_AbDgeHl-ANoLMpRQMcqOX-m4lU4KjWbO4_C7djS7cZV1wf7sLQtpUF8q1C5sqeDM9e9f0tnB6Npo03S18mI0mJ7B9P2sHPr4dTod_XMAhbB2EFF4Nwn5nsPAXnTBJ9zqDYOF19kNP7FMgFn2_v4UMlRY0SZZkMfqMIc4Z5kanZK021dFtXTASJUY9hlLlhauO5wxTbQijW3TSZYQRXiRXGU0pEWS6PWQoyCUyq9s2BHFu5DIxP5Dhsc6KpbJRKzeZ0kN8yHCWJ1VJl2PMscuR8_Ig5Lyk6nc1OOG8HCy6p79-cl4uPMF56Ql1WG36Wxy7PUiUAA-0uyGD8xVDXbgH-9Yl14SRt2IvQ_T-L2IF03sR5kY0fyPaA5ElI5MMClW7JNGCmq_-ksFEd3Te9dv0Y7mUDryNVnrPSflUS3UXctAe07z-RyGPtf5a5PBFSwVaRRBXgikpQSaC2GMQBwxiv_p2472N9oLn2JuSzbWytBbVJvA5QxLX1MRudWFSOjc6rcc027NaVx8Isq659ZvNSNVX9St9LPb-Rew_KQ5a4t66OHhSHK6J56tXvwMAAP__m3W5aQ== query T nodeidx=3 USE multi_region_test_db; EXPLAIN (DISTSQL) SELECT @@ -337,7 +337,7 @@ vectorized: true table: orders@orders_pkey spans: [/'ap-southeast-2'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727' - /'ap-southeast-2'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727'] [/'us-east-1'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727' - /'us-east-1'/'94e4b847-8f2f-4ac5-83f1-641d6e3df727'] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk99uGjsQxu_PU1hzk9PIhP0XICtFctTSlohCCpFaqUZos55N3IK9tb3tVhFXfba-V7W7JCmooCS9ANvj-Zjf5xluwX5dQAz9jxfDs8GI_P9qML2cvh--INP-sP_ykmgj0MyloCQ3eqntUb2sAzJFcjZtNvPv0t3ows3rhLvbQyKkTXWh3GZik0VeT8bvmhKWnI8Ho3URMr7bHUmVacJ44XkhrjOb2Ie3_Un_Ho-ckoOTCKOrXtRt9bIga0VJetzqhZnf6kS-6GAosm7QPQAKSgscJUu0EH-CCGYUcqNTtFabKnRbJwxECbFHQaq8cFV4RiHVBiG-BSfdAiGGy-RqgRNMBJq2BxQEukQu6p9tSFlu5DIxP4DCNE-UjUmbA-PQ5sB5eRJxXmL1ddV7w3nZy9rnv35yXma-4Lz0hTqtDt0DDm2PJEoQn2h3gwYojAsXE-ZTFlAWwWxFQRfugdS65Boh9lf0eW78R7upuL1nOXq0i2Cniwd4i0YmC1KoGhXFBv9s9Re7I93SeTvYNDqUS-mIvxPFe8qDDtQ3NA7FuZYKTTvcLNXMN2uWeTXScylKoPeyfpkbwjr3w8_CrRcL9z1a-BTSinDd-WgH5V3nh1p_KXLyWUtFtIoJqwTjEWHdTdAJKoGmZiXsmBIWVJ9D1tlJHD2FeII218riVp93dW1GAcU1NjNjdWFSvDA6rcs0x3GtqwMCrWtug-YwUPVV_W_6U-z_izjYKw43xN62ONwrjvaLo73i4y3xbPXf7wAAAP__Xc4AbA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk9tu2zgQhu_3KYi5yW5AxzrFdgQEYJD1bh24dmoHaIHSMBRxnLC1SZWkWhWBr_psfa9CkpNUQWUgaS9skTPzc76fhzuwn9YQw_Dd5fhsNCF__zuaX83fjP8h8-F4eH5FtBFollJQkhm90fao-uwCMkVyNq8Hyy_S3ercLauC--whEdKmOleuWVhXkf9m09d1C0supqPJrgmZ3o-OpFppwnjueSHuKuvY21fD2fABj5ySg5MIo-tB1O8MVsGqEyXpcWcQrvxOL_JFD0Ox6gf9A6CgtMBJskEL8XuIYEEhMzpFa7UpQ3dVwUgUEHsUpMpyV4YXFFJtEOI7cNKtEWK4Sq7XOMNEoOl6QEGgS-S6WrYmZZmRm8R8BQrnep1vlI0bGypTpKR0AxTmWVKmuxwYhy4HzouTiPMCy7_rwf-cF4NV9-L7N86LlS84L3yhTstJ_4BD1yOJEsQn2t2igcWWgs7dI7p1yQ1C7G_py-z5f85eacR7kcVWW0GrrUc3Fo1M1iRXFSGKhqHF9hf-J7qjs27QdD6WG-mI34riPWeHR-ozGofiQkuFphs2W9UvgNWfZbmPSykKoA-yYZEZwnoPz4OVC0xzFxPmUxZQFlIWtZKGzyEtCXdXIWqhvL8KY60_5hn5oKUiWsWElYLphLB-E3SGSqCpWAk7poQF5e-Q9VqJo-cQz9BmWll8cs5tp7aggOIG6ztjdW5SvDQ6rdrU02mlqwICrauzQT0ZqSpVPa-fxf7viIO94rAh9p6Kw73iaL842is-fiJebP_6EQAA__9lwQ-e # Regression test for #74890. Code should not panic due to distribution already # provided by input. diff --git a/pkg/ccl/logictestccl/testdata/logic_test/partitioning_enum b/pkg/ccl/logictestccl/testdata/logic_test/partitioning_enum index 70badf372e1e..d2b914fcfe07 100644 --- a/pkg/ccl/logictestccl/testdata/logic_test/partitioning_enum +++ b/pkg/ccl/logictestccl/testdata/logic_test/partitioning_enum @@ -83,8 +83,9 @@ drop type if exists t; create type t as enum('a', 'b', 'c'); create table tbl (i INT, k t, PRIMARY KEY (i, k), INDEX idx (k) PARTITION BY RANGE (k) (PARTITION "a" VALUES FROM ('a') TO ('b'))) -statement error pgcode 2BP01 could not remove enum value "a" as it is being used in the partitioning of index tbl@idx -alter type t drop value 'a'; +# TODO(#75227): Fix this flaky test. +# statement error pgcode 2BP01 could not remove enum value "a" as it is being used in the partitioning of index tbl@idx +# alter type t drop value 'a'; # We want to fail even if the index is being dropped. The reason is that it # would be bad if we rolled back the dropping of the index. diff --git a/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_query_behavior b/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_query_behavior index 93a1c77ba8ac..5d158dbb0b03 100644 --- a/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_query_behavior +++ b/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_query_behavior @@ -352,7 +352,7 @@ SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM regional_by_row_table WHERE pk = table: regional_by_row_table@regional_by_row_table_pkey spans: [/'ap-southeast-2'/1 - /'ap-southeast-2'/1] [/'ca-central-1'/1 - /'ca-central-1'/1] [/'us-east-1'/1 - /'us-east-1'/1] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8kN2q00AQgO99imWuVFbyV0EWhIimGKhNTQIKTSjb7FCCaTbubrCl5N0lm4taKYdz2sO5nJ9v5ps5gf7dAIMsWkSfc_KWzNPkG1lHP1eLT_GSvP4SZ3n2ffGGXDYo3NWy5c1me9wo-Wdj-LZB8uNrlEak-0U-Eq8kyXyeRTnxgUIrBS75HjWwNXhQUuiUrFBrqcbUyTbE4gDMpVC3XW_GdEmhkgqBncDUpkFgkI97UuQCleMCBYGG140de1Up7FS95-oIFLKOt5oRp4CwAMezeNIbRkKPhj4NAxrOaPgeyoGC7M3ZQRu-Q2DeQG_z9G71LIrDB_dlXf07XKvndj0r9q1UAhWKC71yuHLNUr6TnRP813h9tf-UN6WoO9lqfNRkd1RDscPpDi17VeFKycqumcLEcjYhUJupGkxB3NqS_c2_sHcP7N8DBw_CswvYHcrh1d8AAAD__97CZ-c= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0kN2q2kAQgO_7FMNctWVLfuxFCRQsNtKAVZsEWjBB1uwgqTG73d1QRfLuJcmF9SCHcxQv5-eb-WZOaP5UGGASzsJJCu9hGi--wyr8tZx9iebw9muUpMmP2Tu4bNC0LWXNq_XmuNby79ryTUXw81sYh6B28Bm8HBbTaRKm4CPDWgqa8z0ZDFboYc5QaVmQMVJ3qVPfEIkDBi7DslaN7dI5w0JqwuCEtrQVYYBptycmLkg7LjIUZHlZ9WOvKo2VLvdcH5HhRFbNvjYBqB0DtfMZcAYbBr-RYaJ4V3EyHGfoeI6LectQNvZsYizfEgZey26z9R5hm2WHT-6jjP0HGRe3G59Fm1pqQZrEhWTeXrlpLj9I5YyeNF5f7b_mWTEZJWtDL5rsdmoktjTcYWSjC1pqWfRrhnDRc31CkLFDdTQEUd2X-t_8D3v3wP498OhZ-OMF7LZ5--ZfAAAA___eJXDk statement ok SET vectorize=on @@ -412,7 +412,7 @@ SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM regional_by_row_table WHERE pk = table: regional_by_row_table@regional_by_row_table_pkey spans: [/'ca-central-1'/1 - /'ca-central-1'/1] [/'us-east-1'/1 - /'us-east-1'/1] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysklFr2zAQx9_3KcQ9bUMjlpPCEAw8NocFsqSzDRvUJqjWEcQcy5Nk1hL83Yflh84jC43TR53up_vd3z6C_VUBhzRex58y8pYsk-1Xchf_uF1_XG3I68-rNEu_rd-QcYPBvdK1qHb3jzujf--cuK-QfP8SJzFpfpIPhBVku1ymcUZCoFBriRtxQAv8DhgUFBqjS7RWm7509A0r-QA8oKDqpnV9uaBQaoPAj-CUqxA4ZP2cBIVEMwuAgkQnVOWfPakUNUYdhHkECmkjasvJLIc8f3gf5DBj_olt6ziJGI1CGs1ptKDRDRQdBd26Jw_rxB6Bs45Oc2VXuJYv7fqk2NbaSDQoR3pFd2KbjX6nm1n4T-Pp0eHUmOZTY4omRTR_RkQWjRIVuTipxXiVtTooR9h_VYJLIkvQNrq2-KyPEfSOKPc47GV1a0q8Nbr0Y4bj1nO-ING64TYcDqvaX_nf6W-YXQOHZ-HFeXh-Dbw4C9-M4KAruld_AgAA__9L0Kp2 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0kt-L00AQx9_9K4Z5UlnJj1aQgHByplio7dkEFC6hbLNDWZtk190N3lHyv0uShzNSe3c9-rgz8-l85tsc0P4qMcIkXsTXKbyF2Xr1FW7jHzeLT_MlvP48T9Lk2-INjAcM7aSqebnZ3m-M-r1xfFsSfP8Sr2PQe_gIQQ6r2SyJUwiRYa0ELXlFFqNbDDBnqI0qyFplutKhH5iLO4x8hrLWjevKOcNCGcLogE66kjDCtNuzJi7IeD4yFOS4LPufPap0pY2suLlHhteqbKraRqD3DPQ-ZMAZbBn8RIaJ5l3HyzDL7j74GXqB52PeMlSNe7Cxju8Io6Bl5xkHFzIuzjd-EG1qZQQZEiPJvD1y01K9U9oL_xk8vjo8N6zJJcK6eiSoyROCsmQkL-HZeU3HBy1kJR0E_1XxnxPcmqxWtaUn_SV-50hiR8NdVjWmoBujin7N8Fz1XF8QZN3QDYfHvO5b_Uf1Nxy8BA5PwtPT8OQl8PQk_H4E-23evvoTAAD__82-s3M= query T EXPLAIN (VEC) SELECT * FROM regional_by_row_table WHERE pk = 1 @@ -433,7 +433,7 @@ SET vectorize=off query T SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM regional_by_row_table WHERE pk = 1] AS temp(a) WHERE a LIKE '%Diagram%' ---- -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkXFr1EAQxf_3UwwDpa2sJJsqSEBIsRGD8a5eDhR64djeDudisrvubrDlyHeXS4Qa6Qm9_jnvzZv8XnaH_meDKVZ5mb9fwkv4sJh_hpv823V5Wczg7KqoltWX8hymC462ymjRrG_v1878Wgdx2xB8_ZgvcrA_4B3wGi4rCNRaOBPnfxwBZfEph9OTKyW2TrQnp8hQG0kz0ZLH9AY51gytMxvy3ri9tBsWCnmHacxQaduFvVwz3BhHmO4wqNAQprjcMyxISHJRjAwlBaGa4eyjuJl1qhXuHhlWVmifQrTC1erubbzCiEcxCC2BgwnfySHDeRdSyDjLEpZdsOw1y95g3TM0XXhg8kFsCVPes-O4-bHc2cj8RM7kIOcDnienRAOdNk6SIzkhrPtHCs3MK2OjZFqlVK0KwA-ixE_5ZQvy1mhP_7AculwzJLmlsZc3ndvQtTOb4TPjOB9ygyDJh9FNxqHQgzW86d9h_pxw8t_wxSQc93X_4ncAAAD___VzLXM= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0keFr1EAQxb_7VwwDpa2sJBu_SEBoaSMG47VeDhR64di7Hc71kt11d4MtR_53SSLUSCOo-HHemzf5vewR_dcaUyyzIrtawXN4s7x5D3fZp9viMl_A2XVersoPxTlMFxztldGi3mwfNs582wSxrQk-vs2WGdgDvAZewWUJgRoLZ-L8hyOgyN9lcHpyrcTeiebkFBlqI2khGvKY3iHHiqF1ZkfeG9dLx2Ehl_eYxgyVtm3o5YrhzjjC9IhBhZowxVXPsCQhyUUxMpQUhKqHs0_iXlinGuEekOGVqdtG-xTsgYE9JAwEgy2DL8iwtKJ3ojWu1_ev4jVGPIpBaAkcTPhMDquOoWnDI5kPYk-Y8o79HT3_H_QXI_ksbTJL-wjpySlRQ6uNk-RITjir7olaC_PC2CiZFipUowLwWZT4T37ckrw12tMvLHOXK4Yk9zT28qZ1O7p1Zjd8ZhxvhtwgSPJhdJNxyPVgDS_7c5j_Szj5bfjlJBx3VffsewAAAP__tYozcQ== statement ok RESET vectorize @@ -744,7 +744,7 @@ SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM child WHERE NOT EXISTS (SELECT * table: child@child_pkey spans: [/'ca-central-1'/10 - /'ca-central-1'/10] [/'us-east-1'/10 - /'us-east-1'/10] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k9Fq20wQhe__pxjmxvbPFq9khYaFgEIjUwVVSm1BA7EIqjQkamWtursCB-N3L5YMsUxtnJTeeWfP8XxnNLtG_atEgXMv8D7F8D9MZ9EXePDu74JrP4ThjT-P51-DEfQF2XNR5vDtszfzYBhGMXj3WyEM-7I6VVSZna5-LHK4guxx-2M0guvwBoZZV7T4KIFoOp17MdjIsJI5hemSNIoHtDBhWCuZkdZSbUvrVuDnKxScYVHVjdmWE4aZVIRijaYwJaHAOP1e0ozSnNSYI8OcTFqU7d-2GdxaFctUvSDDeZ1WWsB4gYvF6pIvcGzxMYe0ysECaZ5JIcOoMQJci7k2JhuGsjGvvbVJnwiFtWHv47PO5XN3bOfx2Ed5XjE0qSItoamkyklR3iNJNn8AD-UHWY_tPnJQLAsD1lEU_pbR3Mqi2k1m0m8Tv9QkIPCmMVyHsQ-3kR8iw27b9iYWSPmzqeGHLCqQlYChO4ErcO3d7rkOXMFq4PCBEMK1OOcXH0fnzXTyziDOvwqyfaurweV-FAarQdbLdmY45y3hZqRrWWk62Jhj3z9hSPkTddunZaMyulMya9t0x6j1tYWctOlu7e7gV-1V-8L2zdbfmO2T5knPzA_Nk5Nm57TZOWm-ODAnm_9-BwAA__8KgMVR +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k_Frm0AUx3_fX_F4vyQZN3Iay8pBwNAaZnHaJcIKjRSnj9bNeO48ISXkfx9qoDEsYW3Zb96779f7fN-922L1O0eBS8dzrkL4CPNF8BXunbtbb-b6MLx2l-HymzeCviB5yvIUvn9xFg4M_SAE564RwrAvK2NFhd7ryocshSkkD83HaAQz_xqGSVc0-CiCYD5fOiGYyLCQKfnxmioU92hgxLBUMqGqkqopbVuBm25QcIZZUda6KUcME6kIxRZ1pnNCgWH8I6cFxSmpMUeGKek4y9vfthnsUmXrWD0jwyuZ1-uiEtAwsT0nMlyWcVMdr3C12lzyFY4NPuYQFykYIPUTKYx2DGWtXzAqHT8SCmPH3oZqvBfV3mOeRDNPor0QVaSyOIe6kColRWkPKtr9JYMvP8lybPbpvWydaTBOovDXdOlGZsW-SZP-MeFzSQI8Zx7CzA9duAlcHxl2M3jQPE_KX3UJP2VWgCwEDO0JTME29xNpWzCFzcDiAyGEbXDOLz6PkGFQawG2wWzzZJDJG4NY_ytI84I3g8vDKAw2g6SX7R_DWa8Jt6CqlEVFRxNz6v4jhpQ-Ujd9laxVQrdKJu0x3TJofW0hpUp3u2a3cIt2q31sh2bjPWbzrHnSM_Nj8-Ss2Tpvts6aL47M0e7DnwAAAP__BdnO9w== statement ok SET vectorize=on @@ -821,7 +821,7 @@ SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM child WHERE EXISTS (SELECT * FROM table: child@child_pkey spans: [/'ca-central-1'/10 - /'ca-central-1'/10] [/'us-east-1'/10 - /'us-east-1'/10] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk1Fr2zAQgN_3K457STI0IjsZK4KAy-owFzfpYsMKjSmefbTeHMmTZEgJ-e8jdqBxWLp0e7NO9-k-7s4bNL9KFBj5of85hvcwXcxv4N6_uw0vgxn0r4Iojr6GA-gmZE9FmcO3L_7CB_9ulwP9bkaVapJ2n1I9FDlMIHvYfQzgcnYF_ayNOXyQwHw6jfwYXGQoVU6zdEUGxT06mDCstMrIGKV3oU2TEORrFJxhIava7sIJw0xpQrFBW9iSUGCcfi9pQWlOesiRYU42Lcrm2cbeq3SxSvUzMoyqVBoBwyUul-sLvsShw4ccUpmDA8o-kUaG89oK8BzmuZhsGaravtQ2Nn0kFM6W_Zufc66ft3c7z8c96fOiYUgXaQm1VDonTXnHJNn-QXymPqhq6HaVw2JVWHBOqvC3tOZaFXLfmVG3TPxckYDQn8YQ-TcBXM-DGTJsl-2gY6FSP-sKfqhCgpIC-t4IJuC5-93zxjCBdW_Me0IIz-Gcf_w0QIYLWilLUP6V3v0a697FIc9g3cs6Dw7Om9LoLa1ZkKmUNHQ0plNNTxhS_kjtyI2qdUa3WmVNmfY4b7gmkJOx7a3bHgLZXDVrfQg7_wO7r8KjDsyP4dGr8PgITrbvfgcAAP__09SDvA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk9Fr2zAQxt_3Vxz3kmRoRHY6VgQBl9ZhLm7SxYYVGlM8-2i9OZInyZAS8r8P24HGYeno-madvu_086fTFs3vEgVGfuhfxvARZsvFDdz7d7fhRTCH4VUQxdG3cAR9QfZUlDl8_-ovffDvGg0M-4oq1STtXlI9FDlMIXtoPkZwMb-CYdbVHD5KYDGbRX4MLjKUKqd5uiaD4h4dTBhWWmVkjNJNadsKgnyDgjMsZFXbppwwzJQmFFu0hS0JBcbpj5KWlOakxxwZ5mTTomzbtvRepYt1qp-R4aUq67U0AhomtsdEhlGVNtXxClerzTlf4djhYw6pzMEBZZ9IY7JjqGr7gmFs-kgonB37P1TnvajeHvMkmnsS7YXIkC7SEmqpdE6a8h5UsvvLP8zVJ1WN3T59WKwLC85JFP6WlK5VIfchTfrHxM8VCQj9WQyRfxPA9SKYI8NuBA_CC5X6VVfwUxUSlBQw9CYwBc_dT6R3BlPYDM74QAjhOZzzz19GyHBJa2UJyn-6mwezGZwf-hlsBlmvYdNxUVsBnsM892Q0k7dEsyRTKWno6JpOhZ4wpPyRuis3qtYZ3WqVtcd0y0Xraws5Gdvtut0ikO1WO-GHZuc9ZvdV86Rn5sfmyavmsyNzsvvwJwAA__8mqI1i statement ok SET vectorize=on @@ -899,7 +899,7 @@ SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM child INNER JOIN parent ON p_id = table: child@child_pkey spans: [/'ca-central-1'/10 - /'ca-central-1'/10] [/'us-east-1'/10 - /'us-east-1'/10] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkmFr2zwQx98_n-K4N2keNCLbHSuCgMvqMJfM7pzABo0pnn202hzJk2TICPnuI3ahcVi6dntnn_TT_fjfbdH-qFHgIppH75fwP8yy9CPcRl9u5pdxAmdX8WK5-DQfw_BC-SDrCuIkiTK4TuMEmsKQcpAm0NzJCqZQ3nUfnz9EWQRlX_N4DulstoiW4CNDpStKijVZFLfoYc6wMboka7XZl7bdhbjaoOAMpWpaty_nDEttCMUWnXQ1ocBl8bWmjIqKzIQjw4pcIevu2U40bIxcF-YnMlw0hbICJitcrTYXfIUTj084FKoCD7R7IIMM09YJCD0W-pjvGOrWPfW2rrgnFN6O_Z2f91K_8NHtZT7-SZ8nDUtGFjW0SpuKDFUDk3z3G_FEv9HNxB8qz-VaOvBOqvDXRHOtpXpMJhi26TfqIJq51t_bBr5pqUArAWdhAFMI_TFcJldwFp7DFDajcz4SQoQe5_ztuzEyzGitHUH9R3q_7pvRxSHPYDMqBw-OB-NgYXAyhuA1MWRkG60sHY3kVMA5Q6ruqR-v1a0p6cbosmvT_6Yd1xUqsq4_9fufWHVH3Qofwt6_wP6zcDCA-TEcPAufH8H57r9fAQAA__8MsXkh +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk1Fr2zAQx9_3KY57STI0ItsZK4KAS-swl8zunMAGjSmefbTeHMmTZMgI-e4jdqBxWDravlkn_U4__yVt0fyuUOAimAdXS3gPsyT-AnfB99v5ZRjB8DpcLBdf5yPoL8gfy6qAMIqCBG7iMII60yQtxBHU92UBU8jv249vn4MkgLyrOTyFeDZbBEtwkaFUBUXZmgyKO3QwZVhrlZMxSu9L23ZBWGxQcIalrBu7L6cMc6UJxRZtaStCgcvsR0UJZQXpMUeGBdmsrNq2rahf63Kd6T_I8EpVzVoa0SqxgyUyXNTZvjpe4Wq1ueArHDt8zCGTBTig7CNpTHcMVWOfNIzNHgiFs2OvU3XequofNM-quWfVnowM6TKroJFKF6Sp6Emlu3_8Q6Q-qHrs9u3n5bq04JxV4S9J6UaV8hCS19-mu2dHKc2V-tXU8FOVEpQUMPQ9mILvjuAyuoahP4EpbAYTPhBC-A7n_OOnETJMaK0sQfVfev8INoOLY57BZpD3Gu47xo0V4DvMd5nvnY3Be0kMCZlaSUMnR3Iu4JQhFQ_UHa9Rjc7pVqu83aYbxi3XFgoytpt1u0Eo26n2Nh_Dzltg91nY68H8FPaehScncLp79zcAAP__MAGCxw== statement ok SET vectorize=on @@ -977,7 +977,7 @@ SELECT * FROM [EXPLAIN (DISTSQL) SELECT * FROM child LEFT JOIN parent ON p_id = table: child@child_pkey spans: [/'ca-central-1'/10 - /'ca-central-1'/10] [/'us-east-1'/10 - /'us-east-1'/10] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk2Fr2zwQx98_n-K4N2keNCLbGSuCgMvqsBTP7hyPDRpTPPtovTmSJ8mQEvLdR-xC47B07fbOOukn_fjfeYvmZ40Cl0EYvE_hf5gn8Ue4Cb5ehxeLCM4uF8t0-Skcw_BAcV_VJYTBPIWreBFBk2uSFuIImtuqhBkUt93Hlw9BEkDR1xyeQTyfL4MUXGQoVUlRviaD4gYdzBg2WhVkjNL70rY7sCg3KDjDSjat3ZczhoXShGKLtrI1ocA0_1ZTQnlJesKRYUk2r-ru2s7Tb3S1zvUDMlw2uTQCJitcrTbnfIUTh0845LIEB5S9J40M49YK8B3mu5jtGKrWPr1tbH5HKJwd-zs_56V-_qPby3zckz5PGoZ0ldfQSqVL0lQOTLLdb8Qj9UY1E3eoHFbryoJzUoW_JporVcnHZLzhM-lDQ6KfsPhzGiTdnCHDftIOIguV-tE28F1VEpQUcOZ7MAPfHcNFdAln_hRmsBlN-UgI4Tuc87fvxsgwobWyBPUf6f1fsBmdH_IMNqNicOF40Cbmeyfj8V4TT0KmUdLQUatOBZ8xpPKO-rYb1eqCrrUqumf6ZdxxXaEkY_tdt18sZLfVjfYh7PwL7D4LewOYH8Pes_D0CM52__0KAAD__1JWf2Y= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk2Fr2zwQx98_n-K4N2kfNCLbGSuCgEvrsBTP7hyPDRpTPPtovTmWJ8mQEvLdR-RA47B0dH0XnfQ7_fLXeYP6V40CF0EYXKXwP8yS-BPcBd9uw8t5BGfX80W6-Byew_BA8VjVJYTBLIWbeB5BmytqDMQRtPdVCVMo7u2Prx-DJICirzk8g3g2WwQpuMiwkSVF-Yo0ijt0MGPYKlmQ1lLtSht7YF6uUXCGVdN2ZlfOGBZSEYoNmsrUhALT_HtNCeUlqTFHhiWZvKptW-vpt6pa5eoJGV7Juls1WlgltrdEhos231XHS1wu1xd8iWOHjznkTQkOSPNICrMtQ9mZZw1t8gdC4WzZv6k6b1X195on1dyTas9GmlSV19A1UpWkqBxIZds__IdIvpPt2B3ah9WqMuCcVOGvSelGVs0-JG94TfrUkujnLv6SBomdPmTYz99BeqGUP7sWfsiqAdkIOPM9mILvnsNldA1n_gSmsB5N-EgI4Tuc8_cfzpFhQitpCOq_0rtvYz26OOQZrEfFoOGuY9wZAb7DfJf53sl4vNfEk5BuZaPp6KlOBZ8xpPKB-mfXslMF3SpZ2Gv6ZWw5WyhJm37X7Rfzxm7ZKT-EnbfA7ouwN4D5Mey9CE-O4Gz73-8AAAD__1ZPiQw= statement ok SET vectorize=on diff --git a/pkg/cli/start.go b/pkg/cli/start.go index 305723a67a41..967f623c2ee6 100644 --- a/pkg/cli/start.go +++ b/pkg/cli/start.go @@ -1229,6 +1229,8 @@ func getClientGRPCConn( Clock: clock, Stopper: stopper, Settings: cfg.Settings, + + ClientOnly: true, }) if cfg.TestingKnobs.Server != nil { rpcContext.Knobs = cfg.TestingKnobs.Server.(*server.TestingKnobs).ContextTestingKnobs diff --git a/pkg/cmd/github-post/main.go b/pkg/cmd/github-post/main.go index 99ec5324538e..2bc68962904f 100644 --- a/pkg/cmd/github-post/main.go +++ b/pkg/cmd/github-post/main.go @@ -542,7 +542,7 @@ func formatPebbleMetamorphicIssue( s = strings.TrimSpace(s[:strings.Index(s, "\n")]) repro = fmt.Sprintf("go test -mod=vendor -tags 'invariants' -exec 'stress -p 1' "+ - "-timeout 0 -test.v -run TestMeta$ ./internal/metamorphic -seed %s", s) + `-timeout 0 -test.v -run TestMeta$ ./internal/metamorphic -seed %s -ops "uniform:5000-25000"`, s) } } return issues.UnitTestFormatter, issues.PostRequest{ diff --git a/pkg/cmd/github-post/main_test.go b/pkg/cmd/github-post/main_test.go index 0a24ee1702ea..fd07e64541e7 100644 --- a/pkg/cmd/github-post/main_test.go +++ b/pkg/cmd/github-post/main_test.go @@ -235,7 +235,7 @@ TestXXA - 1.00s testName: "TestMeta", title: "internal/metamorphic: TestMeta failed", message: "panic: induced panic", - expRepro: "go test -mod=vendor -tags 'invariants' -exec 'stress -p 1' -timeout 0 -test.v -run TestMeta$ ./internal/metamorphic -seed 1600209371838097000", + expRepro: `go test -mod=vendor -tags 'invariants' -exec 'stress -p 1' -timeout 0 -test.v -run TestMeta$ ./internal/metamorphic -seed 1600209371838097000 -ops "uniform:5000-25000"`, }, }, formatter: formatPebbleMetamorphicIssue, diff --git a/pkg/rpc/context.go b/pkg/rpc/context.go index 63429c10d33c..babf390fc358 100644 --- a/pkg/rpc/context.go +++ b/pkg/rpc/context.go @@ -424,6 +424,11 @@ type ContextOptions struct { // server. If unset in the options, the RPC context will instantiate // its own separate container (this is useful in tests). ClusterID *base.ClusterIDContainer + + // ClientOnly indicates that this RPC context is run by a CLI + // utility, not a server, and thus misses server configuration, a + // cluster version, a node ID, etc. + ClientOnly bool } func (c ContextOptions) validate() error { @@ -911,11 +916,19 @@ func (rpcCtx *Context) grpcDialOptions( tagger := func(span *tracing.Span) { span.SetTag("node", attribute.IntValue(int(rpcCtx.NodeID.Get()))) } + compatMode := func(reqCtx context.Context) bool { + return !rpcCtx.ContextOptions.Settings.Version.IsActive(reqCtx, clusterversion.SelectRPCsTakeTracingInfoInband) + } + + if rpcCtx.ClientOnly { + // client-only RPC contexts don't have a node ID to report nor a + // cluster version to check against. + tagger = func(span *tracing.Span) {} + compatMode = func(_ context.Context) bool { return false } + } + unaryInterceptors = append(unaryInterceptors, - tracing.ClientInterceptor(tracer, tagger, - func(reqCtx context.Context) bool { - return !rpcCtx.ContextOptions.Settings.Version.IsActive(reqCtx, clusterversion.SelectRPCsTakeTracingInfoInband) - } /* compatibilityMode */)) + tracing.ClientInterceptor(tracer, tagger, compatMode)) streamInterceptors = append(streamInterceptors, tracing.StreamClientInterceptor(tracer, tagger)) } diff --git a/pkg/server/admin_test.go b/pkg/server/admin_test.go index e3b329df7afd..27532de2c633 100644 --- a/pkg/server/admin_test.go +++ b/pkg/server/admin_test.go @@ -1765,8 +1765,8 @@ func TestAdminAPIQueryPlan(t *testing.T) { query string exp []string }{ - {"SELECT sum(id) FROM api_test.t1", []string{"nodeNames\":[\"1\"]", "Out: @1"}}, - {"SELECT sum(1) FROM api_test.t1 JOIN api_test.t2 on t1.id = t2.id", []string{"nodeNames\":[\"1\"]", "Out: @1"}}, + {"SELECT sum(id) FROM api_test.t1", []string{"nodeNames\":[\"1\"]", "Columns: id"}}, + {"SELECT sum(1) FROM api_test.t1 JOIN api_test.t2 on t1.id = t2.id", []string{"nodeNames\":[\"1\"]", "Columns: id"}}, } for i, testCase := range testCases { var res serverpb.QueryPlanResponse diff --git a/pkg/server/debug/BUILD.bazel b/pkg/server/debug/BUILD.bazel index 6f731cd5e7a5..38120156700d 100644 --- a/pkg/server/debug/BUILD.bazel +++ b/pkg/server/debug/BUILD.bazel @@ -29,6 +29,8 @@ go_library( "//pkg/util/log/severity", "//pkg/util/stop", "//pkg/util/timeutil", + "//pkg/util/tracing", + "//pkg/util/tracing/tracingui", "//pkg/util/uint128", "@com_github_cockroachdb_errors//:errors", "@com_github_cockroachdb_pebble//tool", diff --git a/pkg/server/debug/server.go b/pkg/server/debug/server.go index 788b99b47b3c..15cdef61d07d 100644 --- a/pkg/server/debug/server.go +++ b/pkg/server/debug/server.go @@ -32,6 +32,8 @@ import ( "github.com/cockroachdb/cockroach/pkg/storage" "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/cockroach/pkg/util/stop" + "github.com/cockroachdb/cockroach/pkg/util/tracing" + "github.com/cockroachdb/cockroach/pkg/util/tracing/tracingui" "github.com/cockroachdb/errors" pebbletool "github.com/cockroachdb/pebble/tool" metrics "github.com/rcrowley/go-metrics" @@ -61,14 +63,18 @@ var _ = func() *settings.StringSetting { // Server serves the /debug/* family of tools. type Server struct { - st *cluster.Settings - mux *http.ServeMux - spy logSpy + ambientCtx log.AmbientContext + st *cluster.Settings + mux *http.ServeMux + spy logSpy } // NewServer sets up a debug server. func NewServer( - st *cluster.Settings, hbaConfDebugFn http.HandlerFunc, profiler pprofui.Profiler, + ambientContext log.AmbientContext, + st *cluster.Settings, + hbaConfDebugFn http.HandlerFunc, + profiler pprofui.Profiler, ) *Server { mux := http.NewServeMux() @@ -137,9 +143,10 @@ func NewServer( }) return &Server{ - st: st, - mux: mux, - spy: spy, + ambientCtx: ambientContext, + st: st, + mux: mux, + spy: spy, } } @@ -232,6 +239,12 @@ func (ds *Server) RegisterClosedTimestampSideTransport( }) } +// RegisterTracez registers the /debug/tracez handler, which renders snapshots +// of active spans. +func (ds *Server) RegisterTracez(tr *tracing.Tracer) { + tracingui.RegisterHTTPHandlers(ds.ambientCtx, ds.mux, tr) +} + // ServeHTTP serves various tools under the /debug endpoint. func (ds *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { handler, _ := ds.mux.Handler(r) diff --git a/pkg/server/server.go b/pkg/server/server.go index b66783293f9c..4203ed2fa1d7 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -834,7 +834,7 @@ func NewServer(cfg Config, stopper *stop.Stopper) (*Server, error) { } sStatus.setStmtDiagnosticsRequester(sqlServer.execCfg.StmtDiagnosticsRecorder) sStatus.baseStatusServer.sqlServer = sqlServer - debugServer := debug.NewServer(st, sqlServer.pgServer.HBADebugFn(), sStatus) + debugServer := debug.NewServer(cfg.BaseConfig.AmbientCtx, st, sqlServer.pgServer.HBADebugFn(), sStatus) node.InitLogger(sqlServer.execCfg) *lateBoundServer = Server{ @@ -1958,6 +1958,7 @@ func (s *Server) PreStart(ctx context.Context) error { return errors.Wrapf(err, "failed to register engines with debug server") } s.debug.RegisterClosedTimestampSideTransport(s.ctSender, s.node.storeCfg.ClosedTimestampReceiver) + s.debug.RegisterTracez(s.cfg.Tracer) s.ctSender.Run(ctx, state.nodeID) diff --git a/pkg/server/tenant.go b/pkg/server/tenant.go index c74b18a3913b..bd7c9a2809bc 100644 --- a/pkg/server/tenant.go +++ b/pkg/server/tenant.go @@ -211,7 +211,7 @@ func StartTenant( ) mux := http.NewServeMux() - debugServer := debug.NewServer(args.Settings, s.pgServer.HBADebugFn(), s.execCfg.SQLStatusServer) + debugServer := debug.NewServer(baseCfg.AmbientCtx, args.Settings, s.pgServer.HBADebugFn(), s.execCfg.SQLStatusServer) mux.Handle("/", debugServer) mux.Handle("/_status/", gwMux) mux.HandleFunc("/health", func(w http.ResponseWriter, req *http.Request) { diff --git a/pkg/sql/backfill/backfill.go b/pkg/sql/backfill/backfill.go index 26bad1901045..80ac33c1b66b 100644 --- a/pkg/sql/backfill/backfill.go +++ b/pkg/sql/backfill/backfill.go @@ -77,8 +77,10 @@ type ColumnBackfiller struct { updateExprs []tree.TypedExpr evalCtx *tree.EvalContext - fetcher row.Fetcher - alloc tree.DatumAlloc + fetcher row.Fetcher + fetcherCols []catalog.Column + colIdxMap catalog.TableColMap + alloc tree.DatumAlloc // mon is a memory monitor linked with the ColumnBackfiller on creation. mon *mon.BytesMonitor @@ -128,19 +130,17 @@ func (cb *ColumnBackfiller) init( } // We need all the non-virtual columns. - var valNeededForCol util.FastIntSet - for i, c := range desc.PublicColumns() { + for _, c := range desc.PublicColumns() { if !c.IsVirtual() { - valNeededForCol.Add(i) + cb.fetcherCols = append(cb.fetcherCols, c) } } + cb.colIdxMap = catalog.ColumnIDToOrdinalMap(desc.PublicColumns()) tableArgs := row.FetcherTableArgs{ - Desc: desc, - Index: desc.GetPrimaryIndex(), - ColIdxMap: catalog.ColumnIDToOrdinalMap(desc.PublicColumns()), - Cols: desc.PublicColumns(), - ValNeededForCol: valNeededForCol, + Desc: desc, + Index: desc.GetPrimaryIndex(), + Columns: cb.fetcherCols, } // Create a bound account associated with the column backfiller. @@ -318,10 +318,8 @@ func (cb *ColumnBackfiller) RunColumnBackfillChunk( return roachpb.Key{}, err } - oldValues := make(tree.Datums, len(ru.FetchCols)) updateValues := make(tree.Datums, len(cb.updateExprs)) b := txn.NewBatch() - rowLength := 0 iv := &schemaexpr.RowIndexedVarContainer{ Cols: make([]catalog.Column, 0, len(tableDesc.PublicColumns())+len(cb.added)), Mapping: ru.FetchColIDtoRowIndex, @@ -329,15 +327,25 @@ func (cb *ColumnBackfiller) RunColumnBackfillChunk( iv.Cols = append(iv.Cols, tableDesc.PublicColumns()...) iv.Cols = append(iv.Cols, cb.added...) cb.evalCtx.IVarContainer = iv + + fetchedValues := make(tree.Datums, cb.colIdxMap.Len()) + iv.CurSourceRow = make(tree.Datums, len(iv.Cols)) + // We can have more FetchCols than public columns; fill the rest with NULLs. + oldValues := make(tree.Datums, len(ru.FetchCols)) + for i := range oldValues { + oldValues[i] = tree.DNull + } + for i := int64(0); i < int64(chunkSize); i++ { - datums, err := cb.fetcher.NextRowDecoded(ctx) + ok, err := cb.fetcher.NextRowDecodedInto(ctx, fetchedValues, cb.colIdxMap) if err != nil { return roachpb.Key{}, err } - if datums == nil { + if !ok { break } - iv.CurSourceRow = datums + + iv.CurSourceRow = append(iv.CurSourceRow[:0], fetchedValues...) // Evaluate the new values. This must be done separately for // each row so as to handle impure functions correctly. @@ -358,15 +366,8 @@ func (cb *ColumnBackfiller) RunColumnBackfillChunk( } updateValues[j] = val } - copy(oldValues, datums) - // Update oldValues with NULL values where values weren't found; - // only update when necessary. - if rowLength != len(datums) { - rowLength = len(datums) - for j := rowLength; j < len(oldValues); j++ { - oldValues[j] = tree.DNull - } - } + copy(oldValues, fetchedValues) + // No existing secondary indexes will be updated by adding or dropping a // column. It is safe to use an empty PartialIndexUpdateHelper in this // case. @@ -447,6 +448,8 @@ type IndexBackfiller struct { // backfilled. indexesToEncode []catalog.Index + // valNeededForCol contains the indexes (into cols) of all columns that we + // need to fetch values for. valNeededForCol util.FastIntSet alloc tree.DatumAlloc @@ -816,6 +819,19 @@ func (ib *IndexBackfiller) BuildIndexEntriesChunk( memUsedPerChunk += indexEntriesInChunkInitialBufferSize entries := make([]rowenc.IndexEntry, 0, initBufferSize*int64(len(ib.added))) + var fetcherCols []catalog.Column + for i, c := range ib.cols { + if ib.valNeededForCol.Contains(i) { + fetcherCols = append(fetcherCols, c) + } + } + if ib.rowVals == nil { + ib.rowVals = make(tree.Datums, len(ib.cols)) + // We don't produce values for all columns, so initialize with NULLs. + for i := range ib.rowVals { + ib.rowVals[i] = tree.DNull + } + } // Get the next set of rows. // // Running the scan and applying the changes in many transactions @@ -825,11 +841,9 @@ func (ib *IndexBackfiller) BuildIndexEntriesChunk( // populated and deleted by the OLTP commands but not otherwise // read or used tableArgs := row.FetcherTableArgs{ - Desc: tableDesc, - Index: tableDesc.GetPrimaryIndex(), - ColIdxMap: ib.colIdxMap, - Cols: ib.cols, - ValNeededForCol: ib.valNeededForCol, + Desc: tableDesc, + Index: tableDesc.GetPrimaryIndex(), + Columns: fetcherCols, } var fetcher row.Fetcher if err := fetcher.Init( @@ -890,20 +904,13 @@ func (ib *IndexBackfiller) BuildIndexEntriesChunk( return nil } for i := int64(0); i < chunkSize; i++ { - encRow, err := fetcher.NextRow(ctx) + ok, err := fetcher.NextRowDecodedInto(ctx, ib.rowVals, ib.colIdxMap) if err != nil { return nil, nil, 0, err } - if encRow == nil { + if !ok { break } - if len(ib.rowVals) == 0 { - ib.rowVals = make(tree.Datums, len(encRow)) - } - if err := rowenc.EncDatumRowToDatums(ib.types, ib.rowVals, encRow, &ib.alloc); err != nil { - return nil, nil, 0, err - } - iv.CurSourceRow = ib.rowVals // First populate default values, then populate computed expressions which diff --git a/pkg/sql/colexec/colbuilder/BUILD.bazel b/pkg/sql/colexec/colbuilder/BUILD.bazel index 52164932964d..99426b323531 100644 --- a/pkg/sql/colexec/colbuilder/BUILD.bazel +++ b/pkg/sql/colexec/colbuilder/BUILD.bazel @@ -55,6 +55,7 @@ go_test( "//pkg/server", "//pkg/settings/cluster", "//pkg/sql/catalog/catalogkv", + "//pkg/sql/catalog/descpb", "//pkg/sql/colexec", "//pkg/sql/colexec/colexecargs", "//pkg/sql/execinfra", diff --git a/pkg/sql/colexec/colbuilder/execplan.go b/pkg/sql/colexec/colbuilder/execplan.go index 56bd1413b173..2e03b29470d7 100644 --- a/pkg/sql/colexec/colbuilder/execplan.go +++ b/pkg/sql/colexec/colbuilder/execplan.go @@ -170,9 +170,6 @@ func supportedNatively(spec *execinfrapb.ProcessorSpec) error { return nil case spec.Core.TableReader != nil: - if spec.Core.TableReader.DeprecatedIsCheck { - return errors.Newf("scrub table reader is unsupported in vectorized") - } return nil case spec.Core.JoinReader != nil: diff --git a/pkg/sql/colexec/colbuilder/execplan_test.go b/pkg/sql/colexec/colbuilder/execplan_test.go index d2623c15f78c..1c1b54aab531 100644 --- a/pkg/sql/colexec/colbuilder/execplan_test.go +++ b/pkg/sql/colexec/colbuilder/execplan_test.go @@ -20,6 +20,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/settings/cluster" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkv" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/colexec" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecargs" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -84,8 +85,9 @@ func TestNewColOperatorExpectedTypeSchema(t *testing.T) { desc := catalogkv.TestingGetTableDescriptor(kvDB, keys.SystemSQLCodec, "test", "t") tr := execinfrapb.TableReaderSpec{ - Table: *desc.TableDesc(), - Spans: make([]roachpb.Span, 1), + Table: *desc.TableDesc(), + Spans: make([]roachpb.Span, 1), + ColumnIDs: []descpb.ColumnID{desc.PublicColumns()[0].GetID()}, } var err error tr.Spans[0].Key, err = randgen.TestingMakePrimaryIndexKey(desc, 0) diff --git a/pkg/sql/colfetcher/BUILD.bazel b/pkg/sql/colfetcher/BUILD.bazel index 2a2763e6d2d9..04f3ab2eecdf 100644 --- a/pkg/sql/colfetcher/BUILD.bazel +++ b/pkg/sql/colfetcher/BUILD.bazel @@ -64,6 +64,7 @@ stringer( go_test( name = "colfetcher_test", srcs = [ + "bytes_read_test.go", "main_test.go", "vectorized_batch_size_test.go", ], @@ -80,5 +81,6 @@ go_test( "//pkg/util/log", "//pkg/util/randutil", "@com_github_stretchr_testify//assert", + "@com_github_stretchr_testify//require", ], ) diff --git a/pkg/sql/colfetcher/bytes_read_test.go b/pkg/sql/colfetcher/bytes_read_test.go new file mode 100644 index 000000000000..e3403435ba51 --- /dev/null +++ b/pkg/sql/colfetcher/bytes_read_test.go @@ -0,0 +1,69 @@ +// Copyright 2022 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package colfetcher_test + +import ( + "context" + "regexp" + "strconv" + "testing" + + "github.com/cockroachdb/cockroach/pkg/base" + "github.com/cockroachdb/cockroach/pkg/testutils/testcluster" + "github.com/cockroachdb/cockroach/pkg/util/leaktest" + "github.com/cockroachdb/cockroach/pkg/util/log" + "github.com/stretchr/testify/require" +) + +// TestBytesRead verifies that the ColBatchScan and the ColIndexJoin correctly +// report the number of bytes read. +func TestBytesRead(t *testing.T) { + defer leaktest.AfterTest(t)() + defer log.Scope(t).Close(t) + + testClusterArgs := base.TestClusterArgs{ReplicationMode: base.ReplicationAuto} + tc := testcluster.StartTestCluster(t, 1, testClusterArgs) + ctx := context.Background() + defer tc.Stopper().Stop(ctx) + + conn := tc.Conns[0] + + // Create the table with disabled automatic table stats collection. The + // stats collection is disabled so that the ColBatchScan would read the + // first row in one batch and then the second row in another batch. + _, err := conn.ExecContext(ctx, ` +SET CLUSTER SETTING sql.stats.automatic_collection.enabled=false; +CREATE TABLE t (a INT PRIMARY KEY, b INT, c INT, INDEX(b)); +INSERT INTO t VALUES (1, 1, 1), (2, 2, 2); +`) + require.NoError(t, err) + + // Run the query that reads from the secondary index and then performs an + // index join against the primary index. + query := "EXPLAIN ANALYZE SELECT * FROM t@t_b_idx" + kvBytesReadRegex := regexp.MustCompile(`KV bytes read: (\d+) B`) + matchIdx := 0 + rows, err := conn.QueryContext(ctx, query) + require.NoError(t, err) + for rows.Next() { + var res string + require.NoError(t, rows.Scan(&res)) + if matches := kvBytesReadRegex.FindStringSubmatch(res); len(matches) > 0 { + bytesRead, err := strconv.Atoi(matches[1]) + require.NoError(t, err) + // We're only interested in 'bytes read' statistic being non-zero. + require.Greater( + t, bytesRead, 0, "expected bytes read to be greater than zero", + ) + matchIdx++ + } + } +} diff --git a/pkg/sql/colfetcher/cfetcher.go b/pkg/sql/colfetcher/cfetcher.go index e97b28ae03e9..203aa43faee3 100644 --- a/pkg/sql/colfetcher/cfetcher.go +++ b/pkg/sql/colfetcher/cfetcher.go @@ -256,6 +256,14 @@ type cFetcher struct { // fetcher is the underlying fetcher that provides KVs. fetcher *row.KVFetcher + // bytesRead stores the cumulative number of bytes read by this cFetcher + // throughout its whole existence (i.e. between its construction and + // Release()). It accumulates the bytes read statistic across StartScan* and + // Close methods. + // + // The field should not be accessed directly by the users of the cFetcher - + // getBytesRead() should be used instead. + bytesRead int64 // machine contains fields that get updated during the run of the fetcher. machine struct { @@ -370,7 +378,6 @@ func (rf *cFetcher) Init( allocator *colmem.Allocator, kvFetcherMemAcc *mon.BoundAccount, tableArgs *cFetcherTableArgs, - hasSystemColumns bool, ) error { rf.kvFetcherMemAcc = kvFetcherMemAcc table := newCTableInfo() @@ -402,22 +409,16 @@ func (rf *cFetcher) Init( table.neededValueColsByIdx.AddRange(0 /* start */, nCols-1) } - if hasSystemColumns { - // System columns, if present, are at the end of colDescriptors. - nonSystemColOffset := nCols - len(colinfo.AllSystemColumnDescs) - if nonSystemColOffset < 0 { - nonSystemColOffset = 0 - } - for idx := nonSystemColOffset; idx < nCols; idx++ { - colID := tableArgs.cols[idx].GetID() - // Set up extra metadata for system columns, if this is a system - // column. + // Check for system columns. + for idx, col := range tableArgs.cols { + if col.IsSystemColumn() { + // Set up extra metadata for system columns. // // Currently the system columns are present in neededValueColsByIdx, // but we don't want to include them in that set because the // handling of system columns is separate from the standard value // decoding process. - switch colinfo.GetSystemColumnKindFromColumnID(colID) { + switch colinfo.GetSystemColumnKindFromColumnID(col.GetID()) { case catpb.SystemColumnKind_MVCCTIMESTAMP: table.timestampOutputIdx = idx rf.mvccDecodeStrategy = row.MVCCDecodingRequired @@ -1050,6 +1051,8 @@ func (rf *cFetcher) NextBatch(ctx context.Context) (coldata.Batch, error) { case stateEmitLastBatch: rf.machine.state[0] = stateFinished rf.finalizeBatch() + // Close the fetcher eagerly so that its memory could be GCed. + rf.Close(ctx) return rf.machine.batch, nil case stateFinished: @@ -1457,6 +1460,16 @@ func (rf *cFetcher) KeyToDesc(key roachpb.Key) (catalog.TableDescriptor, bool) { return rf.table.desc, true } +// getBytesRead returns the number of bytes read by the cFetcher throughout its +// existence so far. This number accumulates the bytes read statistic across +// StartScan* and Close methods. +func (rf *cFetcher) getBytesRead() int64 { + if rf.fetcher != nil { + rf.bytesRead += rf.fetcher.ResetBytesRead() + } + return rf.bytesRead +} + var cFetcherPool = sync.Pool{ New: func() interface{} { return &cFetcher{} @@ -1479,6 +1492,7 @@ func (rf *cFetcher) Release() { func (rf *cFetcher) Close(ctx context.Context) { if rf != nil && rf.fetcher != nil { + rf.bytesRead += rf.fetcher.GetBytesRead() rf.fetcher.Close(ctx) rf.fetcher = nil } diff --git a/pkg/sql/colfetcher/cfetcher_setup.go b/pkg/sql/colfetcher/cfetcher_setup.go index 1986dfa71217..31e091235df8 100644 --- a/pkg/sql/colfetcher/cfetcher_setup.go +++ b/pkg/sql/colfetcher/cfetcher_setup.go @@ -15,6 +15,7 @@ import ( "sync" "github.com/cockroachdb/cockroach/pkg/sql/catalog" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecargs" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecutils" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -32,11 +33,10 @@ type cFetcherTableArgs struct { desc catalog.TableDescriptor index catalog.Index // ColIdxMap is a mapping from ColumnID to the ordinal of the corresponding - // column within the cols field. Only needed columns are present. + // column within the cols field. ColIdxMap catalog.TableColMap isSecondaryIndex bool - // cols are all needed columns of the table that are present in the index. - // The system columns, if requested, are at the end of cols. + // cols are the columns for which we need to produce values. cols []catalog.Column // typs are the types of only needed columns from the table. typs []*types.T @@ -73,13 +73,60 @@ func (a *cFetcherTableArgs) populateTypes(cols []catalog.Column) { } } -// populateTableArgs fills all fields of the cFetcherTableArgs. It examines the -// given post-processing spec to find the set of the needed columns, and only -// these columns are added into the table args while post is adjusted -// accordingly. +// populateTableArgs fills in cFetcherTableArgs. +func populateTableArgs( + ctx context.Context, + flowCtx *execinfra.FlowCtx, + table catalog.TableDescriptor, + index catalog.Index, + columnIDs []descpb.ColumnID, + invertedCol catalog.Column, + helper *colexecargs.ExprHelper, +) (_ *cFetcherTableArgs, _ error) { + args := cFetcherTableArgsPool.Get().(*cFetcherTableArgs) + + if cap(args.cols) < len(columnIDs) { + args.cols = make([]catalog.Column, len(columnIDs)) + } + cols := args.cols[:0] + for _, colID := range columnIDs { + if invertedCol != nil && colID == invertedCol.GetID() { + cols = append(cols, invertedCol) + } else { + col, err := table.FindColumnWithID(colID) + if err != nil { + return nil, err + } + cols = append(cols, col) + } + } + *args = cFetcherTableArgs{ + desc: table, + index: index, + isSecondaryIndex: !index.Primary(), + cols: cols, + typs: args.typs, + } + args.populateTypes(cols) + for i := range cols { + args.ColIdxMap.Set(cols[i].GetID(), i) + } + + // Before we can safely use types from the table descriptor, we need to + // make sure they are hydrated. In row execution engine it is done during + // the processor initialization, but neither ColBatchScan nor cFetcher are + // processors, so we need to do the hydration ourselves. + resolver := flowCtx.NewTypeResolver(flowCtx.Txn) + return args, resolver.HydrateTypeSlice(ctx, args.typs) +} + +// populateTableArgsLegacy is a legacy version of populateTableArgs which +// examines the given post-processing spec to find the set of the needed +// columns. These columns are added to the table args and the column references +// in post are adjusted accordingly. // - neededColumns is a set containing the ordinals of all columns that need to // be fetched. -func populateTableArgs( +func populateTableArgsLegacy( ctx context.Context, flowCtx *execinfra.FlowCtx, table catalog.TableDescriptor, diff --git a/pkg/sql/colfetcher/colbatch_scan.go b/pkg/sql/colfetcher/colbatch_scan.go index 0f45657941b3..1eb40935b3f6 100644 --- a/pkg/sql/colfetcher/colbatch_scan.go +++ b/pkg/sql/colfetcher/colbatch_scan.go @@ -149,11 +149,7 @@ func (s *ColBatchScan) DrainMeta() []execinfrapb.ProducerMetadata { func (s *ColBatchScan) GetBytesRead() int64 { s.mu.Lock() defer s.mu.Unlock() - // Note that if Init() was never called, s.rf.fetcher will remain nil, and - // GetBytesRead() will return 0. We are also holding the mutex, so a - // concurrent call to Init() will have to wait, and the fetcher will remain - // uninitialized until we return. - return s.rf.fetcher.GetBytesRead() + return s.rf.getBytesRead() } // GetRowsRead is part of the colexecop.KVReader interface. @@ -194,17 +190,12 @@ func NewColBatchScan( if nodeID, ok := flowCtx.NodeID.OptionalNodeID(); nodeID == 0 && ok { return nil, errors.Errorf("attempting to create a ColBatchScan with uninitialized NodeID") } - if spec.DeprecatedIsCheck { - // cFetchers don't support these checks. - return nil, errors.AssertionFailedf("attempting to create a cFetcher with the IsCheck flag set") - } - limitHint := rowinfra.RowLimit(execinfra.LimitHint(spec.LimitHint, post)) table := flowCtx.TableDescriptor(&spec.Table) invertedColumn := tabledesc.FindInvertedColumn(table, spec.InvertedColumn) - tableArgs, _, err := populateTableArgs( + tableArgs, err := populateTableArgs( ctx, flowCtx, table, table.ActiveIndexes()[spec.IndexIdx], - invertedColumn, spec.HasSystemColumns, post, helper, + spec.ColumnIDs, invertedColumn, helper, ) if err != nil { return nil, err @@ -221,7 +212,7 @@ func NewColBatchScan( flowCtx.TraceKV, } - if err = fetcher.Init(flowCtx.Codec(), allocator, kvFetcherMemAcc, tableArgs, spec.HasSystemColumns); err != nil { + if err = fetcher.Init(flowCtx.Codec(), allocator, kvFetcherMemAcc, tableArgs); err != nil { fetcher.Release() return nil, err } diff --git a/pkg/sql/colfetcher/index_join.go b/pkg/sql/colfetcher/index_join.go index 2e17cb0bac19..55e5dda41d60 100644 --- a/pkg/sql/colfetcher/index_join.go +++ b/pkg/sql/colfetcher/index_join.go @@ -398,11 +398,7 @@ func (s *ColIndexJoin) DrainMeta() []execinfrapb.ProducerMetadata { func (s *ColIndexJoin) GetBytesRead() int64 { s.mu.Lock() defer s.mu.Unlock() - // Note that if Init() was never called, s.rf.fetcher will remain nil, and - // GetBytesRead() will return 0. We are also holding the mutex, so a - // concurrent call to Init() will have to wait, and the fetcher will remain - // uninitialized until we return. - return s.rf.fetcher.GetBytesRead() + return s.rf.getBytesRead() } // GetRowsRead is part of the colexecop.KVReader interface. @@ -447,7 +443,7 @@ func NewColIndexJoin( table := flowCtx.TableDescriptor(&spec.Table) index := table.ActiveIndexes()[spec.IndexIdx] - tableArgs, neededColumns, err := populateTableArgs( + tableArgs, neededColumns, err := populateTableArgsLegacy( ctx, flowCtx, table, index, nil, /* invertedCol */ spec.HasSystemColumns, post, helper, ) @@ -491,7 +487,7 @@ func NewColIndexJoin( flowCtx.TraceKV, } if err = fetcher.Init( - flowCtx.Codec(), fetcherAllocator, kvFetcherMemAcc, tableArgs, spec.HasSystemColumns, + flowCtx.Codec(), fetcherAllocator, kvFetcherMemAcc, tableArgs, ); err != nil { fetcher.Release() return nil, err diff --git a/pkg/sql/colflow/colbatch_scan_test.go b/pkg/sql/colflow/colbatch_scan_test.go index b5759597d36f..3c95c84dd1f0 100644 --- a/pkg/sql/colflow/colbatch_scan_test.go +++ b/pkg/sql/colflow/colbatch_scan_test.go @@ -24,6 +24,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkv" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colbuilder" "github.com/cockroachdb/cockroach/pkg/sql/colexec/colexecargs" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" @@ -77,7 +78,8 @@ func TestColBatchScanMeta(t *testing.T) { Spans: []roachpb.Span{ td.PrimaryIndexSpan(keys.SystemSQLCodec), }, - Table: *td.TableDesc(), + Table: *td.TableDesc(), + ColumnIDs: []descpb.ColumnID{td.PublicColumns()[0].GetID()}, }}, ResultTypes: types.OneIntCol, } @@ -133,6 +135,10 @@ func BenchmarkColBatchScan(b *testing.B) { TableReader: &execinfrapb.TableReaderSpec{ Table: *tableDesc.TableDesc(), // Spans will be set below. + ColumnIDs: []descpb.ColumnID{ + tableDesc.PublicColumns()[0].GetID(), + tableDesc.PublicColumns()[1].GetID(), + }, }}, ResultTypes: types.TwoIntCols, } diff --git a/pkg/sql/delete_preserving_index_test.go b/pkg/sql/delete_preserving_index_test.go index 383c6424d62e..545010ff4d07 100644 --- a/pkg/sql/delete_preserving_index_test.go +++ b/pkg/sql/delete_preserving_index_test.go @@ -662,6 +662,13 @@ func fetchIndex( valsNeeded.Add(colIdxMap.GetDefault(colID)) }) } + var columns []catalog.Column + for i, col := range table.PublicColumns() { + if valsNeeded.Contains(i) { + columns = append(columns, col) + } + } + require.NoError(t, err) spans := []roachpb.Span{table.IndexSpan(keys.SystemSQLCodec, idx.GetID())} const reverse = false @@ -677,9 +684,7 @@ func fetchIndex( row.FetcherTableArgs{ Desc: table, Index: idx, - ColIdxMap: colIdxMap, - Cols: table.PublicColumns(), - ValNeededForCol: valsNeeded, + Columns: columns, IsSecondaryIndex: !idx.Primary(), }, )) @@ -695,12 +700,7 @@ func fetchIndex( break } // Copy the datums out as the slice is reused internally. - row := make(tree.Datums, 0, valsNeeded.Len()) - for i := range datums { - if valsNeeded.Contains(i) { - row = append(row, datums[i]) - } - } + row := append(tree.Datums(nil), datums...) rows = append(rows, row) } return rows diff --git a/pkg/sql/descriptor.go b/pkg/sql/descriptor.go index 0fa75216f7d6..a2402322727e 100644 --- a/pkg/sql/descriptor.go +++ b/pkg/sql/descriptor.go @@ -129,14 +129,26 @@ func (p *planner) createDatabase( return nil, false, err } + owner := p.SessionData().User() + if !database.Owner.Undefined() { + owner, err = database.Owner.ToSQLUsername(p.SessionData(), security.UsernameValidation) + if err != nil { + return nil, true, err + } + } + desc := dbdesc.NewInitial( id, string(database.Name), - p.SessionData().User(), + owner, dbdesc.MaybeWithDatabaseRegionConfig(regionConfig), dbdesc.WithPublicSchemaID(publicSchemaID), ) + if err := p.checkCanAlterToNewOwner(ctx, desc, owner); err != nil { + return nil, true, err + } + if err := p.createDescriptorWithID(ctx, dKey, id, desc, nil, jobDesc); err != nil { return nil, true, err } @@ -144,6 +156,7 @@ func (p *planner) createDatabase( // Initialize the multi-region database by creating the multi-region enum and // database-level zone configuration if there is a region config on the // descriptor. + if err := p.maybeInitializeMultiRegionDatabase(ctx, desc, regionConfig); err != nil { return nil, true, err } diff --git a/pkg/sql/distsql_physical_planner.go b/pkg/sql/distsql_physical_planner.go index 4fd5757a5151..56d9bd6804c7 100644 --- a/pkg/sql/distsql_physical_planner.go +++ b/pkg/sql/distsql_physical_planner.go @@ -1102,21 +1102,30 @@ func getIndexIdx(index catalog.Index, desc catalog.TableDescriptor) (uint32, err return 0, errors.Errorf("invalid index %v (table %s)", index, desc.GetName()) } -// initTableReaderSpec initializes a TableReaderSpec/PostProcessSpec that -// corresponds to a scanNode, except for the Spans and OutputColumns. -func initTableReaderSpec( +// initTableReaderSpecTemplate initializes a TableReaderSpec/PostProcessSpec +// that corresponds to a scanNode, except for the following fields: +// - Spans +// - Parallelize +// - BatchBytesLimit +// The generated specs will be used as templates for planning potentially +// multiple TableReaders. +func initTableReaderSpecTemplate( n *scanNode, ) (*execinfrapb.TableReaderSpec, execinfrapb.PostProcessSpec, error) { if n.isCheck { return nil, execinfrapb.PostProcessSpec{}, errors.AssertionFailedf("isCheck no longer supported") } + colIDs := make([]descpb.ColumnID, len(n.cols)) + for i := range n.cols { + colIDs[i] = n.cols[i].GetID() + } s := physicalplan.NewTableReaderSpec() *s = execinfrapb.TableReaderSpec{ Table: *n.desc.TableDesc(), Reverse: n.reverse, + ColumnIDs: colIDs, LockingStrength: n.lockingStrength, LockingWaitPolicy: n.lockingWaitPolicy, - HasSystemColumns: n.containsSystemColumns, } if vc := getInvertedColumn(n.colCfg.invertedColumnID, n.cols); vc != nil { s.InvertedColumn = vc.ColumnDesc() @@ -1161,34 +1170,6 @@ func tableOrdinal(desc catalog.TableDescriptor, colID descpb.ColumnID) int { return col.Ordinal() } -// toTableOrdinals returns a mapping from column ordinals in cols to table -// reader column ordinals. -func toTableOrdinals(cols []catalog.Column, desc catalog.TableDescriptor) []int { - res := make([]int, len(cols)) - for i := range res { - res[i] = tableOrdinal(desc, cols[i].GetID()) - } - return res -} - -// getOutputColumnsFromColsForScan returns the indices of the columns that are -// returned by a scanNode or a tableReader. -// If remap is not nil, the column ordinals are remapped accordingly. -func getOutputColumnsFromColsForScan(cols []catalog.Column, remap []int) []uint32 { - outputColumns := make([]uint32, len(cols)) - // TODO(radu): if we have a scan with a filter, cols will include the - // columns needed for the filter, even if they aren't needed for the next - // stage. - for i := range outputColumns { - colIdx := i - if remap != nil { - colIdx = remap[i] - } - outputColumns[i] = uint32(colIdx) - } - return outputColumns -} - // convertOrdering maps the columns in props.ordering to the output columns of a // processor. func (dsp *DistSQLPlanner) convertOrdering( @@ -1279,10 +1260,7 @@ func (dsp *DistSQLPlanner) CheckNodeHealthAndVersion( func (dsp *DistSQLPlanner) createTableReaders( planCtx *PlanningCtx, n *scanNode, ) (*PhysicalPlan, error) { - // scanNodeToTableOrdinalMap is a map from scan node column ordinal to - // table reader column ordinal. - scanNodeToTableOrdinalMap := toTableOrdinals(n.cols, n.desc) - spec, post, err := initTableReaderSpec(n) + spec, post, err := initTableReaderSpecTemplate(n) if err != nil { return nil, err } @@ -1292,17 +1270,15 @@ func (dsp *DistSQLPlanner) createTableReaders( planCtx, p, &tableReaderPlanningInfo{ - spec: spec, - post: post, - desc: n.desc, - spans: n.spans, - reverse: n.reverse, - parallelize: n.parallelize, - estimatedRowCount: n.estimatedRowCount, - reqOrdering: n.reqOrdering, - cols: n.cols, - colsToTableOrdinalMap: scanNodeToTableOrdinalMap, - containsSystemColumns: n.containsSystemColumns, + spec: spec, + post: post, + desc: n.desc, + spans: n.spans, + reverse: n.reverse, + parallelize: n.parallelize, + estimatedRowCount: n.estimatedRowCount, + reqOrdering: n.reqOrdering, + cols: n.cols, }, ) return p, err @@ -1312,17 +1288,15 @@ func (dsp *DistSQLPlanner) createTableReaders( // needed to perform the physical planning of table readers once the specs have // been created. See scanNode to get more context on some of the fields. type tableReaderPlanningInfo struct { - spec *execinfrapb.TableReaderSpec - post execinfrapb.PostProcessSpec - desc catalog.TableDescriptor - spans []roachpb.Span - reverse bool - parallelize bool - estimatedRowCount uint64 - reqOrdering ReqOrdering - cols []catalog.Column - colsToTableOrdinalMap []int - containsSystemColumns bool + spec *execinfrapb.TableReaderSpec + post execinfrapb.PostProcessSpec + desc catalog.TableDescriptor + spans []roachpb.Span + reverse bool + parallelize bool + estimatedRowCount uint64 + reqOrdering ReqOrdering + cols []catalog.Column } const defaultLocalScansConcurrencyLimit = 1024 @@ -1501,41 +1475,13 @@ func (dsp *DistSQLPlanner) planTableReaders( } invertedColumn := tabledesc.FindInvertedColumn(info.desc, info.spec.InvertedColumn) - cols := info.desc.DeletableColumns() - typs := catalog.ColumnTypesWithInvertedCol(cols, invertedColumn) - if info.containsSystemColumns { - for _, col := range info.desc.SystemColumns() { - typs = append(typs, col.GetType()) - } - } + typs := catalog.ColumnTypesWithInvertedCol(info.cols, invertedColumn) // Note: we will set a merge ordering below. p.AddNoInputStage(corePlacement, info.post, typs, execinfrapb.Ordering{}) - outCols := getOutputColumnsFromColsForScan(info.cols, info.colsToTableOrdinalMap) - planToStreamColMap := make([]int, len(info.cols)) - var descColumnIDs util.FastIntMap - colID := 0 - for _, col := range info.desc.AllColumns() { - // If it is a system column, we want to treat it carefully because - // its ID is a very large number, so adding it into util.FastIntMap - // will incur an allocation. - if info.containsSystemColumns || !col.IsSystemColumn() { - descColumnIDs.Set(colID, int(col.GetID())) - colID++ - } - } - - for i := range planToStreamColMap { - planToStreamColMap[i] = -1 - for j, c := range outCols { - if descColumnIDs.GetDefault(int(c)) == int(info.cols[i].GetID()) { - planToStreamColMap[i] = j - break - } - } - } - p.AddProjection(outCols, dsp.convertOrdering(info.reqOrdering, planToStreamColMap)) + p.PlanToStreamColMap = identityMap(make([]int, len(info.cols)), len(info.cols)) + p.SetMergeOrdering(dsp.convertOrdering(info.reqOrdering, p.PlanToStreamColMap)) if parallelizeLocal { // If we planned multiple table readers, we need to merge the streams @@ -1543,7 +1489,6 @@ func (dsp *DistSQLPlanner) planTableReaders( p.AddSingleGroupStage(dsp.gatewayNodeID, execinfrapb.ProcessorCoreUnion{Noop: &execinfrapb.NoopCoreSpec{}}, execinfrapb.PostProcessSpec{}, p.GetResultTypes()) } - p.PlanToStreamColMap = planToStreamColMap return nil } diff --git a/pkg/sql/distsql_physical_planner_test.go b/pkg/sql/distsql_physical_planner_test.go index db85ae24a88c..a9092c0e06e5 100644 --- a/pkg/sql/distsql_physical_planner_test.go +++ b/pkg/sql/distsql_physical_planner_test.go @@ -525,7 +525,7 @@ func TestDistSQLDeadHosts(t *testing.T) { // Verify the plan (should include all 5 nodes). r.CheckQueryResults(t, "SELECT info FROM [EXPLAIN (DISTSQL) SELECT sum(xsquared) FROM t] WHERE info LIKE 'Diagram%'", - [][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF-Lm0AUxd_7KeRC2QQm-CfGdX3K0rVUmt1sY0oLiw_TeCtC4rgzI2wJ-e5FLawJuzOKfXTmnnvO7zrcI4jnPQQQh6vw09bIi9_M-LxZ3xtP4c_H1W30YEzuongbf1tNjX81ojpMXsRzRTmm07ZYJsaPL-EmbPWr6GtoXN3lNOP08PEKCBQsxQd6QAHBE9hAwAECcyDgAoEFJARKznYoBON1ybERROkLBBaBvCgrWR8nBHaMIwRHkLncIwSwpb_2uEGaIjctIJCipPm-sZHLkucHyv8AgbikhQiMmenURetKBsbSgeREgFXytbuQNEMI7BPpn-A2yzhmVDJuLs4DxN_vJ0t7-q6N867Na_eqYDxFjulZ6-SkDmJbw5LMz5LY_Udua0duOtbMdIdPXROiA-uNmbrTn9XRs7rWzPSGs2pCdFivx7DO-7PO9ayeNTP94ayaEB1Wfwyr25_V1bP61mwwqCZBB_Tmf62NN2w2KEpWCLxYH293tuq1gmmG7Q4SrOI7fORs19i0n-tG1xykKGR7a7cfUdFe1QG7Ylspds7E9qXYUTtrrOdKtasWu2NyL5RiT-3sjXG-Vop9tbM_xvlG_a8szTNRP7JL7-T04W8AAAD__wQH0sk="}}, + [][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF-Lm0AUxd_7KeRC2QRGHP_EdX3aZddSafZPY0oLiw_TOBVBHXdmhC0h372oLTFhM9q4j87cc8_5XYe7BfGSgw9RsAxu11pW_mLap9XjvfYc_Hha3oQP2uwujNbR1-Vc-1sj6mL2Kl5qwmky74plrH3_HKyCTr8MvwTaxV1GUk6KjxeAoGQJfSAFFeA_gwkILEBgAwIHECwgRlBxtqFCMN6UbFtBmLyCjxFkZVXL5jhGsGGcgr8Fmcmcgg9r8jOnK0oSyg0MCBIqSZa3NvK64llB-G9AcMvyuiiFr_3LDQiiijQnumFhiHcIWC33PkKSlIJv7tD4LDdpymlKJOPG4jBK9O1-dm3OT9pYJ2323euS8YR20fet4506iIn_L4l9kMQcP3zzrOEbFtYNZ-z8B-L0sN0p87fGU1vnUTtYN9yx1ANxetSXU6jt8dT2edQu1g1vLPVAnB61N4XaGU_tnEftYX0k8kCWHvLVe62XN2xWVFSsFPRozbzdGTfrhyYp7XaVYDXf0CfONq1N9_nY6tqDhArZ3ZrdR1h2V03AvthUiq0DsXksttTOA9a2Uu2oxc6U3Aul2FU7u1OcL5ViT-3sTXG-Uv8rPPBM1I_s2DveffgTAAD__0Xk6f0="}}, ) // Stop node 5. @@ -535,8 +535,8 @@ func TestDistSQLDeadHosts(t *testing.T) { // The leaseholder for the last range should have moved to either node 2 or 3. query := "SELECT info FROM [EXPLAIN (DISTSQL) SELECT sum(xsquared) FROM t] WHERE info LIKE 'Diagram%'" - exp2 := [][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk9Fr2zAQxt_3V4iD0QQUbMuum_kpZfWYWdp0ccYGxQ9adPMMieVKMnSE_O_D9qBJaeWY7NG6-933fZJvB_pxAxGk8Tz-uCJF-UuST8vFLXmIf9zPr5M7MrpJ0lX6dT4m_3p0vR096ceaKxTjrtlk5PvneBl3_Dz5EpOLm4Lnim_fXwCFUgq841vUED2ABxQYUPCBQgAZhUrJNWotVVPetc2JeILIpVCUVW2a44zCWiqEaAemMBuECFb85waXyAUqxwUKAg0vNq2EmVWq2HL1ByikFS91RCYOa5oWtYnIjEG2pyBr8zxdG54jRN6enu7gOs8V5txI5QTHBtJvt6OZN35Thr0p8zy9LqUSqFAcjc72diPTYUb8IyPe6Tfu9d64w9yJE7iEl4J4RJrfqAY_QI-hg9yX5zwAOz03688duBMnHP6z9Zg4yBqek9U_PavfnzV0J850eNYeEwdZr_7XYr0is0RdyVLjiwV7fbLbLB6KHLst1bJWa7xXct3KdJ-LlmsPBGrTVb3uIym7UmPwEPasMDuCvZcws8If7Mq-FQ7scHCO7UsrHNqVw3OUr6zw1K48HaSc7d_9DQAA__-rUWHE"}} - exp3 := [][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk9Fr2zAQxt_3V4iD0QQUbMuum_kpZfWYWdp0ccYGxQ9adPMMieVKMnSE_O_D9qBJaeWY7NG6-933fWduB_pxAxGk8Tz-uCJF-UuST8vFLXmIf9zPr5M7MrpJ0lX6dT4m_3p0vR096ceaKxTjrtlk5PvneBl3_Dz5EpOLm4Lnim_fXwCFUgq841vUED2ABxQYUPCBQgAZhUrJNWotVVPetc2JeILIpVCUVW2a54zCWiqEaAemMBuECFb85waXyAUqxwUKAg0vNq2EmVWq2HL1ByikFS91RCYOa5oWtYnIjEG2pyBr8zxdG54jRN6enu7gOs8V5txI5QTHBtJvt6OZN35Thr0p8zy9LqUSqFAcjc72diPTYUb8IyPe6Rv3ejfuMHfiBMOX3mPiIOvlOUtnp2dl_VkDd-KELuGlIB6R5jeqwbl7DB3kDs_J7Z-e2-_PHboTZzr8H_eYOMh69b8O6xWZJepKlhpfHNjrk93m8FDk2F2plrVa472S61am-1y0XPsgUJuu6nUfSdmVGoOHsGeF2RHsvYSZFf5gV_atcGCHg3NsX1rh0K4cnqN8ZYWnduXpIOVs_-5vAAAA__-ToWHE"}} + exp2 := [][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk19r2zAUxd_3KcSF0QQU_Ldu5qeW1mNm6Z_FGRsUP2jRnWewLVeSoSPkuw_bG0lKqzjJHi3dc8_vXPmuQD0VEEISzaLrBcmrn4J8nN_fksfo-8PsKr4jo5s4WSRfZmPyt0Y15ehZPTVMIh_3xTol3z5F86jXz-LPETm7yVkmWfn-DChUguMdK1FB-AgOUHCBggcUfEgp1FIsUSkh2-tVVxzzZwhtCnlVN7o9TikshUQIV6BzXSCEsGA_Cpwj4ygtGyhw1CwvOgt9Wcu8ZPI3ULgWRVNWKiT_mIFCUrP2ZGK5NqRrCqLRGx-lWYYQOms6nOUqyyRmTAtp-bsoydfb0aUzftPGfdNm072phOTYo29ap2szyPQwEG8HxBk-e-eo2VuuPbF8m7CKE4cI_QvlwKfYg7Y1gfNTnsIdPgH3uAn49sQKhv6Ae3C2UgenpPaGp_aOSx3YE2s6NPUenK3UF_9r7V6xmaOqRaXwxfq93tlu1xJ5hv0OK9HIJT5Isexs-s_7TtcdcFS6v3X6j7jqr1rAbbFjFLs7Yuel2DWKP5idPaPYN4v9U7DPjeLA7Byc4nxhFE_NztODnNP1uz8BAAD__8cZdFQ="}} + exp3 := [][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk91q20AQhe_7FMtAiQ1r9BvF1VVColJR56eWSwtBF1vvVBVIWmV3BSnG714ktdgOyVq2e6mdOXO-OWJWoJ4KCCGJZtH1guTVT0E-zu9vyWP0_WF2Fd-R0U2cLJIvszH526OacvSsnhomkY_7Zp2Sb5-iedTrZ_HniJzd5CyTrHx_BhQqwfGOlaggfAQHKLhAwQMKPqQUaimWqJSQbXnVNcf8GUKbQl7VjW6fUwpLIRHCFehcFwghLNiPAufIOErLBgocNcuLzkJf1jIvmfwNFK5F0ZSVCsk_ZqCQ1Kx9mViuDemagmj0xkdpliGEzpoOZ7nKMokZ00Ja_i5K8vV2dOmM37Rx37TZTG8qITn26JvR6doMMj0MxNsBcYZn7xyVveXaE8sfGv8enK2tz0-J3x2-tXvc1r49sQKbsIoThwj9C-XABPagbSUQnJKANzwB77gEAntiTYf-9z04W1tf_K-ze8VmjqoWlcIX5_f6ZLs9S-QZ9jesRCOX-CDFsrPpP-87XffAUem-6vQfcdWXWsBtsWMUuzti56XYNYo_mJ09o9g3i_1TsM-N4sDsHJzifGEUT83O04Oc0_W7PwEAAP__wB10VA=="}} res := r.QueryStr(t, query) if !reflect.DeepEqual(res, exp2) { @@ -616,14 +616,14 @@ func TestDistSQLDrainingHosts(t *testing.T) { } // Verify distribution. - expectPlan([][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskVFrnEAQx9_7KZaBkruy4W6968s-JSSWSo2makghSNi6UxF01-6u0HL43YtaSAw5ey19dHZ-8_85cwD7vQYOqR_6Vxmp1DdNPiTxDXnwv9yGl0FEVtdBmqWfwzX53VPoTrnVu_XUp7rG5uT-o5_4Ex0Gn3xydl2J0ojm7RlQUFpiJBq0wB-AAQUPcgqt0QVaq81QPoxNgfwBfEuhUm3nhnJOodAGgR_AVa5G4JCJrzUmKCSazRYoSHSiqsfRg8pFa6pGmJ9AIW2Fspycb4bIuHOcRFoh5D0F3bmnBOtEicBZT0-3uCxLg6Vw2my8ucRVfBdlj0l8n67WR7O8o1lPEZ3SRqJBOZuf98s2-7lNenfzGETZ6oIdl9nNZNjp62enrH_Dzv9h_X-wePbDu_-6_leyErStVhZfnOH1ydvhPChLnG5pdWcKvDW6GGOmz3jkxoJE66ZXNn0EanoaBJ_DbBH2ZjB7CXuL8Pvl5N0ivF-G93-lnfdvfgUAAP__wBp72w=="}}) + expectPlan([][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskVFrnEAQx9_7KZaBkruy4W6968s-JVwslV40VUMKQcLWnYqgu3Z3hZbD717UQmLI2Tvoo7Pzm__PmQPYnxVwSPy9v0tJqX5o8imObsmj_-1ufx2EZHETJGnydb8kf3ty3Sq3-LAc-1Rb24w8fPZjf6T3wRefXNyUojCifn8BFJSWGIoaLfBHYEDBg4xCY3SO1mrTlw9DUyB_AV9TKFXTur6cUci1QeAHcKWrEDik4nuFMQqJZrUGChKdKKthdK9y1ZiyFuY3UNjpqq2V5UAhaYSynFyuGGQdBd265wDrRIHAWUdPl7guCoOFcNqsvKnDLroP06c4ekgWy6NZ3tGs54hWaSPRoJzMz7p5m-3UJrm_fQrCdHHFjstsJjLs9O2zM7e_Ypcnbv8fEi_-d_Nft_9GVoy20criqyu8PXndXwdlgeMprW5NjndG50PM-BkN3FCQaN34ysaPQI1PveBLmM3C3gRmr2FvFv44n7yZhbfz8PYs7ax79ycAAP__nKh7zQ=="}}) // Drain the second node and expect the query to be planned on only the // first node. distServer := tc.Server(1).DistSQLServer().(*distsql.ServerImpl) distServer.Drain(ctx, 0 /* flowDrainWait */, nil /* reporter */) - expectPlan([][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkF9LwzAUxd_9FOGCbJPI1j3mybFVLNZ2tpUJo0hsr6XQJjV_QBn97tJG0AkTfcy553fOIQfQrw0wSP3QX2ekFi-SXCfxHdn7j9twFURkugnSLL0PZ-TTU0grzPRi5nzCtjonuxs_8R0dBrc-mWxqXinenk-AgpAlRrxFDWwPHuQUOiUL1FqqQTqMhqB8A7agUIvOmkHOKRRSIbADmNo0CAwy_txggrxENV8AhRINr5sxdphx1am65eodKKQdF5qRS6AQW8NIJAVC3lOQ1nzla8MrBOb19O8bVlWlsOJGqrl3PGEdP0TZUxLv0unsZNfyP10J6k4KjUc9p5IXfU4Bywrdn2ppVYFbJYuxxj3jkRuFErVxV889AuFOw8DvsPcrvPwB5_3ZRwAAAP__flPAaw=="}}) + expectPlan([][]string{{"Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkF9LwzAUxd_9FOGCbJPI1j3mybFVLNZ1tpUJo0hsr6XQJjV_QCn97tJG0AkTfcy553fOIR3o1xoYJH7or1NSiRdJruPojhz8x124CrZkugmSNLkPZ-TTk0srzPRi5nzCNjoj-xs_9h0dBrc-mWwqXirenE-AgpAFbnmDGtgBPMgotErmqLVUg9SNhqB4A7agUInWmkHOKORSIbAOTGVqBAYpf64xRl6gmi-AQoGGV_UYO8y4alXVcPUOFNayto3QDCgkLReakUvIegrSmq94bXiJwLye_n3CqiwVltxINfeOF6yjh236FEf7ZDo72bX8T1eMupVC41HPqeRFn1HAokT3pVpaleNOyXyscc9o5EahQG3c1XOPQLjTMPA77P0KL3_AWX_2EQAA__8zCsBk"}}) // Verify correctness. var res int diff --git a/pkg/sql/distsql_spec_exec_factory.go b/pkg/sql/distsql_spec_exec_factory.go index 2ae20cf4c9b6..ad05aa1c4e04 100644 --- a/pkg/sql/distsql_spec_exec_factory.go +++ b/pkg/sql/distsql_spec_exec_factory.go @@ -12,6 +12,7 @@ package sql import ( "github.com/cockroachdb/cockroach/pkg/roachpb" + "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" @@ -190,12 +191,16 @@ func (e *distSQLSpecExecFactory) ConstructScan( sb := span.MakeBuilder(e.planner.EvalContext(), e.planner.ExecCfg().Codec, tabDesc, idx) defer sb.Release() - // Note that initColsForScan and setting ResultColumns below are equivalent - // to what scan.initTable call does in execFactory.ConstructScan. - cols, err := initColsForScan(tabDesc, colCfg) - if err != nil { - return nil, err + cols := make([]catalog.Column, 0, params.NeededCols.Len()) + allCols := tabDesc.AllColumns() + for ord, ok := params.NeededCols.Next(0); ok; ord, ok = params.NeededCols.Next(ord + 1) { + cols = append(cols, allCols[ord]) + } + columnIDs := make([]descpb.ColumnID, len(cols)) + for i := range cols { + columnIDs[i] = cols[i].GetID() } + p.ResultColumns = colinfo.ResultColumnsFromColumns(tabDesc.GetID(), cols) if params.IndexConstraint != nil && params.IndexConstraint.IsContradiction() { @@ -206,6 +211,7 @@ func (e *distSQLSpecExecFactory) ConstructScan( } var spans roachpb.Spans + var err error if params.InvertedConstraint != nil { spans, err = sb.SpansFromInvertedSpans(params.InvertedConstraint, params.IndexConstraint, nil /* scratch */) } else { @@ -229,12 +235,11 @@ func (e *distSQLSpecExecFactory) ConstructScan( // Phase 2: perform the table reader planning. This phase is equivalent to // what DistSQLPlanner.createTableReaders does. - colsToTableOrdinalMap := toTableOrdinals(cols, tabDesc) trSpec := physicalplan.NewTableReaderSpec() *trSpec = execinfrapb.TableReaderSpec{ - Table: *tabDesc.TableDesc(), - Reverse: params.Reverse, - HasSystemColumns: scanContainsSystemColumns(&colCfg), + Table: *tabDesc.TableDesc(), + Reverse: params.Reverse, + ColumnIDs: columnIDs, } if vc := getInvertedColumn(colCfg.invertedColumnID, cols); vc != nil { trSpec.InvertedColumn = vc.ColumnDesc() @@ -270,17 +275,15 @@ func (e *distSQLSpecExecFactory) ConstructScan( e.getPlanCtx(recommendation), p, &tableReaderPlanningInfo{ - spec: trSpec, - post: post, - desc: tabDesc, - spans: spans, - reverse: params.Reverse, - parallelize: params.Parallelize, - estimatedRowCount: uint64(params.EstimatedRowCount), - reqOrdering: ReqOrdering(reqOrdering), - cols: cols, - colsToTableOrdinalMap: colsToTableOrdinalMap, - containsSystemColumns: trSpec.HasSystemColumns, + spec: trSpec, + post: post, + desc: tabDesc, + spans: spans, + reverse: params.Reverse, + parallelize: params.Parallelize, + estimatedRowCount: uint64(params.EstimatedRowCount), + reqOrdering: ReqOrdering(reqOrdering), + cols: cols, }, ) diff --git a/pkg/sql/execinfra/version.go b/pkg/sql/execinfra/version.go index 4628cf3cf893..00350ab780cd 100644 --- a/pkg/sql/execinfra/version.go +++ b/pkg/sql/execinfra/version.go @@ -39,11 +39,11 @@ import "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" // // ATTENTION: When updating these fields, add a brief description of what // changed to the version history below. -const Version execinfrapb.DistSQLVersion = 57 +const Version execinfrapb.DistSQLVersion = 58 // MinAcceptedVersion is the oldest version that the server is compatible with. // A server will not accept flows with older versions. -const MinAcceptedVersion execinfrapb.DistSQLVersion = 56 +const MinAcceptedVersion execinfrapb.DistSQLVersion = 58 /* @@ -51,12 +51,17 @@ const MinAcceptedVersion execinfrapb.DistSQLVersion = 56 Please add new entries at the top. +- Version: 58 (MinAcceptedVersion: 58) + - TableReaderSpec now contains a specific list of column IDs and the internal + schema now corresponds to these columns (instead of all table columns). The + HasSystemColumns, DeprecatedIsCheck fields have been removed. + - Version: 57 (MinAcceptedVersion: 56) - FINAL_COVAR_POP aggregate function was introduced to support local and final aggregation of the builtin function COVAR_POP. It would be unrecognized by a server running older versions, hence the version bump. However, a - server running v53 can still process all plans from servers running v52, - thus the MinAcceptedVersion is kept at 52. + server running v57 can still process all plans from servers running v56, + thus the MinAcceptedVersion is kept at 56. - Version: 56 (MinAcceptedVersion: 56) - The Visibility fields from TableReaderSpec, IndexSkipTableReaderSpec, diff --git a/pkg/sql/execinfrapb/BUILD.bazel b/pkg/sql/execinfrapb/BUILD.bazel index e1a947a15fa0..1ef894e0d8d7 100644 --- a/pkg/sql/execinfrapb/BUILD.bazel +++ b/pkg/sql/execinfrapb/BUILD.bazel @@ -66,12 +66,15 @@ go_test( srcs = [ "component_stats_test.go", "expr_test.go", + "flow_diagram_external_test.go", "flow_diagram_test.go", ], embed = [":execinfrapb"], deps = [ "//pkg/roachpb:with-mocks", + "//pkg/security", "//pkg/settings/cluster", + "//pkg/sql", "//pkg/sql/catalog/descpb", "//pkg/sql/sem/tree", "//pkg/sql/types", diff --git a/pkg/sql/execinfrapb/flow_diagram.go b/pkg/sql/execinfrapb/flow_diagram.go index a79b45fa0aec..a9a87a07a484 100644 --- a/pkg/sql/execinfrapb/flow_diagram.go +++ b/pkg/sql/execinfrapb/flow_diagram.go @@ -144,10 +144,33 @@ func indexDetail(desc *descpb.TableDescriptor, indexIdx uint32) string { // summary implements the diagramCellType interface. func (tr *TableReaderSpec) summary() (string, []string) { - details := []string{indexDetail(&tr.Table, tr.IndexIdx)} + details := make([]string, 0, 3) + details = append(details, indexDetail(&tr.Table, tr.IndexIdx)) + tbl := tabledesc.NewUnsafeImmutable(&tr.Table) + var b strings.Builder + b.WriteString("Columns:") + const wrapAt = 100 + for i, colID := range tr.ColumnIDs { + col, err := tbl.FindColumnWithID(colID) + if i > 0 { + b.WriteByte(',') + } + var name string + if err != nil { + name = fmt.Sprintf("?%d?", colID) + } else { + name = col.GetName() + } + if b.Len()+len(name)+1 > wrapAt { + details = append(details, b.String()) + b.Reset() + } + b.WriteByte(' ') + b.WriteString(name) + } + details = append(details, b.String()) if len(tr.Spans) > 0 { - tbl := tabledesc.NewUnsafeImmutable(&tr.Table) // only show the first span idx := tbl.ActiveIndexes()[int(tr.IndexIdx)] valDirs := catalogkeys.IndexKeyValDirs(idx) diff --git a/pkg/sql/execinfrapb/flow_diagram_external_test.go b/pkg/sql/execinfrapb/flow_diagram_external_test.go new file mode 100644 index 000000000000..2df9842e4414 --- /dev/null +++ b/pkg/sql/execinfrapb/flow_diagram_external_test.go @@ -0,0 +1,87 @@ +// Copyright 2022 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package execinfrapb_test + +import ( + "context" + "testing" + + "github.com/cockroachdb/cockroach/pkg/roachpb" + "github.com/cockroachdb/cockroach/pkg/security" + "github.com/cockroachdb/cockroach/pkg/sql" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" + "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" + "github.com/cockroachdb/cockroach/pkg/util/leaktest" +) + +func TestPlanDiagramTableReaderWrapColumns(t *testing.T) { + defer leaktest.AfterTest(t)() + + desc, err := sql.CreateTestTableDescriptor( + context.Background(), + 1, 100, + `CREATE TABLE test ( + this_is_a_very_long_name_01 INT PRIMARY KEY, + this_is_a_very_long_name_02 INT, + this_is_a_very_long_name_03 INT, + this_is_a_very_long_name_04 INT, + this_is_a_very_long_name_05 INT, + this_is_a_very_long_name_06 INT, + this_is_a_very_long_name_07 INT, + this_is_a_very_long_name_08 INT, + this_is_a_very_long_name_09 INT, + this_is_a_very_long_name_10 INT, + this_is_a_very_long_name_11 INT, + this_is_a_very_long_name_12 INT, + this_is_a_very_long_name_13 INT, + this_is_a_very_long_name_14 INT, + this_is_a_very_long_name_15 INT, + this_is_a_very_long_name_16 INT, + x INT, + y INT, + this_is_a_super_duper_long_name_that_is_longer_than_any_reasonable_wrapping_limit_and_must_appear_on_its_own_line INT, + z INT + )`, + descpb.NewBasePrivilegeDescriptor(security.NodeUserName()), + ) + if err != nil { + t.Fatal(err) + } + + flows := make(map[roachpb.NodeID]*execinfrapb.FlowSpec) + + tr := execinfrapb.TableReaderSpec{ + Table: *desc.TableDesc(), + IndexIdx: 0, + ColumnIDs: []descpb.ColumnID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}, + } + + flows[1] = &execinfrapb.FlowSpec{ + Processors: []execinfrapb.ProcessorSpec{{ + Core: execinfrapb.ProcessorCoreUnion{TableReader: &tr}, + Output: []execinfrapb.OutputRouterSpec{{ + Type: execinfrapb.OutputRouterSpec_PASS_THROUGH, + Streams: []execinfrapb.StreamEndpointSpec{{Type: execinfrapb.StreamEndpointSpec_SYNC_RESPONSE}}, + }}, + StageID: 1, + ProcessorID: 0, + }}, + } + + _, url, err := execinfrapb.GeneratePlanDiagramURL("SOME SQL HERE", flows, execinfrapb.DiagramFlags{}) + if err != nil { + t.Fatal(err) + } + expectedURL := "https://cockroachdb.github.io/distsqlplan/decode.html#eJyMk0Gr2zAQhO_9FWbPglpJk7Y-FUqggbZpk96KWVRrcQSypGrlJm7wfy-2D6EPnvIuhp1vZwTL-Ab820IFp8OXXXH6_rn4tDvuQIDzmr6qjhiqnyChFhCib4jZx0m6zQt7fYWqFGBc6NMk1wIaHwmqGySTLEEFP9QvS0dSmuLrEgRoSsrYOTYRpw8hmk7FAQR89LbvHFdFOhtGw6jwD8UBrXctOtURllJk4CoH1wIEZPibnHmTg9sHyW9z5nc5-D6fLMuMWeZOJVcPktc5c-5UcvMgeSuKqyiGJ1vcB4qo5-99OZ1VmvikUJxGh8oNGEmxd1Ov8BJVCMa1aE1nEiqnses5oQqBVETv0CRGf3FojaP51b9QjwJ8n-6d5aRagkqO4uW9PhIH75j-q_RzyeVYCyDd0vLvsO9jQ9-ib-ZnlvEw-2ZBE6eFymXYuwWN9fjqXwAAAP__T4VS9w==" + if url.String() != expectedURL { + t.Errorf("expected `%s` got `%s`", expectedURL, url.String()) + } +} diff --git a/pkg/sql/execinfrapb/flow_diagram_test.go b/pkg/sql/execinfrapb/flow_diagram_test.go index 120a5c241b67..f124f22a2460 100644 --- a/pkg/sql/execinfrapb/flow_diagram_test.go +++ b/pkg/sql/execinfrapb/flow_diagram_test.go @@ -25,6 +25,7 @@ import ( // compareDiagrams verifies that two JSON strings decode to equal diagramData // structures. This allows the expected string to be formatted differently. func compareDiagrams(t *testing.T, result string, expected string) { + t.Helper() dec := json.NewDecoder(strings.NewReader(result)) var resData, expData diagramData if err := dec.Decode(&resData); err != nil { @@ -51,17 +52,14 @@ func TestPlanDiagramIndexJoin(t *testing.T) { Indexes: []descpb.IndexDescriptor{{Name: "SomeIndex"}}, } tr := TableReaderSpec{ - Table: *desc, - IndexIdx: 1, + Table: *desc, + IndexIdx: 1, + ColumnIDs: []descpb.ColumnID{1, 2}, } flows[1] = &FlowSpec{ Processors: []ProcessorSpec{{ Core: ProcessorCoreUnion{TableReader: &tr}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_PASS_THROUGH, Streams: []StreamEndpointSpec{ @@ -76,10 +74,6 @@ func TestPlanDiagramIndexJoin(t *testing.T) { flows[2] = &FlowSpec{ Processors: []ProcessorSpec{{ Core: ProcessorCoreUnion{TableReader: &tr}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_PASS_THROUGH, Streams: []StreamEndpointSpec{ @@ -95,10 +89,6 @@ func TestPlanDiagramIndexJoin(t *testing.T) { Processors: []ProcessorSpec{ { Core: ProcessorCoreUnion{TableReader: &tr}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_PASS_THROUGH, Streams: []StreamEndpointSpec{ @@ -148,11 +138,11 @@ func TestPlanDiagramIndexJoin(t *testing.T) { "sql":"SOME SQL HERE", "nodeNames":["1","2","3"], "processors":[ - {"nodeIdx":0,"inputs":[],"core":{"title":"TableReader/0","details":["Table@SomeIndex","Out: @1,@2"]},"outputs":[],"stage":1}, - {"nodeIdx":1,"inputs":[],"core":{"title":"TableReader/1","details":["Table@SomeIndex","Out: @1,@2"]},"outputs":[],"stage":1}, - {"nodeIdx":2,"inputs":[],"core":{"title":"TableReader/2","details":["Table@SomeIndex","Out: @1,@2"]},"outputs":[],"stage":1}, + {"nodeIdx":0,"inputs":[],"core":{"title":"TableReader/0","details":["Table@SomeIndex","Columns: ?1?, ?2?"]},"outputs":[],"stage":1}, + {"nodeIdx":1,"inputs":[],"core":{"title":"TableReader/1","details":["Table@SomeIndex","Columns: ?1?, ?2?"]},"outputs":[],"stage":1}, + {"nodeIdx":2,"inputs":[],"core":{"title":"TableReader/2","details":["Table@SomeIndex","Columns: ?1?, ?2?"]},"outputs":[],"stage":1}, {"nodeIdx":2,"inputs":[{"title":"ordered","details":["@2+"]}],"core":{"title":"JoinReader/3","details":["Table@primary","Out: @3"]},"outputs":[],"stage":2}, - {"nodeIdx":2,"inputs":[],"core":{"title":"Response","details":[]},"outputs":[]} + {"nodeIdx":2,"inputs":[],"core":{"title":"Response","details":[]},"outputs":[],"stage":0} ], "edges":[ {"sourceProc":0,"sourceOutput":0,"destProc":3,"destInput":1}, @@ -165,7 +155,7 @@ func TestPlanDiagramIndexJoin(t *testing.T) { compareDiagrams(t, json, expected) - expectedURL := "https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ksFq8zAQhO__U4S5_oJack86-RJoStu0cW_FB9VagsGWXEmGFON3L5ZLE0NSUtIed8cz33hRD_9WQyJf3y8X-dPd4ma5WYLBWE0PqiEP-QIOBgGGFAVD62xJ3ls3Sn38cKV3kAlDZdoujOuCobSOIHuEKtQEiWf1WtOGlCZ3lYBBU1BVHeOjlOW2oZXRtAPDugtykXGWCRQDg-3CPtgHtSVIPrADOD8fzn8dLs6Hiz-F75nWaXKk57RM_EcxHGl4ayvzWTA9VrB1VaPc-1e99GQ38ZPDbMi31niaIU8lJ2Nx0luaftTbzpX06GwZX940rqMvLjT5MKnpNKxMlOLxDs38ErO4xJx-a76emZOhGP59BAAA___j2TIH" + expectedURL := "https://cockroachdb.github.io/distsqlplan/decode.html#eJy8kkFL80AQhu_frwjv9Vsw2XjaSwpSsKJWW2-Sw5odSiDZibsbqJT8d-lGaAutVIoeZ948M0-G3cC_N1BYzh-myfL5PrmdLqYQsGzoUbfkoV6RQUBCIEcp0DmuyHt222gTP5yZNVQqUNuuD9t2KVCxI6gNQh0agsKLfmtoQdqQu0ohYCjouonjYzRZcksza2gNgRtu-tZ6lRRZIZJCFigHAe7Dbr4PekVQ2SD2HLLzHbLfcpDnO8i_cNitZmfIkTlcOpH_UQ5HRO-4tl-e-THPztWtdh8QmPdBJZP8pJv8yX0W5Du2ng5WnpqcbsXJrGj8Uc-9q-jJcRWf41jOIxcbhnwY03wsZjZG8Xj7cHYJLC-B82_h6wM4Hcrh32cAAAD__wZXONY=" if url.String() != expectedURL { t.Errorf("expected `%s` got `%s`", expectedURL, url.String()) } @@ -179,9 +169,15 @@ func TestPlanDiagramJoin(t *testing.T) { descA := &descpb.TableDescriptor{Name: "TableA"} descB := &descpb.TableDescriptor{Name: "TableB"} - trA := TableReaderSpec{Table: *descA} + trA := TableReaderSpec{ + Table: *descA, + ColumnIDs: []descpb.ColumnID{1, 2, 4}, + } - trB := TableReaderSpec{Table: *descB} + trB := TableReaderSpec{ + Table: *descB, + ColumnIDs: []descpb.ColumnID{2, 3, 5}, + } hj := HashJoinerSpec{ LeftEqColumns: []uint32{0, 2}, @@ -193,10 +189,6 @@ func TestPlanDiagramJoin(t *testing.T) { Processors: []ProcessorSpec{ { Core: ProcessorCoreUnion{TableReader: &trA}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1, 3}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_BY_HASH, HashColumns: []uint32{0, 1}, @@ -214,10 +206,6 @@ func TestPlanDiagramJoin(t *testing.T) { Processors: []ProcessorSpec{ { Core: ProcessorCoreUnion{TableReader: &trA}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1, 3}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_BY_HASH, HashColumns: []uint32{0, 1}, @@ -297,10 +285,6 @@ func TestPlanDiagramJoin(t *testing.T) { }, { Core: ProcessorCoreUnion{TableReader: &trB}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{1, 2, 4}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_BY_HASH, HashColumns: []uint32{2, 1}, @@ -344,10 +328,6 @@ func TestPlanDiagramJoin(t *testing.T) { flows[4] = &FlowSpec{ Processors: []ProcessorSpec{{ Core: ProcessorCoreUnion{TableReader: &trB}, - Post: PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{1, 2, 4}, - }, Output: []OutputRouterSpec{{ Type: OutputRouterSpec_BY_HASH, HashColumns: []uint32{2, 1}, @@ -375,16 +355,16 @@ func TestPlanDiagramJoin(t *testing.T) { expected := ` { "sql":"SOME SQL HERE", - "nodeNames":["1","2","3","4"], + "nodeNames":["1","2","3","4"], "processors":[ - {"nodeIdx":0,"inputs":[],"core":{"title":"TableReader/0","details":["TableA@primary","Out: @1,@2,@4"]},"outputs":[{"title":"by hash","details":["@1,@2"]}],"stage":0}, - {"nodeIdx":1,"inputs":[],"core":{"title":"TableReader/1","details":["TableA@primary","Out: @1,@2,@4"]},"outputs":[{"title":"by hash","details":["@1,@2"]}],"stage":0}, + {"nodeIdx":0,"inputs":[],"core":{"title":"TableReader/0","details":["TableA@primary","Columns: ?1?, ?2?, ?4?"]},"outputs":[{"title":"by hash","details":["@1,@2"]}],"stage":0}, + {"nodeIdx":1,"inputs":[],"core":{"title":"TableReader/1","details":["TableA@primary","Columns: ?1?, ?2?, ?4?"]},"outputs":[{"title":"by hash","details":["@1,@2"]}],"stage":0}, {"nodeIdx":1,"inputs":[{"title":"unordered","details":[]},{"title":"unordered","details":[]}],"core":{"title":"HashJoiner/2","details":["left(@1,@3)=right(@3,@2)","ON @1+@2\u003c@6","Out: @1,@2,@3,@4,@5,@6"]},"outputs":[],"stage":0}, {"nodeIdx":1,"inputs":[{"title":"unordered","details":[]}],"core":{"title":"No-op/3","details":[]},"outputs":[],"stage":0}, - {"nodeIdx":2,"inputs":[],"core":{"title":"TableReader/4","details":["TableA@primary","Out: @1,@2,@4"]},"outputs":[{"title":"by hash","details":["@1,@2"]}],"stage":0}, - {"nodeIdx":2,"inputs":[],"core":{"title":"TableReader/5","details":["TableB@primary","Out: @2,@3,@5"]},"outputs":[{"title":"by hash","details":["@3,@2"]}],"stage":0}, + {"nodeIdx":2,"inputs":[],"core":{"title":"TableReader/4","details":["TableA@primary","Columns: ?1?, ?2?, ?4?","Out: @1,@2,@4"]},"outputs":[{"title":"by hash","details":["@1,@2"]}],"stage":0}, + {"nodeIdx":2,"inputs":[],"core":{"title":"TableReader/5","details":["TableB@primary","Columns: ?2?, ?3?, ?5?"]},"outputs":[{"title":"by hash","details":["@3,@2"]}],"stage":0}, {"nodeIdx":2,"inputs":[{"title":"unordered","details":[]},{"title":"unordered","details":[]}],"core":{"title":"HashJoiner/6","details":["left(@1,@3)=right(@3,@2)","ON @1+@2\u003c@6"]},"outputs":[],"stage":0}, - {"nodeIdx":3,"inputs":[],"core":{"title":"TableReader/7","details":["TableB@primary","Out: @2,@3,@5"]},"outputs":[{"title":"by hash","details":["@3,@2"]}],"stage":0}, + {"nodeIdx":3,"inputs":[],"core":{"title":"TableReader/7","details":["TableB@primary","Columns: ?2?, ?3?, ?5?"]},"outputs":[{"title":"by hash","details":["@3,@2"]}],"stage":0}, {"nodeIdx":1,"inputs":[],"core":{"title":"Response","details":[]},"outputs":[],"stage":0} ], "edges":[ diff --git a/pkg/sql/execinfrapb/processors_sql.proto b/pkg/sql/execinfrapb/processors_sql.proto index 8475e6d1dfab..0c829a241c87 100644 --- a/pkg/sql/execinfrapb/processors_sql.proto +++ b/pkg/sql/execinfrapb/processors_sql.proto @@ -49,9 +49,8 @@ message ValuesCoreSpec { // performs KV operations to retrieve rows for a table and outputs the desired // columns of the rows that pass a filter expression. // -// The "internal columns" of a TableReader (see ProcessorSpec) are all the -// columns of the table. Internally, only the values for the columns specified -// by needed_columns are to be populated. +// The "internal columns" of a TableReader (see ProcessorSpec) correspond to the +// specified column IDs. message TableReaderSpec { optional sqlbase.TableDescriptor table = 1 [(gogoproto.nullable) = false]; // If 0, we use the primary index. If non-zero, we use the index_idx-th index, @@ -61,6 +60,12 @@ message TableReaderSpec { reserved 4; repeated roachpb.Span spans = 18 [(gogoproto.nullable) = false]; + // Columns identifies the columns that we are decoding; the table reader + // produces these columns in this order. When empty, the table reader produces + // empty rows. + repeated uint32 column_ids = 19 [(gogoproto.customname) = "ColumnIDs", + (gogoproto.casttype) = "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb.ColumnID"]; + // A hint for how many rows the consumer of the table reader output might // need. This is used to size the initial KV batches to try to avoid reading // many more rows than needed by the processor receiving the output. @@ -69,9 +74,9 @@ message TableReaderSpec { // (that value will be used for sizing batches instead). optional int64 limit_hint = 5 [(gogoproto.nullable) = false]; - // Indicates whether the TableReader is being run as an exhaustive - // check. This is only true during SCRUB commands. No longer supported. - optional bool deprecated_is_check = 6 [(gogoproto.nullable) = false]; + // This field used to indicate whether the TableReader is being run as an + // exhaustive check (no longer implemented). + reserved 6; // This field used to be a visibility level of the columns that should be // produced. We now always produce all columns (public and not public). @@ -130,9 +135,10 @@ message TableReaderSpec { optional sqlbase.ScanLockingWaitPolicy locking_wait_policy = 11 [(gogoproto.nullable) = false]; reserved 13; - // Indicates whether or not this TableReader is expected to produce any - // system columns in its output. - optional bool has_system_columns = 14 [(gogoproto.nullable) = false]; + + // This field used to indicate whether or not this TableReader is expected to + // produce any system columns in its output. + reserved 14; reserved 15; diff --git a/pkg/sql/flowinfra/cluster_test.go b/pkg/sql/flowinfra/cluster_test.go index 3a801a946e8f..2930158a99c0 100644 --- a/pkg/sql/flowinfra/cluster_test.go +++ b/pkg/sql/flowinfra/cluster_test.go @@ -104,21 +104,24 @@ func TestClusterFlow(t *testing.T) { leafInputState := txn.GetLeafTxnInputState(ctx) tr1 := execinfrapb.TableReaderSpec{ - Table: *desc.TableDesc(), - IndexIdx: 1, - Spans: []roachpb.Span{makeIndexSpan(0, 8)}, + Table: *desc.TableDesc(), + IndexIdx: 1, + Spans: []roachpb.Span{makeIndexSpan(0, 8)}, + ColumnIDs: []descpb.ColumnID{1, 2}, } tr2 := execinfrapb.TableReaderSpec{ - Table: *desc.TableDesc(), - IndexIdx: 1, - Spans: []roachpb.Span{makeIndexSpan(8, 12)}, + Table: *desc.TableDesc(), + IndexIdx: 1, + Spans: []roachpb.Span{makeIndexSpan(8, 12)}, + ColumnIDs: []descpb.ColumnID{1, 2}, } tr3 := execinfrapb.TableReaderSpec{ - Table: *desc.TableDesc(), - IndexIdx: 1, - Spans: []roachpb.Span{makeIndexSpan(12, 100)}, + Table: *desc.TableDesc(), + IndexIdx: 1, + Spans: []roachpb.Span{makeIndexSpan(12, 100)}, + ColumnIDs: []descpb.ColumnID{1, 2}, } fid := execinfrapb.FlowID{UUID: uuid.MakeV4()} @@ -131,10 +134,6 @@ func TestClusterFlow(t *testing.T) { Processors: []execinfrapb.ProcessorSpec{{ ProcessorID: 1, Core: execinfrapb.ProcessorCoreUnion{TableReader: &tr1}, - Post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, Output: []execinfrapb.OutputRouterSpec{{ Type: execinfrapb.OutputRouterSpec_PASS_THROUGH, Streams: []execinfrapb.StreamEndpointSpec{ @@ -154,10 +153,6 @@ func TestClusterFlow(t *testing.T) { Processors: []execinfrapb.ProcessorSpec{{ ProcessorID: 2, Core: execinfrapb.ProcessorCoreUnion{TableReader: &tr2}, - Post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, Output: []execinfrapb.OutputRouterSpec{{ Type: execinfrapb.OutputRouterSpec_PASS_THROUGH, Streams: []execinfrapb.StreamEndpointSpec{ @@ -178,10 +173,6 @@ func TestClusterFlow(t *testing.T) { { ProcessorID: 3, Core: execinfrapb.ProcessorCoreUnion{TableReader: &tr3}, - Post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, Output: []execinfrapb.OutputRouterSpec{{ Type: execinfrapb.OutputRouterSpec_PASS_THROUGH, Streams: []execinfrapb.StreamEndpointSpec{ diff --git a/pkg/sql/flowinfra/server_test.go b/pkg/sql/flowinfra/server_test.go index 73d94e339b4b..e433f7b2082b 100644 --- a/pkg/sql/flowinfra/server_test.go +++ b/pkg/sql/flowinfra/server_test.go @@ -22,6 +22,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/rpc" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkv" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/distsql" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" @@ -59,14 +60,11 @@ func TestServer(t *testing.T) { td := catalogkv.TestingGetTableDescriptor(kvDB, keys.SystemSQLCodec, "test", "t") ts := execinfrapb.TableReaderSpec{ - Table: *td.TableDesc(), - IndexIdx: 0, - Reverse: false, - Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, - } - post := execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, // a b + Table: *td.TableDesc(), + IndexIdx: 0, + Reverse: false, + Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, + ColumnIDs: []descpb.ColumnID{1, 2}, // a b } txn := kv.NewTxn(ctx, kvDB, s.NodeID()) @@ -79,7 +77,6 @@ func TestServer(t *testing.T) { req.Flow = execinfrapb.FlowSpec{ Processors: []execinfrapb.ProcessorSpec{{ Core: execinfrapb.ProcessorCoreUnion{TableReader: &ts}, - Post: post, Output: []execinfrapb.OutputRouterSpec{{ Type: execinfrapb.OutputRouterSpec_PASS_THROUGH, Streams: []execinfrapb.StreamEndpointSpec{{Type: execinfrapb.StreamEndpointSpec_SYNC_RESPONSE}}, diff --git a/pkg/sql/indexbackfiller_test.go b/pkg/sql/indexbackfiller_test.go index eafc23ccf567..61c04a59db00 100644 --- a/pkg/sql/indexbackfiller_test.go +++ b/pkg/sql/indexbackfiller_test.go @@ -40,7 +40,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/testutils/serverutils" "github.com/cockroachdb/cockroach/pkg/testutils/sqlutils" "github.com/cockroachdb/cockroach/pkg/testutils/testcluster" - "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/cockroach/pkg/util/mon" @@ -351,33 +350,32 @@ INSERT INTO foo VALUES (1), (10), (100); ctx context.Context, t *testing.T, txn *kv.Txn, table *tabledesc.Mutable, indexID descpb.IndexID, ) []tree.Datums { t.Helper() - var fetcher row.Fetcher - var alloc tree.DatumAlloc mm := mon.MakeStandaloneBudget(1 << 30) idx, err := table.FindIndexWithID(indexID) - colIdxMap := catalog.ColumnIDToOrdinalMap(table.PublicColumns()) - var valsNeeded util.FastIntSet - { - colIDsNeeded := idx.CollectKeyColumnIDs() - if idx.Primary() { - for _, column := range table.PublicColumns() { - if !column.IsVirtual() { - colIDsNeeded.Add(column.GetID()) - } + colIDsNeeded := idx.CollectKeyColumnIDs() + if idx.Primary() { + for _, column := range table.PublicColumns() { + if !column.IsVirtual() { + colIDsNeeded.Add(column.GetID()) } - } else { - colIDsNeeded.UnionWith(idx.CollectSecondaryStoredColumnIDs()) - colIDsNeeded.UnionWith(idx.CollectKeySuffixColumnIDs()) } - - colIDsNeeded.ForEach(func(colID descpb.ColumnID) { - valsNeeded.Add(colIdxMap.GetDefault(colID)) - }) + } else { + colIDsNeeded.UnionWith(idx.CollectSecondaryStoredColumnIDs()) + colIDsNeeded.UnionWith(idx.CollectKeySuffixColumnIDs()) } + require.NoError(t, err) spans := []roachpb.Span{table.IndexSpan(keys.SystemSQLCodec, indexID)} const reverse = false + var fetcherCols []catalog.Column + for _, col := range table.PublicColumns() { + if colIDsNeeded.Contains(col.GetID()) { + fetcherCols = append(fetcherCols, col) + } + } + var alloc tree.DatumAlloc + var fetcher row.Fetcher require.NoError(t, fetcher.Init( ctx, keys.SystemSQLCodec, @@ -390,9 +388,7 @@ INSERT INTO foo VALUES (1), (10), (100); row.FetcherTableArgs{ Desc: table, Index: idx, - ColIdxMap: colIdxMap, - Cols: table.PublicColumns(), - ValNeededForCol: valsNeeded, + Columns: fetcherCols, IsSecondaryIndex: !idx.Primary(), }, )) @@ -408,12 +404,7 @@ INSERT INTO foo VALUES (1), (10), (100); break } // Copy the datums out as the slice is reused internally. - row := make(tree.Datums, 0, valsNeeded.Len()) - for i := range datums { - if valsNeeded.Contains(i) { - row = append(row, datums[i]) - } - } + row := append(tree.Datums(nil), datums...) rows = append(rows, row) } return rows diff --git a/pkg/sql/logictest/testdata/logic_test/database b/pkg/sql/logictest/testdata/logic_test/database index 89772d8173dc..52c46f7f1939 100644 --- a/pkg/sql/logictest/testdata/logic_test/database +++ b/pkg/sql/logictest/testdata/logic_test/database @@ -274,3 +274,31 @@ CREATE TABLE db69713.s.pg_constraintdef_test ( statement ok DROP DATABASE db69713; + +# Ensure user must exist to create with owner. +statement error role/user "fake_user" does not exist +CREATE DATABASE aa with owner fake_user + +statement ok +CREATE DATABASE a with owner testuser + +query TTTTT colnames +SHOW DATABASES +---- +database_name owner primary_region regions survival_goal +a testuser NULL {} NULL +b root NULL {} NULL +c root NULL {} NULL +defaultdb root NULL {} NULL +postgres root NULL {} NULL +system node NULL {} NULL +test root NULL {} NULL + +# Non-superusers also must be a member of the new owning role. +statement ok +CREATE USER testuser2 + +user testuser + +statement error permission denied to create database +CREATE DATABASE d WITH OWNER testuser2 diff --git a/pkg/sql/logictest/testdata/logic_test/explain b/pkg/sql/logictest/testdata/logic_test/explain index 5fda6a24b216..3cf802554306 100644 --- a/pkg/sql/logictest/testdata/logic_test/explain +++ b/pkg/sql/logictest/testdata/logic_test/explain @@ -16,7 +16,7 @@ distribution: local table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkF1L8zAUx--fTxEOPKyVyNZd5mpDqxbrOtuyCaMXsTmOQpfUJJ0vo99d1gx0wkQvz__tF7ID81wDgyyMw4ucVPJJkas0uSOr8GEeT6MZ8S6jLM_uY58cMmcu4B1Ovl173CfJIkyJ5zvP-gVZ3oRp6AZnSU7i6DYkgy2WVunqHcX_AVCQSuCMb9AAW0EABYVGqxKNUXov7fpAJF6BjShUsmntXi4olEojsB3YytYIDHL-WGOKXKAejoCCQMurup-1k0ZXG67fgELWcGkYOYeio6Ba-zloLF8jsKCjv4cuKynUC-phcEycLq69SeADhaS1jEzGJ3Hjv-BSNI2SBo9gp5ZHXUEBxRrdPxrV6hLnWpU9xp1J3-sFgcY6N3BHJJ21f-DXcvBjefytXHT_PgIAAP__H3zBmg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUE9LwzAUv_spwgNZK5GtO-a0MasW6zrbsgmjh9g8R6FrapLOP6PfXdoMdMJEb_n9f2QP-qUEBokf-rOUFNWzJNdxdE_W_uMinAZz4lwFSZo8hC45eC6swTlAvts43CXR0o-J41rNuBlZ3fqxbwvnUUrC4M4ngx3mRqriA8X5AChUUuCcb1EDW4MHGYVayRy1lqqj9r0hEG_ARhSKqm5MR2cUcqkQ2B5MYUoEBil_KjFGLlANR0BBoOFF2deaSa2KLVfvQGEmy2ZbaUY4UEhq3j0vIWspyMZ8tWvDNwjMa-nfL1gVlZCvqIbe8fx0eeNMPBcoRI1hZDI-OTf-z1yMupaVxqOxU82jNqOAYoP2U7VsVI4LJfN-xsKoz_WEQG2s6lkQVFbqDvwe9n4Nj3-Es_bsMwAA___IjMWm # Test that explaining a query that contains a subquery the result of which is # needed to make the physical plan is rejected. See #40677. diff --git a/pkg/sql/opt/exec/execbuilder/testdata/aggregate b/pkg/sql/opt/exec/execbuilder/testdata/aggregate index c71fc86a7baa..07a579201a03 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/aggregate +++ b/pkg/sql/opt/exec/execbuilder/testdata/aggregate @@ -727,7 +727,7 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /xyz/zyx/?/?/1 -> +fetched: /xyz/zyx/3.0/2/1 -> output row: [1] query T diff --git a/pkg/sql/opt/exec/execbuilder/testdata/ddl b/pkg/sql/opt/exec/execbuilder/testdata/ddl index 10842170d161..771fa5e1b8ea 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/ddl +++ b/pkg/sql/opt/exec/execbuilder/testdata/ddl @@ -213,8 +213,8 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /t/b_desc/?/2 -> -fetched: /t/b_desc/?/1 -> +fetched: /t/b_desc/2/2 -> +fetched: /t/b_desc/1/1 -> fetched: /t/t_pkey/1/b/c -> /1/1 fetched: /t/t_pkey/2/b/c -> /2/2 output row: [1 1 1] diff --git a/pkg/sql/opt/exec/execbuilder/testdata/dist_vectorize b/pkg/sql/opt/exec/execbuilder/testdata/dist_vectorize index 9cf8da8653ea..3e22e1db526c 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/dist_vectorize +++ b/pkg/sql/opt/exec/execbuilder/testdata/dist_vectorize @@ -78,7 +78,7 @@ regions: table: kv@kv_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslt9u0zwUwO-_p7DOVffJVf5263I1qIY0wVrUduMCVZOXHJWoiR1sZ2uZ-li8AE-GkizQdFtqhFCR6KXP8YmPf_nZ8gOozwkEMDl_dz6YklDkXHf-PyJvxqNLsrgDClxEOGQpKgg-ggMUXKDgAQUfKPRgRiGTIkSlhCymPJQFF9ESAptCzLNcF-EZhVBIhOABdKwThACm7DbBMbIIpWUDhQg1i5NymcXdWSbjlMkVUJhkjKuAdK1i4VGuAzIUHIHC22ui4xQDYn_7qqpxKLhGrmPBn6SkuFdEIosC4lSR25XGOtQnr4HC5fVgQJTGrAJBOrjUVsz1UUDsssdqAuLipQkpW5IUUyFXhCWJCJnGKCB2-fVbpsNPqIjIdVZso5hfdlUHHJitKVSjR2hKszlC4KypOdhX87nEOdNCWr0m18Hoaji9GY8-TDpHQAGXGOZPYf1Gn-6Lff5sL-dCRigxavQ2W7fvxNlSZHJ1eXMxnHbOnD-zE6-xE8dcZWe3ypbbtbyDzEZoNxQ43qvMrrkCroECXtfyDwoYod1Q4GSvCnjmCngGCvjd8n4-KLAb7YYC_b0q4Jsr4Bso0OseBDACuyHA6V_zpnmmzzGqTHCFW2-b579sF28ejOZYPZCUyGWI76UIy2Wq4aisKwMRKl1lnWpwwatU0eBmsdNa7DaKne1it33lHUt7rdV-e7H_K32XFEugwFHfC7kgCdPIw9WPn17H71msmzpEqFDGLIm_sKeu1GWPpyvE-A4fT1idqo9ZnauOWp1NUSk2b0ywjR1sIum1Ijlu53l84LmN5KQVSb-dZ__AcxvJafttYe-4qNqvuX-D6Gz93_cAAAD__2VFyow= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslt9O2zwUwO-_p7DOVfnkKn8LxVdsFZPQBp3awi6mCpnkqIua2JntQDvUx9oL7MmmJmRrCiSppolJ5dLn-MQnP_9s-R701xgYjE8_nA4mJJCZMJ3_D8i70fCczG-BgpAhXvAENbDP4AAFFyh4QMEHCj2YUkiVDFBrqdZT7vOCs3ABzKYQiTQz6_CUQiAVArsHE5kYgcGE38Q4Qh6ismygEKLhUZwvM789SVWUcLUECgMZZ4nQDCiMUy40I11r3cP7K2KiBBmxf3zXxTiQwqAwkRSPUkreaaKQh4w4ReRmabAM9clboHB-NRgQbTAtOJAOLowVCXPAiJ23WExAnD83IeELkmAi1ZLwOJYBNxgyYudfv-Em-IKayMykmWFkPT_vqgw4MF1RKEYPzLThMwTmrGh7rm9mM4UzbqSyelWsg-HlxeR6NPw07hwABVxgkD2G9Qd9us_2-bu9TEgVosKw0tt0Vf8nzpYh48vz67OLSefE-Tt_4lX-xGlvsrOTyZbbtbx9drmB7IYBhy_qstveAHc3A7yu5e-zAQ1kNww4elEDvPYGeLsZ4Hfzi3pvDWggu2FA_0UN8Nsb4O9mQK-7z_vfwHVj_4__mffME32OUKdSaNx61zz9ZXv93sFwhsXjSMtMBfhRySBfphgO87o8EKI2RdYpBmeiSK0b3Cx2aovdSrGzXezWr9ywtFdb7dcX-7v0nVPMgYJAcyfVnMTcoAiWvza9jN_xyFR1CFGjingcfeOPXSnLHk5XgNEtPpywMlUeszJXHLUym6DWfFaZYLd2sIqkV4vksJ7n4SvPbSRHtUj69Tz7rzy3kRzX3xZ2w0VVf83tB9Hp6r-fAQAA__9bq8pp query T EXPLAIN ANALYZE (DISTSQL) SELECT * FROM kv JOIN kw ON kv.k = kw.k @@ -128,7 +128,7 @@ regions: table: kw@kw_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsmt9u2zYUxu_3FASv2lWuTMlOEwEFjAUdkG5JhrTozeALRjqzBcmiStJxvCCPtRfYkw2S5rb-I0oyOpAzdReJpHT44-GnL_R5wuJzigP84d2v7y4_oh_Rz3e31yh5QO9vr25QskK3Nyh5eJ2gtyhZvU6wgzMWwQ1dgMDB75hgB3vYwT528Ag7eIynDs45C0EIxosuT-WAq-gRB0MHx1m-lMXtqYNDxgEHT1jGMgUc4I_0PoU7oBFwd4gdHIGkcVq-JnmY5DxeUL7GDv6Q00wEaOAWL_7lE5LxAgI0_PsvUV2HLJOQyZhle02crQTiQKMAkerO_VrC5tY5-gk7-PrT5SUSEnIUsmUm0Qt4lG6cyZcBGpZxVR0AkroOC_qIFrBgfI1omrKQSogCNCyffk9lOAeB2FLmSxmgon8Z1eYGwdNnB1dXFb8Nn_s1mlMx3yYzKfpPHSwknQEOyLNzHPCzHeCrfeAu6ZEfQO7VIv_6HMYj4BDtPudV8eJWvQ6s3jXwGbxncQbcJTv7JYU_5IsJefXyLY9n8-pP7ODbYrYT4kw8Z-I7k2LDwiOEy_2FU_Es2sTnFElY5CiKRYKWgs7gaNxfUfotUC6zQ5gOErphA5a7ZLzNpmbGjWGPa8MebYVN2m860qxyrjdw_X7TqXWuA_I3LXSuR96sc0SPzpET1DmvffZ6LQTDH7ijPnvVgtEB-XkLweiRNwuGp0cwvBMUDL999votBGM0cMd99qoFowPyixaC0SNvFgxfj2D4JygYo_bZO2ohGONBn7tquegAfNwsFwOXIJpFiCAm58B7-GrhGOkRjtEJCkfDAeIdiJxlAnaOYg4_eVgQhGgG1boItuQh_MZZWL6murwtx5X_XUYgZNXqVRdX2aZJSCpVRzn_JblhlS_toz-rjT4DuWI8QSmVkIXrL-Fv7q9oLLcnFoEAHtM0_pPuz3oz7N_dHkL8UE77m6bNtv_SVs5507oAUaDYHfz9kVxoRkIUSM6_CxLSFQmpT3Jr04SMbWRCOmihZ5wWqqM_q43e2gW90IxEixaqkZD6JLc2TXa00BIm3i6T4bdM_O3Pw-5gXzmYbGvR0DglHR3piU84HdRI6o32_2FBdXtiAxfUTk_cwES3J9biF8ZHeuITThM1knqjbYYWqqPX7YkNXFA7PXEDE92eWIsWnnXxxHYgedNb5W5IrDyTViOp999mfDHV0Wu3ygbue-1WWUuWn_dWuRsSK8-k1Ujq_bcZWqiOXrtV1qKFDUx0W2UtWX7RW-W9XxmOLbU44TRpYKLbLJuYJ1aeVjcwUXhwMz6bTfFb6ZfJsfUW9jLR7Zj1CKLZZRwm5onCiBsiiH3NxQEonYouLNn8e7UkRrlmE5nods169o6aiZ2uWc1E-8m1kVDqrbghX84u1Wm2OMQu5Wm2mIkuRW89EyOOr42EUm_FDRHEvVIVC13z9PmHfwIAAP__GzeRXQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsmt9u2zYUxu_3FASv2pWuTMlOEwEFjAUd0G6Jh7TozeALRjqzBcmiS9J2vCCPtRfYkw2S5qb-I8oSOpCzdBeJpHT4O4efvtB8xPJLgn388d2v764_oR_Rz3fjGxSv0Ifx-1sUr9H4FsWr1zF6i-L16xgTnPIQbtkcJPZ_xxQT7GKCPUzwABM8xBOCF4IHICUXWZfHfMD78AH7fYKjdLFU2e0JwQEXgP1HrCKVAPbxJ3afwB2wEITTxwSHoFiU5K-JV6OFiOZMbDDB1zxZzlPpo5igFSb444JlVz0nC-SXz0hFc_BR_--_ZHEd8FRBqiKeHjQJvpZIAAt9RIs79xsF21uX6CdM8M3n62skFSxQwJepQi_gQTlRql76qJ_HWXQAiMs6zNkDmsOciw1iScIDpiD0UT9_-j1TwQwk4ku1WCofZf3zqLY3KJ48EVxcFTy3vO43aMbkbJfUKOs_IVgqNgXs0yfSLAEXewlYlyRg_ZwAh3YpOJICtzQFz8_hIgQB4f5zXmUvPqnXkWzegJjCBx6lIBy6t54S-EO9GNFXL9-KaDor_sQEj7PZjigZuWTkkVG2oOEBguVh4nQ8szb5JUEK5gsURjJGS8mm0Bj3M0rvBJTL9Bimo4RueY8vHDrcZVMy48qwh6VhD3bCpqcvQlpfBR2353jdItTrYI0UvGmgg10KqnWQmtFBeoY66J5ezW4DQfF6zqCrZr2g1EjBZQNB6VJQLSiuGUFxz1BQvNOr2WsgKIOeM-yqWS8oNVJw1UBQuhRUC4pnRlC8MxSUwenVPGggKMNeV8t6OamRgGF9Oek5FLE0RBRxNQPRJUMvLAMzwjI4Q2Gp2NC8A7ngqYS9raDjT-5nBCGcQpEXyZcigN8ED_LXFJfjfFz-32sIUhWtbnHxPt02ScWUbivpvyTXL-rl9OgvSqNPQa25iFHCFKTB5mv42_trFqndiYUgQUQsif5kh7PeDvt3tQcQrfJpf9O0XfZf2_I5b1vnIDMU-4O_P5Irw0ioBsnld0FC6yKh5UXe2jKhwzYyoTW00LVOC_XRX5RG39qEXhlGYkQL9UhoeZG3tkz2tLAlTNx9Jv1vmXi7n4f9wZ52MN3Vor51Sjpo6InPuBz0SMqN9v8hoaY9sYUJbacnrmBi2hMb8QvDhp74jMtEj6TcaNuhhfroTXtiCxPaTk9cwcS0JzaihRd1PHE7kLzprHI9JK3ck9YjKfffdnwx9dEbt8oWrnvjVtlIlV92VrkeklbuSeuRlPtvO7RQH71xq2xECyuYmLbKRqr8qrPKB78yND1qccZlUsHEtFm2sU5auVtdwUTjwe34bFbF30q_TJuet2gvE9OO2Ywg2n2Mw8Y60RhxSwSxO3NxBEqtQxctWfwHZ0mscs02MjHtms2sHT2TdrpmPRPjO9dWQim34pZ8OeucTmuLQ6xzPK0tZqLOobeOiRXb11ZCKbfilgjiwVGVFrrmydMP_wQAAP__QCvB0g== query T EXPLAIN (VEC, VERBOSE) SELECT count(*) FROM kv diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_agg b/pkg/sql/opt/exec/execbuilder/testdata/distsql_agg index 03ad816cbe5d..06041028beb0 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_agg +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_agg @@ -65,8 +65,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsmM9uqzgUxvfzFJZXdOQoMX_SNitz2zRCSqGX0E6vRhVygpVGanAGSNWq6ruPTAiB9F6biGwqZdFyDvg7Pjmf-S34gOl_L3AAh493Y9txgXbtTILJz_EZmAzHw6sATBGgr3ONniEw5fwlpHGkhSLa3uBJmc_4Os7ypUv6trku4vyaZlHEXithmNLlqpqveJGul9truCiqvdJkQeMZ2yY7sUi2yjeehHQ-18Lpe8bSsp2_RaOLrGh8kRVp3naezXhZBYHpGbjxvVsQ0YyCke_d34Efv8AUIhjziLl0yVI4-BdiiKAOETQggiZE0IJPCK4SPmNpyhOx5CMXONEbHPQQXMSrdSZuPyE44wmDgw-YLbIXBgcwoNMX5jMasaTbgwhGLKOLl3wb0QVZJYslTd4hgpMVjdMB6HQxoHEEMODZM0sggt46GwCCEdERsRDpI3IOnz4R5Otst2-a0TmDA_yJmvdmz-cJm9OMJ12r3hoRP992f4WuF4Tu_XisEf1M9Hh_qxEsoivv3g2K-IfnjUPbvdaIUaaeX2T5wtD3_ploIr21HwvVreMW0eSnf-3c3Gyz-9vQKWs_en5oj0YaMfPSTrDZyNpmYp88CXzbnTiB47mhPxz5w8lEhPZo5A9HdjDU8gGe7Q1uN4vpO3im6fPeGDB8-twNV__jcHd11jFPIpawqFYpryIZP-592Xh__ricv16bklF3wKw5YNWW9ksDzksDLkR047j2OJwE19fDB41c5ifN2H8Q3nl3tYc7o3q7tQ-279ju1fA3ZR5s_0uN0l6Ma_5ivWowrlS58so6OP-xPosjluRvCCB6lxgIEBMBYiFA-giQcwTIBQLksvjDPbFOBEKA9fKfEGKzUGEhx3n057fNOO6BcHmHr7rY2lv5-73N2t64OYVwEwp1caerH41Diu4qL0L_xKFDOYSPySF84tC355DenAV6Ixbona5xNBYouqscxvMTCw5lgX5MFugnFnx7FhjNWWA0YoHR6ZpHY4Giu8phvDix4FAWGMdkgXFiwbdngdmcBWYjFpidrnU0Fii6qxzGyxMLDmWBeUwWmCcWfHsWKL4M-ixd8Thljb5E9MSBYdGcbU5XytfJjN0lfJZvs0m9XJffiFiabZ7iTeLEm0eiwaoY74txVazXxPgwcb-N-LKNGLfqG1tytS6dtyEXG3Kz-nK3TKnakoutNlbLxQqr5WKF1XKxymqFWmF1v43V51LxhdysizZmycUKs-RihVlyscoshVph1mUbs7CCoiqMtuNoO5C2I2lLlLZjKW4FU6ygqakw7QtODzJNrlaZJlerTJOrlaYp5CrTvkBVatrT51__BwAA___Wuh3a - +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsmM9u6jgUxvfzFJZX6cgInD-0ZZXclqJINOlN0k6vRigyxKKRIGaSULWq-u4jhxCS9l4bGjaVWLQ-h_g7Pjmf-S14g9l_CziAw8e7sWU7QLm2_cD_OT4D_nA8vArAFAHyPFfIGQJTxhYhSSIl5NH2A5ZW-Yytk7zYuiQvmzVOijXLo4g-18IwI8tVPV-xMl0vt2sYl9WeSRqTZEa3yU7Mk63yhaUhmc-VcPqa06xq52_eaJyXjcd5mRZtF9mMVVUQmJ6BG8-9BRHJCRh57v0d-PELTCGCCYuoQ5Y0g4N_IYYIqhBBDSKoQwQNOEFwlbIZzTKW8i1vhcCOXuCgh2CcrNY5_3iC4IylFA7eYB7nCwoHMCDTBfUoiWja7UEEI5qTeFEcw7swV2m8JOkrRPCKLdbLJBsA3igCxdj5wt-Xr3EOEfRXhG_pdDEgSQQwYPkTTeHkHUG2zndtZDmZUzjA72j_Vq35PKVzkrO0azQ7Nfk0LOdX6LhB6NyPx4qpnvFu7m8VE_Poyr13gjL-4brj0HKuFVOrUtcrs2Jj6Ln_-ApPb63HUnVrO2Xk__Su7ZubbXZ_G9pV7UfXC63RSDH1orQdbA4ythk_p0gCz3J8O7BdJ_SGI2_o-zy0RiNvOLKCoWJixN-hObjdLKav4IlkTx_GgOHkfTdc9Y_D3dVZJyyNaEqjRqWiimD8uPfp4I_zx9X81caUtKYDesMBo7G1XxlwXhlwwaMb27HGoR9cXw8fFPMSmSra1K0_CO_cu8bDnVG93d4Hy7Mt52r4mzIPlvepRmUvxg1_sVo3GNeqXLlVHVy8rEeTiKYDYGIETLVragiYOgKmgYDZR8A8R8C8QMC8LP9wj-_jARdgtfrHhVgvVZjLcRGd__Hbph33Qjisw1ZdbHzY-fuz9cbZeH8o4aNBqYs7XfULWJI0W_te9E9YOhRL-JhYwicsfXssqfujQT0eGtROV_sCGiTN1u7m-QkNh6JBPSYa1BMavj0atP3RoB0PDVqnq38BDZJma3fz4oSGQ9GgHRMN2gkN3x4N-v5o0I-HBr3TNb6ABkmztbt5eULDoWjQj4kG_YSGb48Gya-KHs1WLMnoXr9i9PiFodGcbm5XxtbpjN6lbFYcs0ndQld8ENEs3zzFm8RONo94g3Ux_ijGdbHaEOPDxP024ss2Ytyqb2yI1apw3ppYrInN6ovd0oVqQyw22lgtFkusFoslVovFMqslaonV_TZWnwvFF2KzLtqYJRZLzBKLJWaJxTKzJGqJWZdtzMISisow2o6j7UDajqQtUdqOpbgVTLGEprrEtE84Pcg0sVpmmlgtM02slpomkctM-wRVoWmT97_-DwAA__9tpEAI statement ok ALTER TABLE data DROP COLUMN _bool; @@ -86,7 +85,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF1r2zAUhu_3K8S5akDGlu2kqa9StgwCadPFGQyGL7To4AUSy5Nk2Aj578P2RZ3QyhrapT9ePe_DEecM-tcRMlh-e1k_rp7J3adVvsu_rCckX66XH3dEN6c7PiGft5snIrjhQKGSAp_5CTVk34EBhRgoJEAhBQpTKCjUSu5Ra6naX85dYCV-QxZROFR1Y9rXBYW9VAjZGczBHBEy2PEfR9wiF6jCCCgINPxw7DAtelGrw4mrP0Ahr3mlMxKEjPBKEEak-YkKKGwak5EFg-JCQTbmlaUNLxEydqHufR7LUmHJjVTh9LpO_vXpbsEm72LidzGvpzeVVAIViquji4u9CIv-rUly1YS5D4C5DCBkQRh7jWCk0cB85jOC2F08dhKPgzDxEh9pNBC_9xFP3MUTJ_EkCFMv8ZFGA_G5j3jqLp46iadBOPUSH2k0EH_4X9vmDcwWdS0rjTdb5-2To3YboSixX11aNmqPL0ruO0z_uOly3QuB2vRfWf-wqvpPbcFhmFnD8VWY3YZjO3kEnVjTqT2c-vSeWsMzO3nmQ763hud28tyH_GCfVTRyTeyX7JZdXD78DQAA__-VJNs- +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF2Lm0AUhu_7K4ZzlcCIjpps1qtdtikEsh-NKRSKF9PMwQaMY2dGaAn570W9WBM2o8beRc07z_twhnME_TuDCJbf39aPqxcy-byKt_HX9ZTEy_XyaUt0eZjwKfmyeX0mghsOFHIp8IUfUEP0AxhQ8IFCABRCoDCDhEKh5A61lqr6y7EOrMQfiDwK-7woTfU6obCTCiE6gtmbDCGCLf-Z4Qa5QOV6QEGg4fusxlToh0LtD1z9BQpPMisPuY5I1ScuePXTcRnhuSCMSPMLFSQnCrI07zhteIoQsRPtX-kxTRWm3Ejlzs4bxd-eJw9sehXjX8W8n17mUglUKM6OTk72Iswb1iQ4a8L6z4ANnoHLHNe_YQodpVry8zFT8Pu7-8PdfccNbnDvKNVyvxvjHvR3D4a7B44b3uDeUarlvhjjHvZ3D4e7h447u8G9o1TL_f5_bZ4PMBvUhcw1Xmygj0_2qs2EIsVmjWlZqh2-KbmrMc3ja52rXwjUpvnKmodV3nyqCrbDzBr2z8LsMuzbyR3owJoO7eFwTO-ZNTy3k-djyHfW8MJOXowh39tn5XVcE_slu2Qnp0__AgAA___4FuM7 query T EXPLAIN (DISTSQL) SELECT sum((a-1)*1000 + (b-1)*100 + (c::INT-1)*10 + (d-1)) FROM data @@ -103,7 +102,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVUGL4kwQvX-_oqlTMtMh6SQ6Tp-UGT8IqDOrLiwsHnrswhU07XZH2EX870sSBhOZ6WTJXswpVdWvX71XDXUC83MHHMbfXiejZEac52SxXHyZuGQxnoyflsQc907-CeIR5pI7woIgcMk9cZy3SsotU2vOk9lycCmUeVkkXPL__GVKpMgEUEiVxJnYowH-HRhQCIFCBBRioNCDFYWDVms0Run8yKkAJPIX8IDCNj0cszy9orBWGoGfINtmOwQOS_G2wzkKidoPgILETGx3BU1OPTzo7V7o30BhcRCp4cTzGRGpJIyo7AdqoDDHVKLmJBc-ZB7jpSz3Lhf_Htw7zjCs197_i1pUBrUTlQPDuKg8j5-S6WjiwupMQR2ziy6TiQ0CZ2faXvtos9G4EZnSfq8uffF16gzZ5zThpzSX24-p0hI1ytrVq7O9ERb8XSdRrRPWftiszbB95vnhzYy7QX3F5X6XcYftTQ5bmRx6fnQzJjeor5j80MXkqL3JUSuTI8-Pb8bkBvUVkwddTI7bmxy3Mjn2_N7NmNygvmLy47_aDh_QzNEcVGrwakt8fHOQbw-UGyxXjVFHvcZXrdYFTRm-FLgiIdFkZZWVQZKWpbzBKphZwWENzK7BoZ25gTqyomM7OO7Sd88K7tuZ-12YH6zggZ150IX50T6roOGZ2B_ZNffq_N-fAAAA__9ghWKm +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlVGL2kAQx9_7KZZ5Su42JJvEOy9PimchoN5VLRSKD2t2sIJm7W4CLeJ3L0k4TORuY5u-6JMzs__9z_4yMEfQP3cQwfjb62QYz4j1HC-Wiy8TmyzGk_FoSXS-t4ofJw5hNrkjzPM8m9wTy1rXUnaVSqIoni3750KVF2XCJp_nL1MieMaBQioFzvgeNUTfgQEFHygEQCEECj1YUTgomaDWUhVHjqUgFr8g8ihs00OeFekVhUQqhOgI2TbbIUSw5OsdzpELVK4HFARmfLsrbQrrwUFt91z9Bgojucv3qY4Ip2RNSUKJAAqLAy9yjssITwVhRGY_UAGFOaYCVUQKHAPmsKh6rH1XIHkL7i1r4Ddrb__LWlAFjRO1A4OwrDyPR_F0OLFhdaIg8-z8Wp3xDULETvR6IsPNRuGGZ1K5vSaQxdepNWAf2_gf2pxvz1OpBCoUjatXJ3MjzPu7ToJGJ-z6EWD_PgIuc1z_ZoaghUmN_UOXIfCvR-93QO87bnAz6FuY1NA_dkEfXI8-6IA-cNzwZtC3MKmh73dBH16PPuyAPnTc3s2gb2FSQ__0v7bOOzZz1AeZarzYPu_f7BVbCcUGqxWmZa4SfFUyKW2q8KXUlQmBOquqrAritCoVDdbFzCj2G2J2KfbNzi3WgVEdmsVhl757RvGD2fmhi_OjUdw3O_e7OD-Zv5XXMibmIbv0Xp0-_QkAAP__LqCBIw== query T EXPLAIN (DISTSQL) SELECT sum(a), count(a), max(a) FROM data @@ -118,7 +117,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF2L2kAUhu_7K4ZzFWEkThJ33VwpWwuCH1ujdKHIMs0cUkEz6cwEtoj_vSSBbpR1EgjeORnfPC_PCecE-s8BQpi-vswnsyVxvs6iTfR93iPRdD593hCdHx3eoySWeWrKX0f-7vAe-bZeLYjghgOFVApc8iNqCH8CAwoeUPCBQgAUhrCjkCkZo9ZSFX85lYGZeIdwQGGfZrkpHu8oxFIhhCcwe3NACGHDfx1wjVygcgdAQaDh-0OJKdDjTO2PXP0FClHGUx2SvssITwVhRJrfqIDCKjchGTPYnSnI3HywtOEJQsjOtH2fSZIoTLiRyh1e1om2C2fMekDhebVdbt7Wqx-RUxwXk9fy4hbfu8n_wOapVAIVigvm7mxvyAa3KkbbxdtsuXHG3v-G_u2G_kVD1n5irM3EXNZ3vU4za2hUM_Jwl5l57Y14rYx4fdfvZKShUc3I412M-O2N-K2M-H036GSkoVHNyOguRoL2RoJWRoK-O-xkpKFRzcjT3TfdJ_w16kymGq823udvHhSbEEWC1drUMlcxvigZl5jquCpz5QOB2lS3rDrM0uqqKFgPM2vYuwiz67BnJzegfWs6sIeDLr2H1vCDnfzQhfxoDY_s5FEX8pN9VoOGz8T-kV2zd-cv_wIAAP__TJ4EgA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF2L2kAUhu_7K4ZzFWEkThJ33VwpWwuCH1ujdKHIMnUOVjCZdGYCW8T_XpJAN8o6iYp3mYyvz8tzwtmD_rODEIavL-PBaEqcr6NoEX0ft0g0HA-fF0RnscNblKxllpjiKebvDm-Rb_PZhAhuOFBIpMApj1FD-BMYUPCAgg8UAqDQhRWFVMk1ai1V_pN9ERiJdwg7FLZJmpn89YrCWiqEcA9ma3YIISz4rx3OkQtUbgcoCDR8uyswObqfqm3M1V-g8Cx3WZzokOR9opTnj22XEZ4Iwog0v1HB6kBBZuYDpw3fIITsQJtXGmw2CjfcSOV2jxtFy4nTZ628zGw5XbzNZz8iJz9OBq_FxTm-d5b_gc0SqQQqFEfM1cHekHXOVYyWk7fRdOH0vf8N_fMN_aOGrPnQ2MVDc1nb9a4YW02pipSHu4zNay7Fu1yK13b9K6TUlKpIebyLFL-5FP9yKX7bDa6QUlOqIqV3FylBcynB5VKCttu9QkpNqYqUp7tvvU_4c9SpTDSebL_P_7mTb0UUGyxXqJaZWuOLkusCUx5nRa54IVCb8paVh1FSXuUFq2FmDXtHYXYa9uzkGrRvTQf2cHBL7641_GAnP9xCfrSGe3Zy7xbyk31WnZrPxP6RnbJXhy__AgAA__92gAx9 query T EXPLAIN (DISTSQL) SELECT sum(a+b), count(a+b), max(a+b) FROM data @@ -135,7 +134,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF1r4kAUhu_3VwznSulInEm0NldK1wXBj65RtrBImToHV9CMOzOBLuJ_X5KUNkqdBNQ7J-Ob5-U54ezB_N1ACP3np2FvMCa174NoFv0c1knUH_YfZ8Qk25ogd-S1TslSJbH9OG3F2_tv8mM6GREprAAKsZI4Fls0EP4GBhQ4UPCBQgAUWrCgsNNqicYonf5lnwUG8g3CJoV1vEts-nhBYak0QrgHu7YbhBBm4nWDUxQStdcEChKtWG8yTIru7vR6K_Q_oBDtRGxC0vAYEbEkjCj7BzVQmGIsUYeky-66HBYHCiqxn0RjxQohZAdavVVvtdK4ElZpr3VcKpqPal1WBwqPk_l49jKd_Ipq6XHUe84uzvH5Wf4nNomVlqhRHjEXB3dD1jxXMZqPXgbjWa3LPxr65xv6Rw1Z9bmxKnPzWMPjV5hcSa-Cl_ZNJsere-GVvPCG51_BS0mvgpf7m3jxq3vxK3nxG15wBS8lvQpeOjfxElT3ElTyEjS81hW8lPQqeHm4-Qb8gj9Fs1OxwZNN-PWbm-mGRLnCfJ0aleglPmm1zDD5cZLlsgcSjc1vWX4YxPlVWrAYZs4wPwqz0zB3k0vQvjMduMPBJb1bznDbTW5fQr53hjtucucS8oN7Vs2Sz8T9kZ2yF4dv_wMAAP__anEPwA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF2L4jwUx--fTxHOlTKRmrQ6Tq-UeVwQfJm1yg4sMkRzcAVt3CSFWcTvvrQuM1XGtPhy52n89__jd0p2YH6vIYTu60u_0xuSyv-9aBJ971dJ1O13nyfEJJuKIA9kXqVkoZLYfkwb8f7vN_k2Hg2IFFYAhVhJHIoNGgh_AgMKHCj4QCEACg2YUdhqtUBjlE7_sssCPfkOYZ3CKt4mNn08o7BQGiHcgV3ZNUIIEzFf4xiFRO3VgYJEK1brrCatbm_1aiP0H6DwrNbJJjYhEZTMgUK0FelU8xgRsSSMKPsLNVAYYyxRh6TNHtocZnsKKrGfBMaKJULI9rQ8ZWe51LgUVmmvcQwZTQeVNqumfKPpcPI2Hv2IKuk46LxmB-f6-dn-z9okVlqiRnnUOdu7CVn9HGI0Hbz1hpNKm38Q-ucJ_SNCVn6P7JI9eqzm8RtssoAz56l5l03y8p74RZ54zfNv4KmAM-fp8S6e_PKe_Is8-TUvuIGnAs6cp9ZdPAXlPQUXeQpqXuMGngo4c56e7n6DftE_RrNVscGTm_TrN9fTGxblEg_XsVGJXuCLVous5jCOslz2QKKxh1N2GHrx4SgFzIeZM8yPwuw0zN3NBdW-Mx24w8E13A1nuOlubl7T_OgMt9zNrWuan9y7qhd8Ju6P7LR7tv_vbwAAAP__c6knYg== query T EXPLAIN (DISTSQL) SELECT sum((a-1)*1000) + sum((b-1)*100) + sum((c::INT-1)*10) + sum(d-1) FROM data @@ -154,7 +153,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVdGK2kAUfe9XDPcpWSckk8RdN09Zdi0E1N2qhULxYda5WEEzdiZCi_jvJUnRRNZJqFh8m7knJ-eeMxfuDvTPFUTQ__Y2eEpGxHpJJtPJl4FNJv1B_3lKLEtv15bFiUOYTe4I8zzPJh1SVN8rVftQnUdRMpr2jtgBEmXt8_h1SATPOFBIpcARX6OG6DswoOADhQAohEChCzMKGyXnqLVU-Se7gpCIXxB5FJbpZpvl5RmFuVQI0Q6yZbZCiGDK31c4Ri5QuR5QEJjx5aqQyaXjjVquufoNFCYbnuqIOC4jPBWEEZn9QAUUxpgKVBGxYuawqHRl3-UJ_L1QYsV-HaogQXms4Qc4Dov6S_85GT4NYLanILfZ0Y7O-AIhYnva3vLTYqFwwTOp3G7d8eTr0IqZnZvNT_7hFBxOoX22Cf9sE0ftbSqVQIWiJjzbm9tk3r_0eXyZOOxYcdCxYtaJffu8g6DmgLWfHNZmclzmuP6tz06D6cqj3F9vdvz2yfutkvcdN7j15BtMV5J_uF7yQfvkg1bJB44b3nryDaYryfeul3zYPvmwVfKh43ZvPfkG05XkH__PpvqgiTHqjUw1nmysj__s5ZsMxQLLtaflVs3xTcl5IVNeXwteURCosxJl5SVJSyhvsEpmRrJfI7NTsm9WbpAOjOzQTA4v6btrJN-ble8vUX4wkntm5d4lyo_mt_IaxsQ8ZKfas_2nPwEAAP__pG2Lvg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlUGL4kwQhu_fr2jqlIwdkk6i4-QUcfwgoM6surCweGjThSto2u0ksIv435ckiyYyJjLBxVt3Vd68VfUU9AHin1vwYPTtfTwIpkR7DeaL-ZexTuaj8Wi4IJoWpztN48QgTCdPhFmWpZMOyaOrUlQ_RUPPC6aL_jl3Soki9v_sbUIETzhQiKTAKd9hDN53YEDBBgoOUHCBQheWFPZKhhjHUmWfHHJBIH6BZ1HYRPs0ycJLCqFUCN4Bkk2yRfBgwVdbnCEXqEwLKAhM-Gab22TW_l5tdlz9BgpDuU13UewRTsmKkpASARTme57FDJMRHgnCiEx-oAIKM4wEKo9oPjOYV_SqP2Vz-XuhRPPtaqqUcYpjJX9K-24efx0Ng8lgDMsjBZkm5ybjhK8RPHaktw9isF4rXPNEKrNbncP860TzmZ41m53s08k5nVz9ahH21SLO3mkklUCFomK8PNaXyazP1Hkm47sdzXc6ms86vq1f78CpdMBu3yf2-X0ymWHaj75RDaMooerdb6Ps23nYLXjYhuk8Oo-GUZR4PN-Ph3M7D6cFD8cw3Ufn0TCKEo_-_Xi4t_NwW_BwDbP76DwaRlHi8fJvXsAPiphhvJdRjBcv4cd_trIXEsUai-c0lqkK8V3JMLcprm-5Lg8IjJMiy4pLEBWprMCymNWK7YqYXYrteucGa6dW7daL3TZ1d2vFvXrnXhvn51pxv96538b5pZ6V1bAm9Ut26b08_vcnAAD__3X0qjs= query T EXPLAIN (DISTSQL) SELECT sum(a), min(b), max(c), count(d) FROM data @@ -169,7 +168,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF2L2kAUhu_7K4ZzlcBInCS6bq4iWwsBP7ZG6UKRZTZzsIJm7MwEtoj_vSRerMo6SVF7ZT588z48Zzg70L_XEMHg5XnYT8bE-Zqks_T70CXpYDh4mhFdbBzuUrJZ5c5b-cvfncylJJNFbhzhkm_TyYgIbjhQyKXAMd-ghugnMKDgA4UAKIRAoQMLClslM9RaqvIvuyqQiHeI2hRW-bYw5eMFhUwqhGgHZmXWCBHM-Nsap8gFKq8NFAQavlpXNWV1vFWrDVd_gEK65bmOSMtjhOeCMCLNL1RAYVKYiMSMxj6NA1jsKcjCfDRqw5cIEdvT5lT95VLhkhupvM4pVDofOTFzgcIoGTuxX131X5w4KK-eJvPx7HU6-ZE67kUS_yLJB0CRSyVQoThpX-ztrKz9L7DpfPSajGdOHF5mDU5YWfNZsiaz9FjL828wzRquI0PdO0_Tb27Ib2TIb3nBDQzVcB0ZerizoaC5oaCRoaDlhTcwVMN1ZKh3Z0Nhc0NhI0Nhy-vcwFAN15Ghx_-4Mz8hmaLeylzj2e78_MvtcqeiWOJhAWtZqAyflcyqmsPtpMpVDwRqc3jLDjdJfnhVAh6HmTXsn4TZedi3N9dUB9Z0aA-H13B3rOGuvbl7TfODNdyzN_euaX60z6pdc0zsh-y8e7H_8jcAAP__VMIZjw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF2L2kAUhu_7K4ZzlcBInCS6bq4UayHgx9YoXSiyjJmDFTRjZyawRfzvJfFiVdaJjdgrk4lv3ofnhLMH_XsDEQxeX4a9eEycr3EyS74PXZIMhoP-jOh863CXku06c5bFL393UpeSVOaZcYRLvk0nIyK44UAhkwLHfIsaop_AgIIPFAKgEAKFFiwo7JRMUWupir_sy0As3iFqUlhnu9wUxwsKqVQI0R7M2mwQIpjx5QanyAUqrwkUBBq-3pQ1RXV3p9Zbrv4Ahb7c5NtMR4RTsqQkBQrJjhcHDY8RngnCiDS_UMHiQEHm5qNUG75CiNiB3g7WW60UrriRymudcyXzkdNlLlAYxWOn65dXvVenGxRX_cl8PHubTn4kjnuVxL9K8gGQZ1IJVCjO2hcHOytr_gtsMh-9xeOZ0w2vswZnrOz2cbKa4_RYw_NrDLQC7URS-8ED9W-X5NeV5De8oIakCrQTSU8PlhTcLimoKyloeGENSRVoJ5I6D5YU3i4prCspbHitGpIq0E4kPf_H_fkJyRT1TmYaL_bo529uFvsVxQqPy1jLXKX4omRa1hxvJ2WuPBCozfEpO97E2fFRAXgaZtawfxZml2Hf3lxRHVjToT0c3sPdsobb9ub2Pc1P1nDH3ty5p_nZPqtmxWdi_8guuxeHL38DAAD__1DlIiw= # AVG is more tricky: we do two aggregations (for the sum and for the count) # and calculate the average at the end. @@ -188,7 +187,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF2L2kAUhu_7K4ZzleBInEl03Vxl2VoI-LE1CoUiZdY5pIKbsZOxtIj_vSQWNso6CWju8uHr8-Y5wzlA_msLIYy-vYyf4ilxPsfJIvk6dkkyGo-eF0T8Th3HEaRDXl3SIeswjKeLYXEpXfJlPpsQKYwACpmSOBVvmEP4HRhQ4EDBBwoBUOjDisJOqzXmudLFTw5lIJZ_IOxR2GS7vSkeryislUYID2A2ZosQwkK8bnGOQqL2ekBBohGbbYkp0NFOb96E_gsUkp3I8pB0PUZEJgkjyvxEDRTmmEnUIYmCjuNErBNxtxP5_z8FVkcKam_eG-RGpAghO9LmLZ_SVGMqjNJe_7xkspw4EXOBwvNsOV2U19eQ_CrynbTPlJaoUZ5hVkd7Kda71ipZTn7ERS_uVlUxL-JXe_pnPVnzAbImA_RY1-MtjLCmZ8XW4F4j5M3V8EZqeNfzW1BT07Oi5uFeavzmavxGavyuF7SgpqZnRc3wXmqC5mqCRmqCrtdvQU1Nz4qaxzZ24gfIOeY7leV4sRs__udesTNRpnhasLna6zW-aLUuMafbWZkrH0jMzektO93E2elVUbAaZtYwPwuzyzC3k2vQvjUd2MPBLb371vDATh7cQn6whod28vAW8qN9Vr2aY2I_ZJfs1fHTvwAAAP__eg0PVQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF-L2kwUxu_fTzGcqwRH4kyi6-Yqy74WAv7ZGoVCkTJmDqmgGTuJpUX87iWxsFHWiTTmLpn4-PzyO-EcIfuxBR9GX97GL-GUWP-H0SL6PLZJNBqPXhdE_EwsyxKkQ9Y26ZDY98PpYlhcSpt8ms8mRIpcAIVUSZyKHWbgfwUGFDhQcIGCBxT6sKKw1yrGLFO6-MmxDITyF_g9Cpt0f8iL4xWFWGkE_wj5Jt8i-LAQ6y3OUUjUTg8oSMzFZlvWFNXBXm92Qv8GCq9qe9ilmU8EJWtKYkokUIj2ojjrOoyIVBJGVP4dNVCYYypR-yTwOpYVsE7A7U7g_n1BWJ0oqEP-zpXlIkHw2Ynez_6SJBoTkSvt9C_Ro-XECphdUM-W00V5fauS36x8bzqkSkvUKC9qViczFOvdooqWk29hwcXtqirmBPwmp3vBye4fK_v3sTqs6_AWBltDX3E4eNRg-f3CeANhvOu4LQiroa8Ie3qUMPd-YW4DYW7X8VoQVkNfETZ8lDDvfmFeA2Fe1-m3IKyGviLsuY1d-0HlHLO9SjO82rkf_3Ov2MUoEzwv7kwddIxvWsVlzfl2VubKA4lZfn7Kzjdhen5UAFbDzBjmF2F2Hebm5ppq15j2zGGvCXffGB6YmwdNmp-M4aG5edik-dk8q17NZ2L-yK67V6f__gQAAP__jxct0g== # VARIANCE/STDDEV have three local (sqrdiff, sum, and count) and one final stage aggregations. # We calculate and render the variance/stddev at the end. @@ -207,7 +206,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF-L4jwUxu_fTxHOVYVITVpnnF51GBUKjs7YzsvCIkvGHFxBGzdJl13E7760LozKmBaKe5c_ffo8-Z3D2YP5sYEIRl9eJo_JlHjDJM3S10mHpKPJ6Ckjpth6okOJVkUuPWOlxJ_ee4cS1iHj-eyZSGEFUMiVxKnYooHoKzCgwIFCABRCoNCHBYWdVks0Runyk30lSOQviHoU1vmusOXxgsJSaYRoD3ZtNwgRZOJ9g3MUErXfAwoSrVhvKpvSOt7p9Vbo30Ah3YncRKTrMyJySRhR9jtqoDArbERiRmMOiwMFVdgPO2PFCiFiB9o80uNqpXElrNJ-_zxR-vbsxaxThnmdD5Px2It5tSvPq9XT7G2aVetrUfjVKB8JilxpiRrlmf3i4A7LetfSjpPp4-Rbmg2Ho_-9mNM4oHFYXswxl6gren9bIOaURVGUTLPB9TcEZ29gzSvMmlTYZ12ft61xTagTbHe3rjFvzoc34sO7ftCWT02oEz73t-YTNOcTNOITdP2wLZ-aUCd8BrfmEzbnEzbiE3b9fls-NaFO-Dz8yxn6SZQ5mp3KDV7M0s__3CtnLMoVHgeyUYVe4otWy8rmuJ1VuupAorHHW3bcJPnxqgx4KmZOMT8Ts0sxdzvXWAdOdegWh21y953iO7fzXRvne6d44HYetHF-cNeqV9Mm7ia79F4c_vsTAAD__6KHHKU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF-L4jwUxu_fTxHOVYVITVsdp1cV_0DB0RnbeVlYZInm4ArauEm67CJ-96WVZVTGVCruXU7Sp8-T3wlnD_rHBkIYfnkd9-IJcQZxkiZv4wZJhuNhPyU63zq8QYmSeSYcbYTAn86iQQlrkNFs-kIENxwoZFLghG9RQ_gVGFDwgIIPFAKg0IY5hZ2SS9RaquKTfSmIxS8IWxTW2S43xfacwlIqhHAPZm02CCGkfLHBGXKBym0BBYGGrzelTWEd7dR6y9VvoNCXm3yb6ZBwShZAIdnxomq6jPBMEEak-Y4K5gcKMjcfjtrwFULIDvT2VL3VSuGKG6nc9nmo5P3FiVij8H-bDeLRyIm8sir2y1V_-j5Jy_W1KN7VKB8J8kwqgQrFmf38YA_LWtfSjuJJb_wtSQeD4f9O5NHIp1FQHMwwE6hCErG_ryDyKAvDMJ6k3et38M_uwG5vMqvTZJc1Xa9GmytynZDrPLrN3u2IvFqIvKbr10BUkesE0dOjEfm3I_JrIfKbblADUUWuE0TdRyMKbkcU1EIUNN12DUQVuU4QPf_LefpJlBnqncw0XszVz__cKuYtihUeh7OWuVriq5LL0uZYTktduSFQm-MpOxZxdjwqAp6KmVXsnYnZpdizO1dY-1Z1YBcH9-RuW8Udu3PnHucnq7hrd-7e4_xs71Wr4pnYH9ml9_zw358AAAD___c5JPI= query T EXPLAIN (DISTSQL) SELECT sum(a), round(variance(b), 1) FROM data @@ -224,7 +223,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF-L4jwUxu_fTxHOVYVITVpnnF5VZhQKTp2pzsvCIkvGHFxBGzdJl13E7760LozKmBaKe5c_ffo8-Z3D2YP5sYEIRl9eJsMkJd5TMpvPXicdMhtNRo9zYoqtJzqUaFXk0vsp9FrkS_TeO5SwDhln02cihRVAIVcSU7FFA9FXYECBA4UAKIRAoQ8LCjutlmiM0uUn-0qQyF8Q9Sis811hy-MFhaXSCNEe7NpuECKYi_cNZigkar8HFCRasd5UNqV1vNPrrdC_gcJsJ3ITka7PiMglYUTZ76iBwrSwEYkZjTksDhRUYT_sjBUrhIgdaPNIw9VK40pYpf3-eaLZ27MXs04Z5jV7SsZjL-bVrjyvVo_Tt3Rera9F4VejfCQocqUlapRn9ouDOyzrXUs7TtLh5Nv_wywZpo8jL-Y0DmgcllcZ5hJ1xe9vG8ScsiiKknQ-uP6K4OwVrHmNWZMa-6zr87ZVrgl1Au7u1lXmzfnwRnx41w_a8qkJdcLn_tZ8guZ8gkZ8gq4ftuVTE-qEz-DWfMLmfMJGfMKu32_LpybUCZ-HfzlFP4mSodmp3ODFNP38z71yyqJc4XEkG1XoJb5otaxsjttppasOJBp7vGXHTZIfr8qAp2LmFPMzMbsUc7dzjXXgVIducdgmd98pvnM737VxvneKB27nQRvnB3etejVt4m6yS-_F4b8_AQAA__8iOB3j +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lFGL4jAUhd_3V4T7VCFS01bHyVPFUSg4daY6y8IiSzQXV9DGTdplF_G_L60sozKmUnHecpOenpPvhrsD82sNHAbfXka9KCbOUzSZTl5HDTIZjAb9KTH5xhENSrTKU-n8Fnol0gU68wYlrEGGyfiZSJEJoJAqibHYoAH-HRhQ8ICCDxQCoNCGGYWtVgs0Runik10piOQf4C0Kq3SbZ8X2jMJCaQS-g2yVrRE4TMV8jQkKidptAQWJmVitS5vCOtzq1Ubov0Chr9b5JjWcCErmQGGyFUXVdBkRqSSMqOwnapjtKag8e3c0mVgicLan16fqLZcalyJT2m2fhpq8PTshaxT-r8lTNBw6oVdWxX656o_f4mm5vhTFuxjlPUGeKi1Rozyxn-3tYVnrUtphFPdGP772kqgX9wdO6NHQp2FQHCWYStSchOz_Swg9yjjnUTztXr6Ff3ILdn2bWZ02u6zpejUaXZHriF3n3o32rkfk1ULkNV2_BqKKXEeIHu6NyL8ekV8Lkd90gxqIKnIdIereG1FwPaKgFqKg6bZrIKrIdYTo8TMn6gdREjRblRo8m6wf_7lVTFyUSzyMZ6NyvcAXrRalzaEcl7pyQ6LJDqfsUETp4agIeCxmVrF3ImbnYs_uXGHtW9WBXRzckrttFXfszp1bnB-s4q7duXuL86O9V62KZ2J_ZOfes_2XfwEAAP__i2EmMA== query T EXPLAIN (DISTSQL) SELECT stddev(a+b+c::INT+d) FROM data @@ -241,7 +240,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNFq4kAUhu_3KYZzFXEkThKtzVWkKgSstiZdFhZZps7BFWzGnRmXXcR3L4mFRqmTgORukvj7f_lOOAfQf7YQwvjH03QYz4gzipM0eZ62SDKejh9Soo0Q-NdxHE7a5LVF2mQVhvEsHeRH0SKTxfyRCG44UMikwBl_Qw3hT2BAwQMKPlAIgEIPlhR2Sq5Qa6nynxyKQCz-QdilsMl2e5PfXlJYSYUQHsBszBYhhJS_bnGBXKByu0BBoOGbbVGTV0c7tXnj6j9QSHY80yHpuIzwTBBGpPmNCigsMBOoQhIFbceJWDvyWu3I_3gVWB4pyL35JNCGrxFCdqT1KYfrtcI1N1K5vXPI5HkxiicTJ2KtnPHl8eP0MH-ZpcX5GoB3FeCzd59JJVChOCtdHu2I7ELkJJ4Np7-SdDQaf3ciRiOPRv51MP8MjNWfH6szP5d1XK-BCVZwlvT0m5mgV1-UV0uU13H9BkRVcJZE3TUjyq8vyq8lyu-4QQOiKjhLogbNiArqiwpqiQo6bq8BURWcJVH3zS_PLwAWqHcy03ixRL_-526-XFGs8bSJtdyrFT4puSpqTpfzIlfcEKjN6Sk7XcTZ6VEOWA4za9g7C7PLsGdvrqj2renAHg5u4e5Zw317c_-W5jtreGBvHtzSfG-fVbfiM7F_ZJfdy-O39wAAAP__0akdEw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNGK4jAUhu_3KcK5qhipaeuM06sOo0LB0RnbWRYWWWJzcAVt3CQuu4jvvrQOjMqYypbepam__9fvhOxB_1pDCMNvL-PHeEKcQZykyeu4RZLhePiUEm2EwN-O43DSJosWaZMsDONJ2i-WokVGs-kzEdxwoJBLgRO-QQ3hd2BAwQMKPlAIgEIP5hS2SmaotVTFT_ZlIBZ_IOxSWOXbnSm25xQyqRDCPZiVWSOEkPLFGmfIBSq3CxQEGr5alzVFdbRVqw1Xf4HCk1zvNrkOCadkQUlGiQAKyZYXex2XEZ4Lwog0P1EBhRnmAlVIoqDtOBFrR16rHfnvHwjzAwW5Mx9c2vAlQsgO9Hb2x-VS4ZIbqdzeOXryOhvEo5ETsVbB-Pb8vnqavk3Scn0NwLsK8NG7y6USqFCclc4PdkR2oXcUTx7HP5J0MBh-dSJGI49G_nUw_wyM3T5V9v9TdVnH9RqYawX9ibS7Zubq3a7Pq6HP67h-A_oq6E_03Tejz79dn19Dn99xgwb0VdCf6Os3oy-4XV9QQ1_QcXsN6KugP9H30Pyl_AnADPVW5hovLufP_7lbXNoolni84bXcqQxflMzKmuPjtMyVGwK1Ob5lx4c4P74qAE_DzBr2zsLsMuzZmyuqfWs6sIeDOtw9a_jO3nxXp_neGu7bm_t1mh_ss-pWHBP7Ibvsnh--_AsAAP__liM7kA== query T EXPLAIN (DISTSQL) SELECT variance(a+b+c::INT+d) FROM data @@ -258,7 +257,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNFq4kAUhu_3KYZzFXEkThKtzVXEKgRsbKNdFhZZppmDK9iMOzMuu4jvXhILVamTgORukvj7f_lOOHvQfzYQwvjH03QYJ8R5iOeL-fO0Rebj6Xi0IH-5WvM8Q8dxOGmT1xZpkywM42QxKI6iRSbp7JEIbjhQyKXAhL-hhvAnMKDgAQUfKARAoQdLClslM9RaquIn-zIQi38Qdims8-3OFLeXFDKpEMI9mLXZIISw4K8bTJELVG4XKAg0fL0pa4rqaKvWb1z9BwrzLc91SDouIzwXhBFpfqMCCinmAlVIoqDtOBFrR16rHfkfrwLLAwW5M58E2vAVQsgOtD7lcLVSuOJGKrd3Djl_Th_iycSJWKtgfHn8OI1mL8miPF8D8K4CfPbucqkEKhRnpcuDHZFdiJzEyXD66_swjYfJaOxEjEYejfzraP4ZGqs_QVZngi7ruF4DM6zgPBHUb2aGXn1RXi1RXsf1GxBVwXki6q4ZUX59UX4tUX7HDRoQVcF5ImrQjKigvqiglqig4_YaEFXBeSLqvvn1-QVAinorc40Xa_Trf-4W6xXFCo-7WMudyvBJyaysOV7Oylx5Q6A2x6fseBHnx0cF4GmYWcPeWZhdhj17c0W1b00H9nBwC3fPGu7bm_u3NN9ZwwN78-CW5nv7rLoVn4n9I7vsXh6-vQcAAP__V8ceUQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lNGK4jAUhu_3KcK5qhipaavj9KriKBScOlOdZWGRJTYHV9DGTeOyi_juS-vAqIxp2dK7NPX3__qdkCNkv7bgw_jby3QYRsR6CueL-eu0Rebj6Xi0IL-52vA0QcuyOGmTVYu0SeL7YbQY5EvRIpN49kwE1xwopFJgxHeYgf8dGFBwgIILFDyg0IMlhb2SCWaZVPlPjkUgFH_A71LYpPuDzreXFBKpEPwj6I3eIviw4KstxsgFKrsLFARqvtkWNXl1sFebHVd_gcJIbg-7NPMJp2RFSUKJAArzPc_3OjYjPBWEEal_ogIKMaYClU8Cr21ZAWsHTqsduO8fCMsTBXnQH1yZ5msEn51odfbheq1wzbVUdu8aff4aP4WTiRWwVs749vy-Gs3eokWxvgfg3AX46D2kUglUKK5KlyczIrvROwmj4fTH12EcDqPR2AoYDRwauPfR3Cs0Vn2u7P_narOO7TQw2RL6C239ZibrVNfn1NDndGy3AX0l9Bf6HprR51bX59bQ53ZsrwF9JfQX-gbN6POq6_Nq6PM6dq8BfSX0F_oem7-WPwGIMdvLNMOb6_nzf-7m1zaKNZ7v-EweVIIvSiZFzflxVuSKDYGZPr9l54cwPb_KAS_DzBh2rsLsNuyYm0uqXWPaM4e9Otw9Y7hvbu7XaX4whgfm5kGd5kfzrLolx8R8yG67l6cv_wIAAP__pi08zg== # Regression aggregate functions have two local, and one final stage aggregations. # Calculation and rendering are happening at the end. @@ -275,7 +274,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lFGL2kwUhu-_XzGcK4WROEl03VwZ9stKwBqbhFIoItPMwQpuJp0ZS4v430v0YlXWSSDYO5PxzfvwnOEcQP_cQQDR1-U8jBek93-c5dnneZ9k0Tx6yUkhf3G1rmTV45QUffKaJp-I4IYDhVIKXPA31BB8AwYUXKDgAQUfKIxgRaFSskCtpar_cjgFYvEbgiGFbVntTf16RaGQCiE4gNmaHUIAOf--wxS5QOUMgYJAw7e7U01dPa3U9o2rP0Ahq3ipAzJwGOGlIIxI8wMVUEj2JiBTRqcerI4U5N6812nDNwgBO9L2SOFmo3DDjVTO6JooT8NFFudxslin0SyNsqz-Gc5maTQL86hXQ7j9uxTuXYr38n0plUCF4qp5dbRzsht1r_EinK9fki9hul4my96U3afyrqhY-3GxNuNy2MBxuw6sAepCxPiBA3Pbq3FbqXEHjtdVTQPUhZqnB6rx2qvxWqnxBo7fVU0D1IWayQPV-O3V-K3U-ANn1FVNA9SFmud_tAE_oEhRV7LUeLMJP_7ysN6QKDZ4Xqda7lWBSyWLU835MTnlTi8EanM-ZeeHuDwf1YCXYWYNu1dhdht27c0N1Z417dvDfhfukTU8tjePuzQ_WcMTe_OkS_OzfVbDhmtiv2S33avjf38DAAD__wRDEgo= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lEGr2kwUhvffrxjOSmEkThK93qwMfrkSsGqTUApFZJo5WEEz6cxYWsT_XqKLq3KdSMTunMQ378NzhrMH_XMDAURf55MwnpLW_3GapZ8nbZJGk2iUkVz-4mpZyrLFKcnb5C2ZfSKCGw4UCilwyreoIfgGDCi4QMEDCj5Q6MGCQqlkjlpLVf1lfwzE4jcEXQrrotyZ6vGCQi4VQrAHszYbhAAy_n2DCXKByukCBYGGrzfHmqp6WKr1lqs_QGEkN7ttoQNS0QGFtOTVqeMwwgtBGJHmBypYHCjInXlv1IavEAJ2oPdThauVwhU3Ujm9S6gsCadpnMWz6TKJxkmUptXPcDxOonGYRa0ho0O3fZPCvUnxXr4rpBKoUFw0Lw52TnZl7y2ehpPlaPYlTJbz2bw1ZLepvAsqdv_EWJOJOazjuA1mVsN15qL_xJm599txG9lxO47XwE4N15mdlyfa8e634zWy43Ucv4GdGq4zO4Mn2vHvt-M3suN3nF4DOzVcZ3Ze_9E2_IAiQV3KQuPVVvz4y91qW6JY4Wm1arlTOc6VzI81p-PsmDs-EKjN6S07HeLi9KoCPA8za9i9CLPrsGtvrqn2rGnfHvYf4e5Zw317c_-R5hdreGBvHjzS_GqfVbfmmtgv2XX34vDf3wAAAP__7i0aVw== # Test various combinations of aggregation functions and verify that the # aggregation processors are set up correctly. @@ -294,7 +293,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVl2r8jgQvt9fEeaqYqSmrV-9StEqBd_q2_YcFhaRnDa4grZuWmWXg_99SetHlXNq4YAXXrTMZGbyPJNnAvmE9J8NmGD_OZ9ajouUkeMH_u9pA_n21B4GKN1vFdbAiB1WykcD53548iPpZ1HED3lKYS5Ttt2V_V1SuAcm1iwOeb7NgYki8ezIrPP-isJQE300UBOFpum4QV-aEi1MzrkMo7CBxt7sF4pYxgBDnETcZVuegvkXEMCgAQYdMBiAoQMLDDuRhDxNEyFTPvMCJ_oXzDaGdbzbZ3J5gSFMBAfzE7J1tuFgQsA-NtzjLOJCbQOGiGdsvclhJDTdifWWif8Ag79jcWqilkoQiyNEUJL9zQVg8HgccWEiajQVhZIm1RpNqp96w4gSjKiGEdUxogYsjhiSfXZllGZsxcEkR1yftbVaCb5iWSLUzi1p_-2XQrWG5CstXVrD2ZsbnOx81bhYnVI8t_3f3sgZj097nCLaTeS6D5FW4Fmu7wTOzF169sSzfV-a1mTi2RMrsBWqYQn4Xd_at31f293HiYi44NFNr4tj9cmQ9hdHQy7kz4e0dCoP55LRld7Yca3p0g9GI_tdoT1MCab9-8ByPpt_EXy3PMdyh7ZCB1gein4TKopKkYJu-5o0nF3SSN7GZfDyCVOLAcOIdlTaxYj2Tl8fIzo4faQtfzKfaN9Kot9IQupfIFLnAqmkpWpPuEIPeJcGpftSV0irr5dWSy-tpepP0OsB75JevZfSS6-vl15LL72lGk_Q6wHvkl79l9LLqK-XUUsvo6V2nqDXA94lvQYvpdeDp5TH010Sp_zuafH1zm355ODRihfvkzTZi5DPRRLmMIU7y-vyhYinWRElhePERUgSLBeTymLtppjcF2vVyA-g9cpqo7rY-AnvTmVxtxq5-xPkXmVxvxq5_xPkQbVW7QdjUj1k99iL4x__BwAA__9T5B0I +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVt-r6jgQft-_IsxTxUhNW3_1KUWrFLzV2_YeFhaR2AZX0NZNq-xy8H9f0vqjyjlVruCDDy0zmZl88-WbQD4h_WcNJth_TseW4yJl4PiB_3NcQ749tvsBSncbhdUwYvulsqjh3A-PfiT9LIr4Pk8pzHnKNtuyv00Kd8_EisUhz7fZM1EknhyZddpfURiqo0UN1VFomo4bdKUp0cLklMswCmto6E1-oIhlDDDEScRdtuEpmH8BAQwaYNABgwEYWjDDsBVJyNM0ETLlMy9won_BbGJYxdtdJpdnGMJEcDA_IVtlaw4mBGyx5h5nERdqEzBEPGOrdQ4joelWrDZM_AcY-sl6t4lTEzGMFhiFGEWAwd8yudZQCWJxhAhKsr-5AAwejyMuTESNuqJQUqdarU71I2OMKMGIahhRHSNqwOyAIdlllz7TjC05mOSAH-diLZeCL1mWCLV1TcX_9UOhWk32Ky1dWv3JLzc42vmqcbZapXhu-z-9gTMcHvc4RrSryGUfIq3As1zfCZyJO_fskWf7vjSt0cizR1ZgK1TDEvA73tq3vC90d3EiIi54dMV1dqg-GdL84mjIufnTIc2dysM5Z7SlN3Rcazz3g8HA_lBoB1OCafc2MJ9Opl8EPyzPsdy-rdAeloeiX4WKolKkaLd5SepPzmkkp3EevHzC1GLAMKItlbYxop3j18WI9o4facqfzCfat5LoV5KQx68V-f1rpZKGqr3gYt1hUxqf9ltdLO1xFbUnVNQaqv4CFe-wKanYeSsV9cdV1J9QUW-oxgtUvMOmpGL3rVQ0HlfReEJFo6G2XqDiHTYlFXtvpeKdJ5rH020Sp_zmyfL1zk35lOHRkhfvnjTZiZBPRRLmMIU7yevyhYinWRElhePERUg2WC4mlcXaVTG5Ldaqke9A65XVRnWx8UzfrcridjVy-xnkTmVxtxq5-wxyr1qr5p0xqR6yW-zZ4Y__AwAA__-nLTuF query T @@ -312,7 +311,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkVl2L4koQfb-_oqmnDrbEzoc6eeowEyXgRDfJzl24iLRJ4xU08Xai7GXwvy8dXT-GnRiYBx98slJVx9N1TjX0OxT_rcAB78dk5PoBwi9-FEffRhqKvJH3HKNiu8ZcI2i9zPBc_fKfONEISvJtVuJUI4jvFhhjjlporqEWShzHD-K-ClW1KNNU7I5lgnZcLnmWCHxsO3Yl-Y7L2Sbf4DlBqYYG4fgVpbzkQCDLUxHwtSjA-QcoEDCAgAkELCBgw5TARuaJKIpcqpb3CuCnP8HpEFhmm22p0lMCSS4FOO9QLsuVAAdiPl-JUPBUSL0DBFJR8uWqolHUbCOXay7_BwLRhmeFg9o6RTxLEUV5-a-QQCAUWSqkg5jVwpjRFjO0FjOPChBUZYiq_k6qHEFV0lQFmO4J5NvyfMqi5AsBDt2T5pO4i4UUC17mUrevB4m-v2JmaUDg1Q8ws6vI_YFZV0XP4-9BPAvHf0dYfVbN9FQ4xtG38MUfDDAzTj3GRY9x1WOeesyLniqOQzeI_NgfB7PQG4ZeFKnQHQ5Db-jGHmY2YT3tU0GMTwU567DNcpkKKdIrEab7eslo5w-a0ZNmxkmz38PNfDWUdRrVvspXyg78wB3NovjlxXvDrEdYn7Cnc-HNDX03ePYwox3CKCWMGufq8_jNDWeT8QQzWnGe1uxqdwhits66BLEeQUyt1tOn6plX6tHmF4M2uRg6bevGna7GjVkufO4-xtUwmptrNDLXaOvmncy9McuFub3HMNdsbq7ZyFyzrVt3MvfGLBfm9h_DXKu5uVYjc622bt_J3BuzXJj79Bjm3njChaLY5FkhPrxc_vzPHfWiEelCHJ4_Rb6ViZjIPKloDp_jClclUlGUhyo9fPjZoaQOeAmmtWDjCkw_go165hvUZi3aqgdbXzm3XQvu1jN3v8LcqwX365n7X2F-qveqc2NN6pfsI_d0_9evAAAA__9pqi2X +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkVk1v4kgQve-vaNWpLQqZ9gcQn9oiTmQpMRnbkx1phVBjt1gksNm2iWYV5b-v2jAEoolByyEHTpSr6vG63quW-hWqf5bgQfDj6cEPI0JvwyRNvj0YJAkeglFKqs2KCgPJalHQmf4VP2lmIMnKTVHT3EAiXuaUUkE6ZGaQDsk8L4zSoQ51tarzXL7sykhehFqIIpN017brysoXoabrck1nSHKD3MXjR5KLWgBCUeYyEitZgfcXMECwAMEGBAcQXJggrFWZyaoqlW55bQBh_hO8HsKiWG9qnZ4gZKWS4L1CvaiXEjxIxWwpYylyqcweIOSyFotlQ6Op-VotVkL9CwijcrlZFZVHBJIZkgxJDgjJWuhc12REFDlhpKz_lgoQYlnkUnmEOx1KOetwy-hwe6cLkiaDuvorqXNImqStCzB5Qyg39fvZq1rMJXjsDc-fz5_PlZyLulSmezxe8v2RcscAhMcwotxtIv8H5X0djcbfo3Qaj_9MqP5smtm-sIuTb_FteHdHubXvsQ56rKMee99jH_Q0cRr7URKm4TiaxsF9HCSJDv37-zi499OAchf5wPhUEOtTQd512BSlyqWS-ZEIk7d2yVjvN5qxvWbWXrNfw01DPZSzH9U9yjfK3oWR_zBN0tvb4JnyAfIh8pv3wrMfh340CihnPeSMIWfWe3U0fvbj6dP4iXLWcO7X7Gh3kHDX5H0kfICE69W6-VQ9-0g9dv51Yf__upisa1pfdGFOTHjgfv86Lox1vuXWBZZbXdP-IstPTHhg-eA6LLfPt9y-wHK7azpfZPmJCQ8sH16H5c75ljsXWO50TfeLLD8x4YHlN9dh-YmnYSyrdVlU8sOL6Pf_3NMvJZnP5fZZVZUblcknVWYNzfZz3OCaRC6reltl24-w2Jb0AQ_BrBVsHYHZR7DVznyC2m5FO-1g55Jzu63gfjtz_xLmQSt42M48vIT5pt2r3ok1aV-yj9yTtz_-CwAA__9SYUwU # Verify that local and final aggregation is correctly shared and de-duplicated. query T @@ -330,7 +329,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsls9v6jgQx-_7V1hzCpJR4jjhR05GJWgjUWgDbVfaRZUhFosECc9JqvdU8b8_mbQkoRCi1wMXTuDxfOfrmXws-R3iH2twwP3nYdjzRkjre5Pp5HHYQBN36N5NUZxuNN7AKE6CQLzt__K3pcYbaOANp66PtJe_Xd9FHP2XGgYVyG5gtIjSMNHmH7nq943LFQ8XQpsfC-eZcIE6yiXdXMrIznEuSSCzgQb--B4FPOGAIYwCMeIbEYPzLxDAYAIGChgswGDDDMNWRgsRx5FUKe97gRf8BMfAsAq3aaLCMwyLSApw3iFZJWsBDkz5fC18wQMhdQMwBCLhq_XeRlmzrVxtuPwFGCZbHsYOauoE8TBABEXJ_0ICBl-EgZAOYiQ7u-04jjeadjBiZtZy5zgizDxCVBRmOwxRmuQHjRO-FOCQHa7fTG-5lGLJk0jqdrmXydO9xqyGauPR73uDwcfqbvw0mn7uZDmfX4SR4v7X6Ks_fploB6FdKGeXjOxcbObZpdhBV848UYGeqEBPVqBnZ2qenWk-yjSMZCCkCEpznO2qp06ME2MnahoDb9Qbvk6m_b77rDETM4IZLUw9-_fq5eP7XLUOWe1SvJOXfe75Xm9052qsixkxMCPkICLGV3ui_ClmZO-b86tIxIhRnVkYMRsj1tJZGyOmOO0qVo2zQ6WloZL6t47UuXU6aerm9e7dhXYKBLRu967mvTPrI2LWQsRs6vR6iFxop4BI-4ZITURofURoLURoU7euh8iFdgqIdG6I1ETEqo-IVQsRq6nb10PkQjsFRLo3RP7ggXdipr6It1EYi6OH3unKhnoAimApstdiHKVyIR5ktNjbZMvxXrcPBCJOsl2SLbww21IHLIpJpdgsicmx2Kx2vmBNK9VWtdj6zrntSnGr2rn1Hed2pbhT7dz5jnO3-lsZFzCphuzYe7b763cAAAD__1EKnyA= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslk1v4jAQhu_7K6w5BckocT74yMkIgjYShTbQdqVdVBlisUiQsE5S7ariv69MWpJQCBE9cOEEHs87r2fyWPIbRH9WYIPz437QcYdI6bnjyfhhUENjZ-B0JyhK1gqrYRTFvs9fd3_Z60JhNdR3BxPHQ8rzd8dzEEO_Ek0zOLJqGM3DJIiV2Xuu_H1lYsmCOVdmh8JZKpyjlnRJ1ucy0nOcSuJIr6G-N7pDPosZYAhCnw_Zmkdg_wQCGHTAYAAGEzBYMMWwEeGcR1EoZMrbTuD6f8HWMCyDTRLL8BTDPBQc7DeIl_GKgw0TNltxjzOfC1UDDD6P2XK1s5HWdCOWayb-AYZuuErWQWQjhtEMMIw3TK7qKkEs8BFBYfybC8Dg8cDnwkaUpL1Ytm27w0kLI6qnI2gdRrieRYiMwnSLIUzi7OBRzBYcbLLF1ZvrLBaCL1gcCtUq9jZ-vFOoWZNtPHg9t99_X3VHj8PJx06a8_GFKMnvf46-eKPnsbIXWrlyVsHIysR6ll2I7XXFzCMVjCMVjKMVjJMz1U_ONBtlEoTC54L7hTlOt-VTJ9qRsRM5jb477AxexpNez3lSqI4pwdTITT399-Jm4_tYNfZZzUK8lZV96nhuZ9h1FNrGlGiYErIXEe2zPZH-BqZk55vxK0nEiBoqNTGiFka0odImRlRy2pasaieHahSGSqrfQnLJLVRJXdWvdw_PtJcjonG7hxXvoV4dGf0iZPS6alwPmTPt5ZBp3pCpiIxRHRnjImSMumpeD5kz7eWQad2QqYiMWR0Z8yJkzLpqXQ-ZM-3lkGnfkLnggXhkph6PNmEQ8YOH4vHKmnxAcn_B09dmFCZizu9FON_ZpMvRTrcL-DyK012SLtwg3ZIHzItJqVgviMmhWC93PmNtlKrNcrH5lXNbpeJGuXPjK87NUnGr3Ln1Fed2-bfSzmBSDtmh93T77X8AAAD__yzmtsI= query T EXPLAIN (DISTSQL) SELECT sum(a), avg(DISTINCT a), variance(a) FILTER (WHERE a > 0) FROM data @@ -347,7 +346,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k1GLm0AQgN_7K5Z5SmCDrppS9imSeq2Q865qr4XWh607WCFx7e56tIT896JS0hzpYUnucWf22_l2htmD-bEFDtHn-00YJ2T2Ns7y7MNmTrJoE61zYrrdTMwpEY_VkIuTdU76wKPQtWhKnIk5uYk3eZSS2af3URoRQb52rusjcefkJr27JVJYARQaJTEROzTAvwADCh5Q8IFCABSWUFBotSrRGKX7K_sBiOVP4C6Fumk724cLCqXSCHwPtrZbBA65-LbFFIVE7bhAQaIV9XYo05detbreCf0LKGStaAwnC4cR0UjCiLLfUQOFFBuJmpMVG91dznmc5G8oWTEoDhRUZ48CxooKgbMD_Yfk0a1rlJaoUZ54FYcz3wirSmMlrNLO8vQX2cfb2cqbA4Xw4d1xDGPoIUzjMFlH_Y0_k3hG2juRZtM7y6Z01mELx7t-b73pmt4kTW_h-NfX9Kdr-pM0_YUTXF8zmK4ZTNIMFs7yZRfqjGaKplWNwSeLdf5lt184lBWO22lUp0u816ocyozHu4EbAhKNHbNsPMTNkBoE_4bZs_DrE9h9CnuXVPYvgYNL4OV_wcXh1e8AAAD__05NBLA= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k1GLm0AQgN_7K5Z5SmCDrppS9ikh9Voh513VXgutD1t3sIJx7e56tBz570WlpDnSI5L0zZ3Zz_lmlnkC86MGDuHn--06isnsbZRm6YftnKThNtxkxHS7mZhTIh7LIRfFm4z0gUehK9EUOBNzchNtszAhs0_vwyQkgnztXNdH4s7JTXJ3S6SwAig0SmIsdmiAfwEGFDyg4AOFACgsIafQalWgMUr3V54GIJI_gbsUqqbtbB_OKRRKI_AnsJWtEThk4luNCQqJ2nGBgkQrqnoo05detbraCf0LKGxU3e0aw0nvk7ai_1w4jIhGEkaU_Y4aKCTYSNScrNjYiMs5j-LsDSUrBvmegurswcZYUSJwtqf_MD6Ido3SEjXKI8l8f6KndVlqLIVV2lket5R-vJ2tvDlQWD-8O7zJGHpYJ9E63oT9jT_P8oK0dyTNzh8zmzxmhy0c7_qD9s539qY7ewvHv76zf76zP93ZXzjB9Z2D852D6c7Bwln-3yU84ZygaVVj8Nkynv6z2y8pyhLHjTaq0wXea1UMZcbj3cANAYnGjlk2HqJmSA2Cf8PsRfj1Eew-h71LKvuXwMEl8HISnO9f_Q4AAP__aKQY7A== query T EXPLAIN (DISTSQL) SELECT sum(a), avg(a), count(a), stddev(a), variance(a) FROM data @@ -362,7 +361,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF9ro0AUxd_3Uwz3ycAEM2r6xydDk4CQJq2m3YUllFnn4gZSJzszll1KvvuiPlRLo4KQp8z1enLO_Lzcd9B_DuDD4sfDahauiTUP4238uBqReLFa3G2Jzl8tPqKEv6XlbyLzzJQnbYTAt_L4xtWeZwlafESW0eaeCG44UMikwDV_RQ3-T2BAwQEKLlDwgMIUdhSOSiaotVTFK--lIBR_wZ9Q2GfH3BSPdxQSqRD8dzB7c0DwYct_HTBCLlDZE6Ag0PD9obQprIOj2r9y9Q8oxEeeaZ-MbUZ4Jggj0vxGBRQ2ufFJwGB3oiBz8-GlDU8RfHai_fPM0lRhyo1U9rQZJ366twI2Agp3m6f1tn5-iTbfY6so48doHi6XZfNcHudsno8YeSaVQIWikWF3ak_MJucix0_3L2ER2mlUblEtw_Vs9RJv5_PFsxV4NGC0eq1qPM-icLa-WzRaEWYCVYGdkoDZgUNJ4FISeJQE07M3dxs3Z_0ng_WZDJuNbWfQbHQkqpG-ushsOP0JOb0IOWPbHUSoI1GN0PVFCLn9Cbm9CLlj2xtEqCNRjdDNRQh5_Ql5vQh5Y3s6iFBHohqh24tv4C_yRKiPMtP4aRN__c-TYkOjSLFa51rmKsEHJZPSpio3pa58IFCbqsuqIsyqVhGwLmatYqchZp_FTrtzh7Xbqvbaxd6Q3NNW8VW789UQ5-tW8U27880Q59v2bzXpGJP2IfvsvTt9-x8AAP__YWk00g== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF9r4kAUxd_3Uwz3KcJInCT2T54iVSFgtU1sd2GRMpu5ZAXNuDOTskvxuy9JHpqUmqgFn5ybm-P5zcnlvoH-swEfJj8eZqNwTqxxGC_jx1mPxJPZ5G5JdL61eI8S_pqWv4nMM1OetBECX8vjK1drniVo8R6ZRot7IrjhQCGTAud8ixr8n8CAggMUXKDgAYUhrCjslExQa6mKV95KQSj-gj-gsM52uSkerygkUiH4b2DWZoPgw5L_2mCEXKCyB0BBoOHrTWlTWAc7td5y9Q8o3MlNvs20TwqeeMeLY99mhGeCMCLNb1Sw2lOQuXm304anCD7b0-ORRmmqMOVGKnvYJIqf7q2A9QqYxdN8WT-_RIvvsVWU8WM0DqfTsnmIxznI846RZ1IJVCgaDKt9OzEbHEKOn-5fwgLaaVRuUU3D-Wj2Ei_H48mzFXg0YLR6rWo8j6JwNL-bNFoRZgKVTwJGScDswKEkcCkJPEqC4cGbu42bs-OHg508HDbr284Z49EBVQv76iLj4RwfknN6SE7fds8IqQOqFtL1RUJyjw_JPT0kt297Z4TUAVUL6eYiIXnHh-SdHpLXt4dnhNQBVQvp9uLb-BOeCPVOZho_bOXP_3lQbGsUKVarXctcJfigZFLaVOWi1JUPBGpTdVlVhFnVKgDrYtYqdhpi9lHstDt3WLutaq9d7H2Fe9gqvmp3vvqK83Wr-Kbd-eYrzrft32rQMSbtQ_bRe7X_9j8AAP__fgQ8zw== query T EXPLAIN (DISTSQL) SELECT sum(a), avg(b), sum(a), sum(a), avg(b) FROM data @@ -377,7 +376,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF-L2kAUxd_7KYb7pDASZxJdN09ZthYE_2yNQqFImXUuqaAZOzMpLeJ3L0lo18g6CcS-3TvxeM787nBPYH7sIYTxl5fp02ROOh8n8Sr-PO2SeDwdP6-IyQ4d0aVE_Ew6r136r6-ek0_LxYxIYQVQSJXEuTiggfArMKDAgYIPFAKgMIANhaNWWzRG6fwnp0Iwkb8g7FPYpcfM5scbClulEcIT2J3dI4SwEq97XKKQqL0-UJBoxW5f2OTW0VHvDkL_BgrxUaQmJD2PEZFKwoiy31EDhUVmQxIxGnHYnCmozL7ZGSsShJCdafNIT0miMRFWaW9QTRSvZ52IdfMwecXz6nmxnq-K-pY5v2n-5pmlSkvUKCuGm7M7HuvX54vXs2-TPKGfd0tMJeoCF4m4F_m0LP-2Ny_hVy7Bmg-VNRmqx3oebzvWmlAX3Ib3HytvToQ3IsJ7nt-WSE2oCyIP9yfiNyfiNyLi97ygLZGaUBdERvcnEjQnEjQiEvS8QVsiNaEuiDz-32X4jvkSzVGlBq-W4vv_3M-XJcoEy81qVKa3-KLVtrAp20WhKw4kGlt-ZWUzSctPecBLMXOKeUXMrsXc7Vxj7TvVgVsctMk9cIqHbudhG-cHp3jkdh61cX50z6pf80zcj-zae3P-8CcAAP__edINZw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lG-r2jAUxt_vU4TzSiFS01avt6-8OAeCf-6swmDIiObQCdq4JB0b4ncfadmuyjUt1b07J_Xx9-Q54RxB_9hBBMMvr-OX0ZQ0Po7iRfx53CTxcDwcLIjO9g3epIT_TBrrJv3XX56TT_PZhAhuOFBIpcAp36OG6CswoOADhQAohEChAysKByU3qLVU9ifHXDASvyBqU9imh8zY4xWFjVQI0RHM1uwQIljw9Q7nyAUqrw0UBBq-3eUYi-4f1HbP1W-gMJC7bJ_qiHBK1kAhPnDbtTxGeCoII9J8RwWrEwWZmTeiNjxBiNiJVnf1kiQKE26k8jqXpuLlpNFnTcu3lW-rwWw5XeT1Lbh_E_7GzFKpBCoUF8DVyW2Ptcv9xcvJt5F1GNhujqlAFZE-o6Tve_2AFuXf9uYlgotLsOpzZXXm6rGW59eYbImvs-i6j5-sXz0Uv1YofssLaoRS4usslKfHhxJUDyWoFUrQ8sIaoZT4Ogul9_hQwuqhhLVCCVtep0YoJb7OQnn-v4vxHfgc9UGmGq8W5Pv_3LaLE0WCxZbVMlMbfFVyk2OKdpbr8gOB2hRfWdGM0uKTNXguZk6xfyFm12LfTS5BB0516BaH9_juOMVdN7l7D_nJKe65yb17yM_uWbVLnon7kV2zV6cPfwIAAP__JjMVtA== query T EXPLAIN (DISTSQL) SELECT avg(c), sum(c), avg(d), sum(d) FROM data @@ -392,7 +391,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF-L2kAUxd_7KYb7tIGROEl03TxFrAuCf7ZGoVCkTJ1LKmjGzkxKi_jdS6KwiayTQLBP8d7keM787nBPoH_tIYTx17fpcDInT58n8Sr-MnVIPJ6ORyvCfydPW4cSnR2KZ16Lay0c8rpczIjghgOFVAqc8wNqCL8BAwoeUPCBQgAUerChcFRyi1pLlX9yKgQT8QfCLoVdesxM3t5Q2EqFEJ7A7MweIYQV_7HHJXKByu0CBYGG7_aFTW4dHdXuwNVfoBAfeapD0nEZ4akgjEjzExVQWGQmJJFPowA2ZwoyM-922vAEIWRn2jzSMEkUJtxI5faqieL17CliDlAYLdbz1fV30fVKXc-5G8S7G-TdP0ulEqhQVMw3Z3tU1r2XNV7Pvk-uua5p_Uo_yKslpgJVSCLmjoZx_vUwfp0uhquBQ0nEKIl8Nwryx93D-ZXDseaDZ00G77KO67UdfU2oEs_-Y0fvNafjNaLjdVy_LZ2aUCU6z4-l4zen4zei43fcoC2dmlAlOoPH0gma0wka0Qk6bq8tnZpQJTov_2-pfhBkifooU403y_Xjf-7mSxdFgpcNrWWmtvim5LawuZSLQlc0BGpzecsuxSS9vMoDlsXMKvYqYnYr9uzONda-VR3YxUGb3D2ruG937rdxfraKB3bnQRvnF_usujXXxH7Jbr0350__AgAA___gMx9O +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF-L2kAUxd_7KYb7tIGROEl03TxFrAuCf7ZGoVCkTDOXVNCMnUlKi_jdy0Rho6wTidineG9yPL85d7h70L82EMLw69u4P5qSp8-jeBF_GTskHo6HgwXhv9OnxKFEF9vyaWpxqoVDXuezCRE850AhkwKnfIsawm_AgIIHFHygEACFDqwo7JRMUGupzCf7UjASfyBsU1hnuyI37RWFRCqEcA_5Ot8ghLDgPzY4Ry5QuW2gIDDn601pY6yjnVpvufoLFAZyU2wzHZKEEgEU4h03VctlhGeCMCLzn6hgdaAgi_zdUec8RQjZgd5O1U9ThSnPpXI751DxcvIUMcfwzJbTxel32fUqXc-5CuJdBXn3LzKpBCoUZ-argx2Vta-xxsvJ99GJ60Trn_UDU80xE6hCEjF30I_N1_34dTzrL3oOJRGjJPLdKDCPq4fzzw7Hbp89azJ7l7Vcr8H0a7gqkXYfO33v9oC8RgF5LddvEFANVyWg58cG5N8ekN8oIL_lBg0CquGqBNR7bEDB7QEFjQIKWm6nQUA1XJWAXv7fgv0AZI56JzONF4v2439umwWMIsXjttayUAm-KZmUNsdyVurKhkCdH9-yYzHKjq8MYFXMrGLvTMwuxZ7ducbat6oDuzi4h7tjFXftzt17nJ-t4p7duXeP84t9Vu2aa2K_ZJfeq8OnfwEAAP__XwMnmw== query T EXPLAIN (DISTSQL) SELECT max(a), min(b) FROM data HAVING min(b) > 2 @@ -450,7 +449,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lVuL4jAYhu_3V4TvaoZNqenB0V65zLgguDqrXiwsXmRsGAtO020i7CD-96EWdDxMvkiKlz08-d7mCW83oP6tIIH-n-fhj8GI3D0NprPp7-E9mfaH_ccZqa4Ho8cZueP35Odk_IukXHOgkMtUjPibUJD8BQYUAqAQAoUIKMQwp1CUciGUkmX1ymYHDNL_kLQoZHmx1tXtOYWFLAUkG9CZXglIYMZfVmIieCpKvwUUUqF5ttqNqUb3ijJ74-U7UJgWPFcJ8XxGeJ4SRqReihIojNc6IT0G8y0FudaHWUrzVwEJ21L7PE-Z0lm-0H58HKZXffS4TEUp0gvTDgu8vJMlV8szer49JAq-THRYR9azTtf5Xi_0ZWzWuir3IVNokWmdX0p1MdBIerLwWXzy5uXZ0dFsZn9imM2J8ZnnB05nBkm03_z2zc4Ma_TMsEbOTGDvLbDyFnh-6OQNSbTfgIebeQsa9RY04i209xZaeQs9P3LyhiTab0DnZt7CRr2FjXiL7L1FVt4iz4-dvCGJ9hvQvZm3qFFvUeP_1gvjJkIVMlfC6s_ZqgKL9FXUH6jkulyI51IudmPqy_GO291IhdL1U1ZfDPL6URXwM8xOYfYZDo5gdh3cdoG7LjBzys1iMx0Y9zs0w6FZVttsKzLSsRmOXVSbYUS1GUZUm2FMNUIjqtsuqh-McMcsq-MiywwjsswwIssMY7IQGpHVdZHFkBbFatStR92K1K1JHavUrUuZU5kypE0jRNpZnV4lzUxj0sw0Js1Mo9IQHJN2VqpGafPtt48AAAD__2gsERs= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lV2L4jwUx--fTxHO1QxPSk1fnLFXLo4Lgquz6sXC4kXGhrGgTbeJsIP43Zda0PFlclpTvGva_nL-ze9wugX1ZwUR9H-9Dr8NRuThZTCdTX8OH8m0P-z3ZqRYD0a9GXngj-T7ZPyDxFxzoJDKWIz4WiiIfgMDCh5Q8IFCABRCmFPIcrkQSsm8eGW7BwbxX4haFJI02-ji9pzCQuYCoi3oRK8ERDDjbysxETwWudsCCrHQPFntyxSlu1merHn-ARR6crVZpyoiRZ5pxotLx2WEpzFhROqlyGG-oyA3-lhOaf4uIGI7Wj3SS6J0ki60G57m6RbfPc5jkYs4Il12Vu24wdsHWXK1vKDnu2Mi78tEx31kWet8n__Ljb6MzVq1ch8z-RUybdJrqa4GGklHZi4Lz968Xjs4qc2qNw2r3TQuc1zvhrZBQh3Ov323tmGNtg1rpG286uq8-uo8x_VvUIeEOpzB093UeY2q8xpR51dX59dX5ztucIM6JNThDJ7vps5vVJ3fiLqgurqgvrrAccMb1CGhDmfQuZu6oFF1QeP_2SvlJkJlMlWi0l-0VQQW8bsoP1DJTb4Qr7lc7MuUy_Ge29-IhdLlU1YuBmn5qAj4GWbnMPsMeycwqwe3beCODcyscrPQTHvG8_bNsG-W1TbbCox0aIZDG9VmGFFthhHVZhhTjdCI6raN6icj_GyW9WwjywwjsswwIssMY7IQGpHVsZHFkCmKjVG7OWo3SO0mqeUotZulzGqYMmSaBoi0i3FaS5qZxqSZaUyamUalITgm7WKoGqXNd__9CwAA___lEhkY query T EXPLAIN (DISTSQL) SELECT SUM (DISTINCT A) FROM data @@ -469,7 +468,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9r4kAUxd_3U4T71LIj8U7ivzxZ2i4Ibe1WFxYWH6ZmsIJN3JkRthS_-6IBjX96b0KCjyaeuXfO-XHIJ9i_C4jg_vfzw83gybu6G4zGo58P197o_uH-duzZ1fv22eDpduypa-_Hy_DRi5VTICBJY_2k3rWF6A8gCJAgIAABIQhowUTA0qRTbW1qNn_53AoG8T-ImgLmyXLlNo8nAqap0RB9gpu7hYYIxup1oV-0irXxmyAg1k7NF9sxm9H9pZm_K_MBAkZLldjIa_joqST20EvdmzYgYLhykddHmKwFpCu3n2WdmmmIcC2K73M3t26eTJ3fOlymv7n00MTa6PjMtP0Brx_em7JvJ-rJer-R_HKj_TlpNuv4nO_ZQV-ujc1Se-93Csq4dDObGT1TLjU-Hhk1-vV41cfrL-eEBe6-Ss7d_uzFc5vIZrlNWgebYHFOsQinPjZ8WYlUZqNd5O2LkYq1koq1kMq4lCe1XYVUWZwPWYgP2fCDSnwwG-2M7lyMD1krH7IWPhiX8nx0qvARFOcjKMRH0PDDSnwwG-2M7l6Mj6BWPoJa-GBcyvPRrcJHWJyPsBAfYcNvVeKD2WhndO9ifIS18hHWwgfjUp6PXl1fQmfmvGi7TBOrj76Izp_c3Bij45nOjLTpykz1s0mn2zHZz-FWt30Qa-uyt5j9GCTZq82CeTEeizEvlgdiLCfuVBEjVlK3Kql7tFqShge04QEpDunJISmWTNYtUt2mxe0qoNBiBhRazIHCqBlQGDUDSoc0vEsb3q0CSo_uhCZTCieVUqoVaDVXC7Sa7QVGzhUDI2cCx5NiOfRdMr7TzcJkjnS1YMgMPymXUqHTai50Ws2Gzsi50Bk5Fzrdq8gUK550TKnQ6Y5BpmTwpGVKhU6rudBpNRs6I-dCZ-Rc6HTDSqZhJf3Rdhz6ZP3tfwAAAP__SIsndg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt1r4kAUxd_3rwj3qWUj8U7iV54sbReEfm11YWHxYWoGK2jizkTYUvzflxjQ-NF7Myb4VpOeuXfO-XHIJ5i_cwjh_vfLw83gybm6GwxHw58P187w_uH-duSY1WLzbPB0O3LktfPj9fnRiWQqwYU4idSTXCgD4R9AcEGACz64EIALLRi7sNTJRBmT6OxfPjeCQfQPwqYLs3i5SrPHYxcmiVYQfkI6S-cKQhjJt7l6VTJS2muCC5FK5Wy-GZON7i_1bCH1B7hwm8xXi9iETrbPcCmzPxseOjKOHHSS9F1pGK9dSFbpbpxJ5VRBiGu3_Ep3M5PO4knqtfb36Wf3ftaR0ioKnT4eTNsd8PbhvEvzfqQer3cbiS832p2T5LMOz_meH_Tl2ti02nu3k2_j0s10qtVUpon28MCo4a_Hqz5efzknKHH3VXzq9icvXthENO02ae1tguVRRWtUPWx44gxYmaW2qbcvBivWCivWAivjUhHWdhVYRXlEhD0iouH5ZyDCLLX1unMxREStiIhaEGFcKiLSqYKIXx4R3x4Rv-EFZyDCLLX1unsxRPxaEfFrQYRxqYhItwoiQXlEAntEgobXOgMRZqmt172LIRLUikhQCyKMS0VEenV9FZ2Y86rMMomNOvg6On1yMzNGRVOVG2mSlZ6oF51MNmPyn88b3eZBpEyav8X8xyDOX2ULFsV4KMaiWOyJ0U7cqSJGrKRuVVL3aLUgDfdpw31SHNCTA1IsmKxbpLpNi9tVQKHFDCi0mAOFUTOgMGoGlA5peJc2vFsFlB7dCU2mFI4qxaoVaDVXC7Sa7QVGzhUDI2cCx6Ni2fddML7TzcJkjnS1YMAMPyoXq9BpNRc6rWZDZ-Rc6IycC53uVWSKFY86xip0umOQKRk8ahmr0Gk1FzqtZkNn5FzojJwLnW5YwTSsoD_aDkMfr7_9DwAA___WjS9z query T EXPLAIN (DISTSQL) SELECT SUM (DISTINCT A), SUM (DISTINCT B) FROM data @@ -484,7 +483,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslFGL2kAUhd_7K4b7VGEkziS6bp5cdi0Irm7VQqHkYTZzSQOaSWcm0CL-95IEtBF3Ekwfc5Mz53w5wz2C-bWHEObf35ZPixX5_LLY7rZflwOynS_nzztiikM1W6yed0QMaHPwPiBfNutXIoUVQCFTElfigAbCH8CAAgcKPlAIgMIYIgq5VjEao3T5ybESLORvCEcU0iwvbDmOKMRKI4RHsKndI4SwE-973KCQqL0RUJBoRbqvbErrWa7Tg9B_gMI2F5kJydBjRGSSMKLsT9RAYV3YkMwYnXGIThRUYS92xooEIWQn2j3SS2psmsXWGzfzuC34hxaXk4tMaYkaZePg6HQjxFOSaEyEVdpjV_9l--310tOMDcp_0xjxwYcp_UZK1r0b1qUbjw093redllDndib3t8O7c_NO3Hzo-X25W0KduR_u5_a7c_uduP2hF_Tlbgl15p7ezx105w46cQdDb9yXuyXUmfvx_2yhGxYbNLnKDF5to9snj8othTLBeqUZVegY37SKK5v6cV3pqoFEY-u3rH5YZPWrMuC_YuYU84aYXYu527nF2neqA7c46JN77BRP3M6TPs4PTvHU7Tzt4_zo7mrUck3cl-zaOzp9-hsAAP__lD7lyw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslNGr2jAUxt_3V4TzNCFSk1avt09evA4Er_dOHQyGD9EcXEGbLklhQ_zfR1vQVTQtcY857Zfv-_Ur5wjm1x5imHz_mL1M5-Tz63S5Wn6ddchyMpuMV8Tkh3I2nY9XRHRofbDpkC-L9zcihRVAIVUS5-KABuIfwIACBwohUIiAQh_WFDKttmiM0sUrx1Iwlb8h7lFI0iy3xXhNYas0QnwEm9g9QgwrsdnjAoVEHfSAgkQrkn1pU1iPMp0chP4DFMZqnx9SExNByQYoLDNRnLoBIyKVhBFlf6KG9YmCyu3F0VixQ4jZibZP9ZoYm6RbG_TrkUaMjvhdC37X4nJzniotUaOsXbw-3Qjxsttp3AmrdMCuPs3y29ulqhHrFJ-jNuKduynDWkrWvh7mU0_AugH3KKgh17mggX9BvD0690Ln3SD0QG_IdUZ_8kcP26OHXuhhN4g80BtyndGH_uhRe_TICz3qBn0P9IZcZ_Tn_7ORblgs0GQqNXi1mW7f3Cs2FsodVuvNqFxv8UOrbWlTHd9LXTmQaGz1lFWHaVo9KgL-K2ZOMa-J2bWYu50brEOnOnKLo0dy953igdt58Ijzk1M8dDsPH3F-dnfVa_hN3D_Ztff69OlvAAAA__9iiO4Y query T EXPLAIN (DISTSQL) SELECT DISTINCT a, b FROM data WHERE (a + b + c::INT) = 27 ORDER BY a,b @@ -504,7 +503,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9r4koUx9_vX3E4TxZH4kwSfwQu5N7WcoVe7aqwuyw-RDO0AZu4kxG2FP_3JQZM1TonrmkeJ_qZ-Wa-Hw55w_TnCj0cfHt8-Gc4gsbdcDqbfnm4gengYXA7g2w9HN3OIGCwgPvJ-H8IAx3A1_8GkwE0GgE0YXEDTVh63nA0693A3yC6MJ7cDSbw7_cdhgzjJJSj4EWm6P1AjgwFMrSRoYMMXZwzXKtkKdM0Udlf3nbAMPyFXpthFK83Ons8Z7hMlETvDXWkVxI9nAWLlZzIIJTKaiPDUOogWu2OyXL6axW9BOoVGU7XQZx60LI4BHEIHBL9LBUyHG-0Bz5nvmC-jfMtw2SjixNTHTxJ9PiWlU91H620VFJZ7mGk_LkHjYbPoQm-yG7Ot99fnZcvDnKdDSUuCXUXpTqKl9riRxeVn8FwrEKpZPjxocU-i1d4DtLnj_aYb4ts9tlsxVZJfuLxVk3mi2a-2fmXcP_gJYp0zqekGyWtZG2Jw_s9F8E9iMDLe87LeG7xliUqMJ3ItTe9U6fpRKhCEl6_6bxy0zsVmi7KayZKaSZall2BZkSuvWbdOjUjQhUNifo1E5Vr1q1QM7u8ZnYpzeyW5VSgGZFrr1mvTs2IUEVDdv2a2ZVr1qtQM6e8Zk4pzZyW5VagGZFrr1m_Ts2IUEVDTv2aOZVr1v-kz8MPDp3IdJ3EqSz11dfOYsvwSeavmiYbtZSPKlnujsmX4x23exDKVOe_8nwxjPOfsoDvYW6EhRkWxzB_D9sHML8M7l0Dc3EV3bmGFm0zbRsv3DHDjrktomvXSHfMcMcId81w9xpRzDAhihmmRCFoQhQzTYnSu0aUvnkmtImhQIwUaqacDJVL6iZoom-CpgqncKJxAqcq5yej5ZLOuXm0cIdozTxcuEvgJ9PlotLNNFW6mSZLJ3CqdDNOlm6erFTpJ0PmsLUe0Zp5yvA-gZ_MmYtKN9NU6WaaLJ3AqdLNOFW6ME_Y49Ln279-BwAA___CbXsr +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll2L2kAUhu_7Kw7nysWROJPEj0Ah7a5Lha1uVWhL8SImw27ATWwSocvify9JwKxfczRmc5nRZ-bNvA-HvGH8d4kWDn49PnwZjqBxN5zOpj8ebmA6eBjcziB9Ho5uZ-AwWMD9ZPwdPCdx4Oe3wWQAjYYDTVjcQBNcyxqOZr0b-AyiC-PJ3WACX39nGDIMQk-OnBcZo_UHOTIUyFBHhgYyNHHOcBWFrozjMEr_8pYBQ-8fWm2GfrBaJ-nynKEbRhKtN0z8ZCnRwpmzWMqJdDwZaW1k6MnE8ZfZMWlOexX5L070igxvw-X6JYitLBIDFxlOV0660NI4OIEHHMLkWUY43zAM10lxaJw4TxItvmHnB7v3l4mMZKSZu6nydQsaDZtDE2yRXp6tv789K39AhuN1YoHNmS1OhhKXhLrz48QP3ETje3eVn8FwHHkykt7xQ4t9Fq_w7MTPx_aYb4ps-slsxVZhfuL-Vk1mi2a-2emXMEu8RJHO-JB0o7AVrjSxe7-nIpg7Efj5qvOSqmu8pYkSshPRtrJ36pSdCFV4wuuXnVcue6dC2cX5pomypomWppcwjYi2Na1bp2lEqKIkUb9ponLTuhWapp9vml7WNL2lGSVMI6JtTevVaRoRqihJr980vXLTehWaZpxvmlHWNKOlmSVMI6JtTevXaRoRqijJqN80o3LT-h_0qXjk0ImMV2EQy7O-ANtpbOk9yfxV43AdufIxCt3smPxxnHHZgifjJP-V5w_DIP8pDfge5kpYqGGxD_P3sL4D88vg3jUwF1fRnWto0VbTuvLCDTVsqNsiujaVdEcNd5RwVw13rxFFDROiqGFKFIImRFHTlCi9a0Tpq2dCmxgKxEihZsrBULmkboIm-iZoqnAKJxoncKpyfjBaLumcq0cLN4jW1MOFmwR-MF0uKl1NU6WrabJ0AqdKV-Nk6erJSpV-MGR2W-sRramnDO8T-MGcuah0NU2VrqbJ0gmcKl2NU6UL9YTdL32--fQ_AAD__7NCg8g= query T EXPLAIN (DISTSQL) SELECT DISTINCT a, b FROM data WHERE (a + b + c::INT) = 27 ORDER BY b,a @@ -527,7 +526,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9voloUxd_vp9jZTzYeg-cA_iG5Cfe2NmPS0Y6azEwmPqCctCZWnAMm0zR-9wkSpVI9GwrhEXSdvVj89gpvGP5eo4ODH48P_w1H0LgbTmfTbw83MB08DG5nEF8PR7cz8Bgs4H4y_gq-F3nw_ctgMoBGw4MmLG6gCUvHGY5mvRv4F0QXxpO7wQT-_wkLBh4y3AS-HHkvMkTnF3JkKJChiQwtZGjjnOFWBUsZhoGK__J2EAz9P-i0Ga42210U354zXAZKovOG0SpaS3Rw5i3WciI9XyqjjQx9GXmr9WFM7NPdqtWLp16R4XTrbUIHWgYHb-MDhyB6lgoZjneRAy5nrmCuifM9w2AXpRPDyHuS6PA9y-_qfrWOpJLKsM8tJfcdaDRcDk1wRZyca76PzkkuznxdNSWKmLpbhdFqs4wMngkqmcFwrHyppH95aHrO4hWevfD50hnzferNvOotPSpIJmaPajJXNJPDrj-E_YmHSN1ZRZKbBiqSyhDZ3ESTubx5dYb96QROB18wMwpawdYQ549_zULnzALPv0s8zy4ZvGWICraJ8HXapk6d20SYSkHk9W8Tr3ybOhVuE5HccZuyuRXaJpEfZZELZdEyzApQJnydUO7WiTJhKqVA1I-yqBzlboUoE8kdUc7mVghlMz_KZi6UzZZhVYAy4euEcq9OlAlTKQVm_SiblaPcqxBlIrkjytncCqFs5UfZyoWy1TLsClAmfJ1Q7teJMmEqpcCqH2WrcpT7FaJMJHdEOZvbpz_XL8yYyHAbbEKZ6yu8HUcj_SeZxBkGO7WUjypYHsYkl-OD7nDDl2GU_MqTi-Em-Sk2-F7MtWKhF4usmL8Xm2diXkzcLyPmVil1qdmCmG1qA7f0gVtasa2fbOtfdUc_uqNVd_Xirlbc04t7ZSjTi4k3rRdTlBHqUrMpyvr6TmgTpaCvFIIzru8UTpQK_7Bf53KTkH9YsCK4EGrinRFqChhKXm46hQzXlwu3idz19UIxo68XTvQL1xcMJxqGl6oYQk29tXIlQ8nLTSeZ0feMIHpGlOoZQXy7UB8v-p4RRM-IUj1DqKkvkHI9Q8nLTaeYEfqeEUTPiGI9M9__8zcAAP__pXCBQQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll-L2kAUxd_7KYb75OJInEnin0Ah7a5Lha1uVWhL8SGaYVdwEzsZocvidy8xaNaszjV_yGOiZ-7Jye8e8gbR3zU4MPj1-PBlOCKNu-F0Nv3xcEOmg4fB7YzE18PR7Yx4lCzI_WT8nfie8sjPb4PJgDQaHmmSxQ1pkqXjDEez3g35THiXjCd3gwn5-pssKPGAQhD6YuS9iAicP8CAAgcKJlCwgIINcwobGS5FFIUy_svbXjD0_4HTprAKNlsV355TWIZSgPMGaqXWAhyYeYu1mAjPF9JoAwVfKG-13o-JfbobuXrx5CtQuA3X25cgcvZPQskSKEw3XnyjZTDiBT5hJFTPQsJ8RyHcqnRopLwnAQ7b0euN3a_WSkghDfvUVXLfIY2Gy0iTuDwOzzXfp-ckF0BhvFUOcRl1-UVTPI-pu1WkVsFSGSyTVTKDwlj6Qgr__ND0nMUrefai53NnzHepN_Oit_SoMJmYPapJXd5MDrv8EHaBh0jdWXmSm4ZSCWnwbG68SV3WvDjDLpzA8eAzZkZhK9wY_PTxL1nonFhg168TK7hOBmsZvMBCIdaOC9Wpc6EQUymLrP6FYpUvVKfChUKSOyxUNrdcC8Wvp5kXpZm3DLMAzYi1I83dOmlGTKUg8Ppp5pXT3K2QZiS5A83Z3HLRbF5Ps1mUZrNlWAVoRqwdae7VSTNiKgXBrJ9ms3KaexXSjCR3oDmbWy6aretptorSbLUMuwDNiLUjzf06aUZMpSBY9dNsVU5zv0KakeQONGdzK_zpfmbGRESbMIjEVV_k7Tga4T-JJM4o3MqleJThcj8muRzvdfsbvohU8itLLoZB8lNs8L2YacVcL-ZZMXsvNk_ELJ-4X0bMrFLqUrM5MtvUBm7pA7e0Yls_2da_6o5-dEer7urFXa24pxf3ylCmFyNvWi_GKEPUpWZjlPX1ndBGSkFfKQhnTN8pDCkV9mG_TuUmIv-wYHlwQdTIO0PUGDCYvNx0DBmmLxdmI7nr6wVjRl8vDOkXpi8YhjQMK1UxiBp7a-VKBpOXm44yo-8ZjvQML9UzHPl2wT5e9D3DkZ7hpXoGUWNfIOV6BpOXm44xw_U9w5Ge4fl6Zr779D8AAP__64mJ3g== query T EXPLAIN (DISTSQL) SELECT c, d, sum(a+c::INT) + avg(b+d) FROM data GROUP BY c, d @@ -547,7 +546,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlltv2kAQhd_7K1bzBGKR2V2bi5-cpmmFREzKRWpUocjBK4JEbLo2VaOI_17ZkHBxsmOEkeDNGH-e2TlnjvwK0Z8Z2HDz665z1XZJ6Vu7P-j_7JRJ_6Zzcz0gY0p8SqLFc8kjFTK27bY7aJZJhXh_J6VHUiF-mXzvdW-J78Ue-dHrDu_I1_sUAwpB6EvXe5YR2L-BAQUOFARQMIGCBSMKcxWOZRSFKnnkNQXa_j-waxSmwXwRJ7dHFMahkmC_QjyNZxJsGHiPM9mTni-VUQMKvoy96SwtkzTizNX02VMvQKE_94LIJlWDES_wCSNh_CQVUOjJwJfKJg6rOGJ1LkocXnFMShxBiWPCaEkhXMSbNqLYm0iw2ZLmb_VqMlFy4sWhMqzdTh1BnWQQV-79g9sdPLjDTqfkiHLmlpnc6g9vSw57v-LJ1XV36A7S691WN9UfX8iTFz3tFWbU4TBabk7EPz3R5lWLIFS-VNLfeVn6Fs2ZWe2j2vsnZNlD8_ejivert0E8tJNjW-UdGRP13qQzHOtT9cQh6rlhNZwbbE-5bNGKxi5mscNdtcRre09-XNvaqc3ybxXLs1UGqxr8VHuFNLvlsfqF7BUrcq_Yee8Vot56r-rF7RXP722ey9u8aohTeRtpdkvnxoV4mxfpbX7e3kbUW3u7UZy3RX5vi1zeFlXDPJW3kWa3dG5eiLdFkd4W5-1tRL21t5vFedvM720zl7fNqmGdyttIs1s6ty7E22aR3jbP29uIemtvt07zrf9BwZ6M5mEQyVxf8rVk-NKfyJVSUbhQY3mnwnFaZvWzm3LpDV9G8epftvrRDlZ_JQ1uw2wfZtsw34HZYXDjGJixo2jrKLqlp7l24EI_cKGFTX1lUwtzRGtLS9f1cP0Yo-hhxCh6GDMKQiNGQWjEKA3twJv6gTePMUpLnwk1JBQykXJQKuhpLBb0NJoLCI4FA4IjgrNMsOzOnSNz1ycLojnTRwszkeKZcDlIdD2Nia6nUdERHBMdwTHR9bnKkGBlmYw5SHR9xjAkZFgmZQ4SXU9joutpVHQEx0RHcEx0fcJyJGG5_qNtX_TR8sv_AAAA__-I9wkL +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUl1tv6jgUhd_nV1j7CYRRsJ1wyVM6nc4IiYYOF2mqEaoMsSgSJEwSRqeq-O9HCbRc0nrDSZDgzRi-bO-9lpfIO0T_zcGGh3-eOndtl5T-aPcH_b87ZdJ_6DzcD8iEEo-SaLUoSVIhE9tuu4NmmVSI_H9aGpMK8crkz173kXgyluSvXnf4RH5_TjGg4AeecuVCRWD_CwwocKAggIIJFCwYUViGwURFURAmP3lPgbb3A-wahZm_XMXJ9ojCJAgV2O8Qz-K5AhsGcjxXPSU9FRo1oOCpWM7maZnkIM4ynC1k-AYU7oP5auFHNpGUjOnHwfpLmexVDUak7xFGgvhVhUChp3xPhTZxWMURm24pcXjFMSlxBCWOCaM1hWAV7w4XxXKqwGZrenoDd9NpqKYyDkLDOjy_I6iTjOfOfX5xu4MXd9jplBxRzmyZyVZ_-Fhy2OeKJ6v77tAdpOvDo-6qj9_Iq4xejwoz6nAYrXcd8W872j1q5Qehp0LlHTwsfYqmZ1b7qvZxhyzbNP9sVXyuPgbx0k7atsoHMibqfUhnONa36olz1HODarA02JFy2aIVjV3MYoe7ORKvHf3y69rWQW12-l1jv37XDFY1-KVuG9LCnvPqN3LbWJG3jV33bUPU2962enG3jZ_ueJ7D8bxqiEs5HmlhT_3GjTieF-l4ft2OR9TbOr5RnOPF6Y4XORwvqoZ5KccjLeyp37wRx4siHS-u2_GIelvHN4tzvHm6480cjjerhnUpxyMt7KnfuhHHm0U63rxuxyPqbR3fusw7xBcFeypaBn6kTnpDqCXDV95UbZSKglU4UU9hMEnLbD52Uy7d8FQUb75lmw9tf_NVcsB9mB3DbB_mBzA7D27kgRnLRVu56Jae5tqBC_3AhRY29ZVNLcwRrS0tXdfD9TxG0cOIUfQwZhSERoyC0IhRGtqBN_UDb-YxSkufCTUkFDKRclYq6GksFvQ0mgsIjgUDgiOCs0ywHM6dI3PXJwuiOdNHCzOR4plwOUt0PY2JrqdR0REcEx3BMdH1ucqQYGWZjDlLdH3GMCRkWCZlzhJdT2Oi62lUdATHREdwTHR9wnIkYbn-T9ux6KP1bz8DAAD__z1bJ4g= query T EXPLAIN (DISTSQL) SELECT c, d, sum(a+c::INT) + avg(b+d) FROM data GROUP BY c, d ORDER BY c, d @@ -571,7 +570,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUl11r-kgUh-_3UwznSslInEliba7Sbd1FsLHrC2xZpKRmsII17iQuW4rf_U8SrSbBOZEQ0Ltk7JM5c37PHOg3hP-uwIbe3y-Dh75LGk_98WT816BJxr1B73FC5pT4lITbz4ZHNDK37b476TaJRrz_Fo13ohG_Sf4YDZ-J70Ue-XM0nL6Q318TjAxHT73R4Q0orANfuN6nCMH-BxhQ4EDBAAomULBgRmEjg7kIw0DGf_KdAH3_f7DbFJbrzTaKl2cU5oEUYH9DtIxWAmyYeO8rMRKeL6TeBgq-iLzlKtkmLsvZyOWnJ7-AwnjjrUObtHRGvLVPGAmiDyGBwkisfSFt4jDNMdJTUuJwzTEpcQxKHBNmOwrBNjqWEUbeQoDNdrR8qeNARkLqVrZKx9CoY2pnt-CXbPGwWEix8KJA6qyd34c6cbOH0hdS-DY5LDy4r2_ucPLmTgeDhmM0C0tmvDSePjcc9vPE46fH4dSdJM_Z4o_1vH-RDy_8yFXCqMNhtjue0Th7xuOngrTu_Kc06nAt_ZiqGfmmJyWcNmO_kD05KzaD_7TA-Hk6NOitH7fDamacilU6eKQ71tmczVp64AatYKPznAvF6jSF5FamMlb-PrIy91FnLZ3XdSORYvc3slPlRiJbnErIbvVGshpuZL7p134jeXnveSnveUs36vIeKXbv_V0V75EtTqPmt-o9r8H7fNOv3XujvPdGKe-Nlm7W5T1S7N77bhXvkS1OozZu1XujBu_zTb92783y3pulvDdbulWX90ixe-_vq3iPbHEatXmr3ps1eJ9v-rV7j_yHORLhJliHInOqc19ux80R_kKkDQ2DrZyLFxnMk23S12HCJQu-CKP0V5a-9NfpT3GBpzBTwlwN8zzMTmEjA7PL4G4VmPFKdKcKzdtq2lA23FTDpjotJGtLSXfUcEcJ36nhuyqiqGFEFDWMiYLQiChqGhOlW0WUe_VMaCNDARkp2EwpDJVL4kZoJG-ExgLHcCRxBMciZ4XRcknmTD1amImkph4uzELwwnS5KHQ1jYWuptHQERwLXY2joasnKxZ6YchkU-siqamnDLtH8MKcuSh0NY2FrqbR0BEcC12NY6Fz9YTNhz7b_fYrAAD___6ENUA= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUl11rwkgUhu_3VwznSslInEliba7Sbd1FsLHrB2xZpEQzWEGNO4nLluJ_X5JoNQnO0Q0BvZuMfeZ8vOc90G8I_16CDZ0_33pPXZfUXrrD0fCPXp0MO73O84jMKPEpCbermkc0MrPtrjtq14lGvH_mtSnRiF8nvw36r8T3Io_8PuiP38iv7wlG-oOXzuDwBRTWgS9cbyVCsP8CBhQ4UDCAggkULJhQ2MhgJsIwkPGffCdA1_8X7CaFxXqzjeLrCYVZIAXY3xAtoqUAG0bedCkGwvOF1JtAwReRt1gmYeK0nI1crDz5BRSeg-V2tQ5t4lEypYfEhhsvvmvojHhrnzASRJ9CAoWBWPtC2sRhmmOktVPicM0xKXEMShwTJjsKwTY6JhdG3lyAzXb08gKGgYyE1K1s7o6hUcfUzobg14R4ms-lmHtRIHXWzMehTixBX_pCCt8mh4sn9_3D7Y8-3HGvV3OMeuHKjK-G49eaw35OPD4998fuKDlnkz_mM_0in174mcuEUYfDZHes0Thb4_GpIM07_5RGHa6lj6makW96ksJpM_YX2cpZsRn8pwXGz-nQoI9u3A6rnpmpeJQOc6Q71lmdzUp64AaNYKPz3CwUs9MUQ25lMmOXu5T9f5fqrKHzqnyKlLD3aauMT5EQp6PJ7tWnrAKf5pt-6z7ll7uBl3ADb-hGVW5ASti74aGMG5AQpwPA79UNvAI35Jt-624wLneDUcINRkM3q3IDUsLeDe0ybkBCnA6Aca9uMCpwQ77pt-4G83I3mCXcYDZ0qyo3ICXs3fBYxg1IiNMBMO_VDWYFbsg3_dbdgPznOhDhJliHIlPVuZebcXOEPxdpQ8NgK2fiTQazJEz62U-45MIXYZT-ytKP7jr9KU7wFGZKmKthnofZKWxkYHYd3C4DM16KbpWheVNNG8qGm2rYVKuFaG0p6ZYabinhBzX8UGZQ1DAyKGoYGxSERgZFTWOD0i4zKI_qndBElgKyUrCdUlgq18iN0IjeCI0JjuGI4giOSc4Kq-UazZl6tTATUU29XJiF4IXtcpXoahoTXU2joiM4JroaR0VXb1ZM9MKSyarWRlRTbxn2iOCFPXOV6GoaE11No6IjOCa6GsdE5-oNmxd9svvlvwAAAP__BAFTvQ== # There should be no "by hash" routers if there is a single stream. query T @@ -592,7 +591,7 @@ vectorized: true table: data@data_pkey spans: [/10 - ] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkl-vk0AQxd_9FJN5grA35U9NdJ-2Kl5JuLQCVW-0udnLTkiTlsVdMJqm390AD7Ya0fs4Z-YcfsPsCe3XA3KMP23SVZKB8yYpyuJ96kIRp_HrEioGioHtj44EDyrOk6x84YIH8lvtPIIHyoW3-foOlOwkfHwX5zFI-NL7fkTwEm7z9XYDr-7HHGTYaEWZPJJF_hkDZPgcdwxboyuyVptBPo1DifqO3Ge4b9q-G-Qdw0obQn7Cbt8dCDlm-ka3ixAZKurk_jCOnRnqvvtlsp2sCXl0ZhfBwXxwKR8PlJNUZBb-VTwOa4rW7I_S_ECGRSsby2ER-DfIMKdGkeEgAk9E069iIEJPLBmIiIFY4t_4gqfwreraUC07bRbBNZ6ImFgiw1V2_5Cty4dsm6aOiNw_pOUgFds7RwRj88OtI0L3aocBfeD2ZrDDK-x_3Csn2-rG0n8dzD_vGJKqaXoTVvemoo3R1fiZqVyPvlFQZLupG01F0kytAfDSHMyaw3lzOGv2fzPvzs9-BgAA__-R_woM +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkl-r00wQxu_fTzHMVUrm0PzpC7pXW4_1WOhJa5qqBy2HbXYIhTQbdxNRSr-7JEE8VYx6Oc_M8-Q3mT2j-1SiwMX7zWq-TMB7udxm2zerCWwXq8VtBjmBJnDtyVPgQy7EMsmeTcAH9bnwDuCDnsCrdH0PWjUK3r1epAtQ8LENgpjhOdyl690GXjz0OUhYGc2JOrFD8QFDJPwf94S1NTk7Z2wnn_uhpf6CIiA8VnXbdPKeMDeWUZyxOTYlo8DE3Jh6GiGh5kYdy37sQmja5ofJNapgFPGFngSH48GZOpScstJsp8FVPHZrytoeT8p-RcJbU7anyglQBAf6vuW2Vp02DYMbJEy50mwFyNCX8fADCWTkyxmBjAnkDH9HHf4L9bwoLBeqMXYaXkPLmOQMCefJw2Oyzh6T3WrlyXjyizTrpO3u3pNh33x758locrVDh95x-yPY0RX2H66YsqtN5fivzhhc9oSsCx5eijOtzXljTd5_ZijXva8XNLtm6MZDsayGVgf41ByOmqNxczRqDn4y7y__fQsAAP__LrkQJQ== query T EXPLAIN (DISTSQL) SELECT sum(a), sum(b), sum(c) FROM data GROUP BY d HAVING sum(a+b) > 10 @@ -613,7 +612,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll1vok4Uxu__n2JyrjQdAzOAL1zhv7VdE6tdtZttdk2DMrEmFtwBk20av_sG2BTF7hyMSrzi9eGcOc9vnvAO4a8l2ND5_tBrd_ukctMdjUdfe1Uy6vQ612MSrl8rbpUmx-nf46xKboeDe-K5kUvuhoPHB_L_E_HIl_a3bv8ulZArMq2Sn2tdNwRhOlDwA0_03VcRgv0DGFDgQMEACiZQsGBCYSWDmQjDQMavvCeCrvcbbJ3Cwl-to_j2hMIskALsd4gW0VKADWN3uhRD4XpCanEhT0TuYpmUiTt0VnLx6so3oDBauX5ok5rGiOt7hJEgehESKAyF7wlpE4ddOZwSh1GSHA1KHBMmGwrBOso6CCN3LsBmG1q8y_Z8LsXcjQKpWbtNOvF1u__03B-Mn_uPvV7Fsapxt4_3FYd_nBkfZ-bHGavmmsvqTd_Iixu-5EoxmGyyBfB_LiD7ztoPpCek8Ha-lHxFsUSm7xXOr5EVXKOVX2PWv3GIAbeLZSSkkBrLzT99YBPHyni1bfumc929b_eAwmAd2TEPjkEVNJinHWY_qAUrjeu5Nz-vbe3UZsX3CyuyXzRW0_gZdgzS5xZO9cvcMeyUO4aVv2MQA7IdUy9hx_Di1PJC1PKaZpyBWqTPLUsbl0ktPyW1vHxqEQMyahslUGsUp9YoRK1R08wzUIv0uWVp8zKpNU5JrVE-tYgBGbXNEqg1i1NrFqLWrGnWGahF-tyytHWZ1JqnpNYsn1rEgIzaVsn_1J80MxThKvBDUeiPWY-HLby5SJ0Jg7WciQcZzJIy6eUg0SU3PBFG6VOWXnT99FHc4LaY5cVsW8x3xOwwceMYMWNHqa2j1C21misHbqgHbijFprqyqRRzxGtLqa6rxfVjQFGLEVDUYgwURI2AgqgRUBrKgTfVA28eA0pLnQk6Egp7kXJQKqjVWCyo1WguIHIsGBA5YjjbC5bduXNk7upkQTxn6mhhJlJ8L1wOMl2txkxXq1HTETlmOiLHTFfnKkOCle1lzEGmqzOGISHD9lLmINPVasx0tRo1HZFjpiNyzHR1wnIkYbn6py1v-mTz358AAAD__75d3tU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlm9vqkgUxt_vp5icV5qOgRnAP7zCbW3XxGpX7WabXdOgTKyJgneA5DaN3_0GvCmKvXP0osRX_H04Z87zmyd8QPhtCTZ0_n3qtbt9Urnrjsajv3tVMur0OrdjEsarilul6XH68zirkvvh4JF4buSSh-Hg-Yn8-UI88lf7n27_YSshN2RaJf_Hum4IwnSg4Aee6LsrEYL9HzCgwIGCARRMoGDBhMJaBjMRhoFMXvlIBV3vO9g6hYW_jqPk9oTCLJAC7A-IFtFSgA1jd7oUQ-F6QmpJIU9E7mKZlkk6dNZysXLlO1C4DZbxyg9t4lIypWRGiQcURms3uVfTGHF9jzASRG9CAoWh8D0hbeKwG4dT4jBK0qNBiWPCZEMhiKOsrzBy5wJstqHH996ez6WYu1EgNWu_dSe5bvdfXvuD8Wv_uderOFY16fb5seLwzzPj88z8PGPVXHNZvek7eXPDt1wpBpNNtgD-ywVk34n9QHpCCm_vS-lXFEtk-kHh_BrZkWu08mvM-jdOMeB-sYyEFFJjuflvH9jEsTKKbdu-69x2H9s9oDCIIzvhwTGoggbzvMPsB7VgrXE99-bXta292uz4XcR-fxdprKbxC-wjpPsdyOrXuY_YOfcRK38fIQZk-6hewj7ix7PMC7DMa5pxAZaR7neMblwny_ycLPPyWUYMyFhulMCycTzLRgGWjZpmXoBlpPsdo5vXybJxTpaN8llGDMhYbpbAsnk8y2YBls2aZl2AZaT7HaNb18myeU6WzfJZRgzIWG6V_K_-RTNDEa4DPxRH_YnrybCFNxdbZ8IgljPxJINZWmZ7OUh16Q1PhNH2KdtedP3to6TBXTHLi9mumO-J2WniRhExY4XUViF1S63myoEb6oEbSrGprmwqxRzx2lKq62pxvQgoajECilqMgYKoEVAQNQJKQznwpnrgzSKgtNSZoCOhcBApJ6WCWo3FglqN5gIix4IBkSOGs4Ng2Z87R-auThbEc6aOFmYixQ_C5STT1WrMdLUaNR2RY6Yjcsx0da4yJFjZQcacZLo6YxgSMuwgZU4yXa3GTFerUdMROWY6IsdMVycsRxKWq3_a8qZPNn_8CAAA__-5Q_1S query T EXPLAIN (DISTSQL) SELECT avg(a+b), c FROM data GROUP BY c, d HAVING c = d @@ -634,7 +633,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMl9tr4zgUxt_3rxDnKaEKjiTnZig42227gdTp5rJMGUJRY5EGUjsjO8OUkv99cFJy81THuYHfbNk_6zv6vnNIPiD6MQUHbr89tpstjxT-afX6vf_aRdK7bd_e9In8OS5IckVeipSMyF2380B8GUty3-0MHsnfT2REiU_-bf7f8u7JiFwTHygEoa88-aYicL4DAwocKAigYAOFCgwpzHQ4UlEU6uSVjyXQ8n-BU6YwCWbzOFkeUhiFWoHzAfEknipwoC9fpqqrpK-0VQYKvorlZLrcJlHlzvTkTep3oNCbySBySMliRAY-YSSMX5WG4YJCOI83O0SxHCtw2IJmV3E3mcZKK21VdiWs1h3iCnJN3KTWrgr85Qq7cjklrqDJ-lci-CEimuOxVmMZh9pie0fhJkfd9J6evU7_2Ru02wVXFJMzGTwUXJZc3XQGXv_zevdFXtyTt9nx5Z28yuh1by8Gw8WmBPFlCZvvzINQ-0orf-dLy6-YiqykNt7XztZF8s-r51ZSpkiXaRe33eEW4ox93rK8sBTOLF7ee_PPe1d29mbZG4RlaRCLlSx-RIsgOtYtUr1kiyAittPDctoi7JwtUs1Ni_DsMeWZYspLljgipoiOdUxrl4wpImLbQZ7TmPJzxrSWm5iK7DEVmWIqSpZ9REwRHeuY1i8ZU0TEtoMipzEV54xpPTcxtbPH1M4UU7tkVY6IKaJjHdPGJWOKiNh20M5pTO1zxrSRm5gi_1i6KpqFQaQy_eotJ2Urf6xWZxSFcz1SjzocLbdZ3XaW3HLBV1G8espWN61g9SgRuA0zI8zNMN-H2TYsdmB2GFw_BWb8JLp6Cs3LZloYD9w2w7bZLcTripGumuGqEa6Z4dopQTHDSFDMMBYUhEaCYqaxoNRPCUrDPBPKyFBARgo2U1JD5RC7ERrxG6ExwzEccRzBMctZarQc4jkzjxZmI66ZhwurIHhquhxkupnGTDfTqOkIjpluxlHTzZMVMz01ZHZdqyOumacMayB4as4cZLqZxkw306jpCI6ZbsYx07l5wu6bPlz89TsAAP__M1zTEw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMl11r4k4Uxu__n2I4V0pH4kziW6AQ_922K9jY9WXZskgZzWAFm7iTuGwpfvclsfiW7Rw1CrlLJvllnjPPcw76DuGvGdhw--Ox3Wy5pPCl1ev3vrWLpHfbvr3pE_F7UhDkioyKlIzJXbfzQDwRCXLf7Qweyf9PZEyJR742v7fcezIm18QDCn7gSVe8yhDsn8CAAgcKJlCwgEIFhhTmKhjLMAxU_Mp7ArS8P2CXKUz9-SKKl4cUxoGSYL9DNI1mEmzoi9FMdqXwpDLKQMGTkZjOkm1iVc5cTV-FegMKN8Fs8eqHNhGUjGiiEij05iJeKxmMCN8jjATRi1QwXFIIFtFm3zASEwk2W9LDtd1NZ5FUUhmVXWGrdZs4JrkmTnwCXel7yQq7cjgljknj9c9E8GNENCcTJSciCpTB9g7IiQ1ouk_Pbqf_7A7a7YJjFuMzGTwUHBZf3XQGbv_jevdFXtyTt9lx9EZeRPiytxeD4XJTgvlpCZvvLPxAeVJJb-dLyVd0RVZSG-9rZ-si-cfVcysu00yXaRW33eEG4ox13rLcoBTMDV7ee_Pfe1d29maHtw07vW0MVjL4CY2DqFs3TvWSjYOI2M4Uy2njsHM2TjU3jcMPDy_PEF5eMswTwouoW4e3dsnwIiK2feU5DS8_Z3hruQmveXh4zQzhNUuGdUJ4EXXr8NYvGV5ExLavZk7Da54zvPXchNc6PLxWhvBaJaNyQngRdevwNi4ZXkTEtq9WTsNrnTO8jdyEF_kn1JXhPPBDedCv6XJctvQmcnVGYbBQY_mognGyzeq2k3DJgifDaPWUrW5a_upRLHAbZlqY62G-D7Nt2NyB2XFwPQvMeCa6moXmZT1tag_c0sOW3i3E64qWrurhqhau6eFalqDoYSQoehgLCkIjQdHTWFDqWYLS0M-EMjIUkJGCzZTUUDnGboRG_EZozHAMRxxHcMxylhotx3jO9KOFWYhr-uHCKgiemi5Hma6nMdP1NGo6gmOm63HUdP1kxUxPDZld1-qIa_opwxoInpozR5mupzHT9TRqOoJjputxzHSun7D7pg-X__0NAAD__xrc8ZA= query T EXPLAIN (DISTSQL) SELECT sum(a+b), sum(a+b) FILTER (WHERE a < d), sum(a+b) FILTER (WHERE a = c) FROM data GROUP BY d @@ -652,7 +651,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll9v2jAUxd_3Kaz7BKpRsB1oG6lSuo1uSBS6QLVVG6pcbFEkGjMnkVZVfPcpQSuBdnYqg8qb8-eXe-49R1d5guT3HALo_LjqnXf7qPa5OxwNv_XqaNjpdT6NUJI91Dg6Qnd1XDqji25v1IlQ7fvXTtRBHP3Kmk02QcL81hma1NFFNLhEgqccfYkG11fo4w0SgCFWQvb5g0wg-AkEMFDAwACDDxhaMMaw0Goik0Tp_JWnAuiKPxA0McziRZbmt8cYJkpLCJ4gnaVzCQGM-N1cRpILqb0mYBAy5bN5USZXES707IHrR8AwXPA4CVDDI4jHAhGk0nupAUMkYyF1gEJyFFKMQrJqN_Tz81nIMAp9GC8xqCxdC0lSPpUQkCWuLvZ8OtVyylOlvdam1jCfw3n_5rY_GN32r3u9WujXc9HXl7WQlE7_ph7SV-6xLZnryneP6J4n91tFCYyX61bof1tZfyeLlRZSS7HxpeIrhmZJ80Xh7W7XPdLnE3s-FbMYZGmAQopDhg2GsN120VcNtfBIa-vN12v7G7VJ9eSSKsn1SMOj-8uuRW7JzvahZ5fsMrvkvbJLq-eHVsoPbXhsf_mxyC2N9PjQ80N3mR_6Xvlh1fPDKuWHNTx_f_mxyC2N9OTQ88N2mR_2Xvnxq-fHr5Qfv-G19pcfi9zSSE8PPT_-LvPjH8K_1ysaI5ksVJzISn9WzbxLKaZyNZJEZXoir7SaFGVWl4OCK24ImaSrp2R10Y1Xj3KBZZhsw6QM0w2YvA1uu8CnLjBx0k1aZpoa583MMDOb1Ta75RvplhluuVhthi1Wm2GL1WbYZrWFtljddrH62AifmM06cTHLDFvMMsMWs8ywzSwLbTHr1MUsYtmitjXqtkfdFqnbJnVcpW67lDgtU2LZpr7FtBfr9E2mmWmbaWbaZpqZtppmwW2mvViqRtPGyw9_AwAA__9_QsYt +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMltFv2joUxt_vX2GdJ1CNgu2EtpEqpbeX3iFR6ALVVm2oMolFkSBmTiKtqvjfpwStBNrZdAaVN2Pyyznf-T4d5RnSHzPwof31tnvZ6aHaf53BcPC5W0eDdrd9NURpPq9xdILGdVw5o-tOd9gOUe3Lp3bYRhx9z5tNFqFY_9QFiuroOuzfoJhnHP0f9u9u0b_3KAYMiYxFj89FCv43IICBAgYGGFzA4MEIw0LJSKSpVMUjzyXQiX-C38QwTRZ5VlyPMERSCfCfIZtmMwE-DPl4JkLBY6GcJmCIRcans7JM0UWwUNM5V0-A4UrO8nmS-ohjNMYowmVjgwUv7hoOQTyJEUEyexQKMIQiiYXyUUBOAopRQFZDCNzifBEwjAIXRksMMs_W7aUZnwjwyRLvLuFyMlFiwjOpHG9TQVBM57J3_9DrDx96d91uLXDrRdN3N7WAVE6_vQjoG3dsq8115fETeuTp41ZRAqPlWgr9o5T1e_JEqlgoEW-8qXyLRixpviq8rXatkb6c2MupnEU_z3wUUBwwrDGE7VdFTzbkwiHe1pNv13Y3apPd80z-Ps8OaTj0cIk2iKiY3Dr2RJN9Jpp8VKLp7qmiFqmiDYcdLlUGEZVBnx57qug-U0U_KlVs91Qxi1SxhuMeLlUGEZVBnx17qtg-U8U-KlXu7qlyLVLlNhzvcKkyiKgM-vzYU-XuM1XuMXzTvdFjKNKFTFKx0xdbs1Ap4olYjSSVuYrErZJRWWb1s19y5UUs0mz1L1n96CSrv4oGqzDZhkkVphsweR_csoHPbWBi1Tfx9DTVzpvpYaY3q6V3y9XSnh72bKzWwwar9bDBaj1sstpAG6xu2Vh9qoXP9Gad2Zilhw1m6WGDWXrYZJaBNph1bmMWMWxR0xq126N2i9Ruk1quUrtdSqyWKTFsU9dg2qt1-i7T9LTJND1tMk1PG00z4CbTXi1VrWmj5T-_AgAA___TVOSq # Same query but restricted to a single range; no local aggregation stage. query T @@ -671,7 +670,7 @@ vectorized: true table: data@data_pkey spans: [/1 - /1] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklFr2zAQx9_3KY57SqhKLDtPgoKyzd0Mrp05DlvZQlGtwwQSy5Nk2Aj57sM2o8nYvO3t7n_3P_2k0wnd1wMKjD-t01WSwextsik3H9I5bOI0flOC644zBTfwPGcXMdwnaRkXMPv4Pi5iUPClC4KoAj3ddQfVHO6L_AG08gpeZA7viny7htePoJFhYzRl6kgOxWfkyDDEHcPWmoqcM7aXT0NTor-hCBjum7bzvbxjWBlLKE7o9_5AKDAzt6ZdhMhQk1f7w9B2Zmg6_2JyXtWEIjqzi8F8enCpng9UkNJkF8HVeOyvJ1u7Pyr7HRluWtU4AQt-O3AU1GiyAiS_kSEDycfXk8s-vpMRA7nEPyHy_0Fc1bWlWnljF_yaUC6R4Sp7fMry8inbpulMLuc96vZhJvlF9HOJMvyNFiHDvPMCZMhkxCawwyvsv6ysINeaxtE_7Sw47xiSrmn8Fs50tqK1NdVwzJjmg28QNDk_VqMxSZqx1ANemvmkOZw2h5Pm4Bfz7vzqRwAAAP__7JoUPA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklGLm0AQx9_7KYZ5Srg54mqehINNr14reJoaQ3u04di4iwSMa3dXaAn57kWlXFJa23ub-c_8x984e0L7rcYQo8_rZBWnMHsXb4rNx2QOmyiJ7guw3XEm4Ab2c7qI4SFOiiiH2acPUR6BgK-d5wUlyOmuOyjn8JBnjyCFE_AiM3ifZ9s1vH0CiYSNlioVR2Ux_IIMCX3cEbZGl8pabXr5NDTF8juGHuGhaTvXyzvCUhuF4QndwdUKQ0z1rW4XPhJK5cShHtrOhLpzLybrRKUwDM50MZhNDy7Evla5ElKZhXc1Hvv1eGsOR2F-IOG9rrtjY0MQBHuCkoYtN63otQW7Hehy1UhlQuDshvsEnI3_lC_7-I4HBHyJfwNnrwFfVZVRlXDaLNg1N18i4Sp9ek6z4jndJsmML-c96vZxxtlF9Ou03P-DFiBh1rkQuE88oAls_wr7H4fMlW11Y9V_XdI77wiVrNT4WKzuTKnWRpfDZ8Y0G3yDIJV1YzUYk7gZSz3gpZlNmv1psz9p9n4z785vfgYAAP__cvQaVQ== # Verify the XOR execution plan query T @@ -689,7 +688,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF1v2jAUhu_3K6xzBZJRcBIo9VXZxiokVjrCRacpQh4-SpFonNlGYkL89ynJpgbUOpmSy3y8ed48xzonML_2wGH29LiYzh9I7_M8WkffFn0SzRazT2tyVHojkqRn1eYZjz3R5_zj9_Us6pMvq-VXIoUVQCFVEh_ECxrgP4ABBR8oBEAhBAojiClkWm3RGKXzV05FYC6PwIcUdml2sPntmMJWaQR-AruzewQOa_FzjysUErU3BAoSrdjtC0yOvsv07kXo30AhykRqOBl4jIhUEkaUfUYNFFaYStSc_P2DO_bvFyA-U1AH-0o3ViQInJ1p84bTJNGYCKu0N7os-LRcbab39znxXZT_LuqVcEiVlqhRXnw-PrvLsOH_twku2rDmo2FNRuOxged3PJyajhUf47bD8Zvr8Bvp8Ade0LGOmo4VHTdtdQTNdQSNdAQDL-xYR03Hio5JWx1hcx1hIx3hwBt1rKOmY0XHbZeb7A3UCk2mUoNXG-3tLw_zTYcywXItGnXQW3zUaltgystlkStuSDS2fMrKi3laPsoLVsPMGfYvwuw67LvJNejAmQ7d4bBN75EzPHaTx23IN87wxE2etCHfumc1rDkm7kN2zY7PH_4EAAD__4qIBsU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslNFu2jAUhu_3FNa5KpJRcBIo9VVZxyokVjrgotOEkIePUiSIme1ITIh3n5JsakCtkyi5Iwl_vj_fsc4JzO8dcBi_PE9Hkydy82WyWC6-TztkMZ6OH5bkqPRaRNGNVetXPN6IDueffyzHiw75Op99I1JYARRiJfFJ7NEA_wkMKPhAIQAKIVDow4rCQasNGqN0-pdTFpjII_AehW18SGx6e0VhozQCP4Hd2h0Ch6X4tcM5Cona6wEFiVZsdxkmRd8f9HYv9B-g8KB2yT42nKR9FgeR_ux6jIhYEkaUfUUNFOYYS9Sc_Puce_b_e2B1pqAS-1bFWBEhcHam1euOokhjJKzSXv-y7ctsvh49PqbED1H-h6g3QhIrLVGjvHj96uwuw3r12wQXbVj1ObHac_JY1_NbnlRJ4YKcQdNJ-dXd-PXd-F0vaNlNSeGCm9umboLqboL6boKuF7bspqRwwc2wqZuwupuwvpuw6_VbdlNSuODmrs3t9w5qjuagYoNXW_D9N_fS7YgywnyVGpXoDT5rtckw-eUsy2U3JBqbP2X5xSTOH6UFi2HmDPsXYXYd9t3kEnTgTIfucNikd98ZHrjJgybkW2d46CYPm5Dv3LPqlRwT9yG7Zq_On_4GAAD__1kTGwE= # Verify the XOR execution plan query T @@ -705,7 +704,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF1r2zAUhu_3K8S5akDGlu2kqa8StqwEsqZLclEYpmjRwQuklifJ0BHy34ftizqhlTW0S3-8et6HI84J9O8jZLB4elzNlw_k5styu9t-X43IdrFafN6RV6meeVHc8BH5ull_I4IbDhRKKfCBv6CG7AcwoBADhQQopEBhDDmFSsk9ai1V88upDSzFK2QRhUNZ1aZ5nVPYS4WQncAczBEhgx3_ecQNcoEqjICCQMMPxxbToGeVOrxw9QcobCte6owEISO8FIQRaX6hAgrr2mRkxiA_U5C1eWNpwwuEjJ2pe595USgsuJEqHF_WeVpvnuf39zczNvoQFX-IeiPUpVQCFYqL4_OzvQyL_r1NctGGuQ-CuQwiZEEYe41ioFHPfuI7ithdPnaSj4Mw8ZIfaNSTv_WVT9zlEyf5JAhTL_mBRj35qa986i6fOsmnQTj2kh9o1JO_-58b6B3UBnUlS41Xm-j9k6NmQ6EosFtnWtZqj49K7ltM97huc-0Lgdp0X1n3sCy7T03BfphZw_FFmF2HYzt5AJ1Y06k9nPr0HlvDEzt54kO-tYandvLUh3xnn1U0cE3sl-yanZ8__Q0AAP__cEnj_A== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslEFro0AUx-_7KYZ3amBER02aemroZksg23STHAqLlNnMww0Yx50ZoUvId1_UQ01oR417i5q_v__PN7wj6D8pRDB_eV7OFk_k5utis938WI7IZr6cP2zJm1SvPElu-Ih8W6--E8ENBwqZFPjED6gh-gkMKPhAIQAKIVAYQ0whV3KHWktV_uVYBRbiDSKPwj7LC1PejinspEKIjmD2JkWIYMt_pbhGLlC5HlAQaPg-rTAl-j5X-wNXf4HCg0yLQ6YjUvbZ5Lz86biM8EwQRqT5jQriEwVZmHecNjxBiNiJdq80SxKFCTdSuePzRi-r9evs8fHmno0-Rfmfot4JRSaVQIXi7PXxyV6Gef3bBGdtWPdZsN6zcJnj-ldMo6VU4wNMhk7D7-7v9_f3HTe4wr-lVMP_dqh_0N0_6O8fOG54hX9LqYb_dKh_2N0_7O8fOu74Cv-WUg3_u_-5jT5ArVHnMtN4sZU-frNXbisUCdarTctC7fBZyV2FqS9XVa66IVCb-imrLxZZ_ags2Awza9g_C7PLsG8nt6ADazq0h8MhvcfW8MROngwh31rDUzt5OoR8Z5-V13JM7Ifskh2fvvwLAAD__4NM6_k= query T EXPLAIN (DISTSQL) SELECT max(t.a), min(t.b), avg(t.c) FROM (VALUES (1, 2, 3), (4, 5, 6), (7, 8, 0)) AS t(a, b, c) WHERE b > 3 @@ -762,7 +761,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlWFr2kAYx9_vUxzPq4Sdi5fE1h4MktW0C1jtorCVIeXqPWSCzbnLCSvF7z5irJ0yk6BvfNfnrn__P39PiK-Q_54Dh-jHfT-MB8TqxaPx6FvfJqOoH12PidBavDyKNLWETW6S4R2x3m7KUQojyPevURIRy3oinwmzSTjoEWta_P2pbW9GuRnJMOlFCfnyQIQNFDIlcSCeMQf-ExhQcIGCBxR8oNCBCYWFVlPMc6WLf3ldB2L5B3ibwixbLE1xPKEwVRqBv4KZmTkCh7F4mmOCQqJ22kBBohGz-bqmQA4WevYs9AtQGC1ElnPSchgRmSSMKPMLNUxWFNTSvDfkRqQInK1oc4qb2dygRu10dhHKc04sK3ALMZzzeDDublwFXimLc37TH4bj7pvEwN9e9KLr-C7sFw6HS8NJwA4SuweJ30GVlqhR7lIG7CNMVv_5WmGaakyFUdphe3LDJAkfHsPbWytg9kEkbweJNV8la7JKh7Uc94hl1nBsl3lxNst0m5tzG5lzW453hLkajq25y7Mx5zU35zUy57Uc_whzNRxbc92zMec3N-c3Mue3nM4R5mo4tuauzsZczY9FgvlCZTnu8B765HbxXkaZYvkez9VST_Feq-m6phyH69z6QGJuyltWDnFWXhWA_4ZZZdjdCbP9sFvdXFPtVab96rB_CnenMnxR3XxxSvNlZbhb3dw9pfmqelftmsek-iHb756sPvwNAAD__yC-ODo= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlVGL2kAUhd_7K4b7lNCxcZK46w4Ukq5xG3B1G4V2KbKMmSEVYsZORugi_vcS47pVaiLmxTfvvZ6ck-8OmTXkv1OgEPx4GvjhEBm9cDwZfxuYaBwMgvsJYkqx1xeWJAYzUT8aPSLjbVKWnGmGvn8NogAZxgx9RsRE_rCHjLj4_alt7kq-K9Eo6gUR-vKMmAkYMsnFkC1EDvQnEMBgAwYHMLiAoQNTDEslY5HnUhV_WW8FIf8DtI1hni1XumhPMcRSCaBr0HOdCqAwYbNURIJxoaw2YOBCs3m6tSkie0s1XzD1ChjuZbpaZDlFDKMZRjFGHDCMl6zotSyCWMYRQVL_EgqmGwxypd99c80SAZRs8PnZ-vNUCyWU1TkMVvYpMgzPLnBRSsPhpLsj6DklQkppfzDyJ903tJ67H_SC-_DRHxRkRytNkUdOJrZPJn4PKhUXSvDDlB75CNPNf17LTxIlEqalssgRcj-K_OcX_-HB8Ih5MpJzEImcv2By-YIt0rLsC1Zck26_4purWbF9Pk-7AU-7ZTkX8KxJt-d5ezU8nfN5Og14Oi3LvYBnTbo9z-7V8HTP5-k24Om2rM4FPGvS7XneXQ3PmksoEvlSZrk4yHvqye3iey94Isr7IZcrFYsnJeOtTVmOtrptg4tcl1NSFmFWjoqA_4pJpdg-EJNjsV3tXGPtVKrdarHbJHenUnxT7XzTxPm2Utytdu42cb6r3lW75phUH7Jj7-nmw98AAAD__1XcVrc= query T EXPLAIN (DISTSQL) SELECT json_agg(a) FROM (SELECT a FROM data WHERE b = 1 AND c = 1.0 AND d = 1.0 ORDER BY a) @@ -780,7 +779,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlVGPmkwUhu-_XzE5V5BvLA6g607SBLrilsaVLZq0TWM2s3JCbVzGDmPSxvjfG8S61VQgeuPdnpl9fR-fQ3AN-Y8FcAg-Pw79cESMfjiejD8OTTIOhsHdhHzPZfYk0tQQJhnE0QMxdheiHBOhBfn0PogDYhjP5C1hJvFHfWLMir_ftM3dmOxGEsX9ICbvvhBhAoVMJjgSL5gD_woMKNhAwQEKLlDowJTCUskZ5rlUxb-st4Ew-Qm8TWGeLVe6OJ5SmEmFwNeg53qBwGEinhcYo0hQWW2gkKAW88W2pkD2lmr-ItQvoDBeiiznpGUxIrKEMCL1N1Qw3VCQK_3akGuRInC2oc0pBvOFRoXK6hwilOecGIZnF2I45-Fo0tu58pxSFud8MIz8Se-PRM_dX_SDu_DBHxYOo5XmxGMnie2TxK-gUiWoMDmk9Nj_MN3842v5aaowFVoqix3J_TCORk_-_b3hMfMkkXNAxJpvkjXZpMValn3GLms49rvsXs0u7ebm7Ebm7JblnGGuhmNv7uZqzDnNzTmNzDktyz3DXA3H3lzvasy5zc25jcy5Latzhrkajr2526sxV_NbEWO-lFmOB7ynPrldvJYxSbF8jedypWb4qORsW1OO0Ta3PUgw1-UtK4cwK68KwL_DrDJsH4TZcdiubq6pdirTbnXYvYS7UxnuVjd3L2m-qQz3qpt7lzTfVu-qXfOYVD9kx93TzX-_AwAA__8sJTeQ +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlVGPmk4Uxd__n2JynyD_sTiAu-4kTaAru6VxZYsmbdOYzchMqA0ydhiTNsbv3iDWraaCkRffvPd6OIffnTBrKH5kQCH4_Dz0wxEyBuF4Mv44NNE4GAb3E_S9kPkLS1ODmeghjp6QsRuwquRMM_TpfRAHyDBm6C0iJvJHA2Qk5e83XXNX8l2JongQxOjdF8RMwJBLLkZsIQqgX4EABhswOIDBBQw9mGJYKpmIopCq_Mt6Kwj5T6BdDPN8udJle4ohkUoAXYOe60wAhQmbZSIWjAtldQEDF5rNs61NGdlbqvmCqV-A4V5mq0VeUMQwmmGUYMQBw3jJyl7HIojlHBEk9TehYLrBIFf61bfQLBVAyQafn-1hnmmhhLJ6h8GqPkWG4dklLkppOJr0dwQ9p0JIKX0YRv6k_wet5-4Hg-A-fPKHJdlopSnyyMnE9snEr0Gl4kIJfpjSI__DdPOP1_LTVImUaakscoT8wzgavfiPj4ZHzJOJnINE5Pz9ksv3a5GOZV-w4YZ0-w3fXM2G7fN52i142h3LuYBnQ7o9z9ur4emcz9NpwdPpWO4FPBvS7Xn2r4anez5PtwVPt2P1LuDZkG7P8-5qeDbcQbEoljIvxEHeU0_ulp97wVNRXQ-FXKlEPCuZbG2qMtrqtg0uCl1NSVWEeTUqA_4tJrVi-0BMjsV2vXODtVOrduvFbpvcvVrxTb3zTRvn21pxv96538b5rn5X3YZjUn_Ijr2nm_9-BwAA__8YDFYN # Test that orderings on GROUP BY columns are propagated through aggregations. statement ok @@ -825,7 +824,7 @@ vectorized: true table: sorted_data@foo spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkV-LozAUxd_3U4T7pJBStexLnnR3u4tgtasWWhYpqbkrBWucJEKh-N0H9WHagTozj_fP75yTmxvolxoYrPfbKAhjYv0Kszz7G9kkW0frnznhlFz41TrZ5HeabIiWyqA4Cm44-ZMmuy35cSAcKDRSYMwvqIH9AxcofIeCQqtkiVpLNbRv41IorsAcCuem7czQLiiUUiGwG5izqREYxHIh26UHFAQafq7HtZ6C7MwbpA2vENiqp3fC7rxwzk81psgFqqXzIA93L_P_SwkUspY3mpEFUEg6w4jvUt-DZzncr-QIqkphxY1US_cxhj_UQXw4xkl-jHdRZPmuDRQ2wd7yPfupvfdg_8F9U9StbDR-6sBOX1BAUeH0h1p2qsStkuVoM5XJyI0NgdpM09VUhM00GgLew-4s7M3D3izsvIOL_ttrAAAA___rKu8R +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkcFrq0AQxu_vr1jmpLAhangXT_ry0iIYTdVAQpGwcacSMK7dXSEQ_N-LemhSiG2P38z8Zr799grqvQIXVrtN6AcRMf4HaZa-hCZJV-FqmRFGyZldjKNJnpJ4TZSQGvmBM83IcxJvN-TfnjCgUAuOETujAvcVbKDwF3IKjRQFKiVkX74OQwG_gGtRONVNq_tyTqEQEsG9gj7pCsGFSMxEM3eAAkfNTtUw1lEQrf6ElGYlgrvo6M1ie3pxxo4VJsg4yrl1tx5uXua9CQEUlqJqz7Vy-wyOQCFtWK9m8MiK_RsrfllKLJkWcm7fO_F67Uf7QxRnh2gbhoZnm0Bh7e8MzzEfnnfuzn8TcYKqEbXCH2VsdTkF5CWO36hEKwvcSFEMZ0YZD9xQ4Kj02F2MIqjHVm_wFrYnYWcadiZh6wucd38-AgAA___wvPC6 query T EXPLAIN (DISTSQL) SELECT a, max(b) FROM sorted_data GROUP BY a ORDER BY a @@ -842,7 +841,7 @@ vectorized: true table: sorted_data@sorted_data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlkFv2jAUx-_7FNY7gWYU7ATa5gRb2YRESQdUajWhyiUWRaJxZhupVcV3n5IcCO1qJ3I6cSMJP7-__Xt68iuoP1sIYXR7PRmOp6h1OZ4v5r8mbTQfTUbfF4hh9MSeWw9t9GMWXSElpObxfcw0Qz9n0c01-naHGIpml6NZ_hMwJCLmU_bEFYS_gQAGChh8wBAAhh4sMaRSrLhSQmZ_ec2BcfwMYRfDJkl3Onu9xLASkkP4CnqjtxxCWLCHLZ9xFnPpdQFDzDXbbPMypVyDVG6emHwBDPOUJSpEHY8glsSIIKEfuQQM0U6HaEDwgMJyj0Hs9KGq0mzNISR7XD3ZcL2WfM20kF7vONggO4BIxlzyOCsJGIbTu_tptLif3kwmrQFpA4ar4W1rQNtvwhzWf3hBj0w9vlt6uT8Eph8GPqwjiiBv1_laLGTYFek2t61DZL_xyFPREalHjiV8VD44Kk-qNx-p0Xwe6XjUtf0s2Uqi-qfRfqTh9iOf3360un9axz_teL6rf0u20kmdnYZ_2rB_-vn-_er-_Tr-_Y4XuPq3ZCud1Plp-Pcb9u9_vv-guv-gjv-g4_Vc_VuylU7q4jT8Bw37D_7v9eMfaWZcpSJRvNLNopvth8drXuxfiZ1c8WspVnmZ4jHKufxFzJUuvpLiYZwUn7KAZZi8hUkZpkcwqQf3XeALF5g45SY9M02N5-2bYd8sq2-2FRjpnhnuuag2wxbVZtii2gzbVFtoi-q-i-ozI3xulnXuIssMW2SZYYssM2yTZaEtsi5cZBHLFLWNUbc56jZI3Sap4yh1m6XEaZgSyzQNLNLejdNa0sy0TZqZtkkz01ZpFtwm7d1QNUpb7r_8DQAA__8yuHmt +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll1v2jwYhs_fX2E9R6DXKDgftM0RrGUTEk26QKVWE6oMsSgSxJkdpFYV_31KckBoVzvFYeKshl72bV-3HvEG8vcafBg-3I0HowC1bkaT6eTnuI0mw_HweoooRhv60pq30fcovEWSi4zFTzHNKPoRhfd36NsjoiiMboZR8SdgSHjMArphEvxfQACDDRgcwOACBg9mGFLBF0xKLvJ_eSuAUfwCfhfDKkm3Wf7xDMOCCwb-G2SrbM3Ahymdr1nEaMyE1QUMMcvoal0cU8nVT8VqQ8UrYLjm6-0mkX5-izlgmKQ0X3UsgmgSI4J49swEzHYY-DbbHywzumTgkx2uH26wXAq2pBkXlneYrZ-_QShiJljso2I1CB6fgnD6FNyPx60-aQOG28FDq2-334XZ7z9_Rc9UPn_YerbbB7Y_Dbzfh5dB3u_zf7mR4lak29y19pGdxiMHvMNTixxK-Ox49-B4Ur9_xKB_FulY9hEN1MSruOqdRwNJww0kp2-gXb8CtkkF7I7lHFEBTbzKY12cRwXshitgn74CTv0KOCYVcDqWe0QFNPEqj3V5HhVwGq6Ac_oKuPUr4JpUwO1Y3hEV0MSrPNbVeVTAbbgC7r_9KfKXNBGTKU8kq_Uro5vfh8VLVt5f8q1YsDvBF8Ux5TIsuOKDmMms_JaUi1FSfpUHrMLkPUyqsH0Ak6_BPRP4ygQmRrmJp6Zt5Xs7athRy-qpbblK2lPDnolqNaxRrYY1qtWwTrWG1qjumai-UMKXalmXJrLUsEaWGtbIUsM6WRpaI-vKRBbRTFHdGDWbo2aD1GySGo5Ss1lKjIYp0UxTVyPtwzj9kjQ1rZOmpnXS1LRWmgbXSfswVJXSZrv__gQAAP__pFWB-g== query T EXPLAIN (DISTSQL) SELECT c, min(b), a FROM sorted_data GROUP BY a, c @@ -859,7 +858,7 @@ vectorized: true table: sorted_data@sorted_data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlltv2jAUx9_3KazzBJpRcC60zRPd1k1INHRApVUTqlxiUSQaM9tIqyq--0TyQLjMJ2Ae8pjLL-cc_386ygfoPwuI4e7XQ_-2l5DGt95oPPrZb5LRXf_u65hMKXmbZ42XJiWcfB8O7omWyoj0OeWGkx_DweMD-fJEOCVToJDJVCT8TWiIfwMDCj5QCIBCCBQimFBYKjkVWku1eeUjB3rpX4jbFObZcmU2tycUplIJiD_AzM1CQAxj_rIQQ8FTobw2UEiF4fNFXqbUT3ep5m9cvQOF0ZJnOiYtjxGepYQRaV6FgsmaglyZbSFt-ExAzNa0ejO3s5kSM26k8qLdXrqbmQcqFUqkMcmvbpOn52Qwfk4e-_1GlzWBwn0vaXT95sHDoLnX37bkyzt55fr1oNpkvZ3B_-8M2-_Iorf973wuPmQZlLUvPCmFwcrEpBvQrk_zSY4nE1SYapUdm-voSIlsyaXHor03j9cOd2qz6oqyExT1WMvzz5AUaaeUXae2krILS8pqIalfXRT_FFH8lhecIQrSTun8rmorin9hUfxaiBJUFyU4RZSg5YVniIK0Uzq_69qKElxYlKAWooTVRQlPESVsedEZoiDtlM7vpraihBcWJayFKMif61Dopcy0qPT3096MLNKZKI5Iy5Waigclp3mZ4nKQc_mNVGhTPGXFRS8rHm0aLMNsH2Zl2N-B2WlwxwW-cYGZU98sstO-9bwDOxzYw-rY0wqtdGSHI5eo7TAStR1GorbDWNQIjUTdcYn6ygpf28O6dgnLDiNh2WEkLDuMhYXQSFg3LmExZItia9Rtj7otUrdN6rhK3XYpc1qmDNmmIRLawTo9KTQ7jYVmp7HQ7DQaGoJjoR0sVWtok_WnfwEAAP__1kitdw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlk9v4jwQxu_vp7DmBHqNgvOHtjnR7XZXSDR0gUpbrVBliEWRIGYdR9qq4ruvkhxIgfWkmEOOifPzPDPPo1HeIf29hhDufz4ObwcRaX0dTKaTH8M2mdwP7--mZEHJZpW05m1KOPk2Hj2QVCot4peYa06-j0dPj-TLM-GULIBCImMR8Y1IIfwFDCi4QMEDCj5QCGBGYavkQqSpVPkn7wUwiP9A2KWwSraZzl_PKCykEhC-g17ptYAQpny-FmPBY6GcLlCIheardVGmoqe_VasNV29A4U6us02ShrmyeSlusuX5i47DCE9iwojUr0LBbEdBZnpfO9V8KSBkO1pf3-1yqcSSa6mc4KO8fj6GkYqFEnFIiqfb6PklGk1foqfhsNVnbaDwMIhafbd9dOi1D_TtS87fyCtPX4-qzXb7Htx_9rC_R5baDu_5v7zI0CjrXrhTCqNMh6Tv0b5Li05OO-PV6CpLTvV1sqVIduTWYcHBl6dr-x9qs_qpZXapdVjHcc_ILaKwYmevsbllF84ta0Ru3frZcS2z43Yc74zsIAorI71qbHbcC2fHbUR2vPrZ8Syz43Uc_4zsIAorI71ubHa8C2fHa0R2_PrZ8S2z43ec4IzsIAorI71pbHb8C2fHb0R2kL_gsUi3MklFrT-pbt6yiJeiHFEqM7UQj0ouijLl46jgihexSHV5ysqHQVIe5QKrMDuEWRV2P8Dsc3DPBr6xgZmVbhaYadc4b88Me2azema3fCMdmOHAxmozjFhthhGrzTBmNUIjVvdsrL4ywtdms65tzDLDiFlmGDHLDGNmITRi1o2NWQzZotgatdujdovUbpNarlK7XcqslilDtqmPmHa0Tj9lmpnGTDPTmGlmGjUNwTHTjpaq0bTZ7r-_AQAA__-jlsiE query T EXPLAIN (DISTSQL) SELECT c, min(b), a FROM sorted_data GROUP BY a, c ORDER BY a @@ -876,7 +875,7 @@ vectorized: true table: sorted_data@sorted_data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMllFrIj0Yhe-_XxHeK-WLjElG286V3a27CHamqxa2LFJSJ1jBTtwkwhbxvy_OXDhqm6hx0ctMfJLz5hwOLkD_nkIE7Z8P3dtOjCp3nf6g_6NbRf12t_11gEYYvU2yyksVI46-9ZJ7pKUyIn1OueHoey95fEBfnhDHaISS3l27l68AQyZTEfM3oSH6BQQwUMDAAEMIGBowxDBTciS0lmr1k0UOdNI_ENUxTLLZ3Kw-DzGMpBIQLcBMzFRABAP-MhU9wVOhgjpgSIXhk2l-TUlaa6Ymb1y9A4b-jGc6QrWAIJ6liCBpXoWC4RKDnJv1RdrwsYCILPH-Ym7HYyXG3EgVNDa1tFYzJyoVSqQRyle38dNznAye48dut9IiVcBw34krLVrd2WTVLX3rK1_e0SvXrzu3DZfrGeinM6zPkYW27XP-Lw6yDErq_3TS9RTs5FPEsiZnAdmyKpmbCLUYblGcv-PHasINNWT_kJIDQhqQWkCPiKlDTsm95sXGlJw4puQsMaX7B4MeEgxaC9gRwXDIKb3X1cUGg544GPQswWD7B4MdEgxWC8IjguGQU3qv64sNBjtxMNhZghHuH4zwkGCEtaBxRDAcckrvdXOxwQhPHIzw7P94PhDYE3omMy02tH12cn01okjHongSLedqJB6UHOXXFMsk5_IPqdCm2CXFopMVWyuBZZhsw6QM0w2YHAY3feAbH5h46SYNO02t783sMLOb1bS7FVrphh1u-Fhthx1W22GH1XbYZbWDdljd9LH6ygpf28269jHLDjvMssMOs-ywyywH7TDrxscs4mhRV4369ahfkfo1qWeV-nUp8SpT4mjT0GHaTp0eZJqddplmp12m2WmnaQ7cZdpOqVpNGy7_-xsAAP__7RShYA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMllFv2jAUhd_3K6z7BJpRcBJomye6lk1INOmASqsmVJnEokgQZ7aRViH--5TkgQCtTTETPDrm8z33nqMrViD_zCGA7q_H_m0vRLX73nA0_Nmvo2G3370boRijxSytTeoYUfR9ED0gyYViyUtCFUU_BtHTI_r2jChGMYoG991BcQIMKU9YSBdMQvAbCGBwAYMHGHzA0IIxhkzwmEnJRf6TVQH0kr8QNDHM0myp8s9jDDEXDIIVqJmaMwhgRCdzNmA0YcJpAoaEKTqbF2Uq0jqZmC2oeAMMd3y-XKQyyEVOMIoBwzCj-YeGQxBNE0QQV69MwHiNgS_VprZUdMogIGt8uL7b6VSwKVVcOK1teZ18DJFImGBJgIrTbfj8Ekajl_Cp3691SB0wPPTCWset71169R19m5KTN_RK5etetfF604P7YQ-bd3ipbfedr-VDmkZJ8792uunCO3kXIW_wzCE7VkVLFaCOhzsuLub4vhp_Sw05PLfELrcOaTjuEck1KKwY2r7Y5JITJ5ecJbnu4VlxLbPiNhzviKwYFFZGeHWxWXFPnBX3LFnxDs-KZ5kVr-H4R2TFoLAywuuLzYp34qx4Z8mKf3hWfMus-A2ndURWDAorI7y52Kz4J86Kf_Z_T-8IHDCZ8VSyLW0fvdzMW2TJlJUjkXwpYvYoeFyUKY9RwRUfEiZVeUvKQy8tr3KBVZjswqQKu1sw-RzctoFvbGBipZu09LSrnbenhz29WW29W76Wbunhlo3VethgtR42WK2HTVYbaIPVbRurr7Twtd6saxuz9LDBLD1sMEsPm8wy0AazbmzMIoYtalqjdnvUbpHabVLLVWq3S4nVMiWGbeobTNtbp58yTU-bTNPTJtP0tNE0A24ybW-pak0br7_8CwAA__9k3bxt query T EXPLAIN (DISTSQL) SELECT b, max(c) FROM sorted_data@foo GROUP BY b @@ -896,7 +895,7 @@ vectorized: true table: sorted_data@foo spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUktFq2zAUhu_3FOK_SkAlsd3d6MrZlo0M186SFFqGCYp1ZgyO5UkydAS_-7A9tqZgr73Ukb7zf4ejC-zPEgLrh2202sRs9mmzP-y_RXO2X0frjwd24uwsn2bZnH3eJXfMauNIHZV0MvyhNfuyS-637MMjO4Gj0opieSYL8R0eON4j5aiNzshabbrypX-0UU8QS46iqhvXlVOOTBuCuMAVriQIxPpG14sAHIqcLMr-WcuhG_cPsk7mBHHb8meNvenGB3kqaUdSkVksr9rjxXTg2NeysoLdgCNpnGChhzEJ7y0SX3VR_XHwxh1qU5yl-fU33OdhMJrvvyV_leeGcum0WfjX-WHnkxhFhlQ_L8cqfjzGyeEY30fRLPTm4LhbPcxCfz4qE1zJ_GfVO7K1riy9atfLNuUgldPwnaxuTEZbo7M-ZjgmPdcXFFk33N4Oh001XHWCz2FvEvanYX8SDqbhYBJevoDT9t3vAAAA__-IXTK3 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklFr2zAQx9_3KcT_KQGVxHb34idnXTYyXDtLUmgZISjWzRgcnyfJ0BHy3YftsTUFe-vjnfS7_--QzrA_SoRYPq7jxSoRk4-r7W77NZ6K7TJe3u3EUYqTep5kU_Fpk94Ly8aRPmjlVPSdWXzepA9r8eFJHCFRsaZEncgi_AYPEu-xl6gNZ2Qtm7Z97i6t9DPCuURR1Y1r23uJjA0hPMMVriSESPiG61kACU1OFWV37SLBjfsLWadyQnh7kS8Ge-ODd-pY0oaUJjObX43Hq-0gccdlc6psKJTsVtzWqq1uIJE2LhSRhyEp7y1SX7iofjt5w061KU7K_PwT7ssoGMz335K_yHNDuXJsZv51ftT6pEaTId3tK7FIng5JujskD3E8ibwpJO4Xj5PInw7KBFcy_3j6DdmaK0v_9fbzy16CdE7997LcmIzWhrMupi_TjusamqzrT2_7YlX1R63gS9gbhf1x2B-Fg3E4GIXnr-D95d2vAAAA__-gfDdx query T EXPLAIN (DISTSQL) SELECT * FROM (SELECT a, max(c) FROM sorted_data GROUP BY a) JOIN (SELECT b, min(c) FROM sorted_data@foo GROUP BY b) ON a = b @@ -930,7 +929,7 @@ vectorized: true table: sorted_data@foo spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMl_Fv4jYUx3_fX2G9n2BnFOwESpFOSrd1EydKurYn3WlClSEuRaIxc4J0p6r_-xRyE4FQv7imW35rQj72e-Tz7cPPkP69giFcfrkeX4wmpPXb6Pbu9s9xm9xeji9_vSM_k99voivS-nEpKHkS31rzdnE7VTqT8X0sMkH-uIk-X5NfvhLRJp-ifK0fzIySp2VyjAkflNpxszaJJkSQj2QGFBIVy4l4kikM_wIGFDhQ8IFCABR6MKWw1mou01Tp_JHnLTCKv8GwS2GZrDdZfntKYa60hOEzZMtsJWEId2K2kjdSxFJ7XaAQy0wsV9ttyqWt9fJJ6O9A4XYtknRIOh4jIokJIyp7lBooRJtsSEJGQx-mLxTUJtvtmmZiIWHIXmj9yi4WCy0XIlPa6-0XFuZfQKRjqWWcbwkULiZf7yfR3f3k83jcClkbKFxdfGmFvH1QzG792XfyKNLHytLTl13B_NWCd-uoopDDdT4UCxm6Yt3_qy3frS26e2qTHHvuaOdXUi_kJ7VMpPbYYH_dlXzIWiH70P6ol4vH4s-yUpyGPg2DV8U6q9GQRakT1VFrj_sHTx7fe7C3N6sfN2YRN491PO4aOKS2kpr9ZgSOnThwrBmBs27rBIE7f8_A8frScxvpecfzXaVHaivpcdYM6fmJpefNkN66LXfpefc9pffrS-_bSO93vMBVeqS2kh6DZkjvn1h6vxnSW7d1AunZe0of1Jc-sJE-6Hg9V-mR2kp6nDdD-uDE0gfNkN7CEdZ7XZIHpUrHzZ0Qr9oQ2FSRp-XfIvp1TC125yYde2_Ukb3tl8do4vzi-m4-nuC_Ff-vDoJHCrmR6Volqax1zOvmrch4IYtvJ1UbPZfXWs232xSX0Zbb3ohlmhWfsuJilBQf5QWWYXYIszLM92BmB5-5wIw50T0n-txMcyPtu8ADF5ghrwuh-y40R9r2jZIGZjgwwjwwK94z0n0z3HfJhxlG8mGGsXwgNJIPhEbyceaSDzOM5MMMY_lAaCQfZhrLx8AlH-fmCdBFRkBlgFjNADONDQEzjU4BBMfGAIIjnjPzGEHeOEIjpiM0pjqGI64jOCY7q8wSG9uZeZYwZBywyjSx0t1MY7qbaVR3BMd0R3BM98ogtdLdTGO6m2lUdwTHdDfjqO6VcWqle2Ww7Os-QHSvTBYr3c00pruZRnVHcEx3BMd0r0xVK93NNKa7mUZ1R3BMdzOO6c7NB1KOnEh5Zbbs4xzBbU5n3JIeONEHr80a7zvhHGvd7og2ffnpnwAAAP__IfA95Q== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMl1Fv4jgQx9_vU1jzBLdGwU6gFGklenu9EysKvbYr7eqEKkNcigQx5wRpV1W_-ymkJwIBT4zpbd42IT97Jvn9d-oXiP9ZQBeuv94OrvpDUvu9f_9w_9egTu6vB9efHsiv5I-70Q2pvV0KSpbie21az27HSicyfAxFIsifd6Mvt-S3b0TUyedRutYbM6FkOY8OMb0npbbcpE5GQyLIRzIBCpEK5VAsZQzdv4EBBQ4UfKAQAIUWjCmstJrKOFY6feRlA_TD79BtUphHq3WS3h5TmCotofsCyTxZSOjCg5gs5J0UodReEyiEMhHzxWabfGkrPV8K_QMofFKL9TKKu2nzU6BwvxLpVcNjREQhYUQlz1LD-JWCWifbjeNEzCR02SstX9zVbKblTCRKe63d2nrpOxjpUGoZdsnm6mr47XE4engcfhkMaj1WBwo3V19rPV7fK2a7_uQHeRbxc2Hp8eu2YH604O06Kitkf50P2UKGrljzZ7Xlu7VFt0-to0PPHez8RuqZ_KzmkdQe6-yuu5BPSa3HPtQ_6vnsOftn-jLWSfoiaI_Tnk97wVGxLko0ZFHqUDXUyuP-3pOH9-7s7M3KJ445JM5jDY-fkDmkvJyd7Wpkjp05c6wambNu6wyZu3zPzPHy3nMX73nD80_wHikvZ8hFNbznZ_aeV8N767bcvefN9_TeL--97-K93_CCE7xHyssZ0qmG9_6Zvfer4b11W2fwnr2n90F57wMX74OG1zrBe6S8nCGX1fA-OLP3QTW8t9CEtY578qTUniOT3Olza_FROwKbqtIA_VdUu4y82e5pgI4W0DpRT3ba3yP9ofOHbLv5eYb_wPj_dUg8UMidjFcqimWpI2AzbUWGM5m9nVit9VTeajXdbJNdjjbc5kYo4yT7lWUX_Sj7KS0wD7N9mOVhvgMzO_jCBWbMiW450Zdmmhtp3wXuuMAM-VwI3XahOdK2b5Q0MMOBEeaBWfGWkW6b4bZLPswwkg8zjOUDoZF8IDSSjwuXfJhhJB9mGMsHQiP5MNNYPjou-bg0T4AmMgIKA8RqBphpbAiYaXQKIDg2BhAc8ZyZxwjyxREaMR2hMdUxHHEdwTHZWWGW2NjOzLOEIeOAFaaJle5mGtPdTKO6IzimO4JjuhcGqZXuZhrT3UyjuiM4prsZR3UvjFMr3QuDZVf3DqJ7YbJY6W6mMd3NNKo7gmO6Izime2GqWulupjHdzTSqO4JjuptxTHduPpBy5ETKC7NlF-cIbnM645Z0x4ne-2zWeNsJ51jrdke08esv_wYAAP__wv1K7A== # Verify that the stages preserve the ordering as expected. query T @@ -950,7 +949,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMllFv2jAUhd_3K6z7BKpRsBMozVPYSickSrpApVUTqlxiUSQaMztIrar-9ynJNgKsdiqHiTdicq7Pvd_RVV5B_VyBD4PvN6P-cIwal8PJdPJt1ESTwWjwZYrU5qnx3ERXUXiNGr_PGEYPvn81CvvTHjpDc9SfoOfilZilrIm-RuHtDfp8hxgKo8tBlP8EDImI-Zg9cQX-DyCAgQIGFzB4gKEDMwxrKeZcKSGzV15zwTB-Br-NYZmsN2l2PMMwF5KD_wrpMl1x8GHKHlY84izm0mkDhpinbLnKr8kcBWu5fGLyBTBM1ixRPmo5BLEkRhSJ9JFLBRginsRc-ihwzwL6pz2MAgKzNwxik26vVylbcPDJG65usb9YSL5gqZBOZ9dhkE0hlDGXPPZR_tQf392Pw-n9-HY0agS0mRm_vW4EpLlnZlv_4QU9MvW4VzozvzVM3zW8rSMKI_t1zopCmq5I--DuclvkoC3yty2639bWslu75bFoibVD9iCEmzSf_Xs-vB0fpHocSZU4OqTl0DyQpAhkDXk0eCyR655GHknNeSTHzyOtngNaKQe05bg158DgsTSx89PIAa05B_T4OXCr58CtlAO35Xg158DgsTSx3mnkwK05B-7xc-BVz4FXKQdeK_9asGVv8FWa0sVpsPdqZu_932-Tf7iJuFqLRPEdI-9Vbmf98HjBi_6V2Mg5v5Finl9TPIa5Lj-IuUqLf0nxMEyKvzKDZTHZF5OymO6IycfEXRvxhY2YWPkmHb2aauft6sWuHlZXT8vTqjt6cccGtV5sQK0XG1DrxSbUBrUBddcG9blW3NPD6tnA0osNsPRiAyy92ATLoDbAurCBRQxb1LRG7fao3SK126SWq9RulxKrZUoM29QzQDtYpx-CpleboOnVJmh6tRGaQW6CdrBUtdBmb59-BQAA__-gOoQT +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMllFv2j4Uxd__n8K6T6AaBTuB0jyFf0snJEq6QKVVE6pcYlEkiJkdpFZVv_uUZBsBVpvidOKNmPyuz73n6CqvoH4swIfet9tBtz9Etav-aDz6OqijUW_QuxwjtV7WnuvoOgpvUO3XGcPo0fevB2F33EFnaIq6I_RcvBKzlNXRlyi8u0X_3yOGwuiqF-U_AUMiYj5kS67A_w4EMFDA4AIGDzC0YIJhJcWUKyVk9sprDvTjZ_CbGObJap1mxxMMUyE5-K-QztMFBx_G7HHBI85iLp0mYIh5yuaL_JpMUbCS8yWTL4DhUizWy0T5eRMYTQHDaMWyg4ZDEEtiRJFIn7hUgCHiScyljwL3LKC_O8YoIDB5wyDW6UaRStmMg0_e8OGqu7OZ5DOWCum0tkUH2WBCGXPJYx_lT93h_cMwHD8M7waDWkDrmfC7m1pA6jtiNvUfX9ATU087pTPxG8H0XcGbOqIQslvnrCik6Yo09-4ut0X22iJ_2qK7bW0ku5VLHoqGWDlkx4Rwneazf0-Ht6WDHJ5QcmRCHdJwaJ5RUmS0gogaZJfMbJ9GREnFESWfH1F6eDTosdGgDcetOBoG2aUhnp9GNGjF0aCfHw338Gi4x0bDbThexdEwyC4NsXMa0XArjob7-dHwDo-Gd2w0vEb-5WEbB4PU0uAuTiMOXsVx8P7td85f1ERcrUSi-JaQ9yo3s354PONF_0qs5ZTfSjHNrykew5zLD2Ku0uJfUjz0k-KvTGAZJrswKcN0CyYfg9s28IUNTKx0k5aeptp5u3rY1ZvV1rvlaemWHm7ZWK2HDVbrYYPVethktYE2WN22sfpcC3f0ZnVszNLDBrP0sMEsPWwyy0AbzLqwMYsYtqhpjdrtUbtFardJLVep3S4lVsuUGLapZzBtb51-yDQ9bTJNT5tM09NG0wy4ybS9pao1bfL2388AAAD__wG6nyA= query T EXPLAIN (DISTSQL) SELECT sum(x) FROM (SELECT a, b::float + c AS x FROM data) WHERE a > x GROUP BY a ORDER BY a @@ -972,7 +971,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll1v2kwQhe_fX7GaK1AWmV2bL1-ZtyEtEsGpIWqjFkUbvCJIBNO1kYii_PfKdsOH3ewY4VTcgeHZObPnzMgvEP5agA297zeDbn9IKpf90Xj0dVAlo96g92lMwvVTZVMlV557TSp_nglKHmz7auB2x21yQaakOyKb9C--iESVfPvS83pEkJ_ret2UZEM-e-7tDfn_jgjiepc9L_kIFJaBL4fiSYZg_wAGFDhQMIGCBRQaMKGwUsFUhmGg4r-8JEDf34BdpzBfrtZR_HhCYRooCfYLRPNoIcGGsXhYSE8KXyqjDhR8GYn5IikTS3RWav4k1DNQGK3EMrRJzWBELH3CSRA9ShUCBU8ufals4pgXDn_rlxKHweSVQrCOduXDSMwk2OyVFpd4NV9EUkllNA71pc9t4vC3-9NU5MdU7M5mSs5EFCiDZS7FiS_eVb5U0o9LA4Xu8O5-6I7vh7eDQcXh1fiubq8rDqtm1OwKPDyTRxE-Zo6O1e8Um-8q3p0TpEKy51ykB-naauRq77fFcm2xbVs829ZOslW65GFQC1YGz5jgrqPk7t_T0TjQwYpPACsyAQarGTyZAZbOQAkjgGjcjkCztBFAKu5nhZ3HCLCSR6D58SPAi0ePF4oerxlmydFDNG6j1yotekjFfY_4eUSPlxy91sdHzywePbNQ9MyaYZUcPUTjNnrt0qKHVNz3yDyP6JklR6_98dGzikfPKhQ9q5a8-50aN0TXNm6d0uKGVNz3xTqPuFklx63zb98z_6LGk-EqWIbyQMh7J9fjfqQ_k2n_YbBWU3mjgmlSJv3qJlzywJdhlP7K0i_9ZfpTLHAfZlqY62Gehdk-bB7A7Di4fQrM-El08xSa1_W0qb1wSw9bercQrxtauqmHm1q4pYdbpwRFDyNB0cNYUBAaCYqexoLSPiUoHf1OqCNLAVkp2E7JLZVj7EZoxG-ExgzHcMRxBMcsZ7nVcoznTL9amIW4pl8urIHgue1ylOl6GjNdT6OmIzhmuh5HTddvVsz03JI5dK2NuKbfMqyD4Lk9c5TpehozXU-jpiM4Zroex0zn-g2bNX3y-t_vAAAA___7U6lw +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlttv2jAUxt_3V1jnCVSjYCfc8hTW0g2Jki5QbdWGKpdYFAkIc4JEVfV_n5KsXMLqwyWdeAMnP5_P_r5zlBcIf0_AhtaP206z3SWFq3av3_vWKZJeq9O67JNwMS0si-Tac29I4e-aoOTRtq87brNfJxdkSJo9skxf8UUkiuT715bXIoL8WpTLpiRL8sVz727J53siiOtdtbzkJ1CYBb7siqkMwf4JDChwoGACBQsoVGBAYa6CoQzDQMWvvCRA21-CXaYwns0XUbw8oDAMlAT7BaJxNJFgQ188TqQnhS-VUQYKvozEeJKUiSU6czWeCvUMFC6DyWI6C-3kVJQMgUJvLuKFksGImPmEkyB6kioECp6c-VLZxDEvHP52BZQ4DAavFIJFtFYURmIkwWavdH_V1-NJJJVURmVbcrpuE4e_XammIj-kYnM0UnIkokAZLHNPTuyFq3yppB-XBgrN7v1D1-0_dO86nYLDi_Fd3d0UHFbMqFkXeHwmTyJ8ymwdq18rNt9VvN4nSIVk97lIN9Idq7JTe_NYbOdYbHUsnj3WWrKVu-RuUArmBs-Y4C6i5O7f01HZ0sH2bwp2ZFMYrGTwpC1Y2hY5dAUie9UV1dy6Aqm4GR92Hl3Bcu6K6sd3Bd8_jfzYNPKSYeacRkT2Ko213NKIVNy0jZ9HGnnOaax9fBrN_dNoHptGs2RYOacRkb1KYz23NCIVN20zzyONZs5prH98Gq3902gdm0arlHxHnppAROoqgY3cEohU3LTKOo8EWjknsPF_v1n_ocaT4TyYhXJLyHs7l-PzSH8k0_OHwUIN5a0KhkmZ9K-bcMmCL8MofcrSP-1Z-igWuAkzLcz1MM_CbBM2t2B2GFw_BWb8JLp6Cs3LetrUXrilhy29W4jXFS1d1cNVLVzTw7VTgqKHkaDoYSwoCI0ERU9jQamfEpSGfiaUkaGAjBRspuwMlUPsRmjEb4TGDMdwxHEExyxnO6PlEM-ZfrQwC3FNP1xYBcF3pstBputpzHQ9jZqO4Jjpehw1XT9ZMdN3hsy2a3XENf2UYQ0E35kzB5mupzHT9TRqOoJjputxzHSun7BZ0wevn_4EAAD__6UBxH0= # Ensure that an interesting input ordering that causes an ordered group by # forces an ordered synchronizer. We create an index on b even though it's @@ -1065,7 +1064,7 @@ vectorized: true table: data2@data2_pkey spans: [/1 - /1] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlNGLm0AQxt_7VyzzZNo9dDeXFISC6dW2gqepGq5HkbDRxQvkXLu7Qo8j_3tRD2LSnJe0pfRxnfnNfN984COo7xuwwf0692degIwPXpzEX_wRil3fvUrQCqNM1KU2Xo_Qxyi8RjnTjKKbz27kIobeIYI-ReFijt7fohVgKEXOA3bPFdjfgAAGChgmkGKopMi4UkI2pce20ct_gG1hWJdVrbvPeq03HGyoSyFzLnkOGHKu2XrT1NNtiiETkoO9aw3EhajM6UEjBlHrp7EpBqVZwcG-3OLeatJbfWRwwlYbHnGWc2lae-OhvYJTyfU9kw-AIa5YqWxkkguTmI3tsNY2cig8J4ScI2RWFJIXTAtp0n0dTruru5SN2tcsuF0GYbIMFr5vOGQEGK7CRZAso_AmNkYHinZLVg_ojqm7X-a3N39STZ9VvZtzLDdwyBs4Gl7P2uXvWIsX10svSAyHHjrbqR7vqaanh05ODL2JnZ4d-gtCepcZ_0eh078b-uTfhG4N3zriqhKl4if9Q6zGEs8L3p1AiVpmfC5F1q7pnmHLtR9yrnRXfds9vLIrNQL7MBmE6TBMD2HSh8d7MDkPng7D40HZ1jB8OQhPhj1P_sTzMPyC5-lZntPtq58BAAD__0K5XNc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVO-Lm0AQ_d6_YplPSbuH2c2PglAwvdpW8DRVw_UoEja6eAHj2t0Vehz534t6EJPmvMu1lPs4zr6Z9948vAf1MwcT7O8Ld-54aPDJCaPwmztEoe3alxFaY5SIqtCDt0P0OfCvUMo0o-j6qx3YiKEPiKAvgb9coI83aA0YCpFyj225AvMHEMBAAcMUYgylFAlXSsi6dd88dNJfYI4wbIqy0u1nvdE5BxOqQsiUS54ChpRrtsnrfryLMSRCcjD3Tz1xIUpjdvQQg6j0w9gYg9Is42BOdrizmnRWnxgcsXXOA85SLo3RwXhoXLBKudkyeQcYLkVebQtlIoYbG8KS1ZVBLgxi1Db4lTaRReExYuQcYvMskzxjWkiDHvKyml2tcyZqqrl3s_L8aOUtXXdgkWHN1l960Srwr8PB8IjRfsn6Dt0ydfvH_OYGD6zpo6z3c07dESzyDk4esyNt8hJp4fJq5XjRwKLHyvasxwes6fNDQF4YgjoG9OwQPEGs49T4FYWA_tsQTP9PCEb9XgdclaJQ_Fn_mFEtiacZby1QopIJX0iRNGva0m9wzYeUK91237eFU7StmmAXTHrBtB9Mj8GkCx4fgMl54Fk_eNxLe9QPnvSCp_2ap3-juR_8hObZWZrj3ZvfAQAA__8KfWZL statement ok CREATE TABLE uv (u INT PRIMARY KEY, v INT); @@ -1092,4 +1091,4 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlttv2jAYxd_3V1jfE2hGwU64RZpEt7KJjiaMi7RqQlVKLMpGY5ZLtarq_z4lmUoIw18iKOKtIf3Zxz7nO8ozBL9XYELv-3Bw0bdI5bI_noy_Dapk3Bv0Pk1IED1UHqvk88i-Jq4TOqRvWb0RGdj21-mQXNl9i0SPxLZIxSEfSFQlX0b2dEg-3pCI2KPL3ij5Eyh40hWW8yACMH8AAwocKOhAwQAKDZhRWPtyLoJA-vG_PCdA3_0DZp3C0ltHYfzzjMJc-gLMZwiX4UqACRPnbiVGwnGFr9WBgitCZ7lKtokFd9f-8sHxn4DCeO14gUlqGiOO5xJOZHgv_AAo2FFoki6D2QsFGYWbzYLQWQgw2QstLuhKLr1_ehrbeqLHjJqBlL-iNfkplx6RXrL9qxDa5bSr75XDy8i5WCx8sXBC6Wssdz_d2APbd4UvXJMkTxfWza1lT26t6WBQ6fJqfG3T60pXr-bUbDa4eyL3TnCfWzq-zI1ifa_izToyFZJf5326kOpYjZ29s8diO8dir8fi-WNtJBtHl2zJmlxrPGdCajnfq6OxpYMVHwZWZBg0VtN4Mg4sHYfS04AoykxD8xTTgMjJxoadxzSwI09D8-2ngRdPIS-UQl7T9INSiCjKpLB1ihQicrJ28fNIIT9yCltvn0K9eAr1QinUa5pxUAoRRZkUtk-RQkRO1i79PFKoHzmF7bdPoVE8hUahFBq15LuxXPIQFZnkdU6RPERO1iLjPJJnHDl5ndN-k_5HzUgEa-kFYkvIvpXr8XmEuxDp-QMZ-XMx9OU82SZ9tBMu-cEVQZi-ZelD30tfxQKzMFPCXA3zPMyysL4Fs3Jw-xCY8YPo5iE0r6tpXXnhhho21G4hXjeUdFMNN5VwSw23DgmKGkaCooaxoCA0EhQ1jQWlfUhQOupOqCOlgFQK1ik7pVLGboRG_EZozHAMRxxHcMxytlMtZTxn6mphBuKaulxYA8F32qWU6WoaM11No6YjOGa6GkdNVzcrZvpOyWy71kZcU7cM6yD4Ts-UMl1NY6aradR0BMdMV-OY6VzdsHnTZy_v_gYAAP__ETW8Dg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlltv2koUhd_PrxjtJ9AZZGZsbpaORE5CK1JiUy5SowpFDh4RWvBQX6JGEf-9sl0VY8psHAjizcb5ZtbMWnsprxD8WIAJnS_93lXXIqWb7nA0_Nwrk2Gn17kekSBalp7L5MPAviOuEzqka1mdAenZ9qdxn9zaXYtEz8S2SMkh_5GoTD4O7HGf_H9PImIPbjqD5BEoeNIVlrMUAZhfgQEFDhR0oGAAhRpMKKx8ORVBIP34T14ToOv-BLNKYe6tojD-eUJhKn0B5iuE83AhwISR87gQA-G4wteqQMEVoTNfJNvEgtsrf750_BegcC0X0dILTOIAheHKiR8rGiOO5xJOZPgk_AAmawoyCjf7BaEzE2CyNT1c062ce78l1bYlRc8ZQT0pv0cr8k3OPSI9k7Tje7GjMH6ibU7b-l45vIicq9nMFzMnlL7GclfUjm2wfVf4wjVJ8nZl3T9Y9ujBGvd6pTYvx5c1viu19XJOzWaDxxfy5ARPuaUZTNYbxfpexZt1ZCokv86_6UKqY9V29s4ei-0ci_05Fs8fayPZOLlkS1bkSuM5E1LL-V4dtS0d7PB5YIXnQWMVjScTwdKJOHAgEFGZgaifYyAQOdnksMsYCHbigai__0Dww4PIiweRVzT9DUFERGWC2DhHEBE5Wcf4ZQSRnziIjfcPon54EPXiQdQrmvGGICKiMkFsniOIiJysY_plBFE_cRCb7x9E4_AgGsWDaFS02oHhQ4Rkwtc6R_gQOVmXjMsIn3Hi8LXO-__pX9QMRLCSXiC2hOxbuRqfR7gzkZ4_kJE_FX1fTpNt0lc74ZIfXBGE6VeWvnS99FMsMAszJczVMM_DLAvrWzArBjePgRk_iq4fQ_OqmtaVF26oYUPtFuJ1TUnX1XBdCTfUcOOYoKhhJChqGAsKQiNBUdNYUJrHBKWl7oQqUgpIpWCdslMqRexGaMRvhMYMx3DEcQTHLGc71VLEc6auFmYgrqnLhdUQfKddCpmupjHT1TRqOoJjpqtx1HR1s2Km75TMtmtNxDV1y7AWgu_0TCHT1TRmuppGTUdwzHQ1jpnO1Q2bN32y_udXAAAA___HxMQL diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_distinct_on b/pkg/sql/opt/exec/execbuilder/testdata/distsql_distinct_on index 0e2f1203ffe9..2ad3861d2568 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_distinct_on +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_distinct_on @@ -95,7 +95,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lU1v4jAQhu_7K6w5tZKj4MThIydWLSshsdAFDiutOKTEaiPROBsHiQ_x31cJKyi0eFwcccMkj-e1n9FkC-rvAkLo_X4afO8Pyd1jfzKd_Brck0lv0HuYknLdHz5MyWhI7laUrCnZ3JP_P8iP8egnWa03QCGVsRhGb0JB-AcYUPCAgg8UOFAIYEYhy-VcKCXz8pVtBfTjFYQNCkmaLYvy7xmFucwFhFsokmIhIIRp9LwQYxHFIncbQCEWRZQsqjKr9aab5clblK-BwiSLUhUSxy0rj5ZFSLoe7fq0y2G2oyCXxbGIKqIXASHbUfMgj4kqknReuMFpii6jVaGzKkfweU1eI_V6kTrm8S7mOe62TGUei1zEJ_tVu1xMzBpGkY9B_HqDDKUjM5cFZ29-Xpuf1Gbm3cEMusP1HJdf2R9IlMNtN2_UH6y-_mBW_eGZO_JMHHGnusNrHCFRDidu3ciRV58jz8qRb-7IN3HUdKo7vMYREuVw4vaNHPn1OfKtHHFzR9zEUcu50hAS5HDezo0M8foM8dq-hJ-UGQuVyVQJo-9cowwq4hexP5WSy3wunnI5r8rsl6OKq_6IhSr2T9l-0U_3j8qA72F2DrP3sHcCs6_BTRu4YwMzq9ws0NOe9r59PezrZTX1triWDvRwYKNaDyOq9TCiWg9jqhEaUd20Ud3Swm29rLaNLD2MyNLDiCw9jMlCaERWx0YWQ6YoNkbt5qjdILWbpJaj1G6WMqthypBpyhFpH8bpl6TpaUyansak6WlUGoJj0j4MVa202e7bvwAAAP__i4nxhg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lU1v4jwQx-_Pp4jm1EqOgp0XICceUVZCYqELHFZacUiJ1UaCOBsHiRfx3VcJu1Bo8bg44oZNfp6_8xtNdiB_LyCE3s_nwf_9ofXw1J9MJz8Gj9akN-h1p1a57g-7U2s0tB7WxNoQa_to_f1hfRuPvlvrzRYIpCLmw2jJJYS_gAIBBgRcIOABAR9mBLJczLmUIi8f2VVAP15D2CCQpNmqKLdnBOYi5xDuoEiKBYcQptHLgo95FPPcaQCBmBdRsqjKrDfbTpYnyyjfAIGuWKyWqQz_pQMCkywqN2yHwWxPQKyKUx1ZRK8cQron-lmeElkk6bxw_PMgHUo6jHTciyon8GVjvUXy7Sp1ysOu5jmdtkpFHvOcx2fnVadcTUwbWpFPQdx6gwyFLTKH-hdPfl7bO6tN9RuE3tYgDrMdT7NFkDTHFx7cqUVofS1CjVqE6WtiN2rybCfQ1ISkOV66eSdNrD5NzEiTq6_JvVFTYDtNTU1ImuOlW3fS5NanyTXS5Olr8m7U1LQ1JSFZjldu30mSV58kr7av4idlxlxmIpVc65vXKIPy-JUfbiXFKp_z51zMqzKH5ajiqo2Yy-LwLz0s-unhrzLge5hewvQ9zM5g-jU4MIHbJjA1yk19Nc2U79tVw65aVqC25SlpXw37JqrVMKJaDSOq1TCmGqER1YGJ6qYSbqlltUxkqWFElhpGZKlhTBZCI7LaJrIoMkWxMWo2R80GqdkkNRylZrOUGg1TikxTD5H2YZx-SZqaxqSpaUyamkalITgm7cNQVUqb7f_7EwAA___4n_tt # Ensure that ordering propagates past local DISTINCT processors. query T @@ -138,7 +138,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lkFv2kAQhe_9Fas5Jeois2sDiU-0CZWQUkiBQ6uKg4NXCRLx0l0jQSL-e4UJEDDMLBhxwzZvZ_zepye_g_03ghAavx8fvjVb7Oq-2e11fz1cs27joXHXY4vrZuuux9otdjXlbMbZ2zX7-MF-dNo_2XT2xtqd-0aHff_DpsAh0bFqRa_KQvgXBHCQwMEHDgFwqECfw9jogbJWm8Vf3jNBM55CWOYwTMaTdHG7z2GgjYLwHdJhOlIQQi96GqmOimJlvDJwiFUaDUfZmOnsrT42w9fIzIBDdxwlNmQlbzG5PUlDVpe87vN6AP05Bz1JN0NsGj0rCMWcuy9yP7TpMBmkXmV7i7rg2aCdKRvh04y9RPbloGqzjzy4z-a0SaJNrIyKt87LTjm4sSg7rbxZxD_GmK42qTKeyPny9eD5gcOL7nvNj0P3LNHSJT32ZHnHlf3jK1vjhTuAwgFAT5a84EQEiVXWgVYvhKA4H4KiEIKEMSsEc764IijdGZAuDASlLKNTGCBWWTtauxAD8nwMyEIMEMasGMj54sqA786A78JAtZRldAoDxCprR28uxIB_Pgb8QgwQxqwYyPniykDgzkDgwkCtdCIBxCJrP28vREBwPgKCQgQQxqwIyPlyysfInvM7yo51YpXTd0Z5YYSKn9XSNasnZqAejR5kY5aX7UyX3YiVTZdPxfKimSwfLRb8LBa7YvFZLLfE4jhxrYhYiELqSiH1La6WqOE-briPigN8coCKJZF1BVVXcXG1CCi4mAAFF1OgEGoCFEJNgFJDDb_BDb8pAsot3gllohRylXJUK-BqqhZwNdkLhJwqBkJOBC5yxbLtuyR8x5uFyFzg1SICYniuXI4KHVdToeNqMnRCToVOyKnQ8V4VRLGKXMccFTreMYIoGZFrmaNCx9VU6LiaDJ2QU6ETcip0vGEl0bAS_2jbDb0___I_AAD__8DB-Cg= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lkFv2jAUx-_7FNY7tZpRsBOgzYmtZRJSBx1w2DRxSInVItGY2UGCVnz3CShQCLznEMSthP7sx__99Ffewf4bQQiN348P35otdnXf7Pa6vx6uWbfx0LjrscXnZuuux9otdjXlbMbZ2zX7-IP96LR_sunsjbU7940O-_6HTYFDomPVil6VhfAvCOAggYMPHALgUIE-h7HRA2WtNot_eV8CzXgKYZnDMBlP0sXjPoeBNgrCd0iH6UhBCL3oaaQ6KoqV8crAIVZpNBwtr5nO3upjM3yNzAw43OnR5DWx4XpQ4NAdR4sHJU9Cf85BT9LtPTaNnhWEYs7dZ7kf2nSYDFKvsjtIXfC65HV_75Yt-DRjL5F9OUpt55FH59meNkm0iZVR8c55y1OOTizKTiNvB_HzBNPVJlXGE5lcvh49P3D4oYd-5sehB4Zo6ZIee7K8l8rh6ys71wt3B8VpDnqy5AWOFhLTbHZavZCF4nwWikIWEsGsLczk4mqhdNdAnqhBUPKqjhoQ02xCrV1IA3k-DWQhDYhg1hpkcnHVwHfXwD9Rg2rJqzlqQEyzCfXmQhr459PAL6QBEcxag0wurhoE7hoEJ2pQKzlKQMyyifT2QhIE55MgKCQBEcxagkwup7yYHDi_o-xYJ1Y5vXOUF0Go-FmtUrN6Ygbq0ejB8prVx_aSWz6IlU1X34rVh2ay-mox4GdY7MPiMyx3YJEPrhWBhShEVwrRtzgt0cB9PHAfhQP85gCFJbHrCkpXcbhaRBQcJkTBYUoUgiZEIWhClBoa-A0e-E0RUW7xTigTpZCplFytgNNULeA02QsEThUDgRMLF5li2c1dErnjzULsXODVIgLi8ky55Fo6TlNLx2ly6QROLZ3AqaXjvSqIYhWZjsm1dLxjBFEyItMyuZaO09TScZpcOoFTSydwaul4w0qiYSX-0ra_9P78y_8AAAD__5dMAh4= # Ensure that even with more ordering columns, ordering propagates past local # DISTINCT processors. @@ -185,7 +185,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9r4kwUxu_fTzGcq5aOxJnEP82V77YuCF3tqhe7LF6kZmgF67gzEUzF774kCqmmnpMY8TK1P5-T8_w4uAH7dw4-dH89P_3f67Obx95oPPr5dMtG3afuw5glz73-w5gN-uwmvmVrzmL2fTj4wdbxBxsMH7tD9u03izlbA4eFDlU_eFcW_D8ggIMEDi5w8IBDAyYclkZPlbXaJP-ySYFeuAa_zmG2WK6i5M8TDlNtFPgbiGbRXIEP4-BlroYqCJVx6sAhVFEwm6cx6_ijszSz98DEwGG0DBbWZzUnSR6sIp91JO-4MNly0KsoS7BR8KrAF1tefIqRNpEyTuNwgI684x1xdzJClol4nNlotphGjqgfpyQvZEJlVJi81FFc9g0vMXsL7FuOnmyzkdyTI2Xfo3dZp94VnT23IXT2bC6vwlxfz9TXNb105OEyT8U3DuJFcSVFASUdWXO8c6Qk5thL2awiJRGRFSuuJqW4uJS5DZ0lpSxuhSxihVdLqyttBTHH3opWFSuIiGyz8mpWyItbkdvQWVa4xa1wi1jRrKXVlbaCmGNvRbuKFUREtln3ala4F7cit6GzrPCKW-EVsaJVO8cJYoq9E_dVnCAisr16V3PCu7gTuQ1V_lHzRdxQ2aVeWFXo90o9GViFr2r3klavzFQ9Gz1NY3aPg5RL_xAqG-0-FbuH3mL3UTLgZ1igsMRheQyLz7B7AItycLsKLGQlulmFlnWcdtGFezjs4W0RXTdQuonDTRRu4XCriig4TIiCw5QoBE2IgtOUKO0qotzjN6FOHAXipFA3JXdUytRN0ETfBE0VTuFE4wROVS5yp6VM5wI_LcIjWsOPi2gQeO66lCodp6nScZosncCp0nGcLB2_rFTpuSNz2FqbaA2_MuKewHN3plTpOE2VjtNk6QROlY7jVOkSv7DHpU-2__0LAAD__xPOEOI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lstu4koQhvfnKVq1SpRGptvmEq84kzASUgYywGJGIxYObiVIhGa6jYSDePcRGMkBhypfEEuHfNTv-j-V2ID9Owcfur-en_7v9dnNY280Hv18umWj7lP3Ycx2z73-w5gN-uwmvmVrzmL2fTj4wdbxBxsMH7tD9u03izlbA4eFDlU_eFcW_D8ggIMEDi5w8IBDAyYclkZPlbXa7P5lswd64Rr8OofZYrmKdn-ecJhqo8DfQDSL5gp8GAcvczVUQaiMUwcOoYqC2Xw_Zh1_dJZm9h6YGDg86PnqfWH9fVDgMFoGu6eaI2Gy5aBXUTrERsGrAl9sef4gI20iZZzGcYaOvOMdcXd2hCwy4nFmo9liGjmifjoFOAxMqIwKfdY5faP0G15i9hbYtww92aaR3LOR0u_Ryaxz74pmz2wIzZ7m8irk-jpTX9f00pHHyzw3vnE0XuS3UpSw0pE1x8vpJRHl4GWzipfEiLRbcTUvxcW9zGyolJcyvxiyjBhezWnmFIOIchCjVUUMYkS6XHk1MeTFxchsqJQYbn4x3DJiNGtOK6cYRJSDGO0qYhAj0uW6VxPDvbgYmQ2VEsPLL4ZXRoxWLacWRJCDFvdVtCBGpKv1rqaFd3EtMhuq_APni3FDZZd6YVWu3y71XWAVvqrkJa1emal6Nnq6H5M8Dvbc_g-hslHyqUgeeovko13Az7BAYYnD8hQWn2H3CBbF4HYVWMhKdLMKLes47aIL93DYw9sium6gdBOHmyjcwuFWFVFwmBAFhylRCJoQBacpUdpVRLnHb0KdOArESaFuSuaoFKmboIm-CZoqnMKJxgmcqlxkTkuRzgV-WoRHtIYfF9Eg8Mx1KVQ6TlOl4zRZOoFTpeM4WTp-WanSM0fmuLU20Rp-ZcQ9gWfuTKHScZoqHafJ0gmcKh3HqdIlfmFPS59s__sXAAD__2-YGgs= # Distinct processors elided becaue of strong key. query T @@ -211,7 +211,7 @@ vectorized: true table: abc@abc_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk0-L2zAQxe_9FOKddkHG8Z_04FPLNgWD62yTFAqND4o1bAOJ5UoKtIR892K5NI6bFqW5DH7SPL8fw-gI822HDLPPz8XbvGQP7_LlavmxeGTLWTF7WrFO5-XTis1L9iA423BWP7JfH-z9Yv6BiU0NjkZJKsWeDLIviMARgyMBRwqOKSqOVquajFG6azk6Qy6_I5twbJv2YLvjiqNWmpAdYbd2R8iwEpsdLUhI0mH3X0lWbHcuRmzqN63e7oX-AY5lKxqTsbD8VBTnEoRrRGv8rvEaqE4c6mDPmcaKF0IWnfhfuM44h0ZpSZrkBUp1ukJeqkC14XTUeD06voiO_EcS-4zkjxEEQ3HTVGJ_tOQWtHiI1ovE1dQbLfFHS_3QRhzBUIRrTL3RUn-0iQdaMFpyJhrJIqbsV9L_sd1XiBZkWtUY8lreSbf9JF-ofypGHXRNz1rVLqaXc-dzB5KM7W-jXuSNu3KAQ3P0T_PrC_NkbI7vSU7uMaf3mKc3mavTq58BAAD__1Um0jI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk0-r00AUxfd-iuGs3oMJaf7URVZKrRCI6bOtINgsppnLs5Bm4swElNLvLpmo_WOVvGZzybkzJ_c3F84B5luFBPPPT9nbNGcP79LVevUxe2SreTafrVmn03y2ZoucPQjOtpyVj-zXB3u_XHxgYluCo1aScrEng-QLAnCE4IjAEYNjioKj0aokY5TurhycIZXfkUw4dnXT2q5dcJRKE5ID7M5WhARrsa1oSUKS9rv_SrJiV7kxYlu-afRuL_QPcMxU1e5rk_ymA8eqEV3Dzz9l2al4_gbBBn9quAGKI4dq7QnDWPFMSIIj_wfqibCtlZakSV7QFccbj8mVpxp_enXx9ujwYnQwfEvhnVv6ayveuXjRosLhtNFI2vCctheRq_Fg2mg4bXw37RWady78DaaDaePhtJP7aL2rwDBRSxYwZb-SviMpNyCXZBpVGxoUhEmXJJLP1MfOqFaX9KRV6cb0cuF8riHJ2P406EVauyMHeG4O_mt-fWGeXJvDMZOjMeZ4jHn6InNxfPUzAAD__xlx7T8= query T EXPLAIN (VERBOSE) SELECT DISTINCT ON (a, b) a, b FROM abc ORDER BY a, b, c @@ -252,4 +252,4 @@ vectorized: true table: abc@abc_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ld9v2jAQx9_3V1j31KpG4PygbZ7YWiYhsaQDJm0aPJjEaiPROIuDtKrif5-SSITQ1hdm4MXSGb533_PndHkF9WcFHgx_Pow_j3xycT-azqbfx5dkOhwP72akiEf-3YwEPrnglCwvSXGSr5PgG-HLkAST--GEfPlVXlMSAoVERsLnz0KB9xsYULCAgg0UHKDgwoJCmslQKCWz4i-vpWAU_QWvRyFO0nVeXC8ohDIT4L1CHucrAR7M-HIlJoJHIusWeSOR83hVluHLcJBm8TPPXoDCNOWJ8kjX_zEe10enOwc2h-1pzQEWGwpyndc1Vc4fBXhsQ9v7uo9VHidh3u03TQ0YHRS9B1kkMhF5pLpo1qzTLF_IE1dP7-VYbGpr1ofW6lSyqrif6ooOrCs6sK-qhB_2wdh_NFI7tA0dvu_Olx2ZdpnblATrHLPjNOyw9jNmtZmxNzPV2Q0OGjPE2hbP9fnHjJ1kzKwjjpnVnqt9CFdrl2sV2OXptOaKWNu-x835uVon4WofkavdnqvTjusexM5u0J2D25orYm37Hrfn52qfhKtzRK5Oe669Flw7ex97wpOIMCLzJ5G1xIk42j6De36czklw9k70lX-n6ESoVCZKNCp-lLlX2BbRo6jaVXKdheIhk2FZpgqDUldeRELl1a-sCkZJ9VNhcFfM9sWsIXYbanaY2jIR903EtyZihvi2tO9t68W2HlZfT8vRql292DVCrVcjT6YXI6j1YgQ10jTiu2-C-lorvtHDujGCpVcjTevFCCy9GIGFNI34vjWBxZAtiq1Rwz1qtkjNNqnZKjXbpcxomTJkmzoItDfr9DBoejnWuV6NQdOrMWhI45j1N0tVC22x-fQvAAD__5UTNgY= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lk9v4jwQxu_vp7Dm1KpG4PyhbU6827ISEpt0gZV2tXAwidVGonE2DtJWFd99lUQihLaeFAMXSzY8M8_MbzTKK6g_K_Bg-PNh_P_IJxf3o-ls-n18SabD8fBuRor7yL-bkcAnF5yS5SUpTvJ1EnwjfBmSYHI_nJAvv8pnSkKgkMhI-PxZKPB-AwMKFlCwgYIDFFxYUEgzGQqlZFb85bUUjKK_4PUoxEm6zovnBYVQZgK8V8jjfCXAgxlfrsRE8Ehk3SJuJHIer8o0fBkO0ix-5tkLULiTq_VzorwdU9OUFw9d_8d4XB-d7hzYHLanNQdYbCjIdV7bUDl_FOCxDW1v9T5WeZyEebff9DlgdFC0I8gikYnII9VDM2cdZvlCnrh6ei_GYlNbsz60VoeSVcb9UFd0YF3RgX1VBfywDsYOKKR2aBs6fN-dLzsy7TK3KQnWOWbHadhh7cfOOnDs3oxZZ_fyqclD3G6JXZ9_8thJJs864uRZ7VHbhqitXdTVxS5PpzVqxO22RTfnR22dBLV9RNR2e9TOwaj3uHZ2L905uK1RI263Lbo9P2r7JKidI6J22qPuHYa6s_fhQHgSEUZk_iSyloQRk9vOuOcn7JyEcO9EXwzvJJ0IlcpEiUbGjyL3CtsiehRVuUqus1A8ZDIs01TXoNSVD5FQefUrqy6jpPqpMLgrZvti1hC7DTX7nNoyEfdNxLcmYob4trT9tvViWw-rr6flaNWuXuwaodarkZbpxQhqvRhBjRSN-O6boL7Wim_0sG6MYOnVSNF6MQJLL0ZgIUUjvm9NYDFki2Jr1HCPmi1Ss01qtkrNdikzWqYM2aYOAu3NOv0cNL0cq1yvxqDp1Rg0pHDM-pulqoW22Pz3LwAA__-ORVET diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_indexjoin b/pkg/sql/opt/exec/execbuilder/testdata/distsql_indexjoin index fa411e6fbd5a..93e1eafbfc1d 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_indexjoin +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_indexjoin @@ -36,7 +36,7 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUE9L-0AQvf8-xTCn9sdKNxVB9tRiUwzUtCYBBc1hTYYSSLNxdyNKyHeXZK21QkWP8968P7wWzXOJAv37zWoehDBaBHES367GEPsr_yqB_7CM1jdg4e7aj3wYvcBjw_k5gcfHMA8Xn0gGF3yMDCuVUyh3ZFA8oIcpw1qrjIxRuofa4SHIX1FwhkVVN7aHU4aZ0oSiRVvYklBgIp9KikjmpCccGeZkZVEOtnZW62In9RsyjGtZGQFnmHYMVWMPhsbKLaHwOvb70GVRWtKkJ95xosMFjGbTwwBCiCBMLj922DP9EHvmZKnpX0pFZGpVGTqqdMqZdylDyrfk1jaq0RlttMqGGHeuB90A5GSsYz13BJWj-oJfxd6P4uk3cdr9ew8AAP__FVC8zg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkUFL-0AQxe__TzHMqf2z0k1FkD21tCkGalqTgILmsCZDCabZuLupSsh3lyTWWqGix3lv38yPtzWa5xwFunfr5dTzYTD3wii8WQ4hdJfuLIL_sAhW12Dh9soNXBjs4KHi_JzA4UOY-vNPJYELPkSGhUrJl1syKO7RwZhhqVVCxijdSnX3wEtfUXCGWVFWtpVjhonShKJGm9mcUGAkH3MKSKakRxwZpmRllndr7aTU2VbqN2Q4U3m1LYyAJwY7Bi_IMCxlK5xh3DBUlT3cMFZuCIXTsN9zLLLckiY9co4hel3AYDI-dCKE8Pzo8qOavdN2s3dOQo3_AhWQKVVh6Ajp1GbexAwp3VD_AUZVOqG1Vkl3ph9XXa4TUjK2d51-8IreagG_hp0fw-Nv4bj59x4AAP__k4jCaQ== query T EXPLAIN (DISTSQL) SELECT * FROM t WHERE v > 10 AND v < 50 ORDER BY v @@ -55,7 +55,7 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkUFLw0AQhe_-imFOra40SRFkT602xUBNaxJQ0RzWZCiBNBt3N0Up-e-SxFortNjjvLfvm8fsBvV7jhzdp8Vs7PnQm3hhFD7M-hC6M_c2gnOYBvN7MPB45wYu9NbwWlnWkMC2-jD2Jz9KAldWH-bBxA3g5hnWyLCQKfliRRr5C9oYMyyVTEhrqRpp0z7w0g_kFsOsKCvTyDHDRCpCvkGTmZyQYyTecgpIpKQGFjJMyYgsb7FmVKpsJdQnMgxLUWgOlxjXDGVldkBtxJKQ2zX7_9JplhtSpAb2_sZO59AbObtbcM49P7r-PsnWaW6ydQ6Wck4pFUplSA2c_Uoj5-IgfngKPiBdykLTHv4Q2apjhpQuqftMLSuV0ELJpF3TjfM21wopadO5djd4RWc1BX-H7aNh53jYORoe_gnH9dlXAAAA__8M7_K8 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkVFr4kAUhd_3V1zuk-7OYhJZWOZJq5EGbLRJoC1tHqbJRUJjJp2Z2BbJfy9Jaq0FpT7ec-ac-3Fni_o5R47u7XI-9nzoTb0wCq_nfQjduTuJ4DfMgsUVGLi5dAMXeht4qCxrSGBbfRj7008lgX9WHxbB1A3g4g42yLCQKfliTRr5PdoYMyyVTEhrqRpp2z7w0lfkFsOsKCvTyDHDRCpCvkWTmZyQYyQecwpIpKQGFjJMyYgsb2vNqFTZWqg3ZDiRebUuNIcnBhsGL8gwLEUj_MW4Zigrs9-hjVgRcrtmP-eYZbkhRWpgH0J0OofeyNmfh3Pu-dH_jyvtnOZMO-colHMOVCiVITVwDpFGzp-j9cNz6gPSpSw0HdQfa7bqmCGlK-r-V8tKJbRUMmnXdOOizbVCStp0rt0NXtFZDeDXsH0y7JwOOyfDw2_huP71HgAA__8tbvhX # Here we care about ordering by v, but v is not otherwise used. query T @@ -75,7 +75,7 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUV1ro0AUfd9fcblPCTtLHGVhmSezG8MKWc2qsFtaH6xegmAcOzOmLcH_XtSmaQoJzeM9Z84HZ_aoHyoU6P1fr-Z-AJOFHyfx39UUYm_l_UrgEZZR-AcM_PvtRR5MdnDXWpZDwK0pzIPFG5LDd2sKYbTwIvh5AztkWMuCgmxLGsUtckwZNkrmpLVUPbQfHvjFEwqLYVk3renhlGEuFaHYoylNRSgwye4riigrSM0sZFiQycpqsDVuo8ptpp6RYdxktRbwDRmGrRHg2sx1MO0YytYc3bXJNoSCd-zzDZZlZUiRmvHT-BEXMHH5cRghhB8kP173OTD9QAfmbCn7mlKxVIbUzD6t5PKvxwHOBjnXBEWkG1lrOgk652x1KUMqNjT-sZatymmtZD7EjGc46AagIG1Glo-HX49UX_C9mF8U25fF9kWx80Gcdl9eAgAA__92zfiN +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkVGLm0AUhd_7Ky73KaFT4hgKZZ5ME0OFVFMV2rLrg6uXIBjHnRmTXYL_fVE3m81CwubxnjPnno87B9SPJQp0_61XM8-H0cKL4ujPagyRu3LnMexhGQa_wcDfX27owmgH941lTQm4NYaZv3hTMvhujSEIF24IP__DDhlWMic_3ZJGcYccE4a1khlpLVUnHfoHXv6EwmJYVHVjOjlhmElFKA5oClMSCozTh5JCSnNSEwsZ5mTSouzXGqdWxTZVz8hwLstmW2kBOwZ7ZBjVaTd9w6RlKBtzKtAm3RAK3rLPQyyL0pAiNeHnBIMuYOTw022EEJ4f_3g90dHpbnR0LkLZt0BFUhlSE_scyeFfkWHQGAGOfbFoektRSLqWlaazokubrTZhSPmGhm_WslEZrZXM-pphDPpcL-SkzeDyYfCqweoA34f51bB9PWxfDU8_hJP2y0sAAAD__1PA-l4= # The single join reader should be on node 5, and doesn't need to output v. query T @@ -92,4 +92,4 @@ vectorized: true table: t@v spans: [/41 - /49] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkVGPmkAQx9_7KSbzpMkaFtCXfdJWmtJYsGDSNi0PFCaGBFm6u9i7GL77Bbh4aiJ39zj_md_8YPaE-l-JAr2f283KD2Cy9uNd_H0zhdjbeJ928B8-R-E3MPDjixd5MDnCn4Zzl2DOp7AK1uckgwWfQhitvQg-_oIjMqxkTkF6II3iN9rIcIEJw1rJjLSWqotP_ZCfP6DgDIuqbkwXJwwzqQjFCU1hSkKBgZzJ2nKQYU4mLcp-rGUoG_MCaZPuCYXbsovF9vjiXfq3pIjSnJTFr9ajWXa_EddppQVYc3tmLbqJsDECljbe09vv0X-VRfVst2_ttSoOqXo8K927SudK-copI9K1rDS96Za8TRhSvqfhubRsVEZbJbNeM5Rhz_VBTtoMXXco_GpodR94CdujsDMOO6Mwv4GT9sNTAAAA__82C-wq +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkcGvmkAQxu_9KyZz0mQNC-hlT1qlKY0FCyZt03KgMDGkyNLdxbYx_O8N0PjURN57x_l2fvN9M3tG_atEgd6X3XblBzDZ-PE-_rSdQuxtvfUefsO7KPwIBj6_9yIPJif43nDuEsz5FFbB5qJksOBTCKONF8Hbr3BChpXMKUiPpFF8QxsZLjBhWCuZkdZSdfK5b_LzPyg4w6KqG9PJCcNMKkJxRlOYklBgIGeythxkmJNJi7JvaxnKxjxB2qQHQuG27GqwPT54n_4oKaI0J2Xxm_Folt0aa1k2x0oL-Mn6teI67Sprbs-sRUeEjRGwtPFRHPs1cT7Iovqfxr5PU6vimKq_F0v3oaVzY_nMaSPStaw0vei2vE0YUn6g4fu0bFRGOyWz3mYow57rhZy0GV7dofCr4akLeA3bo7AzDjujML-Dk_bNvwAAAP__cBLxAg== diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_join b/pkg/sql/opt/exec/execbuilder/testdata/distsql_join index d10eb7747702..1176caecd31b 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_join +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_join @@ -171,7 +171,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9u4jgUh-_3KaxzBVujYCf8i1SJ7pbVUnWgA72Y0YgLQzwFiSaME6Spqr77KKFMG0J94jHkqkrwF__i852ePEP8Yw0-DL7c3V4NR6R2PZzeTz_f1kltOrgd_HtP_ib_Tcaffl8KSua7O4FIBLmaZn9ZndyMU_x11YKSoLiKk_HkejAh_3zNFtTJeERqglySRZ1cja5JbU4us9v7VXNKRB0ohFEgR-JRxuB_AwYUOFBwgYIHFFowo7BR0ULGcaTSJc8ZMAx-gt-ksAo32yS9PaOwiJQE_xmSVbKW4MO9mK_lRIpAKqcJFAKZiNU62yYN3N-o1aNQT0BhuhFh7JOGw4gIA8JIlCylAgrjbeKTPqN9DrMXCtE2ed3ubZf5E1mKeJl__h6ZUYgT8SDBZy_0z5K3bJK7tO_ZJucfJn971DaMVCCVDHIPm6UktuTI6_8v4uVNtAqlcthB4dbye1LLMtYv1ephub_I1Yoee--3F3JNSjGNVJLmOChDn1_QPrv4cA-vxKEdO493Dz4SZhQ1oo3Dm4enfDRCKxeBlTeOlTHOYQ2HV9QtBtnbdtlP3y-s4n5h5-4XpBj7fmnb9AsvX3BequC84bgVyWqQvWOX_fSy8opl5eeWFSnGXtaOjaxu-YK7pQruNhyvIlkNsnftsp9eVrdiWd1zy4oUYy9r10ZWr3zBvVIF9xpOqyJZDbL37LKfXlavYlm9c8uKFGMva-9Un81H9pjIeBOFsSz1NdxMT0wGD3JXgTjaqoW8U9Ei22Z3Oc647BMnkHGy-5XvLobh7qc0YHm4YwMzZkW3rOienmYGZ8bN4I4NfHBmpnTLiu7paX5IN9_Tbg5uHsKuFvb01fK0MGf6rVs2_aGHkf7Qw1h_IDTSHwiN9Efbpj_0MNIfehjrD4RG-gOhkf7oaC3t6iXt2vRHz8ZwPYwYrocxwxEaMRyhsQlgMjaL_0lN5qYpjQ4Bo8lpjCOas8IUyanKuF50ph8jiOmsMEdMVEdoxHWExmTHcMR2DMd0L8xQI931NKa7nkZ1R3BMdwTHdC8M0rzubUT3wkwx0r0wU4x019OY7noa1R3BMd0RHNO9ME-NdNfTmO56GtUdwTHdERzTvTBV89_aTb3uvDBbtLrPXv76FQAA__9PLrbs +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9u4jgUh-_3KaxzBVujYCf8i1SJbstqqbrQgV7MaMSFIZ6CRGMmCdJUFe8-SijTQsAnTghXlcFf_MPnOz15g_DnElzofX18uOkPSOWuP34af3moksq499C7fSJ_k39Hw___LAUl0-0nnogEuRknf1mV3A9j_H3XjBIvvYuT4eiuNyL_fEs2VMlwQCqCXJNZldwM7khlSq6Tj3e7ppSIKlDwlScH4kWG4H4HBhQ4ULCBggMUGjChsArUTIahCuItbwnQ936BW6ew8FfrKP54QmGmAgnuG0SLaCnBhScxXcqRFJ4MrDpQ8GQkFsvkmDhwdxUsXkTwChRu1XL94oducgFAYbwS8apmMSJ8jzCiorkMYLKhoNbR-4kfB01fyVyE8_0juox2OUw2EwphJJ4luGxD84VvZAsfX3tp4fnJ8B-PWvsq8GQgvb2HTWIS23LkBv4T4fxeLXwZWOygfEv5I6okGavXweJ5vlsAheE6ckmyol2bdp2D3_3xg2yTaoxVEMU5DirR5Ve0y65OnuFkuLRj9_HpwUfCDFRNrSxeP7zloxEaexFYdulYno6xWM3i5fWMQfxmnp45e3x-Mv4luoaV3TVIPXZd0yzSNTx7zXkuZXnNsstT1iB-K5ey547PT8a_hLK8bGWReuyUbRVR1s5eczuXsnbNcspT1iB-O5ey547PT8a_hLJ22coi9dgp2y6irJO95k4uZZ2a1ShPWYP4nVzKnjs-Pxn_Eso6ZSuL1GOnbOdcr9NHzhjJcKX8UGZ6S67HNya9Z7mtQKjWwUw-BmqWHLNdDhMueenxZBhtv-XbRd_ffhUHzA63isCMFaIbheiOnmYGd8bN4FYR-ODOTOlGIbqjp_khXf9M23tw_RC2tbCjr5ajhTnTH90o0h96GOkPPYz1B0Ij_YHQSH80i_SHHkb6Qw9j_YHQSH8gNNIfLa2lbb2k7SL90SliuB5GDNfDmOEIjRiO0NgEMBmb6f-kJnPTlEaHgNHkNMYRzVlqiuypyrhedKYfI4jpLDVHTFRHaMR1hMZkx3DEdgzHdE_NUCPd9TSmu55GdUdwTHcEx3RPDdJ93ZuI7qmZYqR7aqYY6a6nMd31NKo7gmO6Izime2qeGumupzHd9TSqO4JjuiM4pntqqu6_a9f1uvPUbNHqPtn89TsAAP__2TDHhg== # TODO(radu): rework these tests (the inner ORDER BY aren't useful anymore). # diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_merge_join b/pkg/sql/opt/exec/execbuilder/testdata/distsql_merge_join index 2a045f53e489..663c616448bf 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_merge_join +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_merge_join @@ -206,7 +206,7 @@ vectorized: true table: parent1@parent1_pkey spans: [/3 - /5] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckdFv0zAQxt_5K0731IBR44TxYKlSJhYgU5eOpggkyIOJj85SZgfbkUBV_3eUBGnLtIHKW-67--6X73xA_6NFgfnn6_V5UcLioqh21Yd1BFW-zt_s4Dm83W6uoJOOTOBwuSlKaG50qzh8rIryHSw6rXgEn97n23wq4GsfxymtII3gvLy4LzYrOIuQobGKSnlLHsUX5Fgz7JxtyHvrBukwDhTqJ4qYoTZdHwa5ZthYRygOGHRoCQXu5LeWtiQVuWWMDBUFqdtx7fSXWef0rXS_kGHVSeMFLNOXy9dYHxnaPtxt9kHuCQU_sv-j8zn9z8FOxSdP4u-ovbFOkSM1I9aD818jj2S4IrenS6sNuWUyz9DS97DI-Ito5fT-ZvpEhps-CMheseyMZQnL0ifDpKfccku-s8bTw1CPbo6HJKT2NF3G2941dO1sM2KmcjP6RkGRD1M3mYrCjK3xse-b-Qnm5KE5-as5nZnjY3189jsAAP__HlAeSQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFv0zAQxt_5K0731IBR44TxEKlSpi1Api4dTRFIkAcTH12k1Da2I4Gq_u8oMdLWaQXGS5T7zp_v9528R_e9xwyLTzfL87KC2WVZb-r3ywjqYllcbOA5vFmvrsEIS8pzuFqVFbS3XS85fKjL6i3MTCd5BB_fFesiFPBliOOUFpBGcF5d3hfbBZxFyFBpSZXYkcPsM3JsGBqrW3JO21HaTwdK-QOzmGGnzOBHuWHYakuY7dF3vifMcCO-9rQmIcnOY2QoyYuun64NlLmx3U7Yn8jwQvfDTrkMRh4GbfgKjgxrI8bGPH05f43NgaEe_N1Q58WWMOMH9n9g_Bjs9y5Pk5l_Z0pOMt2hDEpbSZbkEUYzOv925JFg12S3dKU7RXaeHAfr6Zuf5fxFtLDd9jb8IsPV4DPIX7H8jOUJy9OTYdKnLHhNzmjl6GGoR2-OxyQktxQ24_RgW7qxup3GhHI1-SZBkvOhm4SiVFNregH3zfwJ5uShOfmjOT0yx4fm8OxXAAAA__8i3yy3 # Swap parent1 and child1 tables. query T @@ -261,7 +261,7 @@ vectorized: true table: parent1@parent1_pkey spans: [/3 - /5] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckdFr1EAQxt_9K4Z5uujKZRPqw8JBio2acs3Vy4mC5mHNjteFdDfubkA57n-XJEKb0irXt8w3880v3-wB_c8WBeZfrtfnRQmLi6LaVR_XEVT5On-7g5fwbru5guZGt4rD5aYooZOOTODwqSrK97DotOIRfP6Qb_OpgG99HKe0gjSC8_Livtis4CxChsYqKuUteRRfkWPNsHO2Ie-tG6TDOFCoXyhihtp0fRjkmmFjHaE4YNChJRS4k99b2pJU5JYxMlQUpG7HtdMvZ53Tt9L9RoZVJ40XsExfL99gfWRo-3C32Qe5JxT8yJ5H53P63yOdik-exN9Re2OdIkdqRqwH5_9GHslwRW5Pl1YbcstknqGlH2GR8VfRyun9zfSJDDd9EJBxliUsS1l29mSY9JRbbsl31nh6GOrRzfGQhNSepst427uGrp1tRsxUbkbfKCjyYeomU1GYsTU-9n0zP8GcPDQn_zSnM3N8rI8v_gQAAP__F9UeRg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFv0zAQxt_5K0731IBR40TjIVKlTFuATF06miKQIA8mPrpIqW1sRwJV_d9RYqSt0wpsL1HuO3--33fyHt2PHjMsPt8sz8sKZpdlvak_LCOoi2VxsYGX8Ha9uob2tuslh6tVWYERlpTn8LEuq3cwM53kEXx6X6yLUMDXIY5TWkAawXl1eV9sF3AWIUOlJVViRw6zL8ixYWisbsk5bUdpPx0o5U_MYoadMoMf5YZhqy1htkff-Z4ww4341tOahCQ7j5GhJC-6fro2IOfGdjthfyHDC90PO-UyGHkYtOErODKsjRgb8_T1_A02B4Z68HdDnRdbwowf2PPA-DHYn_2dJjP_z5ScZLpDGZS2kizJI4xmdP7ryCPBrslu6Up3iuw8OQ7W03c_y_mraGG77W34RYarwWeQc5YnLE9ZfnYyTPqUBa_JGa0cPQz16M3xmITklsJmnB5sSzdWt9OYUK4m3yRIcj50k1CUampNL-C-mT_BnDw0J381p0fm-NAcXvwOAAD__xxkLLQ= # Select over two ranges for parent/child with split at grandchild key. # Also, rows with pid1 <= 30 should have 4 rows whereas pid1 > 30 should @@ -315,7 +315,7 @@ vectorized: true table: parent1@parent1_pkey spans: [/29 - /31] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUcGO0zAQvfMVozm1YGjswGEjVcpCg8iqmyxpJUCQQ4iHrqWsHWxHAlX9d5Rk0ZJVCyo3z3vz5s0b79F9bzDC5OPN-jLNYLZKN9vN-_UcNsk6ebOFp_C2yK-hrSxpz-EqTzOob1UjOeTZb_hFqySH5T0xVh_eJUUCs0nHly4IQlqCuJjDZbY6xtZLCPkc8mKVFPD608QBGWojKavuyGH0GTmWDFtranLO2B7aDw2p_IFRwFDptvM9XDKsjSWM9uiVbwgj3FZfGyqokmQXATKU5CvVDGPHFHFr1V1lfyLDTVtpF8FCXDxfhALLA0PT-YfZzlc7wogf2P_586n_feTzFxAnF3jw7bSxkizJiWfZK__VciTFNdkdXRmlyS7ENEVD3_ws5s_mS6t2t-MTGeadjyB-yeJXLOYsFiwOT-YJzzloQa412tHjXEcnB30Ykjsaj-NMZ2u6saYebMYyH3QDIMn5kRVjkeqBGn78TzE_Qywei8VfxeFEHBzKw5NfAQAA__9ZXzK4 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktGPk0AQxt_9Kybz1Opq2UUfjqQJ5xUjlx6ctIka5WFlxx4JZXF3STQN_7sBzpxcWk3vpenMN9_O75twQPujwgCjT7fryziB2SrebDcf1nPYROvoagvP4V2W3kAjDdWOw3UaJ1DclZXikCZ_2q-aUnFY3gtj9fF9lEUwm0x8bT3PpyWIizlcJqtjarEEn88hzVZRBm8_TzYgw1orSuSeLAZfkGPOsDG6IGu16VuHYSBWPzHwGJZ107q-nTMstCEMDuhKVxEGuJXfKspIKjILDxkqcrKshmfHFGFjyr00v5Dhla7afW0D6CEYFOOv7Hk2jeyFhbh4ufAF5h1D3bqHtdbJHWHAO_Y0ND5Fu7_GabbmHCpxkuoBpq21UWRITUDy3vm_kSPRbsjs6FqXNZmFmEar6LubhfzFfGnK3d34FxmmrQsgfM3CNyzkLBQs9E_m8c-5cka20bWlx7mOvuz1YUjtaDyO1a0p6NboYlgzlungGxqKrBtVMRZxPUjDZ_C3mZ9hFo_N4p9mf2L2urx79jsAAP__T5FBJg== # Parent-child where pid1 <= 15 have one joined row and pid1 > 15 have no # joined rows (since child2 only has 15 rows up to pid1 = 15). @@ -377,7 +377,7 @@ vectorized: true table: child2@child2_pkey spans: [/12 - ] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckd9v0zAQx9_5K0731IJRYxd4iDQpwAJk6pqRFAGCPJj46CxldrAdCVT1f0dxkEanFdS93a_vffw979D_6DDF_NPV6mWxhtl5UW_q96s51Pkqf72Bx_CmKi-hl45M4HBRFmtor3WnBHyoi_VbmPVa8Tl8fJdXOYwxfB2SZElnwAWU1XlewavPsYEMjVW0ljfkMf2CHBuGvbMteW_dWNrFgUL9xDRhqE0_hLHcMGytI0x3GHToCFPcyG8dVSQVuUWCDBUFqbu49s9Ts97pG-l-IcO6l8ansODiKTZ7hnYIt5t9kFvClO_Zw-j8kD7d5kS4OAq_ZQ7GOkWO1AGvGZX_G7nHwSW5LV1YbcgtxKGDjr6HWcafzM-c3l5PITIsh5BCxlkmWPaMZc9Z9uKon-Upx6zI99Z4uuvr3s3JaIbUlqbjeDu4lq6cbSNmSsuoiwVFPkxdMSWFia3423-L-QlicVcs_ileHoiTfbN_9DsAAP__2Kgc-g== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFv0zAQxt_5K0731IJRYxd4iDQpsAXI1DUjKQIEeTDx0VlK42A7Eqjq_47iII1MK9C9RPZ3_u5-3yl7dN8bjDH9eL16ma1hdpGVm_Ldag5lukrPN_AYXhf5FXTSUus5XObZGuob3SgB78ts_QZmnVZ8Dh_epkUKwxm-9FG0pDPgAvLiIi3g1adQQIatUbSWO3IYf0aOFcPOmpqcM3aQ9uFBpn5gHDHUbdf7Qa4Y1sYSxnv02jeEMW7k14YKkorsIkKGirzUTWj7GzXprN5J-xMZnpum37UuDhQMOjmglJ0cpAUXT7E6MDS9vx3nvNwSxvzAHobEp0jjwo4T1VqJ8F0yqKX4TzpxlO4Wqm-NVWRJTYCqwfmvJ_dEvCK7pUujW7ILMY3Y0Dc_S_iT-ZnV25vxiAzz3seQcJYIljxjyXOWvDiaZ3nKtgtynWkd3c11b-doCENqS-NynOltTdfW1GHMeM2DLwiKnB-rYrxkbSiF3-FPMz_BLO6axV_Ny4k5OlSHR78CAAD__1DfLRk= # These rows are all on the same node 1 (gateway). query T @@ -434,7 +434,7 @@ vectorized: true table: parent1@parent1_pkey spans: [/1 - /1] [/11 - /11] [/21 - /21] [/31 - /31] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckc-O0zAQxu88xWhOLRgldoBDJKQAGyCrbrMkRYBQDiYe2khZO9iOBKr67igO0tJVFyg3z59v5veN9-i-9Zhi_vF69aJYw-KiqDf1u9US6nyVv9rAQ3hdlVcwSEvac7gsizW0u65XAt7XxfoNLIZO8SV8eJtXOUxvmMZwBpwzEJxBwpdQVhd5BS8_hQZkqI2itbwhh-ln5NgwHKxpyTljp9Q-NBTqO6Yxw04Po5_SDcPWWMJ0j77zPWGKG_mlp4qkIhvFyFCRl10fxs6U2WC7G2l_IMN6kNqlEPHHkQCpFSRg_I6sw-bA0Iz-do3zckuY8gP7PxR-jPLreqdYovjfUMS9KLcEozZWkSV1tL2ZlH9rOeHniuyWLk2nyUbi2E9PX_0i44-Wz2233c1PZFiOPoXsKcuesUywLGHZk3v9JOectiI3GO3orq-Tk-PJDKktzcdxZrQtXVvThjVzWAZdSChyfq6KOSh0KIW__13MzxCLu2LxR3FyJI4PzeHBzwAAAP__d_wmng== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckt-L00AQx9_9K4Z5uupIuxv1ISBE76Lm6DVnUlGRPKzZsQ2k2bi7AaX0f5dshLseV_V8CfPrO_l8h92j-95ijOmn6-WrbAVnF1m5Lt8vZ1Cmy_R8DY_hTZFfQa8sd17AZZ6toN42rZbwocxWb-Gsb7SYwcd3aZHCGMO4RhAIQSAFQSRmkBcXaQGvP4cBJOyM5pXascP4CwqsCHtranbO2LG0DwOZ_oHxgrDp-sGP5YqwNpYx3qNvfMsY41p9bblgpdnOF0io2aumDWsnyqS3zU7Zn0h4btph17k4QBDUjZbhGxHUSiJh2auxPRdP5xJUpyEC47dsHVYHQjP4Gw7n1YYxFgf6P1ZxzPr7vKdheyVuA84X_8YnT_LdYA2dsZot6yOkalT-beQek1dsN3xpmo7tXB6bbPmbP0vEk9lL22y2U4iE-eBjSJ5T8oISSUlEybOTfqKH3Ltg15vO8V1f925ejGZYb3g6jjODrfnamjr8ZkrzoAsFzc5PXTklWRda4UHcFosHiOVdsfyjODoSLw7V4dGvAAAA__97ija9 # Parent-grandchild. # We add the pa1 > 0 condition so a lookup join is not considered to be a better plan. @@ -508,7 +508,7 @@ vectorized: true table: parent1@parent1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEldGvokYUxt_7V0zOk3THDDMDXCS5CZuu27q5q1u1aZPWB1amSuICHTDpzY3_ewPoVbk4I6XaFyJwfvON33cO8wLZXxvwYPjbl6f3ozHqfRjN5rOfnww0Gz4Nf5ij79HH6eQzSgMp4pyiT5PRGK1kEIfLdbQJGfplNhr_iHppFFID_frTcDpEvV6vvEd_bE2Ti0dEqYHejz-gk6fLR0S5YaDJFNWLB03FjBqN1bxxac4P1WlwqEWmARjiJBTj4JvIwPsdKGBggIEDBgsw2LDAkMpkKbIskUXJSwmMwr_BMzFEcbrNi8cLDMtECvBeII_yjQAP5sHXjZiKIBSSmIAhFHkQbUqZE7v8VEbfAvkMGGZpEGce6hNGLEYYYSiIQ0RRkq-FhMUOQ7LN93pHma_PaB1k63MBn8Jit8CQ5cFKgEd3-N_t2z5fdp95w55r2ztKszbSH6NNLqSQxDnXrZ57ZR_5p13ked5oPHf3ifunrXR4te-RU2xwEWOvKzZw_LIc5zXOZ69NdnjTKUF-0cbjOokMhRRhfZ13hfCxahs31ZVa9Tg-C7kSn5IoFpI8nC-7EX_mPZ--Mx5ltFpXPwHDZJt7yHew_4B9hn2OfQv79sXmsK74Vy32O076SUooq1U2a9tn2vT6meAtZplQk9hmcaVmn1CL2FZxpdaNRpvevzGoefvOYNenQ9ukc_jQ9olDLIc4xLlRLuz-ubi3j4VfH4vVamiOc9In1CW2W1ype6Nw-P8wNPT26VjXp8PapHMYlf7px62MhlXRZP9hNtb9sxnc96Rr2M1UZGkSZ-Kqc8ws_o8IV6KyKEu2cim-yGRZylS3k5Irj4dQZHn1llc3o7h6VWzwetjtAlPWhXY6SZtqmtZp85Q-37dZh1kLv1k72O0C1_xuSTudpE01zZV-W-qwLCVMuTotu8t0qGHNdKhh3XSoac10aKQ10-F0Seuhi99qWOO3Gtb5raY1fmukNX67XfwedPFbDWv8VsM6v9W0xm-NtO7r_-bwaGM4fXN4tHFcQ2ss19A6zzW4xnSduM71N0eI0vXF7rt_AgAA__-KXZo1 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElVGPozYQx9_7Kax5Cj1HxjawLNJKnO5ybU57yTXZqpXaPHDgJkgsUEOknlb73StgcyFsYiel5F5QCPPzjP__GfsJir8T8GDy--f7t9MZGr2fLh-Wv9wbaDm5n7x7QD-iD4v5J5QHUqQlRR_n0xlayyCNwk2cRAz9upzOfkKjPI6ogX77ebKYoNFoVL-jP7emycUdotRAb2fvUevf8A5RbhhovkDd4NtjwYwaR6P50aU530XnwS4WmQZgSLNIzIJHUYD3B1DAwAADBwwWYLBhhSGXWSiKIpNVyFMNTKN_wDMxxGm-Lau_VxjCTArwnqCMy0SABw_Bl0QsRBAJSUzAEIkyiJM6TUsuP5fxYyC_AoZ3WbJ9TAsPVZVjFMYRq58co3Xzsg6DqrplHlRhY8KIxQgjDAVphCjKyo2QsHrGkG3Ll8L29Xz5ijZBsTmsxKewel5hKMpgLcCjz_i_bdA-XPalOU5vLg9oayOdmvf1sEvq-RAnpZBCEuewmOZ_r-5Cv92DnudNZw_uS7_47UbcfXrpsDZ2exJj31Y8wvHT6TjvcD771qK7L71s5Sdl3K-TyUhIEXXXeVMl3kdt02Nxda6uHZ-EXIuPWZwKSW4Ol03EX-XIp2-MOxmvN81PwDDflh7yHezfYJ9hn2Pfwr59sjmsM3Z1Qb2zbJzlhLJO5PHc9kFuev6g8CFOAkJNYpvVk5pjQi1iW9WTWgMdDPT6HUTN4VuInW8jHcTG3Xk-Jg6xHOIQZyAD2fUNdIf3j5_vnzXMGO4nb0yoS2y3elJ3IBf5dxhDOryN1vk2skFs3A3fuH2u1h6yxsPifzTRur6Jt9e9jY9UsxBFnqWFOOuuNav9iGgtGomKbCtD8VlmYZ2meZ3XXH0zRaIom6-8eZmmzaeqwPNhtw9MWR_a6ZXaVNO0S5tt-rBuswuzC_Rml8FuH7ij94W00yu1qaa5Um9LbZalhClXu2X3mQ41rJkONaybDjWtmQ5Nas10OH3cuumjtxrW6K2GdXqraY3emtQavd0-et_20VsNa_RWwzq91bRGb01q3en_6vK4RHD66vK4RHENrZFcQ-s01-Aa0XXJdaq_ukKUqq-ef_g3AAD__7Rs3aA= query T EXPLAIN (VERBOSE) @@ -580,7 +580,7 @@ vectorized: true table: parent1@parent1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEldGvokYUxt_7V0zOk3THDDMDXCS5CZuu27q5q1u1aZPWB1amSuICHTDpzY3_ewPoVbk4I6XaFyJwfvON33cO8wLZXxvwYPjbl6f3ozHqfRjN5rOfnww0Gz4Nf5ij79HH6eQzWskgDpfraBMy9GkyGqM0kCLOKfplNhr_iHppFFID_frTcDpEvV6vvEd_bE2Ti0dEqYHejz-gk6fLR0S5YaDJFNWLB03FjBqN1bxxac4P1WlwqEWmARjiJBTj4JvIwPsdKGBggIEDBgsw2LDAkMpkKbIskUXJSwmMwr_BMzFEcbrNi8cLDMtECvBeII_yjQAP5sHXjZiKIBSSmIAhFHkQbUqZE-_8VEbfAvkMGGZpEGce6hNGLEYYYSiIQ0RRkq-FhMUOQ7LN93pHma_PaB1k63MBn8Jit8CQ5cFKgEd3-N_t2z5fdh9xw55r2ztKszbSH6NNLqSQxDnXrZ57ZR_5p13ked5oPHf3ifunrXR4te-RU2xwEWOvKzZw_LIc5zXOZ69NdnjTKUF-0cbjOokMhRRhfZ13hfCxahs31ZVa9Tg-C7kSn5IoFpI8nC-7EX_mPZ--Mx5ltFpXPwHDZJt7yKfYZ9jn2Lewb2P_4WJzWFf8qxb7HSf9JCWU1Sqbte0zbXr9TPAWs0yoSWyzuFKzT6hFbKu4UutGo03v3xjUvH1nsOvToW3SOXxo-8QhlkMc4twoF3b_XNzbx8Kvj8VqNTTHOekT6hLbLa7UvVE4_H8YGnr7dKzr02Ft0jmMSv_041ZGw6posv8wG-v-2Qzue9I17GYqsjSJM3HVOWYW_0eEK1FZlCVbuRRfZLIsZarbScmVx0Mosrx6y6ubUVy9KjZ4Pex2gSnrQjudpE01Teu0eUqf79usw6yF36wd7HaBa363pJ1O0qaa5kq_LXVYlhKmXJ2W3WU61LBmOtSwbjrUtGY6NNKa6XC6pPXQxW81rPFbDev8VtMavzXSGr_dLn4PuvithjV-q2Gd32pa47dGWvf1f3N4tDGcvjk82jiuoTWWa2id5xpcY7pOXOf6myNE6fpi990_AQAA__9NRpoc +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElVGPozYQx9_7Kax5Cj1HxjawLNJKnO5ybU57yTXZqpXaPHDgJkgsUEOknlb73StgcyFsYiel5F5QCPPzjP__GfsJir8T8GDy--f7t9MZGr2fLh-Wv9wbaDm5n7x7QD-iD4v5J7SWQRqFmziJGPo4n85QHkiRlhT9upzOfkKjPI6ogX77ebKYoNFoVL-jP7emycUdotRAb2fvUevf8A5RbhhovkDd4NtjwYwaR6P50aU530XnwS4WmQZgSLNIzIJHUYD3B1DAwAADBwwWYLBhhSGXWSiKIpNVyFMNTKN_wDMxxGm-Lau_VxjCTArwnqCMy0SABw_Bl0QsRBAJSUzAEIkyiJM6TUs7P5fxYyC_AoZ3WbJ9TAsPVZVjFMYRq58co3Xzsg6DqrplHlRhY8KIxQgjDAVphCjKyo2QsHrGkG3Ll8L29Xz5ijZBsTmsxKewel5hKMpgLcCjz_i_bdA-XPalF05vLg9oayOdmvf1sEvq-RAnpZBCEuewmOZ_r-5Cv92DnudNZw_uS7_47UbcfXrpsDZ2exJj31Y8wvHT6TjvcD771qK7L71s5Sdl3K-TyUhIEXXXeVMl3kdt02Nxda6uHZ-EXIuPWZwKSW4Ol03EX-XIp2-MOxmvN81PwDDflh7yKfYZ9jn2Lezb2L852RzWGbu6oN5ZNs5yQlkn8nhu-yA3PX9Q-BAnAaEmsc3qSc0xoRaxrepJrYEOBnr9DqLm8C3EzreRDmLj7jwfE4dYDnGIM5CB7PoGusP7x8_3zxpmDPeTNybUJbZbPak7kIv8O4whHd5G63wb2SA27oZv3D5Xaw9Z42HxP5poXd_E2-vexkeqWYgiz9JCnHXXmtV-RLQWjURFtpWh-CyzsE7TvM5rrr6ZIlGUzVfevEzT5lNV4Pmw2wemrA_t9Eptqmnapc02fVi32YXZBXqzy2C3D9zR-0La6ZXaVNNcqbelNstSwpSr3bL7TIca1kyHGtZNh5rWTIcmtWY6nD5u3fTRWw1r9FbDOr3VtEZvTWqN3m4fvW_76K2GNXqrYZ3ealqjtya17vR_dXlcIjh9dXlcoriG1kiuoXWaa3CN6LrkOtVfXSFK1VfPP_wbAAD__29T3Yc= query T EXPLAIN SELECT * FROM grandchild2 JOIN parent1 USING(pid1) WHERE @@ -643,7 +643,7 @@ vectorized: true table: grandchild2@grandchild2_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsll1vo0YUhu_7K0bnKjTjDjMM2EaKxKrrbb1K8NaJ1EqtL1gztZG84AKWuory3yuMsfnwckyokr3IDYqZeeZ8vO-c8AjJPxuwYfLHp9t3U5dcvZ_eP9z_dquR-8nt5OcH8iP5MJ_dkeU62PiCTF13Mid3k_kvE_JxNnXJKvZC_7A4c8nVVf73T9vA5-SmvLx_pZF37ntSbFoGvqhtyl5pjV1Gc5ehkd9_ncwn5Koa86-drhvqhpjVQ05ryxsy1DQym5-S3edRgFycSbIgudQKdlWh5PhArSr7Ta5pQCGMfOV6X1QC9p_AgYIACgZQkEDBhAWFbRwtVZJEcbblcQ9M_X_B1ikE4XaXZq8XFJZRrMB-hDRINwpsePA-b9Rceb6KmQ4UfJV6wWYfJk_f2cbBFy_-ChTut16Y2GQAiycK0S49nHo67PNXsvaSdfUYh1NHUMeAxdOCQpJ6KwU2f6LPy5FXDy9peiZRJpgUTDBBvNAnnETpWsW17E85iS45fQg2qYpVzKxqQvl7OzOVU_KSbdtT92F0kNgpOalYOZjCKfuoRpVddMQKTpacVONkyU1H7n8Q0fhmw06n7cIo9lWs_Mp5i4wstpzbAA6_po64po5xncesC3Cn4pX6GAVhZoqaKzbq7_SqdIJ2EwerdfUVUJjtUpsUlVFHUsekjkWdIXVG1Bl_0yiyR91nKnGjQbRl3Kp36GxssxKbX35xZIeLw7jOTD17cn3AuGSmzJ5cPuMeISke79H47R41G_bS90i-4j0Sl3tZdPFy8T9gwCwmLWYx6xkuRpI7unj45uJmw17axeIVXWxc7mKz00Q-DeEB4yNmjrInHz3Dy0iKRy9z_c3MzY69tJnNVzSzvNzMRhczF4N4UP7Q2DtZ5E5OLrQykuDRyqM3Jzcb9tJONr6Tj_Qzec5Vso3CRF30Ca5nlSp_pfImJtEuXqpPcbTch8l_zvbc_mPOV0marxr5j2mYL2UJXg5zvRdt9aGHvUIjZfM6rZdpUYH1Oiw6NFx0g2sN70pbfehhr9BI2UZrw2W7WrIV5sN2ucxW2mqHrT5at8OY1giNaN1OI1ojoZGyh320HrXC43a1xn3UaocxtRAaUaudRtRCQiNl88Yk7SIXb5-kHBmlvNcsRWhMMgxHNENwRDQsOFZ6r4HKkYlqIqo1Rmon1dppVDUEx1RrxzHVkOBY6Y3B2qra4umH_wIAAP__jH5T_g== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsl11vo0YUhu_7K0bnynTHhRkGbCNFYrXrbb1K8NaJ1EqtL1gzxUgOuIClrqL89wowNh9ejh2apBe5QTEzz5yP950T-wGSvzdgwfT3L9fvZw4ZfJzd3t3-eq2Q2-n19MMd-ZF8WsxvyGodbDxOZo4zXZCb6eLnKfk8nznEj93Q2y_OHTIYFH__tA08Rq6qy_krhbx3PpJy0yrweGNT9kpp7dLbu3SF_PbLdDElg3rMP3eapssrYtQPOa6trshIUch8cUw2z6MEGT-RZEkyoZSsX6PEZE_5tf0GUxSgEEaedNx7mYD1BzCgwIGCDhQEUDBgSWEbRyuZJFGcbXnIgZn3D1gahSDc7tLs9ZLCKoolWA-QBulGggV37teNXEjXk7GqAQVPpm6wycMU6dvbOLh3429A4UO02d2HiUWyXlCS5Zk_dUpWbpbQ7dbNloewfKQQ7dJ92GO0r9_I2k3W9Tg2ozantg7LxyWFJHV9CRZ7pE8rgtUPr4h-XiV-8cGvV6RyVXCVq5y4oUcYidK1jBtlHpPnlyT_KdikMpaxatYzL95bmT3tiisty5o5d-O9WeyKJ8uVvb3sqiMbVNWPB6zkRMWTDU5UfHng_gO19e827HjaLoxiT8bSq523zMhyy6kNYLN31ObvqK2_K2I2BbiRsS8_R0GYuadhn438Kx1UTlCu4sBf118BhfkutUhZGbUFtQ1qm9QeUXtM7cl3jSJ61H2iEicaRluVmc0OnYxt1GKz82-YeI4bpjJNNbTsybShyoRqiOzJxBMuHFLL4cJN3i5cu2EvfeHEK144fr7p-bOYvvyvMlRNVZiqqZpPsDtSxcHuoze7txv20nbnr2h3_Xy7G88z449jfaiysWqMsycbP8H0SC0H0zPtzfXtjr20641XdL043_X6s7i-HO3D6nec3PK8sHxypueRSg6eH79Zvt2wl7a8_j_5IXEiz4VMtlGYyLN-JmhZpdLzZdHEJNrFK_kljlZ5mOLjPOfy75GeTNJiVS8-zMJiKUvwfJhpvWizDz3qFRopmzVprUrzGqw1YX5Bw_llcKPhl9JmH3rUKzRStt7ZcNGtluiE2ahbLqOTNrths4_W3TCmNUIjWnfTiNZIaKTsUR-tx53wpFutSR-1umFMLYRG1OqmEbWQ0EjZrDVJL5GLdU9ShoxS1muWIjQmGYYjmiE4IhoWHCu910BlyEQ1ENVaI_Ui1bppVDUEx1TrxjHVkOBY6a3B2qna8vGHfwMAAP__TEWaug== query T EXPLAIN @@ -701,7 +701,7 @@ vectorized: true table: parent1@parent1_pkey spans: [/10 - /39] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFvmzAQxt_3V1j3BJpXMORlSJGIVrZRJaQLqTZp48HDN4pEMLONtCnK_z5hqrVETbb0zf7ufv6-O9iD_tlABMmX2-UizYhznebb_NPSJXmyTN5tie53TscVtoZddbVgLrVSeV83gl2Vg0Leb9Yr8tBEbtZpRsYyucvT7ANxLEc-f0w2yXgh33rfD3FOmO-SRXb9VC3nJHzrAoVWCsz4DjVEX4FBQaFTskStpRqkvW1IxS-IfAp12_VmkAsKpVQI0R5MbRqECLb8e4Mb5AKV5wMFgYbXjX12zBl3qt5x9Rso5B1vdUQ85r_xZkPzujcRiRmNAygOFGRvHo204RVCxA70ZWHYNMzDBv8jzckowckojwn6ViqBCsXEvRjIf7U8M88KVYU3sm5RecF0ngZ_GCdmr925qqv78fh3hvDcRsNLNrqoKoUVN1J54TRAfrdyYjZ42lPgnjScXWK4Qd3JVuPx_p592R-WhqLC8SNo2asSb5Usrc14XVvOCgK1GavBeElbW7L_2FOYXQAHx3BwFg4nsH8Mh2fh2RFcHF79CQAA__-uimb9 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFvmzAQxt_3V1j3BJpXMORlSJGIWrZRJaQLqTZp44HhG0UimNlG2hTlf59sKrVETbb0zf7ufv6-O9iD-tVCBMnXu-UizYhzk-bb_PPSJXmyTK63RA07py8ldppd9Q1nLrVS9dC0nF1VRiEfNusVeWwit-s0I2OZ3Odp9pE4liNfPiWbZLyQ74PvhzgnzHfJIrt5rlZzEr53gUInOGblDhVE34BBQaGXokKlhDTS3jak_DdEPoWm6wdt5IJCJSRCtAfd6BYhgm35o8UNlhyl5wMFjrpsWvvsmDPuZbMr5R-gcC3aYdepiJhAlJj5gELel0bzmP_Om_lQHCiIQT85Kl3WCBE70NelYtNUj6s8Fev_AwUnAz3lGDohOUrkkwyFIf_V8sJUK5Q13oqmQ-kF06la_KmdmL1157KpH8YjUFgPOiJxSOPg5BjhJXtd1LXEutRCeuE0QH6_cmJmPO0pcE8azi4x3KDqRafweH8vvuybpSGvcfwISgyywjspKmszXteWswJHpcdqMF7Szpbsn_YcZhfAwTEcnIXDCewfw-FZeHYEF4c3fwMAAP__b9NtWA== ############### # Outer joins # @@ -830,7 +830,7 @@ vectorized: true table: outer_c1@outer_c1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll1r4kwUx--fTzGcK306kkxerA0spHTtYrHaVQsLS1jS5KwGbCY7ibCl-N2XJC6uwWYSBsU7k5zfefn_T5y8Q_prDQ4Mvz2Nb0cT0vk8mi_mX8ddMh-Oh3cL8j-5n00fCd9kKH4kjNw_j8fkYTqa7G4FjDzPR5MvpJNEIesChZiHOPFfMQXnOzCgYAAFEyhYQMEGj0IieIBpykUe8l4Ao_A3ODqFKE42WX7boxBwgeC8QxZlawQHFv7LGmfohyi0PG-ImR-tizJ_23MTEb364g0ozBM_Th2i6T3NJn4cEkZ4tkIB3pbm8bs6-_Qvb2Tlp6vDxC4Db-tRSDN_ieCwLf2g330eLkIUGFbzXOWF91Gb-FhcUas69yOKJT7wKEahXR-mXbwl6JSeTJ8Xw1nhDFBY48-s47Kr7icRLVflT6AwwzhE4ZC76e14OL8bdlxGXbNLiWtQ4lqUuDYlbr8i0X58s8H4LQab8B5PNMYqkcdrWwe1WfNVMRqvit3TmH6iXWHn35XBBe2K0dwvs7FfTO9p7FQvt3F-w24uyDCzuWFWc8Psnmac6g0zz28Y0y_IMau5Y3pTx3raqdxq0a19rNvgWLdK_Rkf9nembepf0DJJPsVmmCY8TrHRya3ng2O4xFLLlG9EgE-CB0WZ8nJacMUxGWKalU_Z7moUl8_yDlvQKrClAvdV4EE9zKqw_i9s1MNGLcwOab1Km0pmSWgVWGJWPSwxqx6WmGWpmGUryS2hVWCJ3PWwRO56WCJ3X0XuayW5JbQKLJG7HpbIXQ9L5B6oyH2jJLeEVoElctfDErnrYdk_f6vD0miLK9GWEt1XogcSut2J6W3_-xMAAP__LoMzBQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll9r4kAUxd_3Uwz3SbcjyeSPtYGFFNcuFqtdtbCwyJImdzVgM9lJhC3F774ktriGdiZhUHwRM5nf3Dnn3GTyAtmfNXgw-HE_uh6OSevrcDaffR-1yWwwGvTn5DO5mU7uCN_kKH6ljNw8jEbkdjIcvw6FjDzMhuNvpJXGEWsDhYRHOA6eMAPvJzCgYAEFGyg4QMGFBYVU8BCzjItiyksJDKO_4JkU4iTd5MXwgkLIBYL3AnmcrxE8mAePa5xiEKEwinUjzIN4XZZ5256fivgpEM9Aoc_Xm6ck80ixL0rSoEBmaVAMGWbHcEmQRIQRnq9QwGJLi0Vei-9rPj6TVZCtDqv5DBbbBYUsD5YIHtvSD0Ts1-EiQoFRdZ2LovB-1iZ5b15Zq2rGHYol3vI4QWFcHi47f07R2wU1eZgPpmVcQGGNv_OWzy7aX0S8XO3-AoUpJhEKj_Qn16PBrD9o-Yz6dpsS36LEdyjxXUr8bsWivXy7hvwGwsa8w1ODscrM92s7B7VZ_f6x9PrH7RjMPFIDsdM3UO-MGsiqH6KtFyIzOwY71mvAOn2KV2eUol0_RUczRbdjWMd6Fu3Tp8jMM4rRqR-jqRVjxzhWhA0kuO9JCCUSwrdfi5LwQI6WAOtDASfqwe4ZtaDio3CKWcqTDGt9LpiFcIyWuPMy4xsR4r3gYVlmdzkpufIYjjDLd3fZ69Uw2d0rdtiA1oEdHbirA_fkMKvC5v-wJYctKcwOabNK21phKWgdWBGWHFaEJYcVYTk6YbladitoHVhhtxxW2C2HFXZ3dey-1LJbQevACrvlsMJuOaywu6dj95WW3QpaB1bYLYcVdsth1Zu_0WFpNcW1aEeL7mrRPQXd7MRcbD_9CwAA__8Pq1y9 query T EXPLAIN (VERBOSE) SELECT * FROM outer_gc1 FULL OUTER JOIN outer_c1 USING (pid1, cid1, cid2) @@ -891,7 +891,7 @@ vectorized: true table: outer_c1@outer_c1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckm-Lm0AQxt_3UyzzKjZzJKu5_hEKe6Re8fD0qgYKJRTrTq3guXZXoUfIdy_RthfDJdf0zcI-O795dh5mA-ZHBS54n-6CKz9kk_d-kiYfA4slXuAtU_aSXcfRLVNdS_pLkXN2vQoCdhP54W8t52yV-OEHNmlKyZHlf07bAoRaSQqzezLgfgYOCJewRmi0yskYpXfypi_y5U9w5whl3XTtTl4j5EoTuBtoy7YicCFUF6qZOYAgqc3Kqi_bIqiufYRMmxUE7mKLe4356cZp9rWimDJJejYftYe_g4tGl_eZfgCEpMlq47ILOGbO_9ecP2V-nrd91PvRsquVlqRJHkb5fMkTA9ySLuhGlTXpmT0eIH1oyB1WJlqlXtwvDiBU9K2dCD5FYU9ROFPrnS6L72MJEGKqJWmXLaOrwEuW3kRwFK8s3BNsFK9HgoPijYVMLJCJS2Ti7dGknFFSz-xeTKZRtaF_Wr75LiaSBQ2xG9XpnO60ynub4Rr1XC9IMu3wuhgufj087T64D_OTsDOC-SFsnwHbh7BzEp4ffHu9ffErAAD__4rhYh0= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckm-Lm0AQxt_3UyzzKunNkazm-kco7JF6xcOLVzVQKKFYd2oF49pdhR4h372obS_KJZf2TWCenWfye8bZgflRgAPup3v_2luxyXsviqOP_pRFru8uY_aS3YTBHVNNTfpLlnJ2s_Z9dht4q99aytk68lYf2KTKJUeW_vm1poBQKkmrZEsGnM_AAeEKNgiVVikZo3Qr77omT_4EZ46Ql1VTt_IGIVWawNlBndcFgQMrdamqmQ0IkuokL7q2PYJq6keTqZOMwFns8WAwPz04Tr4WFFIiSc_mg_HwN7iodL5N9AMgLFXRbEvjsHFiZFlfZGnSho2qpG27hGOU_H8p-VOU50KeCWcdhXtkakqlJWmS44_yfMsTCe9IZ3Sr8pL0zBomjB8qcvrjC9axG3YnCAgFfasngl-gsC5Q2BfTdzrPvg8lQAiplKQdtgyufTdauhPBUbya4oFgoXg9EGwUb6bIxAKZuEIm3h7dlD3Y1DNXHJKpVGnorDOet2simVG_dqMandK9Vmn3N30ZdL5OkGTq_nXRF17ZP7WAh2Z-0mwPzHxstv7BbI3N9knzfIS92b_4FQAA__9AYngC query T EXPLAIN (VERBOSE) SELECT * FROM outer_c1 LEFT OUTER JOIN outer_p1 USING (pid1) WHERE pid1 >= 0 AND pid1 < 40 @@ -945,7 +945,7 @@ vectorized: true table: outer_p1@outer_p1_pkey spans: [/0 - /39] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlWFP2zwQx98_n8K6V_TBVewkLSUSUtAIW1FpWVu0SVs0heTWRipx5qTSEOp3n5qAIFmJgyzK3sWOf3e-__-su4fs1woc8L5ejU6HY3JwNpzNZ59HHTLzRt6HOfmfnE8nl0Ssc5Q_Qk5G3vmcXEyG44etlJPr2XD8kRykccQ75Msnb-qVC_J9zZiFJ4R1yOn47PlmSGzWAQqJiHAc3GIGzjfgQMEEChZQsIFCD3wKqRQhZpmQ2yP3BTCMfoPDKMRJus632z6FUEgE5x7yOF8hODAPblY4xSBCaWzjRpgH8apI83hvN5XxbSDvgMIsDZLMIQbrGj0SJBHhRORLlOBv6Pb8Q56n8Dd3ZBlky2pgl4O_8SlkebBAcMwNfeG-T3HWiZARSowqkfwt-Xhk1wFw-WGZq173JcoFXog4QWn0q8z8LkWn9G9yPfemhYtAYYU_8wOXH3ZOZLxYlp9AYbLOHeJy6prUtahrU7dfk-OpVEuj1B1FjEVXpAZndVF25rYruXn7tjBbt0Wva3D2Rn3B998XR-_UF2Z7b6zW3nDWNfhbPVpz_-YM3skcq705dntzel3DfKuXY-3fnON3Msdubw7bZU74wrCzmZYf_MVL7smP3j8w4XZccYpZKpIMW80vti0SowWWumViLUO8kiIs0pTLScEVwyLCLC__clauhknxr3gcr6B1YFsH7uvAg2aY12H2HDYrMK_DZiPMq4qxOm1pmaWgdWCFWc2wwqxmWGGWrWNWT0tuBa0DK-RuhhVyN8MKufs6ch9pya2gdWCF3M2wQu5mWCH3QEfu49fI_VpaB7Z14L4OPGiG-V9zo1Fvf_PfnwAAAP__8S6FSg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlWFrm0AYx9_vUxzPq2a94J2aNBUKltZuKWnSJSkbbDKsPkuE1HOnwkrJdx9qS6tLNeVosjchnv7uuef_u-MeIPm9Agucb9ej0-GYHJwPZ_PZl1GHzJyRczYnH8nFdHJFRJai_OlzMnIu5uRyMhw_DsWc3MyG40_kIA4D3iFfPztTp3wgPzLGDDwhrENOx-cvB31isg5QiESAY-8OE7C-AwcKOlAwgIIJFHrgUoil8DFJhMw_eSiAYfAHLEYhjOIszYddCr6QCNYDpGG6QrBg7t2ucIpegFLL5w0w9cJVUeZp3XYswztP3gOFM7HK7qLEIvkKKYm9HJnFXj6ksa7WI14UEE5EukQJ7prmkzwWf655e0-WXrKsVrM5uGuXQpJ6CwRLX9NXmnieJ4uEDFBiUJnJzcmnTzZ9ADY_LGvVw7hCucBLEUYotX6Vmd_HaJVSJzdzZ1qoBQor_JUe2PywcyLDxbL8CxQmWWoRm1Nbp7ZBbZPa_Vocz60aCq1uaGIsuiLWOKuHsrG2WanNt98rutpe6XU1zt5ps_Ddb5ajPW0WfXthhpowzroaf6_jre_e2GBPxoztjZmKxnpdTX-vM2bs3tjxnoyZ2xtjm4z5Dcb8p1-dEr9-mZpMSRh_tYsdCev9BzfohiVOMYlFlOBW9yPLm8RggWVuicikj9dS-EWZ8nFScMW9E2CSlm85K5-GUfGuOD1voFVgUwXuq8CDZpjXYfYS1iswr8N6I8yribE6bSjJaqFV4BZZzXCLrGa4RZapIqunFHcLrQK3xN0Mt8TdDLfE3VeJ-0gp7hZaBW6JuxluibsZbol7oBL38VvifiutApsqcF8FHjTD_J97ozFvd_3hbwAAAP__eoaomw== query T EXPLAIN (VERBOSE) SELECT * FROM outer_p1 RIGHT OUTER JOIN outer_gc1 USING (pid1) WHERE pid1 >= 1 AND pid1 <= 20 @@ -999,7 +999,7 @@ vectorized: true table: outer_p1@outer_p1_pkey spans: [/1 - /20] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlW9Po04Qx5__XsVmHtmf28Dyp1YSE8yJiqmt12LukjtyQZhrSSrLLTQ5Y_reL4BGy1XArGnvGbvsZ2fm-53NPEL2awkWOF9vRqfumBycuTNv9nnUIzNn5HzyyP_kfDq5JnyVo_iRMjJ1Ly49cjVxx09785CR25k7viAHaRyxHvly6UydakG-r1RVxxPCeuR0fPZ6MzwhmtoDCgmPcBzcYwbWN2BAQQMKOlAwgIIJPoVU8BCzjIviyGMJuNFvsFQKcZKu8mLbpxBygWA9Qh7nSwQLvOBuiVMMIhRKcW-EeRAvyzDP1dipiO8D8QAUZmmQZBZRWF8xSZBEhBGeL1CAv6bF-ac4L9ffPZBFkC02L7YZ-GufQpYHcwRLW9M38n25Z5VwEaHAaOMmvyCfj2w7ADY7rGLV675GMccrHicolMEm4z2kaJGRc-6Rya3nTEsfgcISf-YHNjvsnYh4vqg-gcJklVvEZtQ-orZGbZ3aBrXNmiIv1eoS1W6pY8z7PFWYWtdla2xjIzbr3hla584w-0UyH9cObPftcLS_dtC6W6J3f6xqX2H1DGQ80XbvyXB_nujdPTG6e2L2Fe0j34m-e0-O9-eJ0d0TdZsn8_CNqaYxKU_Ym1nuyBPz3xhlW7KcYpbyJMNOg0ot6sRojpV0GV-JEG8ED8sw1XJScuWEiDDLq79MrVZuUv4r38g7aBnYkIEHMvCwGWZ1WH0Naxswq8NaI8w2FVPrtC5lVgstA7eY1Qy3mNUMt5hlyJhlSsndQsvALXI3wy1yN8Mtcg9k5D6SkruFloFb5G6GW-RuhlvkHsrIffweud9Ly8CGDDyQgYfNMPtrbjTq7a__-xMAAP__uZt-IA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlW9Po0AQxt_fp9jMK3tuU5Y_tZKYYBQVU1uvxdwld-SCMEdJKsstkJwx_e4XQKPlKtSsqfem6S7725l5ntnMA2S_l2CC_e16fOxMyN6pM3fnX8Y9MrfH9olLPpOz2fSK8CJH8TNlZOacX7jkcupMHveigJGbuTM5J3tpHLIe-Xphz-x6QX4UiqLhEWE9cjw5fbkZHBFV6QGFhIc48e8wA_M7MKCgAgUNKOhAwQCPQip4gFnGRXnkoQKc8A-YCoU4SYu83PYoBFwgmA-Qx_kSwQTXv13iDP0QxaC8N8Tcj5dVmKdqrFTEd764BwonfFncJZlJyhQpSf0Smad-uTVg_YFB_CQkjPB8gQK8FS0veQz-HPP2niz8bLEezWLgrTwKWe5HCKa6oq8U8XxPkXARosBw7SavJJ-ObDoAFtuvYzXFuEIR4SWPExSD4Trj3qdokrF95pLpjWvPKnOBwhJ_5XsW2-8diTha1H-BwrTITWIxah1QS6WWRi2dWkZDkedqNYlqN9Qx4X2eDpjS1GVjbH0tNtu-XVS5djH6ZYbv1yNs9z1y8HE9om7vkyb5rJX-gDXTkjFK3b1Ro48zStveKF3SKKM_UN_zRWm7N-rw44zStzdK2WRUFLQ4FTz9qpRE9SIKmtNTZVLmsVfL2ZF5xv8xMjdkOcMs5UmGWw1EpawTwwhr6TJeiACvBQ-qMPVyWnHV0Akxy-uvTKlXTlJ9qx7TG2gZWJeBhzLwqB1mTVh5CatrMGvCaivM1hVTmrQmZVYHLQN3mNUOd5jVDneYpcuYZUjJ3UHLwB1yt8MdcrfDHXIPZeQ-kJK7g5aBO-Ruhzvkboc75B7JyH34FrnfSsvAugw8lIFH7TD7Z2606u2tPv0NAAD__9BOo-w= query T EXPLAIN (DISTSQL) SELECT * FROM child1 JOIN child2 USING(pid1) @@ -1020,7 +1020,7 @@ vectorized: true table: child2@child2_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckVFr2zAQgN_3K8Q9JZtGLIVtIBhobNlwSOwsTqFQ_OBaV0fgWK4kQ0vwfy-2H9KEpCV9k0733Xd32oN7LEHA7Ha1-BVGZPQnTDbJ_8WYJLPF7PeGfCZ_1_GS5FtdKkbmcRgNZ05ukjD6R0a1VmwMFCqjMMp26EDcAYOUQm1Njs4Z24X2fUKonkAEFHRVN74LpxRyYxHEHrz2JYKATXZf4hozhXYSAAWFPtNlX3boQtZW7zL7DBSSOqucIF8hbSmYxh-qOp8VCIK19GNmdsbMrzHzi-aDsKmMVWhRHcnSjnwv5Uz7S7QFzo2u0E74cfslPviRZF_GP60utsMRKMSNF0QyKjmVUyq_Ufmdyh8XR5pes8w1utpUDk9HO1s56OZBVeCwH2cam-PKmrzXDNe45_qAQueHVz5cwqp_6n_7NcyugPkpzN-Ep0dw0Kbtp5cAAAD__6kxEbU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycklGLEzEQx9_9FGGeWh25JkWFgBA5q-zRa89uBUH2IW7GvcB2syZZUMp-d9nk4ezROz1fQjIz_5nff8gRwo8WJKy-3KzfFRs2e1-U-_LTes7K1Xp1uWfP2Yfd9prVt7Y1nF1ti02-C_a5LDYf2ay3hs8BoXOGNvpAAeRX4FAh9N7VFILzU-iYCgrzE-QCwXb9EKdwhVA7TyCPEG1sCSTs9beWdqQN-YsFIBiK2rapbaZQvbcH7X8BwqVrh0MXJJsokNX51BwQyl5PiZdQjQhuiHcDQ9QNgeQj_h8UPwMlHoUS6VxOaOJf0MSDaHdEQ-e8IU_mhKaalH8rOePvmnxDV8525C_Eqb-WvseZ4i_mb71tbvMVELZDlExxVALVEtUrVK9RvXnQ0vIp295R6F0X6L61s50Xkx8yDeX9BDf4mm68q9OY_NwmXQoYCjFnRX4UXUql7_CnmD9BLO6LxaPi5Yl4MVbjs98BAAD__6SII3Q= query T EXPLAIN (DISTSQL) SELECT * FROM parent1 JOIN parent2 ON pid1=pid2 @@ -1043,7 +1043,7 @@ vectorized: true table: parent2@parent2_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckVFr2zAQgN_3K8Q9JZtGLGVPgoDHloFDYmdxHgrFD6p1dQ2O5EoytAT_92I7kCYkLemTfSd9992d9uCeKxAwv1svf0cxGf2N0m36fzkm6Xw5_7Ml38m_TbIitbSoPSOLJIoPASdJTOpSMTLrPhwoaKMwljt0IO6BQUahtiZH54ztUvv-QqReQAQUSl03vktnFHJjEcQefOkrBAFb-VDhBqVCOwmAgkIvy6ove-gkrG25k_YVKKS11E6Qn5C1FEzjj2WdlwWCYC39mppdUvNb1Pyq-mhstLEKLaoTW9aRn1250P8KbYELU2q0E37af4WPfhSyH-OZLYun4RcoJI0XJGQ05DSc0vDX1WGmt-xxg6422uH5UBcrB90kqAocNuNMY3NcW5P3miFMeq5PKHR-OOVDEOn-qH_o9zC7AebnMP8Qnp7AQZu1394CAAD__9KKEzk= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckUGL2zAQhe_9FWJOu63KWkpPggWXNAWHxE7jHArFB9WaugZHUiUZWoL_e7EcSBOSttmTPU96M98bHcD_6EDA4vNm9T7LycOHrNyVn1aPpFysFvMdeU0-bos1sdKhDowsiyw_FpwUObGtYuR5_HCgoI3CXO7Rg_gCDCoK1pkavTdulA7xQqZ-gkgotNr2YZQrCrVxCOIAoQ0dgoCd_NrhFqVC95QABYVBtl1seyRJrWv30v0CCnPT9XvtRYShxEoGFEorR-ktVAMF04fTLB9kgyDYQF_Gw67x8Bs8fOTh_8PDb_KcMHptnEKH6gyhGp3_unIl1Bpdg0vTanRP_DxUh9_CQ8rePD67tvk-_QKFog-CpIymnKYzmr67GWZ2z3K36K3RHi9DXe2cjElQNThtxpve1bhxpo5jprKIvigo9GE65VOR6XgUX_9PM7vDzC_N_K_m2Zk5Garh1e8AAAD__8jUIAk= # Join on "non-interleaved" column uses hash joiner. query T @@ -1065,7 +1065,7 @@ vectorized: true table: child1@child1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckUFr2zAUx-_7FOKdkqERy94ugoDGljGHzM7iHAbDB9V6TQyO5EoytAR_92K7kDokLelRT_q93_s_HcE9VMBh8W-9-h4nZPIzzrbZ39WUZIvV4seWfCa_NukfUkuL2jOyTOOEFPuyUoykCaklI3NSSAYUtFGYyAM64P-BQU6htqZA54ztSsf-QawegQcUSl03vivnFApjEfgRfOkrBA5beVfhBqVCOwuAgkIvy6pv-zKGqG15kPYJKGS11I6TL5C3FEzjT22dlzsEzlr6MTUbq4fQt5jDq-aTsNHGKrSoRrK8I997cmH839Ltl6bUaGfhePoK7_1EhNO5LXd7PxHRFCikjedEMCpCKiIqvlLx7WqY6JY1btDVRjs8D3Wxc9AlQbXDYTPONLbAtTVFrxmOac_1BYXOD7fhcIh1f9X_82uY3QCH53D4JhyN4KDN20_PAQAA__-cfREn +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckkGL2zAQhe_9FWJOSVFZy24vggWVbUq9pPY2zqFQfFCtaSJwJFWSoSX4vxfbhdQhaZu9GPRm3sz3Bh8hfG-Bw-rz0_ptXpDFu7zaVp_WS1Kt1quHLXlJ3m_Kj8RJjyYy8ljmBWn2ulWMlAVxkpF70kgGFIxVWMgDBuBfgEFNwXnbYAjWD9JxbMjVD-AJBW1cFwe5ptBYj8CPEHVsEThs5dcWNygV-rsEKCiMUrfj2N8Ywnl9kP4nUHiwbXcwgROnFaMDEFConBykV1D3FGwXT7tClDsEznr6PB4255kucR2nmb7_B5VehTqxdMZ6hR7VjKMenP9quZDsgwz7R6sN-rt0HqzFb3Eh0uW917t9XIhsCRTKLnIiGBUpFRkVr6l4czVMdsuFNxicNQHPQ12cnAxJUO1wukywnW_wydtmXDM9y9E3CgpDnKrp9MjNWBp_gT_N7AZzem5O_2rOZuakr_sXvwIAAP__RNgflQ== query T EXPLAIN (DISTSQL) SELECT * FROM child2 JOIN grandchild2 USING(pid1, cid2) @@ -1086,7 +1086,7 @@ vectorized: true table: grandchild2@grandchild2_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElV1r2zwUx--fTyHOVftUQZZs58Uw8Ni6kdImXdPBYPjCjbTEkFqe7MBKyXcftlvSpJkUTWtyY_DLTzr6_SWfRyh_LiCC82_Xl--HI3TycTi5nXy5PEWT88vzD7fof_TpZnyFpvNswRm6GA9HaKbSnD89-DoZjj6jkyLjFKNpxtkpYMglF6P0XpQQfQcKGBhg8AFDABhCSDAUSk5FWUpVf_LYAEP-CyIPQ5YXy6p-nGCYSiUgeoQqqxYCIrhN7xbiRqRcKOIBBi6qNFs007T1xIXK7lP1ABgmRZqXEepAssIgl9XTqOvB7h7QPC3nm8PEFMcMklWCoazSmYCIrvDfFUg3R35hbUeVhJGAEUYYSnOOKJLVXCjX0tkfS18Ptcyl4kIJvjFYUpPPn-z6AGJ6hmN21s63reFKqJm4kFkuFOlucgvxozp5gk_fqWw2X98ChvGyilCzEhz7OA5w3MNxH8eDLRfrRfoOi9xR-kh2ZEEo3daxc-5gY266_94ILPYGoR4JvfpKvQ6hAQmD-kqDt9sq9DhbZXDQrcL2j4vZxPV8kjukS4Iu6ZLu2wXFjhNU76BB-fsHFVqdq_VR6hDaJ2G_vtL-28XlHycu6h00r2D_vHybvJ6PU-flH7EJi7Vhlf82reA4afWP1jB3FHYjykLmpdirHXr10gSfidZYKZdqKq6VnDbTtLfjhmtaDBdl1b5l7c0wb1_VBe4P91xgSl3o0AUe6GFqYYzZwT0XeMuYJR26wAM9zLZh7yXs63X7Wphu-va26cAlLD1sCEsPm8LS04aw9LAhrNAlrK6Lbj1s0K2HTbr1tEG3Hjbo7rno7rvo1sMG3XrYpFtPG3TrYYPugYtuatMsX_9CbbqlLW38-dv0S1va4Jy-ah5a6cnqv98BAAD__2JnI1g= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEld9vmzoUx9_vX2Gdp_bWkbGB_EC6ElddN6Vqk67ppEkTDxQ8gkQxM0RaVeV_n4BWKWlmwxjNiyWDPz7nfL-2zxPkPxJw4OLrzdX_8wU6-TBf3a0-X52i1cXVxfkd-hd9vF1eo2AdJyFDl8v5AkXST8PnD19W88UndJLFIcUoiEN2ChhSEfKF_8BzcL4BBQwMMJiAwQIMNngYMikCnudClkueKmAe_gTHwBCn2aYoP3sYAiE5OE9QxEXCwYE7_z7ht9wPuSQGYAh54cdJFabOx81k_ODLR8BwLpLNQ5o7aJdbNZoYBX6Z0Crzy98j8LYYxKZ4DruLdv-I1n6-bsZxKXYZeFsPQ174EQeHbvGfVUCbO7-StV0ZUT2JmuUQRixGGGHIT0NEkSjWXPatkf22xt1Wm1TIkEseNjbzSvJlyaEF4NIz7LKzOt6-XtdcRvxSxCmXZNzkEv69OHmGT_-TcbTeTQHDclM4qKoEuyZ2LexOsDvF7mxPi12RZo8iD6S-ECOREUr35TgY22rEpu0PkTXEISLUILZRjtQYEWoR2ypHag13puhxztTsXc8Ua-8rG8TXl7dhRMbEGpMxGQ_nKDuOo5N3ddRs76g9zE3dXc4RoVNiT8uRTofz1TyOr9R4V2Ot9saagxj7ckFHrx_jylVWu5r_XVut49g6PVpTP5DYLc8zkea8Vcs2ytJ4GPFasVxsZMBvpAiqMPV0WXFVdwt5XtR_WT2Zp_WvMsH28KQPTGkf2u4Dz9Qw7aAY6wZP-sB7inWk7T7wTA2zfdh4DZtquU0lTJt6G_u01ccsNawxSw3rzFLTGrPUsMYsu49Z4z5yq2GN3GpYJ7ea1sithjVyT_rIPe0jtxrWyK2GdXKraY3calgj96yP3LRLs3z7hHbpll1p7ePfpV92pTWa0zfNQym6t_3nVwAAAP__Q9lqFA== # Subset join on "interleaved" columns uses hash joiner. query T @@ -1108,7 +1108,7 @@ vectorized: true table: grandchild2@grandchild2_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElV9r2zAUxd_3KcR9aoeCLNnOH8PAY-u2lC7pmg4Gww9upCWG1PIkB1ZKvvuw3ZImzaR4Wr0Xg2z_ro7OkXTvQf9cQQRn3y4v3o4n6OT9eHY9-3JximZnF2fvrtFr9OFq-hnNl9mKM3Q-HU_QQqU5f3jxdTaefEQnRcYpRvOM-6eAIZdcTNJboSH6DhQwMMDgA4YAMISQYCiUnAutpap-ua-BMf8FkYchy4t1Wb1OMMylEhDdQ5mVKwERXKc3K3ElUi4U8QADF2WareppGj1xobLbVN0BhlmR5jpCPUg2GOS6fKi6LXZzh5apXu6WiSmOfUg2CQZdpgsBEd3gvxNIdys_ce2ASsJIwAgjDKU5RxTJcimUq3T2R-nbUutcKi6U4DvFkoq0_XJg_Z9SvTyXWS4U6e-qW4kf5Ukt8fSNyhbLxwFgmK7LCNUjHDMcBzju43iI49He-rcL8x0WdkD1RPZkQSjdt-Dg3MHO3PT4_RC02A-EeiT0qif1eoQGJAyqJw1ebnvQbrfHqLPtwY6PiLWJ6PHE9kifBH3SJ_2XC4d1G86gs3D848MJW52f7ZHpETok4bB60uHLReR3GxH1OssoOD4jv01Gj8em9_S2qwNiTUD63yYUdJvQ8L80wAOaroQuZK7FUe3Nq1Yl-EI0Lmm5VnNxqeS8nqYZTmuubhlc6LL5yprBOG8-VQKPhwcuMKUudOgCj8wwbeEYawcPXOA9x1rSoQs8MsNsH_aewr7Zbt8I012_vX06cAnLDFvCMsO2sMy0JSwzbAkrdAmr72K3GbbYbYZtdptpi91m2GL3wMXuoYvdZthitxm22W2mLXabYYvdIxe7aZtm-fwKbdMt29LWy79Nv2xLWzynz5qH0fRk8-p3AAAA__8tKxoO +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEld9umzAUxu_3FNa5aidHxgbyB2kSU9dtqbqkazpp0sQFBS9BopgZIq2q8u4T0C4lzWwYg91YMubnc8732T4PkP2IwYHzr1eXb-cLdPJuvrpZfb48Ravzy_OzG_Qavb9efkLBJopDhi6W8wVaSz8JHz98Wc0XH9BJGoUUoyAKzVPAkIiQL_w7noHzDShgYIDBBAwWYLDBw5BKEfAsE7L45aEE5uFPcAwMUZJu8-KzhyEQkoPzAHmUxxwcuPFvY37N_ZBLYgCGkOd-FJdhqnzcVEZ3vrwHDGci3t4lmYN-58aqDDEK_CKhVeoXyyPwdhjENn8Mu492e482frapx3Epdk3wdh6GLPfXHBy6w39XAa3v_EzWZmWsq8m6Xg5hxGKEEYb8JEQUiXzDZdca2R9r3G-1TYQMueRhbTOvIHW_HBHqo59tLkSUcEnG9exi_j0_KVM8fSOj9eZpAhiW29xB5Qy7DLsWdsfYnWJ3dlD_vjCzQ2FHsl6IkUgJpYcSHI1t1WLT5gfH6uPgEGoQ2yhGaowItYhtFSO1-jtHdNhzNBvsHLHmXrJevHx6A0ZkTKwxGZNxfy6yYV2cDOai2dxFu58bub-EI0KnxJ4WI53256U5rJfUGMxMq7mZZi9mPl3E0fOHtnSSVU5m_9ZKa1grp_-lSR_J6ZpnqUgy3qgFG0VVPFzzSqVMbGXAr6QIyjDVdFlyZbcKeZZXq6yazJNqqUiwOTzpAlPahba7wDM1TFsoxtrBky7wgWItabsLPFPD7BA2nsOmWm5TCdO63sYhbXUxSw1rzFLDOrPUtMYsNawxy-5i1riL3GpYI7ca1smtpjVyq2GN3JMuck-7yK2GNXKrYZ3calojtxrWyD3rIjdt0yxfPqFtumVbWvv4t-mXbWmN5vRF81CK7u1e_QoAAP__OX5gyg== # Multi-table staggered join uses merge joiner on the bottom join # and a lookup join on the higher join. @@ -1141,7 +1141,7 @@ vectorized: true table: child1@child1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFv0zAQxt_5K6x7atmhNWlhIhKSgRWUqWtGUiQQyoOJj8yQ2cF2JFDV_x0lqdSmaoe6t9ydf_d9-ew1uN8VRDD_crd4Gy_Z6DrOVtmnxZhl88X8_Yo9Zx_S5JaVVmhZ3KtKBuwmiZds-_05i5cf2ahWMkBWKBmM-3EtLGk_mI9Zkl7PU_buK2tLQNBG0lI8kIPoGwSQI9TWFOScsW1r3R2I5R-IJghK141v2zlCYSxBtAavfEUQwUp8ryglIcleTgBBkheq6tbuGee1VQ_C_gWErBbaRewF5BsE0_jdaudFSRAFG3yafDCUP185PKm8E2y0sZIsyYFY3pL_O3LE_i3Zkm6M0mQvw6H9in74EQ8ukIcX4zdWlfe7EhCSxkeMB8hD5FPkM-Qvkb9CfnXy76bn5Np62sY6HfraPq-9XBfG_Gpq9tMozYxuXR31d4X89Ulzs3PMpeRqox0dXsHRzZM2d5Il9ffoTGMLurOm6GT6Mum4riHJ-X4a9kWsu1H3Kvfh4Aw4PITDR-HpAJ4cwtNH4dkBnG-e_QsAAP__pZ1rJA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycklFv0z4QwN__n8K6p_a_Q2vSwkQkJMNWUKauHUmRQCgPJj4yQ2oH25FAVb87SlLUpmrHylNyvvvZvzt7De5HCRFMP97PXsdzNriJ02X6fjZk6XQ2vV6y_9nbZHHHCiu0zB9UKQN2u4jnbPv_IY3n79igUjJAlisZDLt0JSxp38sP2SK5mSbszSfWhICgjaS5WJGD6DMEkCFU1uTknLHN0rotiOVPiEYISle1b5YzhNxYgmgNXvmSIIKl-FJSQkKSvRwBgiQvVNluuyfOK6tWwv4ChGtT1ivtIrYTR1b8-YhGLq1EU_AMsg2Cqf3udOdFQRAFG_w3w6Bv-DS5J0qFJ6V2LrU2VpIl2fPIGvJvJUc6uyNb0K1Rmuxl2O-spK9-wIML5OHF8JVVxcMuBIRF7SPGA-Qh8jHyCfLnyF8gvzrZ3fickTdO24mP-17bx7k38pkx3-uKfTNKM6Mbq6N-V8hfnpSbnCOXkKuMdnR4BUd3HjVzJ1lQd4_O1Dane2vy9pguXLRcuyDJ-S4bdkGs21T7YPfh4Aw4PITDR-FxDx4dwuNH4ckBnG3--x0AAP__7dt9rQ== # Multi-table join with parent1 and child1 at the bottom uses merge # joiner but induces a hash joiner on the higher join. @@ -1173,7 +1173,7 @@ vectorized: true table: grandchild1@grandchild1_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckk2P0zAQhu_8CmtOLTtom6R8RUIygoKy6rZLUyQklIOJh6whawfbkUBV_zuKs6JN2RaV43w8874z9gbcjxpSmH26mb_OFmz0NsvX-Yf5mOWz-ezNmj1m71bLa9YIS9pH7GqZLVh5q2oZsY95tnjPRo2S0bgvVFZo-XcVWdn1AII2khbijhyknyGCAqGxpiTnjO1Sm9CQyZ-QThCUblrfpQuE0liCdANe-ZoghbX4UtOKhCR7OQEESV6oOozt9Xlj1Z2wvwAhb4R2KXsCxRbBtH431XlREaTRFv9PORoq761_jnx8VH6n2mpjJVmSA8WiI__V8sAO12QrujJKk72MhzvU9NWPeHSBPL4Yv7Kqut2FgLBsfcp4hDxGniCfIn-K_Bny50e3S845bufp_rbJ0Nf9B9y769yY723DvhmlmdGdqz_-XgR_L4PFk-am55hbkWuMdnT4BA9OnnR3J1lR_47OtLakG2vKINOHy8CFhCTn-2rcB5kOpfA19-HoDDg-hOOTcDKAJ4dwchKeHsDF9tHvAAAA__9MQGdI +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckl1v0zAUhu_5Fda5atlBq9PyFQnJaBSUqWtHUyQklAsTH7JAagfbkUBV_zuKM2hTto5yZZ2P1-c5r70B972CGKYfr2evkzkbvEnSVfp-NmTpdDa9WLHH7O1yccVqaUl7zi4XyZzlN2WlOPuQJvN3bFCXig-7QmGlVn9XkeVtDyBoo2gu1-Qg_gQcMoTampycM7ZNbUJDon5APEIodd34Np0h5MYSxBvwpa8IYljJzxUtSSqy5yNAUORlWYVru_mituVa2p-AcGGqZq1dzHYsyHLJASGtZVt4AtkWwTR-N9B5WRDEfIv_B8X7UHvOPERW_D7-jTC6l3AH1mhjFVlSPaisVT7UcseaV2QLujSlJnse9des6IsfCH6GIjobvrJlcbMLAWHR-JgJjiJCMUYxQfEUxTMUz-_dbnyK_y3Trf3jPtft992zfmbMt6ZmX02pmdEt1R--F4HvZUA8Cjc5BW5Jrjba0eET3HnzqPWdVEHdOzrT2JyurcnDmC5cBF1IKHK-q0ZdkOhQCr93X8xPEEeH4uioeNwTjw7F46PiyYE42z76FQAA__-hiXnR statement ok DROP TABLE grandchild2, grandchild1, child1, child2, parent1, parent2 diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_misc b/pkg/sql/opt/exec/execbuilder/testdata/distsql_misc index ac032fb9bbc6..0ff11ad9fa77 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_misc +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_misc @@ -91,7 +91,7 @@ vectorized: false · • create statistics · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lEFr2zAUx-_7FOKdWlCwZDtt6lNDl4GhS7rYh8HIQY0eWZhjeZIM20K--7BN6BIaWeDsaCn__P78nnh7MD8LSGD29eV5ms7Jzcc0y7Mvz7fkaTmb5jOS5dM8zfL0KSOGk8WcCPJpufhMpLACKJRK4lzs0EDyDThQCIFCBBRioDCGFYVKqzUao3Tzk30bSOUvSBiFbVnVtjleUVgrjZDswW5tgZBALl4LXKKQqAMGFCRasS1aTIN-rPR2J_RvoJBVojQJGQWciFISTpT9jhooLGqbkEcOqwMFVds3lrFig5DwA_Xvk4ldVaAOxqdduuNs-wcTwhljTdXMCjc4vAh-49Wl0hI1yhPe6nCx2nSz0bgRVumAM_-S5CZkjLzW6x9oze3FytFJZe4_O-4zu4CPgnDQ9HoaHad3d_Xphf4qQi8V4SiIBqnoaXRUcX91FZG_ishLRTQK4kEqehodVUyuriL2VxF7qYhHwXiQip5GRxUP_3W9vQNeoqlUafBszb3_z6xZfyg32O1Ko2q9xhet1i2m-1y0ufZAorHdLe8-0rK7agr-G-bOcHgS5ufh0E3uQUfOdOwOx0N6j53hOzf5bgj53hmeuMmTIeQH96xYzzNxP7Jz9urw4W8AAAD__5sIBUI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF2L2kAUhu_7K4ZztQsjmUmi6-ZqxVoIbHVrclEoXsw6ByuNmXRmAm3F_16SIFtlncSP3pmJb56X5wxnC-ZnBhFMvr48j-IpufsYJ2ny5fmejOeTUTohSTpK4ySNxwkxnMymRJBP89lnIoUVQCFXEqdigwaib8CBgg8UAqAQAoU-LCgUWi3RGKWrv2zrQCx_QcQorPOitNXxgsJSaYRoC3ZtM4QIUvGa4RyFRO0xoCDRinVWYyr0U6HXG6F_A4WxyspNbiJS9UkKUf3seZyIXBJOlP2OGhY7Cqq0bzhjxQoh4jvavVIiNkWG2usf1mmOk_UfjAhnjFVtEytsRJ74SbB_EvzGK3OlJWqUB7zF7mS10WqlcSWs0h5n3UuSO58x8louf6A19ycrBweVeffx8bPH5_Ge518wwJZS-wEObj5Av7sN_3wbfs8LLrDRUmpv4-HmNoLuNoLzbQQ9L7zARkupvY3hzW2E3W2E59sIe17_AhstpfY2Hv_rqnsHPEdTqNzg0cp7_8usWoUoV9jsTaNKvcQXrZY1pnmc1bn6QKKxzVvePMR586oq-G-YO8P-QZgfh303uQUdONOhOxxe07vvDA_c5ME15AdneOgmD68hP7pnxVquifuSHbMXuw9_AwAA__9S0Q0_ statement ok INSERT INTO data SELECT a, b, c::FLOAT, 1 @@ -110,7 +110,7 @@ network usage: · • create statistics · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkVdFO2zAUfd9XWPcJJJfETlpKnmAVkyoEnZqKl6kPJrnqIlo7sx0BQ_2s_cC-bEq8iJW1SZBaCYlH3-vbc-45p_EzmB9LiGA0vbyYXZJ4djEbx7PxKCaGkckNEeTLdHJNUmEFUJAqxRuxQgPRN2BAgQOFACiEQKEPcwq5Vgkao3R55bkaGKePEPkUMpkXtizPKSRKI0TPYDO7RIhgJu6WOEWRovZ8oJCiFdmygimhz3OdrYR-AgpxLqSJSM9jRMiUMKLsd9RAYVLYiJyXpK5uic1WGBH_9y_jzomSFqXNlPyvpdWDIRpFGhHm-65292SxLg59n3wGCte3oxExFnOSqEJacoSP1sukPY6IX3F2FxDvd12okFRh85JpiTVfU3Dnv7IYKxYIEVvT7tLFYpUvUXv9TdlcOc5-YoVVbRZb4TTaBcx3Ar_gFVLpFDWmG3jz9U5qF4uFxoWwSnvM706SHHHfJ3dFco_WHO-kHGxQZt1jxrrEzGM9j-8_aHxb0NjJgFxlB4ga7xy1FvnqqA32HjXe3TfeyTfe84KP41uLfLVvp3v3LejuW9DJt6DnhR_Htxb5at-Ge_ct7O5b2Mm3sOf19-9bsM03fhIcxregs28t8tW-nR30Sd4CPEWTK2nw1dO8_Zf98snGdIHufTeq0Al-1SqpYNxxUs1VhRSNdV3mDmPpWiXBf4dZ4zDfGGavh3kzcgt00DgdNg-Hb-FdqVgJChLtg9L3LrcGZfUFKGNfN1x4Xeflo1N3V2iMWLxccCHcpNZvpDZo3mvwfvc6baQ2bN5r-H73OmtOsd_yB2r--71ps2DnZvwkbNmsX242X3_6EwAA__91aYat +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVtFO2zAUfd9XWPcJJJfETlpKnmAVkyoETE3Fy9QHk1x1Ea2d2Y6AoX7WfmBfNiVexMraJJVaCfFW-_r2nHvOSZwXMD8WEMFocnkxvSTx9GI6jqfjUUwMI7c3RJAvk9trkgorgIJUKd6IJRqIvgEDChwoBEAhBAp9mFHItUrQGKXLIy9Vwzh9gsinkMm8sOX2jEKiNEL0AjazC4QIpuJ-gRMUKWrPBwopWpEtKpgS-jzX2VLoZ6AwUotiKU1ESj5xLsqfPY8RIVPCiLLfUQOFqztisyVGxP_9y7h1oqRFaTMl_ytp9WiIRpFGhPm-27t_tlhvDn2ffAYK13ejETEWc5KoQlpyhE_Wy6Q9johf0XYHEB-2HaiQVGHzwjqs2YqCW_9VxlgxR4jYinZXLxbLfIHa668r57bj7CdWWNVksRU2IudsKzDfCvyKV0ilU9SYruHNVlupXcznGufCKu0xvztJcsR9n9wXyQNac7yVcrBGmXVPGts5aR7reXxfWeObssZOBuQqO0DaeOe0tShYp22w97Tx7tbx3a3jPS_46Na1KFhbd7p364Lu1gW7Wxf0vPCjW9eiYG3dcO_Whd2tC3e3Lux5_X1ZF2yyjp8Eh7Eu6Gxdi4K1dWcHvZ43AE_Q5EoafHNNb_5nv7y-MZ2ju-uNKnSCX7VKKhi3vK36qo0UjXVV5hZj6UolwX-bWWMzX2tmb5t5M3ILdNDYHTY3h7vwrlSsBAWJ9lHpB5dbg7J6CZRfGnXBhddVXt87dXWJxoj56wEXwnVq_UZqg-a5Bu93rtNGasPmuYbvd66z5hT7LQ9Q8-O302TB1sn4SdgyWb-cbLb69CcAAP__DKOOqg== query T retry EXPLAIN (DISTSQL, TYPES) SELECT * FROM data @@ -124,4 +124,4 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk1Gr0zAUx9_9FOH_pJKSpe186JOiEwZzd657UKQPsTleC11SkwyUse8uy4Rr5U5y15dCzumv_18PJ0f4Hz0qLD5tVm-Wa_b83bLe1R9XnO0-bxb1C1YvVou3O_aSvd_efWBaBQUOYzWt1Z48qi-Q4MjBUYCjBMccDcfgbEveW3d-5RiBpf6JasbRmeEQzuWGo7WOUB0RutATKuzU1562pDQ5MQOHpqC6Psaco18Prtsr9wsc9aCMr1gmJFNGM8ls-E4OzYnDHsJDgg_qnlDJE79i8RB-MNZpcqTHwZ0J4H-e33qrQmy33V71aE6P_MTaZnYQ89FXrnnlIy-ZPh2ZMh0hM5HfMJ883SNP8sgzUdzgUaR7FEkeRSbKGzzKdI8yyaPMxHzi3j7isSU_WOMpafNm59UlfU-XS-DtwbW0cbaNMZfjXeRiQZMPl668HJYmtqLg37D8L_xqBM_-hfMpycUUuJwCz58EN6dnvwMAAP__eCPGvQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykk0GL00AUx-9-iuF_UnkhnST1kJOyVijUbm16UCSH2cxzDaSZODMBpfS7S6bCWtmVbHIJzHv55f_LY94J7keDHKvPu8279Va8fL8uDsWnDYnDl92qeCWK1WZ1cxCvxYf97UehlVcgtEbzVh3ZIf8KCUICQgpCBsISJaGzpmLnjB1eOQVgrX8iXxDqtuv9UC4JlbGM_ARf-4aR46DuGt6z0mzjBQiavaqbEDNEv-1sfVT2Fwg3pumPrcuFInFHoiKhQSg6NdSiWArVaiGF8d_ZojwTTO8fcp1X94xcnukJtwelvjVWs2V9rVO3HvTn-a0xyod2VR9Vg_L8yK9tTWS6eHn1lae8kisvOX5mcvrMYhnFyYSpJePtkhl2SRSnE-zS8XbpDLs0irMJdtl4u2yGXRbFy5n78Ijdnl1nWsejbvRiWAnW93xZLmd6W_HOmirEXI63gQsFzc5fuvJyWLehFQT_huV_4TdX8OJfOJmTnM6Bsznw8llweX7xOwAA__-ybuU6 diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_numtables b/pkg/sql/opt/exec/execbuilder/testdata/distsql_numtables index a980504049ba..2889d2ac0044 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_numtables +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_numtables @@ -61,7 +61,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: [ - /10] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkFFL60AQhd_vrxjm6d7bkWYjBVkQojZioLY1CahoHmIylEC6G3c3YCn579IEsRUq-njO7DnnY7doX2uUGD4sZxfRHP5OoyRN7mb_IAln4VUKEwIfRrAh-A_X8eIWVLt22joD9zdhHMIGnlvPOy3OQXiwiKdhDJePYJ1BQqVLnudrtiifUGBG2BhdsLXa7Kxt_yAq31B6hJVqWrezM8JCG0a5RVe5mlFimr_UHHNeshl7SFiyy6u6r_3ACRpTrXOzQcKkyZWVcDIWArOOULfus9q6fMUoRUc_n0-0cWzG4nA58EdIGLMq2UiYSCmjeXpGEIiRvycIAv8ohv8bjJhto5XlA4xjzV6XEXK54uGnrW5NwUuji35mkIs-1xslWzdcxSAiNZx2gPth8W3Y_xLOuj_vAQAA__8hFMCN +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkFFL40AQx9_vUwzzdHedo9kcBVkQom3EQG1rElDRPMRkKIEkG3c3YCn57pIEsRUq-vj_z_5mfuwezUuJEv37zfIiWMHvRRDF0e3yD0T-0p_HMCNwYQI7gr9wFa5voG4rq4zVcHfthz7s4Kl1nP_ZOQgH1uHCD-HyAYzVSFirnFdpxQblIwpMCButMjZG6b7aDw-C_BWlQ1jUTWv7OiHMlGaUe7SFLRklxulzySGnOeupg4Q527Qoh7XvOl6jiyrVOyScq7KtaiN76VEkatI-_5sKgUlHqFr7cczYdMsoRUffF4qUtqyn4tjFcydIGHKds5Ywk1IGq_iMwBMT9yAQeO5JDfcnGiGbRtWGjzRObXa6hJDzLY9_b1SrM95olQ1nxrgeuKHI2dhxKsYQ1OOoFzyExZew-wlOul9vAQAA___zrMZW # Query which requires a full table scan. query T @@ -83,7 +83,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lWGL2jAYx9_vU4QHBne7SJu09TQwcNv1mOD0VoVtDF90NhyCNl0SYSJ-99FWvVM0yXS-s63_5_nlxx-yAvV7Bgzi70-9D90-unnoDkfDr71bNIx78acRijCi6A4tMXqHHpPBF5Qv5looLdG3z3ESo5sleouI7_u36D3y0SB5iBP08QdSWgKGXGS8n865AvYTCGCggCEADCFgiGCMoZBiwpUSsvzLqgp0sz_AfAzTvFjo8vUYw0RIDmwFeqpnHBiM0l8znvA049LzAUPGdTqdVWu2gJ1CTuepXAKGYZHmiqGGR33fh_Eag1jol-FKp88cGFljd4DH6UxzyaUX7W-v3zN00yEbMYyxbn_Uqvxsfp9EoP-CMBRSc-mRg_N36N3J-cHJ-S9jhcy45NmxoUcg-qIhCo8cWEh4npUWos2BMeqQO_rqAaMOPUkZ7lES9yYQ1yZURWh4oXsdLBS7OjSvVwcLwrYO5Nw6UHfR1Fl0WIluuou2UOxE319PtAVhK5qeKzpwFx04i25Wolvuoi0UO9Gt64m2IGxFB-eKDt1Fh86iS8UNR8cWgJ3j9vUcWxC2jsP_cYkcmZ9wVYhc8b3xpyb75Q3Ds2de30hKLOSEP0kxqdbUj4MqV73IuNL1V1I_dPP6Uwn4OkyMYWoOU2M42AuTw3Bgxm6aV4fGdGQOR8awZXPzkkPfG8Mt8-aWMdw2h9uXYBNLx2wlM7eMWGpGLuoZsRQttCw3N41YqkbMXTtkH6_f_A0AAP__W-z62Q== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0leGL2j4Yx9___orwwA_udpE2aetpYOB212OC01sVtjF80dlwCLXpkggT8X8fbdU7RZPOznem9fs8n374QtagfqXAIPz2PPjQH6Kbx_54Mv4yuEXjcBA-TFCAEUV3aIXRO_QUjT6jbLnQQmmJvn4KoxDdrND_iLiue4veIxeNoscwQh-_I6UlYMhEwofxgitgP4AABgoYPMDgA4YAphhyKWZcKSGLv6zLQD_5DczFMM_ypS4eTzHMhOTA1qDnOuXAYBL_THnE44RLxwUMCdfxPC3X7AB7uZwvYrkCDA8iXS4yxYrPqMDGeVycWw51XRemGwxiqV_XKR2_cGBkg-sjPc1TzSWXTnDIUz1n6KZHtqoYY_3hpFMa2_4-i0D_BmEspObSIUdGevTu7Hzv7PzXsUImXPLk1NATEEPRErlDjixEPEsKC8H2gzHqkTv65oBRj56l9A8oSf1ukMu7UVaj5fj1C2Lh2hekfb2CWBB2BSGXFoTWV08bqPdL9e366i1ce_X311NvQdipp5eq9-qr9xqob5fqO_XVW7j26jvXU29B2Kn3LlXv11fvN1BfSG_VtG5B2lvvXs-6BWFn3f8Xl9GJ-RFXucgUPxh_brJb3FQ8eeHVzabEUs74sxSzck11HJW58kHCla7ekurQz6pXBeDbMDGGqTlMjWHvIEyOw54Zu21e7RvTgTkcGMOWze0mH31vDHfMmzvGcNcc7jbBJpaO2Upmbhmx1Iw06hmxFM23LDc3jViqRsxdO2afbv77EwAA__9F9BfV # Query with a restricted span + filter. query T @@ -100,7 +100,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: [ - /9] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUE9L-0AQvf8-xTBQ2sL-aFJve2q1qQZjUpOAiuawJkMJpNm4uwFLyXeXTRBboaLH9968P8wB9VuFHL3HTbD0Q5is_CRN7oMpJF7gXaWgjYJ1HN1B3e6MtOjhxos9mOzhpXWcixxcZwrLcAUTKwb-rQfjEY3GU4jilRfD5RPskWEtCwrFjjTyZ3QxY9gomZPWUlnq0B_4xTtyh2FZN62xdMYwl4qQH9CUpiLkmIrXimISBamZgwwLMqKs-tjPiYtGlTuhbG3SiFpz-D9zHcw6hrI1X9HaiC0hdzv2-_p1WRlSpGbuaffAc1jMj37AOU_S2A-vkWHUGqueXTH_y4qYdCNrTScbziU7XcaQii0Nj9ayVTltlMz7mgFGva8nCtJmUN0B-PUg2YHHZvdH8_ybOev-fQQAAP__0Z3FQw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkEFLw0AQhe_-imGgtIWVJvW2p9Y21WBMahJQ0RxiMpRAko27G7CU_HfZBLEVKnp87-2b-XYOqN5L5Og8bb2l68Nk7UZx9OBNIXI8ZxWD0hI2YXAPdVtpYdTjrRM6MNnDa2tZVxnY1hSW_homJvTcOwfGIxqNpxCEayeE62fYI8Na5OSnFSnkL2hjwrCRIiOlhDTWoX_g5h_ILYZF3bTa2AnDTEhCfkBd6JKQY5y-lRRSmpOcWcgwJ50WZT_2C3HRyKJKpVm7EmVb1YrDnpmvIMOoSY2-nNkWJh1D0ervZUqnO0Jud-zvQJui1CRJzuxTmsHnsJgfXYVzHsWh698gw6DVJj1LMf8PRUiqEbWiE4Zzk60uYUj5jobTK9HKjLZSZP2aQQZ9rzdyUnpI7UG49RAZwOOy_Wt5_qOcdBefAQAA___fqcsM # Query which requires a full table scan. query T @@ -117,7 +117,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlGGL2jAYx9_vU4QH5CqLmNTqeYGBt9nbyly9VWEbwxedfTgK2nRJhB3idx9tN--Usw34wntnEv_9__p7Sragf69AgP_9fnIbhMQZB7P57OukTWb-xP8wJ9oochdNv5BsszayWH375Ec-cZxH0iKcMdYm7whrk9twTJzifBJ89slVK21dtck0GvsRef-DPAKFTCYYxmvUIH4CBwouUOgBBQ8o9GFBIVdyiVpLVfxlWwaC5A8IRiHN8o0pthcUllIhiC2Y1KwQBMzjXyuMME5QdRlQSNDE6aqs-U89ylW6jlWBMcvjTAvS6bqMMVjsKMiNeXq4NvEDguA7ag9wl64MKlTd_mF7tS-I44z4P1tCiCCcD0tp-9-lu5H7TJ0QYjaPgvBj-yShe5LwCUyqBBUmh1Qj_hYWuxdeI5QdmXf5kcLpxggyck9y9A44uP2ouO2oykl1up79vBoo9vMaXGxerr0n19qTV3oa2HtqoNh7ur6Yp569p561p0HpaWjvqYFi72l4MU-evSfP2lNhqGOpqAFgr-jmVVyRLxBGqHOZaTzgO_VkVtyfmDxgdd9quVFLvFdyWdZUy2mZKzcS1KY65dUiyKqjAvB5mNeG3YMwPw679c0N1b3atFcf9s7h7teGB_XNg3Oar2vDw_rm4TnNN_WzYg2fSf1Hdty92L35GwAA__-sYBlG +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlNGL2jAcx9_3V4QfyFUWManV8wIDb2dvK3P1VoVtDB86G45CbbokhYn4v4-2m3fKmZb1wXszid9-P_38SnagfiXAwP32MLv1fGRNvcVy8WXWRQt35t4tkdIS3QfzzyjNN1oUq68f3cBFlrVFHUQJIV30DpEuuvWnyCrOZ94nF1114s5VF82DqRug99_RFjCkIuJ-uOEK2A-ggMEGDAPA4ACGIawwZFKsuVJCFn_ZlQEv-g2MYIjTLNfF9grDWkgObAc61gkHBsvwZ8IDHkZc9glgiLgO46Ss-Uc9yWS8CWWBcSeSfJMqhra4eDvAsMjCYt3r24QQWO0xiFw_1SkdPnJgdI-bI93HieaSy_7wmKfaZ8iyJvSvP8aY5y_HpcbD79LmxH4mkzG2WAae_6F7ltA-S_gEJmTEJY-OqSb0Laz2L7yGL3oi69MTqfNcMzSxz3IMjjho8-HR_x9eObte32k-wRquwwRHF5ug3dyc3cKcU5obNTdXw3Uwd30xc4Pm5gYtzI1Kc-Pm5mq4DubGFzPnNDfntDBXOOs1lFaDdJB28yqu2hcIA64ykSp-xHfuyaS4h3n0yKt7W4lcrvmDFOuyplrOy1y5EXGlq1NaLby0OioAn4epMWwfhelp2DY311QPjGnHHHbacA-N4ZG5edSm-doYHpubx22ab8yzIjWfifkjO-1e7d_8CQAA__9coTYz # # -- Join tests -- @@ -143,7 +143,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ld-K2kAUh-_7FMO52oVZzCRR18BCSmupi9WtelEouciaqQY0k52ZgCK-e0my4KrpTNJRL_Pnm3PO94M5OxBvK_Cg_-tl-HkwQndfB9PZ9OfwHk37w_6XGdpgJCRH3ybjHyjJ1pKJtyzkFD2PB6P3F5Kj8Qht0RPalB8jwJCwiI7CNRXg_QYCGGzA4AAGFzC0IcCQcjanQjCe_7IrgEG0Ac_CECdpJvPXAYY54xS8HchYrih4MAtfV3RCw4jylgUYIirDeFWU-dCfn_J4HfItYJimYSI89ADBHgPL5PvRhxNft2gZiuXxWb4NwT7AIGS4oOCRPf6_FklVi5JX9NeyLctq2CQ5atL-Z5OHc7KE8YiWGR1OCnJS90vFpN9DsXxmcUJ5q3Pc2or-kXe-ff_E48VS3vnkHjCMM-khn2DfPZnzMINjMENFgyP2wNIWIafTVtZ2j2qT-iHbdUMuMn5ouZdNmtw26e41krbr23Zq23YL253L2rZva_vxGrad-rbd2rY7he3Hy9p2bmu7dw3bbn3b7dq2c89Nd5pKtHtb0cS69r6oqD-hImWJoLW2gZVPQKMFLY0IlvE5feFsXpQpH8cFV9zAERWy_GqXD4Ok_JQ3WB9um8BdE7hnAhOipkkDY3YzuG0Cd03gngl8YuyMtk9p6yPtqHU7Spgc-7ZOadckLDWsCUsNa8JSw5qw1LAurLZJWB0T3WpYo1sNa3SrYY1uNazT3TXR_WiiWw1rdKthjW41rNGthnW6eya6SZNleX6HNtmWTWnd5d9kXzaldc7J2fZQSg_2n_4GAAD__8eN5D4= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ld9q2zAUh-_3FOJctaASy3aSxlDw6DqW0iVd04vB8IUba4nBsVxJhoSQdx-2C_nnSXaV5NKWP59zvh_orEG8J-DBw-_np6_DEbr6Npy8Tn49XaPJw9PD_StaYiQkR99fxj9Rmi8kE-95yCl6HA9HHy8kR-MRWqE7tKwOI8CQsoiOwgUV4P0BAhhswOAABhcwdCHAkHE2pUIwXnyyLoFhtATPwhCnWS6L1wGGKeMUvDXIWCYUPHgN3xL6QsOI8o4FGCIqwzgpy-z052c8XoR8BRjuWZIvUuEVo-w0OMnC4uUNBBsMLJcfFbeF3lZoHor5fgnfhmATYBAynFHwyAZ_rnNS17nkdW2vygR2Ou7YlmW1bJvstW3_t-3tf_KU8YhWrrZ_CgpS90nN7D9CMX9kcUp5p7ffWkL_yivfvr7j8Wwur3xyDRjGufSQT7DvHsy5ncExmKGmwRG7YVmHkMNpa2u7e7VJ89jtz8depn7TcU-bPbls9v1zZG839-8Y-HdL_73T-rcv6__2HP6d5v5dA_-90v_taf07l_U_OId_t7n_roH_wnzbbalS715WPbHOvXdq6r9QkbFU0EZbxSomoNGMVkYEy_mUPnM2LctUj-OSK-_tiApZndrVwzCtjooGm8NdE7hvAg9MYELUNGlhzG4Hd03gvgk8MIEPjB3R9iFt7dKOWrejhMm-b-uQdk3CUsOasNSwJiw1rAlLDevC6pqE1TPRrYY1utWwRrca1uhWwzrdfRPdtya61bBGtxrW6FbDGt1qWKd7YKKbtFmWx3dom23ZltZd_m32ZVta55wcbQ-l9GDz5V8AAAD__2lICRY= query T EXPLAIN (VERBOSE) SELECT x, str FROM NumToSquare JOIN NumToStr ON x = y WHERE x % 2 = 0 @@ -216,7 +216,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEluFr2kAYxr_vrzheGFh6Yi6JmgYKjs0yS6udChsMP6TmZgM2sXcXsJT-7yNJ12jUu8sO67fkkufe557f62tegD8twYf-r7ubL4MhanwbTKaTHzdnaNK_6X-dojVGXDB0NR7dojh9FAl_SgNG0fVoMHxbEAyNhmiNLtEz-vm9P-6jxhp9RvYZukQWYIiTkA6DR8rB_w0EMNiAwQEMLmBowwzDiiVzynnCsldecsEgXINvYYjiVSqy5RmGecIo-C8gIrGk4MM0uF_SMQ1CylpZoZCKIFrmZTas9lYsegzYM2CYrIKY-6gJGEap8FGPwOwVQ5KKsggXwYKCT16xvpGraCkoo6xFtl0U6z5q9EgWiO_7g-HUy3N5u67UL7e8f0YPAX_Y3i_3W3q063jcDMveF5Zge5Jq2ZZlHQzJ-a-Quh8aknvQY7lPGicspIyGWzvNMuW_V_a9AD1yXtSqnvWWsgW9TqI464lK2kv6RzR65PzskkWLh-KybEjccw7G3TY4yh6Tw6SZrFqkWz303tqdrdpEv9cc3V7LW63ZcvUbTuHiveG8EzYcOUHDOcdpOFsfuqsN3c2hd_ShK1y8Q784IXT7BNDd40B39KG3taF3cuiePnSFi_L_1zohdecE1NvHoe7qU-9oU894NzWBKwyUwD_2i8s9aPKjgHeO_zGxx8KY8lUSc6r1qWBlh6Dhgha58CRlc3rHknleprgd5bp8IaRcFE9JcTOIi0eZwU0xqYrJptjdEpN6Ys9ETIiR2sg46crVtjRwRx64UyNwu57YMxFXAq-rNjJeCXxH7UoDb8tpteU_D0-OqyNVd-XirglruVjBWi5WsVaojYyrWHsmrC_krC3FLNyZpHV4KdQKYAq1iphKbuZdxYzszNM60Ih8nhLFQCVGE1WhVlEzm6kquZl3JTWjsUoUc7WjoLYzWGtRk6tV1ORqJTWF3My7ktrOeJVSm71--hsAAP__o1BXlA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEltFvokoYxd_vXzH5kpvYdBoZQKUkTbjptVmbVrtqsptsfKAya0mQscOQaBr_9w3QrYo6A51Y3xA4fIdzfv3KGySvEbjQ_fn08F-vjxr_90bj0feHCzTqPnRvx2iJUSI4uhsOHlGczgVLXlOfU3Q_6PXfTwiOBn20RDdohX586w67qLFE_yLzAt0gAzDELKB9f04TcH8BAQwmYLAAgw0YWjDBsOBsSpOE8eyWt1zQC5bgGhjCeJGK7PQEw5RxCu4biFBEFFwY-88RHVI_oLyZDQqo8MMoH7Nl1VvwcO7zFWC4ZVE6jxMXLQHDaOFnh1cwWWNgqdjMSYQ_o-CSNa7u5S6MBOWUN8mukeK8ixoeyTJxXbfXHzt5NO_HpfmbRz6v0IufvOw-zyMwWW88mnU8budlHspL8ENhrXIEthJrmoZhHI3N-lRsnS-NzT7qcfOcNGY8oJwGO0-aZMq_txy6ATxyWcwqv-sj5TN6z8I4o6SUf0R_i4ZHLi9ueDh7KQ4BwyAVLvII9qyjcbc0XuWAyT67Yosm6ZRf-uDs9s5sUp0-6_P05fBdNe3qCCp8fSDonBFBcgYErdMgaFbHwNbAwM4xaFfHQOHrA4PrM2JgngED-zQYWNUxaGlg0M4xcKpjoPC1-T9unJED6wwctE7DgV2dg7YGBxkBxz_lrDqWNgh87becfdTkVyHQPv1HyQELQ5osWJzQSp8cRvYSNJjRIpeEpXxKnzib5mOKn4Ncl58IaCKKq6T40YuLS5nBbTEpi8m22N4Rk3piR0dMiJZayzjpyNWmNHBLHrhVI3CzntjREZcCr6vWMl4KfE9tSwNvydtqyf88HHldbam6Ixd3dLqWixVdy8WqrhVqLeOqrh2drq_lXRuKXbi3Sev0pVArClOoVY2p5HreVZ2RvX1apzQi36dEsVCJ1kZVqFWt6e1UlVzPu7I1rbVKFHu1rWhtb7HWak2uVrUmVytbU8j1vCtb21uv0tYm63_-BAAA__8G9HYx # # -- Aggregation tests -- @@ -236,7 +236,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF1r2zAUhu_3K8y5SkAhlu24qa9StgwCadPFGQyGL7ToYAKJ5UkyrIT892GZUTu0shrv0h-vnveRxDmD-n2EBJY_ntcPqydv9GWV7tJv67GXLtfLzztPVafRy9j7ut08ekV10kJpCQQKwfGJnVBB8hMoEAiAQAgEIiAwg4xAKcUelRKy_uVsAiv-BxKfwKEoK12_zgjshURIzqAP-oiQwI79OuIWGUc59YEAR80OR4P5h1-U8nBi8gUIpCUrVOJNpoHv139vKp14CwrZhYCo9CtGaZYjJPRC3Ks85LnEnGkhp7Nuk_T742hBx-9igncxr6tXhZAcJfLO0tnFXoT6H2sSdppQ972nrntvtn4yjW45gJ4-Le94yAEE7tqBs3ZktONbtHv6tLTvhmiH7tqhs3ZstOe3aPf0aWnPh2hH7tqRs3YtPPmwcU-VlvH9_xowb2C2qEpRKLwaNG-v7NcDCHmOzbRSopJ7fJZibzDN48bkzAuOSjdfafOwKppPdcF2mFrDQSdMr8OBndyDDq3pyB6OhvSeWcOxnRwPId9Zw3M7eT6EfG8_K7_nmtgv2TU7u3z6GwAA___56Ne0 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF1r2zAUhu_3K8y5SkAhlu24qa9augwC6cfiDAbDF1p0MAHb8iQZVkL--7DMqBNaWYt3F9l59byPZM4R1K8CElh9f9ncr5-8yed1uku_bqZeutqsHnaeasrJ69T7sn1-9Kqm1EJpCQQqwfGJlagg-QEUCARAIAQCERBYQEaglmKPSgnZ_uVoAmv-GxKfwKGqG90-zgjshURIjqAPukBIYMd-FrhFxlHOfSDAUbNDYTB_8Xe1PJRMvgKBB1E0ZaUSr12kNWt_zuaB7_uQnQiIRr-RlGY5QkJPxL3NfZ5LzJkWcr44L5N-e5zc0emHmOBDzNvuTSUkR4n8bOvsZC9C_X9rEp41oe7HT686fnP6s3nkfgcDlXrq8Zg7CNzNg-vMI2Meu5sPVOqZ34wxD93Nw-vMY2O-dDcfqNQzX44xj9zNo-vMW-eZo_RAm5707f8aNu9gtqhqUSm8GDrv7-y3wwh5jt3kUqKRe3yRYm8w3fLZ5MwDjkp3b2m3WFfdq7ZgP0yt4eAsTC_DgZ08gA6t6cgejsb0XljDsZ0cjyHfWMNLO3k5hnxrvyt_4DOxf2SX7Oz06U8AAAD__-Dh4Ck= # Count the rows in the NumToStr table. query T @@ -252,7 +252,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF2Lm0AUhu_7K-RcJWVC_Iqb9WqXbQpCVrfRpYUii9WDBJIZOzNCS8h_LyplTUjGIe6lH6_P-3iGcwDxewc-rH68rB-D0Jh8CeIk_raeGvFqvXpKjJzVVE4-T42vm-jZoPVeMiE5EKCswDDbowD_J1hAwAYCDhBwgcACUgIVZzkKwXjzyqENBMUf8E0CW1rVsrmdEsgZR_APILdyh-BDkv3a4QazAvncBAIFymy7azH_8Q8V3-4z_hcIxFVGhW_M5rZpNm9HtfSNkFGE9EiA1fIdJGRWIvjWkeiXeSxLjmUmGZ8vTrs8Ra9h8raJvseT6VWWfZX1jqgp4wVyLE6-nx7VbayzXxO_Pr8FYTJ5sK63cU7aWPpjsHTH0E5hNndvm8VAo569N3oWtr69rW3vtvbebfYDjXr2d6PtHX17R9vea-2Xt9kPNOrZL0fbu_r2rrZ94z27QXygTE_8_kMX0AXWBkXFqMCzRXT5y2azoLAosdtmgtU8xxfO8hbTXUZtrr1RoJDdU6u7CGj3qCnYD1vKsH0Sts7Dtpo8gHaUaVcddsf0XijDnprsjSHfKcNLNXk5hnyvnpU5cEzUh-ycnR4__QsAAP__YDroHw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslNGKm0AUhu_7FHKukjIhjjFu1qtd0hSEbLKNLi0UWaweJGBm7MwILSHvXlTKmrAZh7iXav75_i9nOEeQvwvwYfXjef0YbKzRlyCMwm_rsRWu1qtlZKW8Ymr0eWx93W2fLFYdFJdKAAHGM9wkB5Tg_wQKBBwgMAMCLhCYQ0ygFDxFKbmof3JsAkH2B3ybwJ6VlapfxwRSLhD8I6i9KhB8iJJfBe4wyVBMbSCQoUr2RYP5j38oxf6QiL9AYMmL6sCkDwTCMmHStyZTx7ZtiE8EeKXeOFIlOYJPT8S8y2OeC8wTxcV0fl5luX3ZRK-77fdwNL7Kcq6y3hAV4yJDgdnZ-fFJ34Ze_DPhy9NrsIlGD_R6m9lZG2o-BXrDFJohTKau-Sh6CnXkvcGjcMzlnVvk3UbeM5fvKdSRvxssPzOXn90i7zXyC3P5nkId-cVgeddc3r1FvtaeGHr3dOl433_o8nmHtUNZcibxYgm9f7JdLyfMcmw3meSVSPFZ8LTBtI_bJte8yFCq9ittHwLWfqoLdsNUG3bOwvQy7OjJPeiZNu3qw-6Q3nNt2NOTvSHkO214oScvhpDv9bOye66J_pJdsuPTp38BAAD__8dj5_w= # Count how many numbers contain the digit 5. query T @@ -271,7 +271,7 @@ vectorized: true table: numtostr@numtostr_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lVFv2jwUhu-_XxEdqSr9ZAROAgVfUXXpFo2GLknVSROqMnKGIkHMHGfahPjvUxKVAip2SsYdcfL6PPh5Ja8h-7kABs7Xh_GN6xmtD24QBl_GV0bgjJ3b0JjxPJWt_6-MO39yb6T5UvJMCuPpk-M7RvFr7H52jMuLH8kvvLgEAimP0YuWmAH7BhQImEDAAgI2EOjBlMBK8BlmGRfFJ-sy4Ma_gXUJJOkql8XylMCMCwS2BpnIBQKDMPq-QB-jGEWnCwRilFGyKMe8YI1WIllG4g8QCFZRmjGj3TG73eLrSS6ZMTJhuiHAc_k6JpPRHIHRDamPcpcsJAoUnd4-R7XOjBHdPxbGWBD6rvfxBcTjKR5FMd-DcjOfC5xHkosOPTiV28mjFz77k6egdXV0mHV02OuMPOUiRoHx3v7TjQbn4HCCx_tn1wtbI3qcxt6jofULQesWouxDu2Of0goNz7YV_fO3QoOyq4E2boVZ34NZ24Ndeuif4kHDs_VwfX4PGpRdD2ZjD1Z9D1ZtD_3Sw-AUDxqerYfB-T1oUHY9WI092PU92LU9FAba71agQdkqGJ5fgQZlV4H9Ty-qN4b5mK14muHBhfX2zt3iIsN4jtWtl_FczPBB8Fk5pnqclLlyIcZMVm9p9eCm1asCcDdMlWFTHTaVYWsvTA_Dlhq7rx5tK9M9dbinDGsm95v86WtleKCePFCGh-rwsAk21XRMVzJ1y6imZrRRz6imaLZmuLppVFM1qu7aIft089_fAAAA__-w0Sxc +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lVFvmzwUhu-_X4GOVDX95CoYSJr6qlVHN7SUdEDVSVNUsXAWIRGcGTNtivLfJ0BLk6ixWVjuYpOX8-DnlbyC4nsGDNzPj-Nbzzd677wwCj-NL4zQHbt3kTHjZS57_18Y98HkwcjLheSFFMbzBzdwjerX2PvoGudn39IfeHYOBHKeoB8vsAD2BSgQsICADQQcIDCAKYGl4DMsCi6qv6zqgJf8BGYSSPNlKavtKYEZFwhsBTKVGQKDKP6aYYBxgqJvAoEEZZxm9Zg_WDdLkS5i8QsI3PGsXOQFqxiBQLiMq8Vl3zJNE6ZrAryUr7MKGc8RGF2T9jz3aSZRoOgPdmGafWbc0N2zYYyFUeD574HApJTM8HmOB1Gsv0G5nc8FzmPJRZ_uHc3d5MmPXoLJc9i7ODjMPjjsdUaZc5GgwGTn_dO1BmfvcMKnhxfPj3o39DCNs0ND27eCHtmKuhSXfad9NTRQm2oMT18NDcq2C9q5GlZ7GdaxMpxaxrC9DA3URsbV6WVoULZlWJ1l2O1l2MfKGNYyRu1laKA2Mkanl6FB2ZZhd5bhtJfhHCuj0nDZ0oOGZ-Ph-vQeNCjbHpx_enm9MSzAYsnzAvcusbffbFaXGyZzbG7Cgpdiho-Cz-oxzXJS5-qNBAvZPKXNwsubRxXgdpgqw5Y6bCnD9k6Y7odtNfZQPdpRpgfq8EAZ1kwedvnoK2V4pJ48Uoav1eHrLthU0zFdydQto5qa0U49o5qiOZrh6qZRTdWoumv77NP1f78DAAD__586OSw= # # -- Limit tests -- @@ -289,7 +289,7 @@ vectorized: true spans: LIMITED SCAN limit: 5 · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMj0FL_DAUxO__TxHm9Bcibg97yWlFVwh0t2vbgyA9xOaxBNqkJq_gUvrdZVtEPAgeZyaZ37wJ6b2Dwv7llN_ro_j_qKu6es5vRLXP9w-1uIinsjgIP_YcEkeR64OuxRYSPlg6mp4S1CsyNBJDDC2lFOLVmpYH2n5AbSScH0a-2o1EGyJBTWDHHUGhNm8dlWQsxbsNJCyxcd1S-4XdDdH1Jl4gUQ3GJyVuIVGMrMQug0Tuesdii2aWCCN_sxKbM0Fls_z7npLSEHyiH1N-a97MjQTZM603pzDGlk4xtAtmlcXybzEsJV7TbBXar9HczP8-AwAA___5z4BX +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMT71q9DAQ7L-nEFN9AYXcFdeoSrg4IPD9xHYRCC4UazkEtuRoZchh_O7BNiGkCKTbmdmdmR3B7y0Uspdz_qCP4v-jLqvyOb8RZZZn-0pcxVNxOgg_dClwiiLXB12JHSR8sHQ0HTHUK7aoJfoYGmIOcabGZUHbD6iNhPP9kGa6lmhCJKgRyaWWoFCZt5YKMpbi3QYSlpJx7WL7FXvfR9eZeIXEPrRD51mJGZS9mcdbSOSuc0nsUE8SYUjfcZzMhaC2k_x7pYK4D57pR5vfnDdTLUH2QuvbHIbY0DmGZolZ4Wm5WwhLnFZ1uwLtV2mqp3-fAQAA__8UeIII query T EXPLAIN (DISTSQL) SELECT y FROM NumToStr ORDER BY y LIMIT 5 @@ -303,7 +303,7 @@ vectorized: true spans: LIMITED SCAN limit: 5 · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMj0FLxDAUhO_-isecFCJuD3vJadWtUOhu17YHRXqIzWMJtElNUnBZ-t9lW0Q8CB5nJpn53hnho4NE-nLI77M9XW-zqq6e8xuq0jx9rOlET2WxIzv20YXoqSi3aUkPr3SiPNtlNa0hYJ3mveo5QL4hQSMweNdyCM5frPP8INOfkCsBY4cxXuxGoHWeIc-IJnYMiVq9d1yy0uzvVhDQHJXp5tpvgs3gTa_8CQLVoGyQdAuBYoySNgkEctObSGs0k4Ab489WiOrIkMkk_s9TchicDfwL5a_m1dQIsD7ycnNwo2_54F07zyyymP_NhuYQlzRZRGaXaGqmq68AAAD__6v2g0c= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMT01LxDAUvPsrHnNSiLh72EtO6m6FQvfDtgdFeojNYwm0SU1ScCn979IWEQ-Ctzcz783MGxA-GkgkL6fsIT3Q9S4tyuI5u6EiyZJtSRd6yo97sn0bXYiejvkuyenxlS6Upfu0pA0ErNN8UC0HyDesUQl03tUcgvMTNcwLqf6EXAkY2_VxoiuB2nmGHBBNbBgSpXpvOGel2d-tIKA5KtPMtt8N7jtvWuUvENi6pm9tkDSBolPTeAuBzLQm0gbVKOD6-BMXojoz5HoU_6-Uc-icDfyrzV_Oq7ESYH3m5e3gel_zybt6jlngcb6bCc0hLup6AaldpLEar74CAAD__89ghPg= # Test that the correct node is chosen in a reverse scan with multiple spans. query T @@ -318,7 +318,7 @@ vectorized: true spans: [ - /999] [/9001 - ] limit: 5 · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkE9vozAQxe_7KUZzSiRHMVnlsD5lN2G1SCRkAamtWg4ujFIkwNQ2UlHEd6-A_kkqNe3Rb-b3_OYd0TwWKNC93vu_vR1MNl4UR__9KUSu765jaOFvGGyhakqrjNVw9c8NXZi0cNdw_jMFh3M-hSB8kwh-vUgbN4Q_N9DCxo3W4HtbL4YlMqxURjtZkkFxiw4yXGLCsNYqJWOU7uXjsORlTyg4w7yqG9vLCcNUaUJxRJvbglDgTs1UPe9dMrIyL4a1jqFq7DtkrDwQikXHToydy8axvC8oJJmRnvMze3wtY1XrvJS6RYZRLSsjYDbv-wBZZeCAsg-kkWHQWAGrPqKfl7mFJX4W0DkL-MXlIZlaVYa-dTrvEoaUHWhs16hGp7TXKh2-GZ_BwA1CRsaO08X48Kpx1Ac8hZ2LMP8AJ92P5wAAAP__9MXFMQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMUM1O8zAQvH9PsdpTK7mq0089kBPQBhEp_SGJBAhyMMmqREriYDsSUZV3R074aZEo3DyzO-PZ2aN-KdBF724bXPhrGC39KI5ugjFEXuAtYmjhKtysoGpKI7VRcHvthR6MWnhsOP-fgsM5H8Mm_KQIzt6ppRfC5T20sPSiBQT-yo9hjgwrmdFalKTRfUAHGc4xYVgrmZLWUll63y_52Su6nGFe1Y2xdMIwlYrQ3aPJTUHo4lpOZD21LhkZkRf9WsdQNuZLpI3YEbqzjh0YO6eNY_FUUEgiIzXlR_b4UcZ5rfJSqBYZLmTRlJV2wYKoFvY5mdpyQFQZOCDNMylkGORlbmCOP2V0jjL-cnxIupaVpj9dz7uEIWU7GgrWslEpbZVM-28GuOl1PZGRNsN0NgC_GkY24KHYOSnm38RJ9-8tAAD__w63xuI= query T EXPLAIN (VERBOSE) SELECT x FROM (SELECT x, 2*x, x+1 FROM NumToSquare) @@ -345,7 +345,7 @@ vectorized: true table: numtosquare@numtosquare_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMT81K9EAQvH9PMdRp93PEjcc5regKgbhZkxwEyWHMNEsgmcnOD0RC3l2SQdSD4Kmpqu6q6gnu0kHg8HLK7tIj2zykZVU-Z1tWHrLDfcVG9ljkT2zzCTm7Zf-XMbIrlkRRh94bdwnS0hYc2ig6yp4cxCsS1ByDNQ05Z-xCTetCqkaIHUerh-AXuuZojCWICb71HUGgkm8dFSQV2ZsdOBR52Xar7bfI_WDbXtp3cJSD1E6wa3DkwQu2T1DPHCb4rxDn5Zkgkpn_vUhBbjDa0Y8Ovznv5pqD1Jnis84E29DJmmaNiTBf71ZCkfNRTSJIdZTmev73EQAA___Tc4Tr +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMT09L_DAUvP8-RZjT7s-IW485KWuFQt1d2x4E6SE2j6XQJt38gUrpd5c2iHoQPCUz897MvAnu0kEgfTnl99mBbR6ysiqf8y0r0zzdV2xkj8XxiW0-IWe37P_yjOyKJVHUoffGXYK0tAWHNooOsicH8YoENcdgTUPOGbtQ0zqQqRFix9HqIfiFrjkaYwligm99RxCo5FtHBUlF9mYHDkVett1q-y3ybrBtL-07OPamC712go3gKAe5fK9Rzxwm-K8c5-WZIJKZ_71LQW4w2tGPGr857-aag9SZ4r3OBNvQyZpmjYnwuO6thCLno5pEkOkozfX87yMAAP__8mCGmw== query T EXPLAIN (VERBOSE) SELECT y, str, repeat('test', y) AS res FROM NumToStr ORDER BY res @@ -416,4 +416,4 @@ vectorized: true table: numtosquare@numtosquare_pkey spans: [/11 - ] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkU2L1EAQhu_-iqJOM9qSdObWpx13IwazyZpEVtEgbVKEQKY72x8wMuS_SxLBHWEG99hv1VPPC31C-zSgwPjLQ7pPMtjcJWVVfkq3UMZpfFtBo71ym9dbeF_k97D5k3LYl6AVranyB6ftk5eG4PFDXMRwhO8-DHcEPIS8uIsLePcVjutKC2lyn1TAwy0yVLqlTB7IoviGHGuGo9ENWavNHJ2WhaQ9oggZ9mr0bo5rho02hOKErncDocBK_hyoINmSCUJk2JKT_bCcfdbvZjT9QZpfyLAcpbICAs7fYj0x1N79vW6d7AgFn9j_Nyi1cWQCfi6_id4gw0qPHwXwuVjunYBMK7pojV5i3XedoU46bYLo3Hybf86qH0X-WG62F127l7gKsqNWls48ly6HU82Q2o7Wf7Tam4YejG4WzfrMF24JWrJunfL1kah1NBd8DvOrcHQdjq7Cu3_genr1OwAA__-JxwGY +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkd-L00AQx9_9K4Z5anWl2fRtn672IgZ7zZlETtEgazKEQrqT2x9QKf3fJYnoVWi5e9zvzHc-H9gjuscOFSZf7jerdAuz27Qoi0-bORTJJlmXUHMwfvZ6Du_z7A5mf1IJqwLY0JSasPfsHoO2BA8fkjyBA3wPUbQkkBFk-W2Sw7uvcJhWGtikd2kJMpqjQMMNbfWeHKpvKLES2FuuyTm2Q3QcF9LmgCoSuDN98ENcCazZEqoj-p3vCBWW-mdHOemG7CJCgQ15vevGs0_8bnq722v7CwWuuQt74xQcxF81FFj0eggXUr7F6iSQg_8HdV63hEqexPPFCrae7EKeO93Eb1Bgyf1HBXLwzYJXsGVDF6nxS6irtrXUas92EZ-T19nnbfkjzx6K2fwia_kSVk6uZ-PojHPpcnSqBFLT0vS9joOt6d5yPWKmZzb2xqAh56epnB6pmUaD4NOyvFqOr5fjq-Xlf-Xq9Op3AAAA___X-wl0 diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_ordinality b/pkg/sql/opt/exec/execbuilder/testdata/distsql_ordinality index 91b186b44ff0..536844591b8f 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_ordinality +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_ordinality @@ -59,4 +59,4 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkF9ro0AUxd_3UwznaRfukpjdp3kybLJUsDFVoS2ND1O9BME4dmYETfC7lyj0H7Skj_fcOb9z5p5gnypIrO-24TLYiJ-rIEmTm_CXSNbh-l8qOhI9iSOJHbQpylpVpet3EP_j6Fp0_VHcBumViOJVsFmGQXoPQq0L3qgDW8gHeMgIjdE5W6vNWTqND4Kig5wTyrpp3VnOCLk2DHmCK13FkEjVY8Uxq4LNbA5CwU6V1Yjt-qPfmPKgTA9C0qjaSvEbhKh1UvgL8v-Q_xfZQNCte42wTu0Z0hvo8hrRy79n3rsWn9EX36HHbBtdW76IPB8yAhd7ng5pdWty3hqdjzHTGI2-USjYumnrTUNQT6tzwbdm70vz4oM5G348BwAA__8gULfl +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkE9r4zAUxO_7KcScdkFL4hx12pBkqcCNU9vQlsYH1XoEg2O5kgx2gr97sU3_Qkt6fPM0Mz-9M9xTCYHN3S5cyi37vZZJmtyEf1iyCTerlLWcdZydONvDWF1Uqix8twf7H0fXrO1O7FamVyyK13K7DGV6D47KaNqqIzmIBwTIOGprcnLO2EE6jw-kbiHmHEVVN36QM47cWII4wxe-JAik6rGkmJQmO5uDQ5NXRTnGtt3pX22Lo7IdOFambI6VEy-04EhqNQh_kfUcpvFvLc6rA0EEPb-cJHr9-iz4APJV-uIn6TG52lSOLkqe9xkH6QNNt3SmsTntrMnHmmmMRt8oaHJ-2gbTIKtpNQC-NwffmhefzFn_6zkAAP__rdy54A== diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_single_flow b/pkg/sql/opt/exec/execbuilder/testdata/distsql_single_flow index e3e6660406b9..3e080f6de834 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_single_flow +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_single_flow @@ -44,7 +44,7 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkt9r2zAQx9_3V4h7Ssa1seRsD4KCyuZRjyzp7MAGIw-qdUsNruVJMmyE_O_D9qC1WdL9eJPu7nPf7x13AP-tAgnJ59vVdbpms7dpvs0_ruYsT1bJmy17yd5lmw8ssOucBY6_HoJ9ukmyhAV-qdkVC-LyDhBqa2itH8iD_AIcEATsEBpnC_Leui586ItS8x1khFDWTRu68A6hsI5AHiCUoSKQsLYXtlnEgGAo6LLqy44Itg2PkA96TyCXR3zSmJ9vvNV3FWWkDblFNGoPQTWufNDuByDkja69ZBdwSpT_qyj_D1FxUvRRq62tM-TITHf3fMlvnN9of__eljW5hRgbr-hrmCk-v3Ll_j7MlJgDwqYNkimOSqCKUS1RvUL1-uQ88WieZ04iI9_Y2tMf3UTUDUNmT8NyvG1dQbfOFr3M8N30XB8w5MOQXQ6ftB5SncGnMD8LxyOYT2HxF7CYwvFZOJrY3h1f_AwAAP__UoE-6Q== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysktFr2zAQxt_3V4h7Ssa1ieRsD4KCSufRjCzp7MAGIw-KdUsNjuVJMmyE_O_D9qC1WZJt9E36dL_T9x13AP-9AAnxl4fF7XzJRu_m6Tr9tBizNF7Ed2v2mr1PVh9ZYLcpCxx_HwT7fB8nMQv8WrMbFsT1FhBKa2ip9-RBfgUOCAI2CJWzGXlvXSMf2qK5-QFyipCXVR0aeYOQWUcgDxDyUBBIWNorW00iQDAUdF60ZUcEW4cnyAe9I5CzIz5rzM83XuttQQlpQ24y7bWHoCqX77X7CQh3tqj3pZdMI9siywAhrXQjXMEpH_x_ffCX9SFO-nj6vi6tM-TIDCd8ueQPYe61f_xg85LcRPSzFPQtjBQf37h89xhGSowBYVUHyRRHJVBFqGao3qB6ezJP1MtzYXES8pUtPf3V5kybMGR21A3H29pl9OBs1n7TXVct1wqGfOheZ91lXnZPjcHnMD8LRz2YD2HxD7AYwtFZeDqwvTm--hUAAP__Q89Juw== # Inject stats so that column 'b' has few unique values whereas column 'c' has # many unique values. @@ -101,7 +101,7 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkd-r2jAUx9_3V4TzpCPTJm57CAiRrcMOp64VNhh9iM2ZFmrTJSlsSP_30faCV9F78d63nB-f8z3fkyO4PwUICH-uF7NoSQafo2STfF8MSRIuwk8b8pZ8iVffiCezhHhGHx6c_JiHcUg8GykyJZ6PtkChNBqX6oAOxC9gkFKorMnQOWPb1LFriPRfEAGFvKxq36ZTCpmxCOIIPvcFgoCN2hYYo9JoxwFQ0OhVXnRjvaxsflD2H1BIKlU6Qd5B2lAwtT8NdF7tEARr6MtE2StE-U3Rk1ZdGqvRoj7TSVvyuZYrm8-V2381eYl2zM8XL_C3H0g2nNp8t_cDyYdAYVV7QSSjklM5ofI9lR-o_HjTz-SeI8boKlM6vPR1dXLQmkG9w_44ztQ2w7U1WSfTh6uO6xIane-rvA-isit1v_wYZnfA_BLmT8KTMzho0ubN_wAAAP__9MUM1w== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskdGL00AQxt_9K5Z5amW8y27Vh4WDPc7IReq1JgUFycM2O7aBNBt3N6CU_O-SRKgtrVK5t-w385tvvske_PcKJMRflvP75IlN3iXZKvs0n7IsnscPK_aSvU8XH1lg9xkLHH9_CPb5MU5jFviNZncsiJs1INTW0JPekQf5FTjkCI2zBXlvXS_th4bE_AAZIZR104ZezhEK6wjkHkIZKgIJK72uKCVtyN1GgGAo6LIaxgbVuHKn3U9AeLBVu6u9ZBrZGlkBCFmje-EV5B2CbcPBwwe9IZC8w__bgz_vHuLiHgf7trbOkCNzZJ335L9azoR51H77wZY1uVtxnKWib2Gi-PTOlZttmCgxBYRFGyRTHJVANUP1GtUbVG8v5pldc9eUfGNrT6e5zk6O-jBkNjQex9vWFbR0thhsxudi4AbBkA9jVYyPpB5Kw4__E-ZXwOIUFn-FZ0dw1OXdi18BAAD___VzF6k= # If we add a not very selective filter, the flow is still moved to the gateway. @@ -141,7 +141,7 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykklFr2zAQx9_3KY57Sja1iWRnDEFAYXWZR-p0cWCD4Qc1vmUG1_IkGTZCvvuwPegSmmze3nQn_f4_6dAe3bcSJUaf7peLOIHRTZxu0g_LMaTRMnq7gZdwu17dgYdFCp6zXwsBH99F6whGnl8_wBz4GBbJTVdqmIMX13qMDCuTU6IfyaH8jBwzhrU1W3LO2La17w7E-XeUU4ZFVTe-bWcMt8YSyj36wpeEEjf6oaQ16ZzsZIoMc_K6KLtYr2pbPGr7Axmmta6chCvMDgxN458Cndc7QskP7N-k_D-kYoj0tig9WbITcWzs-xKUaMctpYyTzZuzyuCs8snUVMbmZCk_EmUt-acjz9z7juyO3puiIjsJjq9e0hc_UvzVeG6L3dd-iQxXjZegQqZmTL1mijMlmArOPikcMsXEXJl6Ep6-7Nng2ZDgNbnaVI7-KnnaDoryHfWDd6axW7q3Zttp-nLVcV0jJ-f73aAv4qrb6j7t7zC_CIsjeHoKiwFmcQoHF-Hwsjm8CM9O4Ozw4mcAAAD__1A-e3k= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskm-L00AQxt_7KYZ51erctflTkYVCyl0OI730bAoKkhfbZKyBNBt3N6CUfndJIpwtbbVy73ae3d88z0yyQ_O9RIHh56f5LIphcB8lq-TjfAhJOA_vVvAaHpaLR7AwS8A69Pvgwqf34TKEgXVu1zAFZwiz-L4rJUzBurdyiISVyjmWWzYovqCDKWGtVcbGKN1Ku-5BlP9AMSYsqrqxrZwSZkozih3awpaMAldyXfKSZc56NEbCnK0syq6tDWpdbKX-iYR3qmy2lREgCdYEGRImtWyFG0z3hKqxzx7Gyg2jcPb0fzmcl83hXpPjoSgta9Yj9zBErwsI3PajCCGiePXurKV31vLZqamUzllzfmCUtuTfnpzI_ch6wx9UUbEeeYfRS_5qB4HzZjjVxeZbf0TCRWMFBD4FEwreUuBQ4FLgnR3Jv2aLsbpR9cg_nuxk48k1jZdsalUZ_qfO43ZRnG-4X7xRjc74Sauss-nLRcd1Qs7G9rdeX0RVd9X9x3_CzkXYPYDHx7B7hbN7DHsXYf-ys38RnhzB6f7VrwAAAP__wgqGSw== # However, if we add a selective filter, the flow is kept on the remote node. query T @@ -183,4 +183,4 @@ vectorized: true table: t@t_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykktFv0zAQxt_5K073tIG31kmKkKVKniCDTG0ykkogoT6Y5CiRsjjYjgSq-r-jJEhbKpox9hZ_d7_77nO8R_ujQoHh59vVVRTD2bso22QfV-eQhavw7QZewnWarMHBVQaOQxTHYQrrMH0fwk0SxX8KHiQxOH6pYAnOu1Tw6UOYhp2SwxI4Mqx1QbG6I4viC3aCh1uGjdE5WatNJ-_7pqj4iWLOsKyb1nXylmGuDaHYoytdRSgw1he6mQXIsCCnyqpvOzDUrbuHrFM7QrE4sAeD-fTgjfpaUUqqIDObj8ajk40p75T5hQyzRtVWwAWeMuVPMb0uK0eGzIyPHQddgPS7OxRCRPHmzUlL739zes_I6Z80vfdqa20KMlQc_67HW_6y-ZrMjm50WZOZ-ePNK_rmziR_db405e778IkMk9YJkJxJj0mfyYDJBZOvT0YKRpEeeYgp2UbXlv7pJc67PFTsaLgfq1uT063ReW8zHJOe64WCrBuqi-EQ1UOpW_AhzCdhbxr2JuFgBPNj2H8C7B3DwSQ8P1p7e3jxOwAA__9d9n-X +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysktFr2zAQxt_3Vxz31G5qEznOGIKASuduLond2YENRh5U-5YZHMuTZNgI-d-H7UHrsLjr6Jv13f3uvk_WHu2PEgUGX-6WV2EEZ-_DdJ1-Wp5DGiyD6zW8hpskXoGDqxQchzCKggRWQfIhgNs4jP4UPIgjcPxSwQKcd6ng88cgCVolgwVwZFjpnCK1I4viK7aChxuGtdEZWatNK--7pjD_iWLKsKjqxrXyhmGmDaHYoytcSSgw0he6nvjIMCenirJrOzDUjXuArFNbQjE_sEeD-fjgtbovKSGVk5lMB-PRydoUO2V-IcNrXTa7ygpQDO4ZZMgwrVUrXOApH_w5Pm6K0pEhM-FDE70uQM7aaxVChNH63cmV3v9G9142-uykj4f1TaVNToby45_6dMtfwqzIbOlWFxWZyWwYpqRv7kzyN-cLU2y_95_IMG6cAMmZ9JicMekzOWfy7clI_iDSE881IVvrytI_vddpm4fyLfX3Y3VjMrozOuvW9Me44zohJ-v66rw_hFVfag0-hvko7I3D3ijsD2B-DM-eAXvHsD8KT49sbw6vfgcAAP__Lc6KaQ== diff --git a/pkg/sql/opt/exec/execbuilder/testdata/distsql_union b/pkg/sql/opt/exec/execbuilder/testdata/distsql_union index f44da8df88bf..5c7af4b811b3 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/distsql_union +++ b/pkg/sql/opt/exec/execbuilder/testdata/distsql_union @@ -55,7 +55,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ll-L2kAUxd_7KcJ9aumEeGcm-ydPu-1aEKxu1UJL8SE1wyK4TjqJoCt-92IUdi3mTmZiH5PxnHPPnR-YLRR_FpBA98dj_743CN4_9MaT8bf-h2Dc7Xc_T4J18GU0_BqsNy_B90FvOAju-_0zZ8PRQ3cUfPoZrIHBUmdqkD6rApJfgMCAAwMBDCQwiGHKIDd6popCm_1PtpWgl60h6TCYL_NVuX89ZTDTRkGyhXJeLhQkMEl_L9RIpZkyUQcYZKpM54sqZr15ucvN_Dk1G2AwztNlkQRhtE8ersokuEOY7hjoVflqX5Tpk4IEd6z5CGNtSmWi-DT9Dj_W2nMX-7cN8XIVhUdFdOgoa_1fbbXJlFHZOdMzQwx0qPOIn66gLr7zv-LjRvHxSTw63HCDC454GAlnii1DHK_4ypdil46XLCk8SqJDS1nr3xIk9OCYN18yb7JjEUbSGSTLEMcdX_uC5NARL1lSeJREh5ay1r8lSNwDJNF8yaLJjmVY_f-5gWQZ4rjjG1-QHDriJUsKj5Lo0FLW-rcESXiAJJsvWTbZcRw6Y2QZ4bjhW1-MHBri5SoKj4ro0FHW-reESLb8PDvjPFJFrpeFaug8ZaCyJ3XoUuiVmalHo2dVzOFxWOmqF5kqysMpHh56y8PRfsC3YiTF8kSM_4o5KRZ0smiTLElxTItjUsyv6LmvSPU1Lb6m76pDD35Dqm_p6NtW0UhTZtk40pght0BKg4a2dBo1lJZ0GjZrOo2bTU3jhhbekAaO226dJg4tyCHNnC2dt2KO08xxC3OcZo7b0mnmuIU5TjNnTXdjbrp79zcAAP__3g8zPw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ls-O2jwUxfffU0R39VV1FK7tzJ-sZjpDJSQKU5hKrSoWKbFGSIBTJ0gwiHevCEgzVOQ6duiOxJx77jn-LbKF4vccEuh-f-rf9wbB_4-98fP4a_9DMO72uw_PwTr4PBp-Cdab1-DboDccBPf9_pmz4eixOwo-_QjWwGCpMzVIF6qA5CcgMODAQAADCQximDDIjZ6qotBm_5dtJehla0g6DGbLfFXuX08YTLVRkGyhnJVzBQk8p7_maqTSTJmoAwwyVaazeWWz3rze5Wa2SM0GGDzo-WqxLJJqnXGe7n-GEYfJjoFelW8ORZm-KEhwx5pvMdamVCaKTxe4w4-147nL-Pch8aIphUdKdIgpa-e_jdUmU0Zl54aeWWKgQ51H_LSFOvvOv7KPG9nHJ_bocMmudxzxMBINWbbscbzlK1-WXWJeOKfwyIkOQWXt_JY4oQfNvHnP3LlmEUayIU6WPY41X_vi5BATL5xTeOREh6Cydn5LnLgHTqJ5z8K5ZhlGcUOcLHsca77xxckhJl44p_DIiQ5BZe38ljgJD5xk856lc81x2BAmyxbHkm99YXIIiRdNKTxSokNMWTu_JUqy5WfbmckjVeR6WaiGkycMVPaiDlkKvTJT9WT0tLI5PA4rXfUiU0V5OMXDQ295ONov-F6MpFieiPFvMSfFgnYWbZwlKY5pcUyK-RW99xWpvqbF1_RddejFb0j1LW1928oaacosjSONGXILpDRoaHOnUUNpcadhs7rTuNnUNG5o4Q1p4Ljt1mni0IIc0szZ3Hkr5jjNHLcwx2nmuM2dZo5bmOM0c1Z3N-Ymu__-BAAA__9leEQf query T EXPLAIN (DISTSQL) SELECT x FROM xyz UNION SELECT x FROM xyz ORDER BY x @@ -78,7 +78,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslk-P2jAQxe_9FNacWtUo2En4k9O2hUpIFLZApVYVh5RYq0hsTG0jwSK-e0U4pLDs2A45kvDm_fzmKfIB9N81JDD8-Tj-NJqQ94PRfDH_Pv5A5sPx8MuC7MjX2fQb2e1fyI_JaDq58Xw6Gwxn5PMvsgMKhczEJH0WGpLfwIACBwohUIiAQgxLChslV0JrqU5_OZSCUbaDpE0hLzZbc3q8pLCSSkByAJObtYAEFumftZiJNBMqaAOFTJg0X5c2u_3Lw0blz6naA4X5Ji10QlrByXm6NQl5YLA8UpBbU43XJn0SkLAjrYcQN4bAfRAGuTZ5sTIBu8oAMQjrGcTOBtGbBtXcbSFVJpTILqYujxgCdz9j7HPGuVRGqICz6_Ef35zfuZjP3HvCHHoS8FYQepfVA6LTIAT3gaja9Cprx7o6G3Rq1pW7x8hdYgxbQeS9Sw-IboMQ3AeiiprX3KWzQbfmLkP3GEOXGKNW-Z3326UHRK9BCO4DUUUd1tyls0Gv5i4j9xgjlxjjlvcmPRD6jSFwH4Qq5qjmHp0N-g1cB24YzITeyEKLq2vB7cnt03VBZE_ifLfQcqtW4lHJVWlz_jktdeWDTGhzfhuef4yK86sT4P9ihoo5LuaoOLoQs2txeI84QsUxjh3jZ7YcuoOq-7i4i4p7uLh3T2L9e8QM7xizlQxvGbMkzu7qGburaAxvGuta0PGusY5FjpfNxo63zabG68aZBR0vHG9bPi144yzsHC_ctXp5fPcvAAD__4tHN40= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslk-P2jAQxe_9FNGcWtUo2En4k9O2C5WQKGyBSq0qDimxVpEgpraRYBHfvSIcUiiM7SS3TbJv3s9vnpCPoP6sIYbhj5fxp9HEez8YzRfzb-MP3nw4Hj4vvL33ZTb96u0Pb973yWg6ufN-OhsMZ97nn94eCOQi5ZNkwxXEv4ACAQYEAiAQAoEIlgS2Uqy4UkKe_-VYCEbpHuI2gSzf7vT59ZLASkgO8RF0ptccYlgkv9d8xpOUS78NBFKuk2xd2OwPb09bmW0SeQACz2K92-QqLnDm2-T8Z8tnsDwREDtdOiidvHKI6YlUo4iapGAuFINM6SxfaZ_eJPFEHxoE1Qwia4PwoUE5d5cLmXLJ06upyxOGwOzPGLmccS6k5tJn9Hb8x4fzO1fzqX1VqGtVfNbyA8vKOnB0muVgLhxlp_5L3LK01gadiqVl9kky5ySDlh9abtSBo9ssB3PhKANnFTdqbdCtuNHAPsnAOcmw5UeWG3Xg6DXLwVw4ysCDihu1NuhV3Ghon2TonGTUstynA0W_SQrmQlGGHVbcprVBv4Frwh2DGVdbkSt-c124P7l9vkbw9JVf7hxK7OSKv0ixKmwuj9NCV7xIudKXr8HlYZRfPp0B_xVTVMxwMUPF4ZWY3oqDOuIQFUc4doSf2XDoDqru4-IuKu7h4l6dxPp1xBTvGDWVDG8ZNSROa_WM1ioaxZtGuwZ0vGu0Y5DjZTOx420zqfG6MWpAxwvH2oafFrxxBnaGF-5WvTy9-xsAAP__0xpIbQ== # UNION with no overlap. query T @@ -108,7 +108,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysl99u2kwQxe-_p1jN1VfVyMyu-WepUtqGqEgppEDVVi0Xrr2KLBGbro1EEvHuFSDhQJOZXceX2D575uz8ZrN5hOLPEkIYfr-5fj8ai_8vR7P57Mv1GzEbXg8_zsVGXE0nn8Xm_kF8-zScDsVG_Fq32yoWSnwdjyZj7kP9TigxmV4Op-LDD7EBD7I80ePoThcQ_gQEDyR4oMCDADzowMKDlcljXRS52X3yuBeMkg2EbQ_SbLUud48XHsS50RA-QpmWSw0hzKPfSz3VUaKN3wYPEl1G6XJvs7l_uFiZ9C4y9-DBbBVlRSha_s55si5DcYGw2HqQr8tq-aKMbjWEuPXsS7hKl6U22vidU__D851PtSthGI7G8_6LxtLF-Gl2bC68qhUemfQxHz5wMb5MizLN4tKXZ8mJZJ16Bh1rg-6LBtW66yw3iTY6OVl1saVKUPYZey4ZZ7kptfEVni__9sX1-yfrowOhFoD6suUr5_lkijgi2m16Pl3SNxlf1YqPTH7nCWWMqwH6By_LCbU26NacUGnfQGnTP9XyA2d8mSKO_es1ja9DemwyvqoVH5n8zvgyxhVdsia-1ga9mvgq-wYqm_4Frf0dxg1fpohj__pN4-uQHpuMr2rFRya_M76McUWXqomvtUG_Jr6BfQMDm_51Ws7wMiUcuzdoGl6H7NhceFUrPDLpndFljCuygproWhsMGrjaP2Mw1cUqzwp9dsV_fuX27uqvk1t9-D-hyNcm1jcmj_c2h5-TvW7_INFFeXiLhx-j7PBqV-BTMZLiDi2WpFjRYkWKA1ockOLuiRjPxZ3XiLukuEeX3aM3TNLqPqke0OIBTQnTLGQg4yijMUMmONKgMR1DmjROTaOGzIggDRsyXUMaN2R4Qxo47DNymjhu52jkGLWkiZMMcZImTnInG02cZMZF0shJ5nSTrzre5KvON0kTJxniJHPEcW2jiZPMuEgaOdVm_iTRzDE7p2jkztWL7X9_AwAA__-dZI_i +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysl09v2kAQxe_9FKs5taqRmV2bP5YqpU2IipRCClRt1XKgeBVZIjZdG4kk4rtXgIQDDTO7jm_B8PbNvPnNBp4g_7uACHo_bm8-9gfi7VV_PBl_vXknxr2b3uVErMX1aPhFrB8exffPvVFPrMXvVbOp5kKJb4P-cMB9UH8QSgxHV72R-PRTrMGDNIv1YHavc4h-AYIHEjxQ4EEAHoQw9WBpsrnO88xsP_K0E_TjNURND5J0uSq2j6cezDOjIXqCIikWGiKYzP4s9EjPYm38JngQ62KWLHY264fHi6VJ7mfmATy4zBar-zSPduWMl7Ptnw1fwnTjQbYqSoe8mN1piHDj2VdxnSwKbbTxw-MS9s8jcYFlMFEU9QeTzllj6WL8vH2stX9VqX9kApjz_QcuxldJXiTpvPDlSfMXeNYgrGYQWhu0zhqU567SzMTa6Pjo1OmGKkHZ99h26XGcmUIbX-Hp8e_Pnt85Oh8dIHVl1JcNX1luKVPHgdJW3VvqEkDNCahKCSATgfOeMsblGv0HmeWeWhu0Ku6ptJ-hdB6haviBJcRMHYcRtuuG2CEArDkBVSkBZCJwhpgxLhmTFSG2NmhXhFjZz1A5jzBo-KElxEwdhxF26obYIQCsOQFVKQFkInCGmDEuGVMVIbY26FSEOLCfYeA8wrBhiTBTxWGA3boRdmgfa-1fVeofmQCcAWaMS76CigBbG3Rr-Mr_gsFI58sszfXJV_-XT25ufxLo-E7vfz_k2crM9a3J5jub_cvhTrd7EOu82L-L-xf9dP_WtsDnYiTFIS2WpFjRYkWKA1ockOLWkRhPxeFrxC1S3KbLbtOBSVrdIdVdWtylKWGGhQxkHGU0Zsg0jjRozMSQJo1T06ghsyJIw4bM1JDGDRnekAYOO4ycJo5LjkaOUUuaOMkQJ2niJHez0cRJZl0kjZxkbjf5qutNvup-kzRxkiFOMlccNzaaOMmsi6SRU03mXxLNHJOcopE7VU83b_4FAAD__4nHoMI= # UNION with partial overlap. query T @@ -138,7 +138,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysl99u2kwQxe-_p1jN1VfVyMyuzR9LldI2REVKIQWqtmq5cPEqskRsujYSScS7VwYJAk1mdh1fYvvsmbPzm83mEYo_S4hg8P3m-v1wJP6_HE5n0y_Xb8R0cD34OBMbcTUZfxab-wfx7dNgMhAb8WvdbqvFOxGIr6PheMR9qQWK8eRyMBEffogNeJDliR7Fd7qA6CcgeCDBAwUeBOBBCHMPViZf6KLITfXJ404wTDYQtT1Is9W6rB7PPVjkRkP0CGVaLjVEMIt_L_VEx4k2fhs8SHQZp8udzeb-4WJl0rvY3IMH01WcFZFo-ZXzeF1G4gJhvvUgX5fH5YsyvtUQ4dazL-EqXZbaaOOHp_7755XPYVOiKBqOZr0XfaWL79Po2Fx2VSs7MuErdrj0gYvzZVqUabYofXkWnYgW1jMIrQ06Lxoc111nuUm00cnJqvMtVYKyz9h1yTjNTamNr_B8-bcvrt87WR8dELUg1JctXznPJ1PEgdFOw_PpEr7J9KpWemTiu08o43wcoH_wspxQa4NOzQmV9h2UNg1ULT9wxpcp4tDAbsP4OoTHJtOrWumRie-OL-N8pEvWxNfaoFsTX2XfQWXTwKC1u8O44csUcWhgr2F8HcJjk-lVrfTIxHfHl3E-0qVq4mtt0KuJb2DfwcCmgWHLGV6mhEP7-g3D6xAdm8uuamVHJrw7uozzkaygJrrWBv0GrvbPGEx0scqzQp9d8Z9fuV1d_XVyq_f_JxT52iz0jckXO5v9z_FOt3uQ6KLcv8X9j2G2f1UV-FSMpDikxZIUK1qsSHFAiwNS3DkR47k4fI24Q4q7dNldesMkre6R6j4t7tOUMM1CBjKOMhozZIIjDRrTMaRJ49Q0asiMCNKwIdM1pHFDhjekgcMeI6eJ43aORo5RS5o4yRAnaeIkd7LRxElmXCSNnGRON_mq402-6nyTNHGSIU4yRxzXNpo4yYyLpJFTbeZPEs0cs3OKRu5cPd_-9zcAAP__k7-P3A== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysl09v2kAQxe_9FKs5taqRmV2bP5YqpU2IipRCClRt1XJw8SqyRGy6NhJJxHevAAkCDTO7jm_B8PbNm_nNBp6g-DuHCHo_bm8-9gfi7VV_PBl_vXknxr2b3uVErMT1aPhFrB4exffPvVFPrMTvZbOpZh9EIL4N-sMB90ktUAxHV72R-PRTrMCDLE_0IL7XBUS_AMEDCR4o8CAAD0KYerAw-UwXRW42H3naCvrJCqKmB2m2WJabx1MPZrnRED1BmZZzDRFM4j9zPdJxoo3fBA8SXcbpfGuzeni8WJj0PjYP4MFlPl_eZ0W0LWe8iDd_NnwJ07UH-bI8OBRlfKchwrVnX8V1Oi-10cYPj0vYPY_EBe77EkVRfzDpnPWVLr7P02Ot8VWl-Mjk3xDENSBwcb5KizLNZqUvT9Jf4FmDsJpBaG3QOmtwOHeZ5SbRRidHp07XVAnKPmPbJeM4N6U2vsLT49-fPb9zdD46UOoKqS8bvrLcUqaOPaatmrfUJX_NDVCVGoBMB9z3lHE-rNF_kFnuqbVBq-KeSvshSucZqoYfWELM1LGfYbtmiB3yY80NUJUagEwH3CFmnA-MyYoQWxu0K0Ks7IeonGcYNPzQEmKmjv0MOzVD7JAfa26AqtQAZDrgDjHjfGBMVYTY2qBTEeLAfoiB8wzDhiXCTBX7CXZrRtghPdYaX1WKj0x-d4AZ5wNfQUWArQ26NXzlf8FgpItFnhX65Kv_yyc3Nz8JdHKnd78finxpZvrW5LOtze7lcKvbPkh0Ue7exd2LfrZ7a1PgczGS4pAWS1KsaLEixQEtDkhx60iMp-LwNeIWKW7TZbfphkla3SHVXVrcpSlhhoUMZBxlNGbIBEcaNGZiSJPGqWnUkFkRpGFDZmpI44YMb0gDhx1GThPHdY5GjlFLmjjJECdp4iR3s9HESWZdJI2cZG43-arrTb7qfpM0cZIhTjJXHDc2mjjJrIukkVNN5l8SzRzTOUUjd6qert_8CwAA__-Eh6C8 # UNION ALL with swapped column orders. query T @@ -159,7 +159,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslVGLm0AUhd_7K4b71MKImRnNbnzK0qYQsGabpFAoPtg4LILr2BkF3ZD_XmJodxOy44zmUa9nzjf3HJI9qD85BLD4-Rg-LCP08ctys918Dz-hzSJcfN6iBqMWfV2vvqGmfUE_ouUqQg9h-G_cYtT8HwOGQqQ8Sp65guAXEMBAAQMDDB5g8CHGUEqx40oJefxk3wmWaQPBBENWlHV1fB1j2AnJIdhDlVU5hwC2ye-cr3mSculOAEPKqyTLO5umfZmXMntOZAsYNmVSqAA57tF5VVcBmlM8JxAfMIi6enVQVfLEISAHPIzCt6QgeE7fpaDvUryaKy6zJEd1IWTKJU_P_OPDFdxIOKJ0yeTiy-sIEwMEe2_fyJudeRPzEIhBCC51XDakDBYcU2sOizqQ29aBDKgDNV8FNVkFc1xvSCQWHHfWHBaR0NtGQgdEwsxXwUxW4TndT5p1JBYc99YcFpGw20bCBkTima_CM1mF7wwJxIJiZklhEYd32zi8kf9hV05ec1WKQnHDk2MMPH3ip_soUcsdf5Ri19mcHledrnuRclWdpvT0sCy6UZfUWzEZI6ZaMdOLmVZMpmfqyaXa06qnemt_jHg65tJ3WvFML74fI56NwSb6jpG-kulb1isf1TPSUzS_R65vWq9c37VL9vjw4W8AAAD__7dTQPQ= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslUGLm0AYhu_9FcN3amHEzIxmdz1l2aYQsGabpFAoHmwcFsE4dkZBN-S_lxjabUJ2HMccdXz8Hr_3JdmD-p1DAPMfz-HjIkIfPy_Wm_W38BNaz8P50wY1GLXoy2r5FTXtK_oeLZYRegzDv8ctRs2_Y8BQiJRHyY4rCH4CAQwUMDDA4AEGH2IMpRRbrpSQx0f2HbBIGwgmGLKirKvj7RjDVkgOwR6qrMo5BLBJfuV8xZOUS3cCGFJeJVnejWna11kps10iW8DwJPJ6V6igMwcM6zI5Xjnu0WRZVwGaUTwjEB8wiLp6m6iq5IVDQA7Yzsq3tHpPhL4r8jZfcZklOaoLIVMueXqmEB-uGEfCEaVLJhdPXleYGCgMn-0bzWZns4l5DsQiB5c6LrPpxwCvqbWXWUPIbRtCLBpCzbdBbbbBHNezSWmA1521l1lK9LYpUYuUmPk2mM02PKf7LRyc0gCve2svs5TYbVNiFil55tvwbLbhOzYZDbB6sLQyS8i7bULeyP_DK29ecVWKQnHDN8cYePrCT9-jRC23_FmKbTfmdLnsuO5GylV1OqWni0XRHXVh_Q-TMTDVwkwPMy1Mpmf05JL2tPRUP9ofA0_HfPSdFn7Qw_dj4Icx2kTfMdJXMn3LevFRPSM9RfN7cH3TenF91y7d48OHPwEAAP__S0dirw== # UNION ALL and UNION with different ORDER BY types. query T @@ -186,7 +186,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ll1v2jwUx--fT2Gdq1aPUTiO05dc0a1MQmLQQSdtmrjIiFUhUZw5QYJWfPeJgETZmmPH1u6al39-53_8k8orlL-WkEL_28PwbjBiF_eD6eP0y_CSXUz7w_7HR7Zhnybjz2yzfWHjyX1_wj58Z9tL9nU0GI_Y3XBIvvhyefp7AxxWOlej7FmVkP4ABA4COMTAQQKHBGYcCqPnqiy12b_yWgcG-QbSLofFqlhX-9szDnNtFKSvUC2qpYIUHrOfSzVRWa5M1AUOuaqyxbLGbLYvvcIsnjOzBQ7TIluVKetEe_J4XaWsh7wXw2zHQa-rE6GssicFKe64-xRTbSplouR8gB7-f2I1gkQb0Nu66NFXNI4Re_RFr8KykXQCaJMro_K_Pz_bvTPOSHd0EYnzfTThu_8KnzjhkzM8tjhuh9OORCeKffy2zHE876twv9sU9mrsarhbY_SqLBtJgYqhh-HCfePCZeFxJ5I-ilnmOC78OlyxFoXRq7GrYm6N0auybCQFKiY8FIvdNx67LFx26n-lrRWzzHFc-E24Yi0Ko1djV8XcGqNXZdlIClQs9lBMum9cuiw86fgIZpniuO7bcMFa1EWPvq56ufVFr8KykRSolwz8GfjOlyeqLPSqVI5fnnFQ-ZM6dCn12szVg9HzGnO4HNe5-kauyurwFA8Xg9Xh0X7At2Ekw_IsjH-GBRmOaXIcQpZkOKHDCRkWV_TcV2T6mg5f02fVpQe_IdO3NPo2CI20ZZaNI60ZCouktGhoo9OqobTQadmsdFo3W5rWDS2-IS2csJ06bRxalEPaORtdBDknaOeExTlBOydsdNo5YXFO0M5Z6e2cm-3--x0AAP__SitYcQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ll1v2jAUhu_3K6xz1WpG4dhOP3LVrmUSEoMOOmnTxEVGrAqJYpYEKaHiv098SC1bc-zY2h35ePOe5_i54AWK3wtIoPf9YXDbH7Kz-_7kcfJ1cM7OJr1B7-6RVezzePSFVfWGjcb3vTH79IPV5-zbsD8astvBgHxxc_76uwIOS5PpYfqsC0h-AgIHARwkcFDAIYYph1VuZrooTL575WUf6GcVJF0O8-VqXe5uTznMTK4heYFyXi40JPCY_lrosU4znUdd4JDpMp0v9jVVvblZ5fPnNK-Bw51ZrJ-XRcIqzjbAYbJKd1edSMB0y8Gsy9eSokyfNCS45e6DTExe6jyKT2e4wY_AYbQuE3aDjUWiTdFbYnRGrt2QpQcyejGrxqbXApNnOtfZv5-fbt8ZZ2g6ZhWJ05U01Xf_V33sVB-f1GOLE_dwPBKdSDpabhnleOQX4Za3YXaGrl2hpQc0elGrxqZA0dDDc-G-dOEjmuxEylE0yyjHnV-Gi9aCGZ2ha1do6QGNXtSqsSlQNOEhmnRfuvQRTXWi2FE0yyjHnV-Fi9aCGZ2ha1do6QGNXtSqsSlQNOkhmnJfuvIRLe44amYZ5Ljx63DNWhCjM3Lthiw9kNGLWTU2BUqmAv8evvPlsS5WZlloxy9POejsSR9YCrPOZ_ohN7N9zeFytM_tb2S6KA9P8XDRXx4e7QZ8G0YyrE7C-HdYkGFJN8uQZkWGYzock2FxQc99QaYv6fAlfVZdevArMn1NV18HVSNtmWXjSGuGwiIpLRra2mnVUFnaadms7bRutjStG1p8Q1o4YTt12ji0KIe0c7Z2EeScoJ0TFucE7ZywtdPOCYtzgnbO2t7Ouen2w58AAAD__-lCatc= query T EXPLAIN (DISTSQL) (SELECT x FROM xyz ORDER BY y) UNION (SELECT x FROM xyz ORDER BY z) ORDER BY x @@ -209,7 +209,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslkuP2jAUhff9FdZdDapRsJPwyGraQiUkClOgUquKRUqsUSQmobaReIj_XhEWKczMtZ1kxyPnns_nHkU-gfq7gQhGP58mn8ZT8jAcL5aL75MWeViMJqMvS7InX-ezb2R_OJLZfDiak8-_yKFFfkzHsyn60LFVft4DhSxPxDR-EQqi38CAAgcKPlAIgEIIKwpbma-FUrm8PHIqBONkD1GHQpptd_ry84rCOpcCohPoVG8ERLCM_2zEXMSJkF4HKCRCx-mmsNkfjo9bmb7E8gAUFts4UxFpexfn2U5H5JHB6kwh3-lyvNLxs4CInWk1hLAxBO6CMEyVTrO19thdBoiBX80gtDYI3jUo5-6yXCZCiuRm6uqMIXD7M4YuZ1zkUgvpcXY__uO787s385l9T5hFTzze9nznsjpAdBuE4C4QZZteZW1ZV2uDbsW6cvsYuU2MftsLnHfpANFrEIK7QJRR84q7tDboVdylbx-jbxNj0C7e8267dIDoNwjBXSDKqP2Ku7Q26FfcZWAfY2ATY9h23qQDwqAxBO6CUMYcVNyjtcGggevAGwZzobZ5psTdteDtyZ3LdUEkz-J6t1D5Tq7Fk8zXhc3166zQFT8kQunrv_71yzi7_nUB_F_MUDHHxRwVBzdidi_264gDVBzi2CF-ZsOhu6h6gIt7qLiPi_t1EhvUETO8Y8xUMrxlzJA4q9UzVqtoDG8a6xnQ8a6xrkGOl83EjrfNpMbrxpkBHS8c7xheLXjjDOwcL9y9enX-8C8AAP__pOo-EA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysls-O2jwUxfffU1h3NaPPKNhJ-JPVtAOVkChMgUqtKhYpsUaRIKG2IwUQ714lLFLozI1tuhsnOT4_33M0-ATq1xYiGH97mX6YzMjDaLJcLb9MH8nDcjwdP69IST4t5p9JeTiS-WI0XpCP38nhkXydTeYz9KPjY_N3CRSyPBGzeCcURD-AAQUOFHygEACFENYU9jLfCKVyWX1yqgWTpISoSyHN9oWuHq8pbHIpIDqBTvVWQASr-OdWLEScCOl1gUIidJxua5vycHzay3QXywNQeM63xS5TESkpOQKF5T6uVh2vIpkXOiJPDNZnCnmhGzul41cBETtTN6TQFOlgi8RtkEap0mm20R67mRFi4LsZhMYGwbsGzb5FlstESJFc7bo-Ywjc_IyhzRmXudRCepzdbv__u_v3rvZn5r1hDlX2eMfzrctsAdVzKLMpFLeBatr2VxaGdTY26DnWmZuPlbtk7Xe8wDprC6i-S9aGUNwGqomCO2ZtbNB3zNo3H6vvknXQqX9H7LK2gBq4ZG0IxW2gmih8x6yNDQaOWQfmYw1csg471klbIA1dkjZC4jZITQyBY87GBsN_cB15w2Ah1D7PlLi5lry9c7e6rojkVVzuNiov5Ea8yHxT21yW81pXP0iE0pe3_mUxyS6vKsA_xQwVc1zMUXFwJWa3Yv8ecYCKQxw7xM_ccugeqh7i4j4qHuDiwT0TG94jZnjHWFvJ8Jaxlomzu3rG7ioaw5vG-i3oeNdYr0WOl62NHW9bmxqvG2ct6HjheLflXwveuBZ2jhfuVr0-__c7AAD__4vwbyU= # UNION ALL with conflicting numbers of ORDER BY columns. query T @@ -236,7 +236,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ll1v2jwUx--fT2Gdq1aPUTiO05dc0a1MQmLQQSdtmrjIiFUhUZw5QYJWfPeJgETZmmPH1i7z8s_v_I9_ErxC-WsJKfS_PQzvBiN2cT-YPk6_DC_ZxbQ_7H98ZBv2aTL-zDbbFzae3Pcn7MN3tr1kX0eD8YjdDYf0i5y9XJ4uN8BhpXM1yp5VCekPQOAggEMMHCRwSGDGoTB6rspSm_0rr3VgkG8g7XJYrIp1tb894zDXRkH6CtWiWipI4TH7uVQTleXKRF3gkKsqWyxrzGb70ivM4jkzW-AwLbJVmbJOtCeP11XKesh7gvdimO046HV1gpRV9qQgxR13H2SqTaVMlJzP0MP_T7hGkGgDetsYfSo3jhF79EWvwrKRdAJokyuj8r8_P9u9M85Id3QRifN9NOG7_wqfOOGTMzy2OG6H045EJ4o9FbeMcjzyq3DF23T2K-0ouVtj9KosG0mBlqGH5MJ948Jl4XEnkp6WWUY57vw63LIWndGvtKNlbo3Rq7JsJAVaJjwsi903HrssXHbqH1QfyyyjHHd-E25Zi87oV9rRMrfG6FVZNpICLYs9LJPuG5cuC086no5ZBjlu_DbcsRaN0aeyo2FufdGrsGwkBRomA_8SvvPliSoLvSqV45dnHFT-pA5dSr02c_Vg9LzGHC7Hda6-kauyOjzFw8VgdXi0H_BtGMmwPAvjn2FBhmOaHIeQJRlO6HBChsUVPfcVmb6mw9f0WXXpwW_I9C2Nvg1CI22ZZeNIa4bCIiktGtrotGooLXRaNiud1s2WpnVDi29ICydsp04bhxblkHbORhdBzgnaOWFxTtDOCRuddk5YnBO0c1Z6O-dmu_9-BwAA__9mrFxM +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0ll1v2jAUhu_3K6xz1WpG4dhOP3LVrmUSEoMOOmnTxEVGrAqJYuYECVrx3yc-JMrWHDu2dpmQ1-95jp8LXqH8PYMMOt8ferfdPju7744eR1975-xs1Ol17h7Zin0eDr6w1fqFDYb3nSH79IOtz9m3fnfQZ7e9Hv0hZy_nx8cVcJibQvfzZ11C9hMQOAjgIIGDAg4pjDksrJnosjR2-8nrLtAtVpC1OUzni2W1fT3mMDFWQ_YK1bSaacjgMf8100OdF9ombeBQ6CqfznY1q_XLzcJOn3O7Bg53ZrZ8npcZW_HdgMBhtMi3L1qJgPGGg1lWx56yyp80ZLjh_rOMjK20TdLTMW7wI3AYLKuM3WBtkWhS9BYa_an9kGUAMgYxq9qmY4Gxhba6-Pf48eadcfqmZRaJOF1JXX37f9WnXvXpST02uPEwzRPRSqSn6I5pDrd-ES96E2x_bl9oGQCNQdSqtinSNQxQXfgvXQS6JluJ8nTNMc1h7ZfxrjXARn9uX2gZAI1B1Kq2KdI1EeCa9F-6DHRNtZLU0zXHNIe1X8W71gAb_bl9oWUANAZRq9qmSNdkgGvKf-kq0LW05WmaY5bD0q_jTWsAjf7UfsgyABmDmFVtU6RnKvKv4jsnD3W5MPNSe5485qCLJ71nKc3STvSDNZNdzf5xsMvtXhS6rPa_4v6hO9__tB3wbRjJsDoJ499hQYYl3SxjmhUZTulwSobFBT33BZm-pMOX9F216cGvyPQ1XX0dVY20ZY6NI60ZCoektGjoaqdVQ-Vop2VzttO6udK0bujwDWnhhOvWaePQoRzSzrnaRZRzgnZOOJwTtHPC1U47JxzOCdo5Z3sz58abD38CAAD__zZCb3U= # Only one distinct processor should be used in the single node UNION case. query T @@ -280,7 +280,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9v2jwUh-_fTxGdq1ZvUGIn4U-kSXQr05AYdISLTVMuUuIVJEoyJ0ilFd99SijrkoBPTIrvCuSxfzl-To9fIPm9AhcG3-9GN8OxdnU79Gbet9G1duUNRoNPM22rfZ5OvmpP2-drbTieDaZe9u3NaHT0icn0djDVPv7QtqDDOgrZOHhkCbg_gYAOFHSwQAcbdHDA1yHm0ZwlScSzR15yYBg-gWvqsFzHmzT72tdhHnEG7guky3TFwIVZcL9iUxaEjBsm6BCyNFiu8m2ets_9mC8fA54l8OJgnbhay8h2nmxSV-tT8Hc6RJv0dfm3Ve-32iJIFsX1-gT8na9DkgYPDFyy08-L6SiNSU_GfFtns454yDgLCyv5GYk9cuRdvwTJwmPpJDZI6URm25i5RXVAhxX7lV71yfUHvnxY5H_9fXVSevW317Jkqu9FPGXcIE65Uv-fXN-uUbZjFXld9EiIcdSKYoOa5Rof3d4pbE_qy0VqyGXQlmFdpAskgrYVB6UngyroA6KoD5D6H_qgfW4f0PrnS-ucr9Uy7IuIKBG0ozgoPRlUgYhUkYhI_Q8ids4V0ap_vlad87Vb-Vh-fxElgnYVB6UngyoQ0VIkIlL_g4jdc0W065-vXed8ndZFNJSI2VMak56MqUBCW5GESPUPEvbe43p6ZP0pS-JonbBaN08zqxkLH9j-DJJow-fsjkfzfJv9x0nO5deNkCXp_le6_zBc5z_l51of7jSBCWlEO43onpgmEjUjcnCnCVyqmSztNKJ7YpqWafNf2irAZhm2hLAt3tkWwpSIt3aa9IcYRvpDDGP9gdBIfyA00h_tJv0hhpH-EMNYfyA00h8IjfRHR2hpVyxpt0l_9JoYLoYRw8UwZjhCI4YjNDYBZMZm9T-pzNyUpdEhIDU5pXFEc1KZIgVVCRWLTsRjBDGdVOaIjOoIjbiO0JjsGI7YjuGY7pUZKqW7mMZ0F9Oo7giO6Y7gmO6VQVrUvY3oXpkpUrpXZoqU7mIa011Mo7ojOKY7gmO6V-aplO5iGtNdTKO6IzimO4JjulemavGubYp1p5XZItTd3_33JwAA__80IHd3 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9vokoUx9_vX0HOU5s7BmYAf5DcpL2tmzVxtSs-7GbDA5XZamKFHTCpbfzfN2BNi-gcRsy8qfCZ-TLnczy8QfpnCR70fzwMbwcj4-p-4E_978Nr48rvD_t3U2NjfJmMvxkvm9drYzCa9id-_uvtcHj0jvHkvj8x_v9pbIDAKo74KHzmKXi_gAIBBgRsIOAAARcCAomIZzxNY5Hf8lYAg-gFPIvAYpWss_zngMAsFhy8N8gW2ZKDB9PwccknPIy4MC0gEPEsXCyLbV42rzeJWDyHIk9wFy_Xz6vUK-L4SZh_bJkMgi2BeJ297_Cx8OPGmIfpvLzkDYVgGxBIs_CJg0e35Lykru6k7GTSj3XWq1hEXPCotFKQk9gtRx73a5jOfZ6NE5Me1GW6SbhXFggILPnv7OqGXv8nFk_z4hMQGK8zzyge5fOjfzyWrVIAPxYZFyZ1D0_q35PrOzWO7diJvC96JMQobsWJyazDMz66vVvantb3i6r6ZbKWaV-wFxSytvVnZSezaugGqqkbkBLsu6F9bjew-iVmyiW2W6ZzQR0Vsnb0Z2Uns2rQkWnSESnBXsfOuTra9UtsK5fYaZnuBXVUyNrVn5WdzKpBR1uTjkgJ9jp2z9XRqV9iR7nEbuuCMiok7elOyk4m1aCio0lFpAB7FXuXeG09sv6Ep0m8SnmtN1IrPzMePfFdDdJ4LWb8QcSzYpvd13HBFS8gEU-z3VW2-zJYFZeKutaHO01gShvRbiO6J6epwplRNbjTBD44M1XabUT35DQ7pK3PtF2CrUPYlsKOfGdHCjMq39pt0h9yGOkPOYz1B0Ij_YHQSH-0m_SHHEb6Qw5j_YHQSH8gNNIfHamlXbmk3Sb90WtiuBxGDJfDmOEIjRiO0NgEUBmb1X9SlbmpSqNDQGlyKuOI5rQyRUqqUiYXncrHCGI6rcwRFdURGnEdoTHZMRyxHcMx3SszVEl3OY3pLqdR3REc0x3BMd0rg7SsexvRvTJTlHSvzBQl3eU0prucRnVHcEx3BMd0r8xTJd3lNKa7nEZ1R3BMdwTHdK9M1fK7tiXXnVVmi1T3YPvP3wAAAP__SkGIVw== query T EXPLAIN (DISTSQL) (SELECT y FROM xyz) INTERSECT (SELECT y FROM xyz) ORDER BY y @@ -303,7 +303,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF1v4kYYhe_7K6y5SlQjMx98WaqUbUNVJBq2wEWrKhdemCZILKa2kcJG-e8V0KwTD37PTGxzlwCP5_hlzqMxzyz9d81CNvzz8_jT6M67uh3N5rM_xtfe1Ww4Hv4y9_ber9PJ797T_tu1N7qbD6ezw6vn3p1Mb4dT7-e_vD3z2SZe6rvoq05Z-DfjzGeC-Uwynynmsw6799k2iRc6TePk8JHnIzBaPrGw7bPVZrvLDi_f-2wRJ5qFzyxbZWvNQjaPvqz1VEdLnQRt5rOlzqLV-rjM0_7bzTZZfY2SQ4LZNtqkodcKDitPdlno3Qh2_-KzeJfll0-z6EGzkL_4H4vQqS2CcIlwu0qz1WaRBbwwgxteWCBnvuy9xyh9PPP5PIT8WIhOrSFUaYj8OrtNnCx1opfvrnS8SmlMgWaVR-g0FQFNKo_QrRDB_1DK36L0caazyTaQhUnN91sdvqn_p_GY-Wyt_8mubvj1T8nq4fH41_dtXn5bPZcdNouTTCeBNKb2Y-n1-xZjOzeR_y96JsRd3Iq3gWoXZ3x2-cG75bm9SLiFSALRCqSzzRxCdGsMIVxC5CrhDfrMOkS3QZ_x-mSCZlXmsxojoEmV-cwtQmWf8Qv5DOywV58ZU7P1mbDvsrDpsmwFylkoDiF6NYYQLiHyLosGhWIdotegUER9bUazKhNKjRHQpMqE4hahslDEhYQCdtirUIyp2QpF2ndZ2nRZtY6PRG5CcQjRrzGEcAmRd1k2KBTrEP0GhSLrazOaVZlQaoyAJlUmFLcIlYUiLyQUsMNehWJMzVYoyr7LyqbLnZazThwiDGqLIFwi5D1WDcrEOsSgQZmo-pqMZlUmkxojoEmVycQtQmWZqAvJBOywV5kYU_vIzzdnrj_V6TbepNrql5n2YWZ6-aBP30Ea75KF_pzEi-Myp38nR-74wlKn2eldefpntDm9dQj4FuYkLGhYFGH-FlbvYO4Gc1mFFrwSPahCyx5NS5LuVIE5GDlNC1GFlu1KdJ-mFblNuzTccYBFEe6ScI8uSI-EwT33SVhxeukBSXPQbE5LhYPFuaEVFzMAGqkB4MgNCAdyADiyA6flAvQAaOQHgCNBABwZAuGgLtwwzPsti0ZHK6aAG5rgtGR4FxSG1gy6ddozog0Wp03DBwA3VONUdpqGZadxWHaAo7LTOCq7MCzrUnZAo7IDHJUd4KjsCAc7XoBzKzo9GqqhcKPsglaNUODYTKsG3TptGtEHi9OmEeBEIwzVOJ35aRoe-mkcnvoBjo79NA7LbljWqew0DctO47DsNA7LDnC04-mzrARfuwQPyJwuu6RVI8FJWtKqAbcuadNIcKyQtGlkB-CGalzKDmhUdoCjsiMclB3g8CHfsKzTUz5Nw8d8GofP-TQOH_QBjnY8fZaV6Hujz7IF3Cw7rRoFTtKKVk3x1u9ffvgvAAD__zV_Boc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF9v6jYYxu_3KSJftVpQsJ3wJ9Kknp0yDYmVM-Bi09SLHPBaJEpYEqTSqt99IpwqbUzex26S3rXAL37y4ucnh2eW_rdhIRv99W3yZXzjXFyP54v5n5NL52I-moy-LpyD89ts-ofzeHi6dMY3i9Fsfnz13LvT2fVo5vz6t3NgLtvGK3UTPaiUhf8wzlwmmMskc5nPXBawW5ftknip0jROjh95zoHx6pGFXZett7t9dnz51mXLOFEsfGbZOtsoFrJF9H2jZipaqcTrMpetVBatN_kyj4enq12yfoiSY4Kv8Wb_sE3DPM58Fx3_7HiC3b64LN5nxQppFt0pFvIX92MpgiZTCJsU1-s0W2-XmcdLk7jipQUK5vvBuY_S-zOfL0LIj4UIGg3hV4YorrPfxslKJWr17kr5VSpjCjSrIkLQVgQ0qSJCr0YE90Mpf4_S-7nKpjtPlia1OOxU-EYCXyYT5rKN-je7uOKXvyTru_v8L-ay6T4LHeK2-jY7bB4nmUo8qU3t58rrDwzGdm4iPy56JsRN3Il3nt8tz_js8sN3y3Nzl3Bbl3ii40lDp1nk6DWbQ9jkKITCW7SacYhei1bjzSkFzarKag1GQJOqsppdhNpW459kNbDDXq2mTc3UasK8zsK6zrLj-YZascjRbzaHsMlRNFq0qBXjEP0WtSKa6zSaVZVWGoyAJlWlFbsItbUiPkkrYIe9akWbmqlWpHmdpXWd_Y4XGGrFIseg2RzCJkfRaNmiVoxDDFrUimyu02hWVVppMAKaVJVW7CLU1or8JK2AHfaqFW1qplrxzevsW9c56BhKxSLFsMkUwiZF0Wa_RaUYhxi2qBS_uT6jWVUppcEIaFJVSrGLUFsp_icpBeywV6VoU_vIzzpnrj9T6S7epsroF5vucWZqdadO30Ea75Ol-pbEy3yZ07_TnMtfWKk0O70rT_-Mt6e3jgHfwpyEBQ2LMszfwv47mNvBXNahBa9FD-vQsk_TkqSDOjAHI6dpIerQsluLHtC0T27THg0HFrAowz0S7tMF6ZMwuOcBCfucXnpI0hw0m9NS4WBxrmnFxgyARmoAOHIDwoEcAI7swGm5AD0AGvkB4EgQAEeGQDioC9cM837LotHRiinhmiY4LRneA4WhNYNunfaM6ILFadPwIcA11ViVnaZh2Wkclh3gqOw0jsouNMvalB3QqOwAR2UHOCo7wsGOF-Dcik6PmmooXCu7oFUjfHBsplWDbp02jRiAxWnTCHCiEZpqrM78NA0P_TQOT_0AR8d-Godl1yxrVXaahmWncVh2GodlBzja8fRZVoKvXYIHZE6XXdKqkeAkLWnVgFuXtGkkOFZI2jQyALimGpuyAxqVHeCo7AgHZQc4fMjXLGv1lE_T8DGfxuFzPo3DB32Aox1Pn2Ul-t7os2wJ18tOq8YHJ2mfVk351m9ffvo_AAD__wBAF2c= # INTERSECT ALL and INTERSECT with MergeJoiner. query T @@ -324,7 +324,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElkFv2jAYhu_7FdZ3aiWjYCfQEmkS3co0JAYdcNg05ZASryDRJIuD1LTiv08J0zoC-Ivn4d1K48d-_eWR8r6A_LEGHwZf7kY3wzG5uB3O5rPPo0tyMRuMBu_npCAfppNP5Kl4JpPp7WBK3n0lxSUZjueD6axccDMaIYuBQpxEYhw-Cgn-N2BAgQMFFyh4QKEDAYU0SxZCyiQrl7xUwDB6Ar9NYRWnm7z8d0BhkWQC_BfIV_lagA_z8H4tpiKMROa0gUIk8nC1ro55Kp77abZ6DLMCKMzSMJY-aTnlyZNN7pM-h2BLIdnkv7Z_3fW-IMtQLvf36zMItgEFmYcPAny2pX8Xs2M1Jj8Z83WfTZxkkchEtLdTUJLYkiN3_RjK5Uzkk9RhtTcyL1Lh76sDFNbie37RZ5dvs9XDsvrr99VZ7eqv13INrnUk8zhpJanDOvUBHD3b2zubNX_zrMGbd3jLcc-iqEbQruWg_GRQC5IyS5Ly5vPnTebvthzvLKJoBL2yHJSfDGpBFG5JFLf5_N0m8_da1Tfn34uiEfTaclB-MqgFUVxLonjN5-81mX-ndRZNNGL2rMbkJ2NakMT7D93oSKKpkGkSS9Go-bTLO4noQexmJJNNthB3WbKojtn9nFRc9RWPhMx3T_nuxzCuHlVzbw53TeCeCcyMcrOOmmYaI2N6cNcE7pnAzCh3bWQHNK_T7T9pVw27Spjtz6xdpz0TwdUwIrgaRgRXw5jgCI0I3jERXA0jgqthRHA1jAmO0IjgXRPBr0wUVcOIomoYUVQNY4oiNKLotYmiahhRVA0jiqphTFGERhTtmSjKjHoCQiOSIjRiKUJjmmI41hXMyoJZWzCrC4Z9wawwMKPGwA4qg5atahqzVU1jtqpp1FYEx2zVKUuHU9dpS7o0ZqtWX9LGMVsPyoPS1mD75mcAAAD__yJddcg= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll1v2jAUhu_3K6xz1UpGwU5CS6RJ7VqmITHogItNUy5S4hUkirM4SE0r_vuUMIny5YNn5N2RJo_92ueR-r6B-j2HCDrfH3q33T65uO-OxqNvvUtyMer0OndjUpLPw8FX8lK-ksHwvjMkn36Q8pJ0--POcFR9cNvrIR8DhYVMRT95Fgqin8CAAgcKPlAIgEIIMYUslxOhlMyrT95qoJu-QNSkMFtky6L6c0xhInMB0RsUs2IuIIJx8jgXQ5GkIveaQCEVRTKb19u8lK83WT57TvISKNzJ-fJ5oSJSPYyypPrZ8DjEKwpyWfzdYbPwY0mmiZpuL3nDIF7FFFSRPAmI2Ir-W9LQdVJ-NOlmneVC5qnIRbq1UlyR2CcHjvslUdORKAaZx3bmMi4zEW0LBBTm4ldxccMuP-azp2n9CygMlkVE6qO8P_rmWL7FsQ5k7suGzDwW7l7Awb2Drb3Z6cNnpsP3eMPzzyiqQdaW-6z8aFYHqjJHqvLTR8CNR-A3vOCMuhhkvXKflR_N6kAX7kgX__QR-MYjCBpeeEZdDLJeu8_Kj2Z1oIvvSJfg9BEExiMIG2eUxSBp23VSfjSpA1WC_9CZDiQaCpXJhRInNaJmdSaRPon1HSm5zCfiIZeTepv146Dm6v_rqVDF-i1fP3QX9av63k-HWzZw2wZmVrlZqKeZwZUxM7hlA7dtYGaVe-fK9mi-Szff074e9rUw276z5i4d2AiuhxHB9TAiuB7GBEdoRPDQRnA9jAiuhxHB9TAmOEIjgrdsBL-yUVQPI4rqYURRPYwpitCIotc2iuphRFE9jCiqhzFFERpRtG2jKLPqCQiNSIrQiKUIjWmK4VhXsCsLdm3Bri5Y9gW7wsCsGgPbqwxGtuppzFY9jdmqp1FbERyz1aQs7d-6SVsypTFbjfqSMY7ZulcetLbGqw9_AgAA___Seoao query T EXPLAIN (DISTSQL) (SELECT y FROM xyz ORDER BY y) INTERSECT (SELECT y FROM xyz ORDER BY y) @@ -344,7 +344,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmMFu6kYUhvd9CuusEsnIzIwNxFKl3DZURaLhFli0qrLwxdMEiYtd20ghUd69wkh1Ysfn98R2ugvgz_P7ZL7DGZ4p_WdHPk3_-Dr_Mru1Lm5mq_Xq9_mldbGazqc_r62j9cty8Zv1eHyyFsub6dL66U_reGnNbtfT5ep0AX8h2bSPQn0bfNcp-X-RIJsk2aTIJpds8ujOpjiJNjpNo-R0yXMOzMJH8oc2bffxITu9fWfTJko0-c-UbbOdJp_WwbedXuog1IkzJJtCnQXbXb7M4_HpOk6234PkSDat4mCf-tbAOa28OGS-dS3p7sWm6JAVt0-z4F6TL17sj0XwOosgTSLcbNNsu99kjijV4FqUFiiYb0frIUgf3rm-CKE-FsLrNIRbG6K4z2EfJaFOdPjmTvldamNKVKsigtdXBFSpIsKoRQT7Qyl_DdKHlc4WsaNKlVofY-2_0v_LfE427fTf2cW1uPwx2d4_5H_9t83rH2vcbWVvo0EUO8orF-DdtSdv1hbNLRcNLHfkwFHGrcYgxKjDENIkROG56LHZNA4x6rHZiO5MR7WqazYdRkCVqms2ZhFaNxvxSc1GNndNNnFNDRzXWHiDEOMOQ0iTEIVrskfhG4cY9yi87M42VKs64TuMgCpVJ7xZhNbCy08SXjV3TTVxzR3k876Z8AYhJh2GkCYhCtdUj8I3DjHpUXjVnW2oVnXCdxgBVapOeLMIrYVXnyS829w1t4lr3sBYd4MIV51FkCYRCs_cHmVvHOKqR9nd7kxDtaqTvcMIqFJ1sptFaC27-z_8dvBOoqVO42if6ka_DAxPz6TDe32uURodko3-mkSbfJnzy0XO5W-EOs3On6rzi9n-_NEp4GtYsLDkYVmGxWvYfQMLM1jIVvRVG1qO2tBK8bRiaa8NLFotLYet6HEbWoHN4rLbFPy_PANYluERC4OHHvNqjni9JiwtBE9f8fQQ9IVKVzFxG9BIboQDuwGO9AY48ltUWqqJ4IBGhgMcKY5wsN0BjiQXlcb6dssivNJiOLwiuuB7DHp0vsmICdCNbzNiDPBKozGylaehrQBHtvI4tJXHoa2VJmtkK09DW3kc2gpwtGV5HNrKf8FIAYYofmwt4RVbJT-4gkeXfKeRHph7-U4jXYBXOo3R3MzTcHAGOJqceRyOzjyObJWVLmtiK6CRrQBHtiIcbVkeR7ZK_gtGTgDOT7IlvGorP8qiR-c7jQKnVAUOyGCOVvxQA-oOaGQrwoGtAEe2AhyedPmDMjrqgiN-u8XhYRfg6LQLfiNAu4b_glGodPwoW8Irtip-li0_-t3LD_8GAAD___KEBw0= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmMFu6kYUhvd9CuusEsnIzIwNxFKl3N5QFYmGW2DRqsrCF08DEsGubaRwo7x7BSwc7Pj8nthOdyHxx_xzMt_hDC-U_rsln8Z_fpt-mdxbV3eTxXLxx_TaulqMp-OvS-tg_Tqf_W49H35Ys_ndeG798pd1uLYm98vxfHF8gH-QbNpFob4PnnRK_t8kyCZJNimyySWbPHqwKU6ilU7TKDk-8nICJuEz-X2bNrt4nx1__WDTKko0-S-UbbKtJp-Wwfetnusg1InTJ5tCnQWb7WmZ58OP2zjZPAXJgWz6Gm33T7vUt44vFnFw_LHnSHp4tSnaZ_kKaRY8avLFq_2xFF6bKaRJirtNmm12q8wRhUrcisICOfP9YK2DdP3O83kI9bEQXqsh3MoQ-fvsd1ES6kSHF-90epfKmBLVKo_gdRUBVSqPMGgQwf5Qyt-CdL3Q2Sx2VKFSy0Os_TdN4Mt0SjZt9T_Z1a24_jnZPK5PP5FNs33mW8y2hu1W9j7qRbGjvGIB3l17dLG2qC-6MBXdkT1H1Ww4BjkG7eaQJjly20WHLad2iEGHLUe05zuqVVXLaTECqlRVyzGL0LjliE9qObK-btJYN9Vz3JraG-QYtptDmuTIjZMdal87xLBD7WV7zqFaVWnfYgRUqSrtzSI01l5-kvaqvm7KWDe353g1tTfIMWo3hzTJkRunOtS-dohRh9qr9pxDtarSvsUIqFJV2ptFaKy9-iTt3fq6uca6eb2a0hukuGkzhTRJkdvmdqh87RA3HSrvtucbqlWV8i1GQJWqUt4sQmPl3f_hO4V3Es11Gke7VNf6xqB_3JMOH_W5Rmm0T1b6WxKtTsucX85O3OkXoU6z81_V-cVkd_7TMeBbWLCw5GFZhMVb2L2AhRksZCP6pgktB01opXhasbTXBBaNlpb9RvSwCa3AYXHZYwr-X54BLIvwgIXBpoe8mgNerxFLC8HTNzzdB32h1FVM3AY0khvhwG6AI70BjvwWpZZqIjigkeEAR4ojHBx3gCPJRamxXh5ZhJdaDIeXRBd8j0Fb55uMGAHd-DYjhgAvNRojW3ka2gpwZCuPQ1t5HNpaarJGtvI0tJXHoa0AR0eWx6Gt_AeMFGCI4sfWAl6yVfKDK9i65DuN9MDcy3ca6QK81GmM5maehoMzwNHkzONwdOZxZKssdVkTWwGNbAU4shXh6MjyOLJV8h8wcgRwfpIt4GVb-VEWbZ3vNArcUhW4IIM5WvFDDag7oJGtCAe2AhzZCnB40-UvyuiqC674zRaHl12Ao9su-I4AnRr-A0ah0vGjbAEv2ar4Wba49YfXn_4LAAD__zFXF-0= # INTERSECT ALL and INTERSECT with no overlap. query T @@ -374,7 +374,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF2P2kYYhe_7K6z3alc1MjNjvixF2rQhChKFFJDaquXCgekuEsHUNhJktf-9MmSXtU3m-DWsuQsfz8zkeJ4zwz5S9N-SPOr--bn_vjewbj70xpPx7_1b62bc7Xd_nVhb6-No-Ju13X2z_vjUHXWtrfXPpl5XM0veWr3BpDsaJ1973-9DRL9LmOHoQ3dk_fKXtSWbVsFcD_yvOiLvbxJkkySbFNnkkk0Nmtq0DoOZjqIgTL7yuAd68y15dZsWq_UmTt6e2jQLQk3eI8WLeKnJo4n_ZalH2p_r0KmTTXMd-4vlfprt7tvdOlx89cMd2TRe-6vIs2pOMvNwE3vWnaDpk03BJj4OH8X-vSZPPNnFl_BxsYx1qEOnkZ7_8H4yzzEWz_N6g0k7M_FxrC8768GPHtID7Rd6XJzkLO51PuJyAalSAQmQ0OwyAbk_XNxxnM0qCOc61PPUSNOERF858T_85EcPYx0P147MZDzZrbWX9odsWup_45s7cfsuXNw_7P9VIPMGJ_NxEMY6dGQjm9TPPxy_WSC2U4l8H_TEIgZBLVg7qp7N-OT0rdT0grGtC-xqR9YcxRYfLOJlXzevIT4noUtGpEpFJEBGb6K-qFZ9UZH6IPNn9Ztl1ZfFd5YssrFUzXHZ7oFFvGys1jXcYyQkLhmRKhWRABm9iXuyWvdkRe6BzJ_da5V1TxXfWarIxnJr-2spzz2wiJeN1b6Ge4yExCUjUqUiEiCjN3FPVeueqsg9kPmze-2y7rnFd5ZbZGM1amzzwBJetlXnGuYx8hGXC0iVCkiAhN7EO7da79yKvAOZP3vXucRPzRPjj3S0DlaRLvQrsp5kpuf3-vAMomATzvTnMJjtpzm8HO65_RtzHcWHT8XhRW91-ChZ4GtYZGHxGnZTsOTBQpxFt86hpTqL7phpaUxcmRNXjMQFD84kzqVb59CZxLl0x0y7xsQb5sQbRrhpnrlpftZAr5aRbpvh9jlummHkJqCBm2YauQlo4GbH3IZ1UIe5MuXYCWikJ8KBnwBHgiIcGCpylZoOXoLgzZ0KJBW5dklP7oLJc_XCOgXNNDwGAY7OQTMOD0KAA9uEuVtFEwSfa1eWbmYa6gZwpJsZh7oBHOlmPlkEOFpErmRZuplLVoKSlZySzV--WCXLxoFuAEe6IRxdPM0lK0HJylzJcnQDNNIN4UA3gCPdEA50k-YDRoIDRprvr0A3aS5ZCUpWcko2v-VYJcvGkW6skmXjSDdzyUpQspJzgc8_ddYNno0j3Vh3eDaOdDMfMAocMMr8J5GsbtOnn_4PAAD__ygb0uo= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYUhu_7K6xzlahGZmbMl6WVst1ltUgUtoDUVi0XXpgmSART20iwUf57ZWhCbJN5fQxx7vh6PJOX87xj8kDRv0vyqPvHt_7H3sC6-twbT8a_9a-tq3G33_00sbbWl9HwV2u7-2H9_rU76lpb6-9Nva5mlry2eoNJdzROPvax34eI_pAww9Hn7sj65U9rSzatgrke-Pc6Iu8vEmSTJJsU2eSSTQ2a2rQOg5mOoiBMPvKwB3rzLXl1mxar9SZOXp7aNAtCTd4DxYt4qcmjif99qUfan-vQqZNNcx37i-V-me3ux806XNz74Y5s-hQsN_eryNtvZ7z2k4c1R9L00aZgEx9XiGL_VpMnHu3iu_iyWMY61KHTSG_h8Lpn3YhjMp7n9QaTdmbh47W-76w7P7pLX-hG0PTxuDnJ2dzLiMRFM1KlMhIgpNllMnJf3dzxOptVEM51qOepK00TEn3kxF_41Y_uxjoerh2ZiXmyW2svbRHZtNT_xFc34vpDuLi92z8im4abOIni1cwbnMzHQRjr0JGNbFI_v3r9ZoHYTiXy_0VPbGIQ1IK1o-rZjE8u30otLxiTzR1sR9YcVVB_sI_n0W6-h_6ckC6ckiqVkgAxvUkBiGoLQFRUACDzpwJoli0AWXy4JHu2VM1xCxoI9vE8W633MJARkrhwSqpUSgLE9CYGymoNlBUZCDJ_MrBV1kBVfLgUe7bcmtMoaCDYx_Nstd_DQEZI4sIpqVIpCRDTmxioqjVQVWQgyPzJwHZZA93iw-WyZ6tRK-gf2MXzZHXewz9GROKiGalSGQkQ0pvY51Zrn1uRfSDzJ_s6l_gJeuL6Ix2tg1WkC_26rCeZ6fmtPnwHUbAJZ_pbGMz2yxyeDvfc_oW5juLDu-LwpLc6vJVs8CUssrB4CbspWPJgIc6iW-fQUp1Fd8y0NCauzIkrRuKCB2cS59Ktc-hM4ly6Y6ZdY-INc-INI9w0r9w0f9dAr5aRbpvh9jlummHkJqCBm2YauQlo4GbH3IZ1UIe5MuXYCWikJ8KBnwBHgiIcGCpylZoOXoLgzZ0KJBW5dkkv7oLFc_XCOgXNNDwGAY7OQTMOD0KAA9uEuVtFEwSfa1eWbmYa6gZwpJsZh7oBHOlmPlkEOFpErmRZuplLVoKSlZySzd98sUqWjQPdAI50Qzi68TSXrAQlK3Mly9EN0Eg3hAPdAI50QzjQTZoPGAkOGGm-fwW6SXPJSlCyklOy-ZFjlSwbR7qxSpaNI93MJStByUrODXz-W2fdwbNxpBvrHp6NI93MB4wCB4wy_0skq9v08af_AgAA____MuPK query T EXPLAIN (DISTSQL) (SELECT x FROM xyz WHERE x < 2) INTERSECT (SELECT x FROM xyz WHERE x >= 2) ORDER BY x @@ -403,7 +403,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82Ftv4kYYBuD7_gprrhLVyMzBBCytlG3DapEobAGprdpcsDBNkFhMbSPBRvnvFbCJw8Hf62HGuQvg198h9iPwE0v_m7OItf_80v3Y6XlXd53haPh799q7Gra77V9H3tr7NOj_5q03370_PrcHbW_t_bOq1-XEE9depzdqD4bbw9Dh-sP2-P7grj3wfvnLWzOfLeKp7o2_6ZRFfzPOfCaYzyTzmWI-C9m9z5ZJPNFpGifbQ552gc50zaK6z2aL5Srbvn3vs0mcaBY9sWyWzTWL2Gj8da4HejzVSVBnPpvqbDyb78qsN99vl8ns2zjZMJ8Nl-NFGnm1YFu5v8oi75az-2efxassP32ajR80i_izX76FT7N5phOdBOFh_f372zr5WqIo6vRGzcLCwqTw29m5u-HlRcNzMP0ED69MCt_N0my2mGSBOJr8ZLI883XjPY7TxzPH502ElzUROm2iUdhEfp7VIk6mOtHTgzPtzlLYpkS7ylu4qaoFtKm8haZFC_5FXX4ep49DnfWXgTra1Giz1NEbAz92u8xnc_1vdnXLrz8ks4fH3V8l7q-WyRU2jJNMJ4E62drPxXjVS-zt3Ep-nPVMF724Fi-DsH685PP1D_XkBoiVMCwQtUAaEw6aeFWs4Zpwk-ldji8vGp-D-Y0RB4VzP3mFiJduolEh4tydoGhXRYg7bAFtqghxsxasEefvhDi4wl4QP9laacRFeUZEGUVkLVDGiIImXhW5cY2owfTc5fjyovE5mN8YUVA490tUiGjpJm4qRFS4EwztqghRhy2gTRUhataCNaLinRAFV9gLoidbK42oLM-ILKOIqu1-8pshCpp4VaTpGlGD6bnL8eVF43MwvzGioHDul6wQ0dJNNCtEVLoTDO2qCFGHLaBNFSFq1oI1ovKdEAVX2AuiJ1srjagqz4gqo0hYMyYUtPBqSMs1oQazc3fDy4uG52B6Y0BB4dwuVSGgpZtoVQiocqcX2lURoA5bQJsqAtSsBWtA1TsBCq6wF0BPtnbR89gzBQY6XcaLVJd61FrfLk1PH_T-n5DGq2SivyTxZFdm_7K_y-3emOo023_K9y86i_1H2wbfhjkZDumwIMOSDksyrOiwOg7zt-HGQZibhfmNTVpYpaVVWoF0SKatwrxpkxZWaWmVViDdIC9TEL4xCIvjcJMMt-gbpEWjUKf75rQpIUKFVoULEKdd4Q0Qp2XhgBZ-cpMdxoGJnL7cAE0gjWwCcYQTiCOdQBzxxE9uNROfQBoBBeJIKBBHRIE4MorTzvAWiNPSHMVPnOK0NaIOvkSA7y-AKkFbI4A1grZGAGsEbY0A1gjaGoG-f1lZA9LIGhBH1oA4sgbEkTXCyhqQRtaAOLIGxJE1II6sEbQ1AlgjaGsEsEbQ1khgjbSzRtLWSGCNBL-XgDWStkYCayRtjQTWSCtrQBpZA-LIGhBH1oA4skZaWQPSyBoQR9aAOLIGxJE1krZGAmskbY0E1kjaGgWsUXbWKNoaBaxRtDUKWKPA0xn0eIa2RgFrlJU1IA2f79hZA-LwCY-dNcrKGpBG1oA4sgbEkTUgjqxRtDUKWKNoaxSwRtHWhMCa0NCa--ef_g8AAP__HWJhhQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82Ftv4kYcBfD3fgprnhLVyMzFXCytlO2G1SJR2AJSW7V5YGGaIBFMbSNBonz3CmjicPH_eJghbwF8PP85O_zE-pml_85YxFp_fO98bne9q9v2YDj4rXPtXQ1andaXobfyvvZ7v3qr9ZP3-7dWv-WtvL-X1aoce-Laa3eHrf5gcxm6XH_aXN_r37b63i9_eivms3k80d3Ro05Z9BfjzGeC-Uwynynms5Dd-WyRxGOdpnGyueR5G2hPViyq-mw6Xyyzzdt3PhvHiWbRM8um2UyziA1HP2a6r0cTnQRV5rOJzkbT2XaZ1frpZpFMH0fJmvnsSzxbPs7TaDvOYDHa_FkJBLt78Vm8zPIV0mx0r1nEX_zyU3ydzjKd6CQI90fYvR95NzxvJoqidnfYKFxYmCz8fvvc6f7lWfvnoIAx3r8yWfh2mmbT-TgLxMHmb_jBAnnmx9p7GKUPJ67PhwjPGyJ0OkStcIj8Pst5nEx0oid7d9repXBMibrKR6hfagTUVD5Cw2IE_6wpv43Sh4HOeotAHTQ1XC909E7Cz50O89lM_5Nd3fDrT8n0_mH7F_NZb5ltjn3htpomJ2wQJ5lOAnXU2s_FflVL9Haqkv_vemKKblyJF0FYPSz59Pr7gHIDx0wZC0QlkCUhB3O8QVZzDblJAY4bkGc1wEEFxpSDhXNF-QUpLz1E7YKUc3eOoq6KKHc4AmqqiHKzEawp5x9EOThhr5QftVaaclFeEmEMiawEqiSlYI43SOquKTUogDtuQJ7VAAcVGFMKFs4VExektPQQ9QtSKtw5hroqotThCKipIkrNRrCmVHwQpeCEvVJ61FppSmV5SaQxJKoShCUpBXO8QdJwTalBAdxxA_KsBjiowJhSsHCumLwgpaWHaFyQUunOMdRVEaUOR0BNFVFqNoI1pfKDKAUn7JXSo9ZKU6rKS6KMIQkrJSEFU7wx0nQNqcH2udP9y7P2z0EBxoyChXPB1AUZLT1E84KMKneGoa6KGHU4AmqqiFGzEawZVR_EKDhhr4wetXbWc9oTC_R1uojnqS71CLa6KU1P7vXuHyGNl8lYf0_i8XaZ3cveNrd9Y6LTbPcp371oz3cfbQZ8H-ZkOKTDggxLOizJsKLD6jDM34dre2FuFuZ1m7SwSkurtALpkExbhXnDJi2s0tIqrUC6Rh5TEK4bhMVhuEGGm_QXpEmjUKXn5rQpIUKFVoULEKdd4TUQp2XhgBZ-9CXbjwMTOX3cAE0gjWwCcYQTiCOdQBzxxI--aiY-gTQCCsSRUCCOiAJxZBSnneFNEKelOYgfOcVpa0QV_IgAv18AVYK2RgBrBG2NANYI2hoBrBG0NQL9_rKyBqSRNSCOrAFxZA2II2uElTUgjawBcWQNiCNrQBxZI2hrBLBG0NYIYI2grZHAGmlnjaStkcAaCf6_BKyRtDUSWCNpaySwRlpZA9LIGhBH1oA4sgbEkTXSyhqQRtaAOLIGxJE1II6skbQ1ElgjaWsksEbS1ihgjbKzRtHWKGCNoq1RwBoFns6gxzO0NQpYo6ysAWn4fMfOGhCHT3jsrFFW1oA0sgbEkTUgjqwBcWSNoq1RwBpFW6OANYq2JgTWhIbW3L389F8AAAD__xNVcmU= # INTERSECT ALL and INTERSECT with some overlap. query T @@ -433,7 +433,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYYhe_7K0bvVaIamZkxX5ZWYttltUgUtoDUVi0XXpgmSCx2bSOFRPnvlWEDsU3meAwxd8vH43n3eJ4zJk8U_bcil3p_fh187A_Zzaf-ZDr5fXDLbia9Qe_XKduyz-PRb-xh-8j--NIb99gD-2dTr8s5k7esP5z2xpPkax8HA4ioD4zfstH4U2_MfvmLbcmitb9QQ--7isj9mzhZJMgiSRY5ZFGDZhYFoT9XUeSHyVeedkB_8UBu3aLlOtjEydszi-Z-qMh9ongZrxS5NPW-rdRYeQsV2nWyaKFib7naLfOwfewG4fK7FyYTTAJvHbmsZicrjzaxy7rc6gqaPVvkb-LjClHs3Sly-bNVfIrPy1WsQhXajfQI-_eTpY7JuK7bH07bhymyIxyv-m3L7r3oPn3JLqfZ83FMYTLm67D4RdOSpdLiIK45k5dNy3lzzON1Nms_XKhQLVJXmiUk-sqJ_-sXL7qfqHgU2CIT-HQbKDdtFlm0Uv_GN11--yFc3t3v_nW8AW-m3zBJf-KHsQpt0cgm9fOb128WiO1UIj8uemKIoV_zA1vWsxmfXL6VWp4b7PECW9wWNVuWqQQwx2GTN69bCSZxXTgvWSovDgJ751Lg1ZYCr6gUQPovpdAsWwqi-DYTRXaZrNlOGSvBHIdd1rqulQZx8QvnJUvlxUFg72ylqNZKUZGVIP0XK1tlrZTFt5ksssuc2u4J19hKMMdhl7Wva6VBXPzCeclSeXEQ2DtbKau1UlZkJUj_xcp2WSud4tvMKbLLGrUyToIpDnusc10nDcLiF01LlkqLg7je2UinWiOdiowE6b8Y2bnET9oT1x-rKPDXkSr0a7WeZKYWd2p_DyJ_E87V19Cf75bZvxztuN0bCxXF-0_5_kV_vf8oGfA1zLMwfw07KViYwZyfRbfOoYU8i-7oaaFNXOoTlwaJczM4k7gp3TqHziRuSnf0tKNNvKFPvKGFm_qVm_p7DfRqaem2Hm6f46YeRm4CGripp5GbgAZudvRtWAd1mCtTEzsBjfREOPAT4EhQhANDea5S08ELELy-U4GkPNcu6cUdsHiuXoxOQT0Nj0GAo3NQj8ODEODANq7vVt4Ewefa1Ug3PQ11AzjSTY9D3QCOdNOfLBwcLTxXska66UtWgJIVJiWbf_gyKlljHOgGcKQbwtGDp75kBShZkStZE90AjXRDONAN4Eg3hAPdhP6AEeCAEfrnV6Cb0JesACUrTEo2v-WMStYYR7oZlawxjnTTl6wAJStMHuDzd93oCd4YR7oZPcMb40g3_QEjwQEj9X8Syeo2e_7p_wAAAP__PE7xoQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYYhe_7K0bvVaIamZkxX5ZWYrvLapEobAGprVouvDBNkAh2bSPBRvnvlaGB2CZzPIY4d-Hj8bwc5jlj8kjRvytyqffHt8HH_pDdfO5PppPfBrfsZtIb9D5N2Y59GY9-ZdvdD_b71964x7bs7029LudM3rL-cNobT5K3fRwMIKI-MH7LRuPPvTH75U-2I4vW_kINvQcVkfsXcbJIkEWSLHLIogbNLApCf66iyA-Ttzzugf5iS27douU62MTJ0zOL5n6oyH2keBmvFLk09b6v1Fh5CxXadbJooWJvudovs9396Abh8sELkwk--avNwzpy2dbaTzQJvORRzRY0e7LI38SnRaLYu1Pk8ier-CBflqtYhSq0G-kpDs-7rMtP4biu2x9O22TRaBO7rJsd4XTV7zt270X36Ut2Oc2eTmMKkzFf5sWvHZgsFRgHic2ZvG5gzqtjnq6zWfvhQoVqkbrSLCHRW8581q9edD9R8SiwRSbz6S5Qbtovsmil_olvuvz2Q7i8u9__dfzo_NX0GybpT_wwVqEtGtmkfn71-s0CsZ1L5P-Lnhli6Nf8wJb1bMZnl2-llucG27zELrdFzZYFiwGMctznzfctBpPErh-ZLBUZB5m9cTXwaquBV1QNIP3namiWrQZRfKeJMhtN1mynoJtglONGa72vmwaJ8etHJktFxkFmb-ymqNZNUZGbIP1nN1tl3ZTFd5oss9Gcmt0o6CYY5bjR2u_rpkFi_PqRyVKRcZDZG7spq3VTVuQmSP_ZzXZZN53iO80ps9EatYJmgkGO26zzvmYa5MWvHZgsFRgHib2xl061XjoVeQnSf_ayc42fumeuP1ZR4K8jVehXbD3JTC3u1OE7iPxNOFffQn--X-bwcLTn9k8sVBQfXuWHB_314aVkwJcwz8L8JeykYGEGc34R3bqEFvIiuqOnhTZxqU9cGiTOzeBM4qZ06xI6k7gp3dHTjjbxhj7xhhZu6ldu6r9roFdLS7f1cPsSN_UwchPQwE09jdwENHCzo2_DOqjDXJma2AlopCfCgZ8AR4IiHBjKc5WaDl6A4PWdCiTluXZJL-6AxXP1YnQK6ml4DAIcnYN6HB6EAAe2cX238iYIPteuRrrpaagbwJFuehzqBnCkm_5k4eBo4bmSNdJNX7IClKwwKdn8zZdRyRrjQDeAI90Qjm489SUrQMmKXMma6AZopBvCgW4AR7ohHOgm9AeMAAeM0N-_At2EvmQFKFlhUrL5LWdUssY40s2oZI1xpJu-ZAUoWWFyA5__1o3u4I1xpJvRPbwxjnTTHzASHDBS_y-RrG6zp5_-CwAA__91qAQW query T EXPLAIN (DISTSQL) (SELECT y FROM xyz WHERE x < 3) INTERSECT (SELECT y FROM xyz WHERE x >= 1) ORDER BY y @@ -462,7 +462,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82F1v2lYcBvD7fQrrXCWakTkv5sVSJbqFqkgMOkDapi0XFM4SJIqZbaTQKN99AhocXvx_jn3s3DWEh_P0qf0T9TOL_1uygHX__NL_2Bs4N3e98WT8e__WuRl3-91fJ87W-TQa_uY8bb87f3zujrrOk_PPpl6XM0feOr3BpDsa796G3q4_OPzWGY7uuiPnl7-cLXPZKpzrwfSbjlnwN-PMZYK5TDKXKeYyn927bB2FMx3HYbR7y_M-0Js_saDussVqvUl2L9-7bBZGmgXPLFkkS80CNpl-XeqRns515NWZy-Y6mS6W-2Oett8762jxbRrtGozX01UcODVvd_JwkwROh7sdwe5fXBZukvSEOJk-aBbwF9e8xafFMtGRjjz_tMLh9d1R6TJBEPQGk9axRXYFkafC2yF4qUvIQktwMMXMkeZLqDwV7hZxsljNEk-czdDhZwekma9b53EaP155f1rCL1bCL7VEI7NE-jmbVRjNdaTnJ5-0_5TMmhJtlVZoVlUBLZVWaFlUcAu1_DyNH8c6Ga49dbbUZLvWwRsdP_b7zGVL_W9y0-G3H6LFw-P-T-nNlvnXaue5wsZhlOjIUxer_ZxtWt1gt2uT_PjUKy0GYS1ce379fOTr55-iynOIZgCaJ2qeLII76HEkrVEd7nmmKHkLWWgLDsaw4B1USGXlFfJuXKJRIe-8PFvRVlm8l1gBLZXFe74K1rzzd-IdXGGvvF-sZsy7MDdFmJAia54qwivocSSlWR2vOabgJW8hC23BwRgWvIIKqWyiQl6NSzQr5FWUZxvaKovXEiugpbJ4zVfBmlfxTryCK-yV14vVjHmV5qZIE1JUbf_0IDevoMeRlFZ1vOaYgpe8hSy0BQdjWPAKKqSyyQp5NS7RqpBXWZ5taKssXkusgJbK4jVfBWte5TvxCq6wV14vVjPmVZmbokxI8WtFcAUtjqC0q8M1xxC81CVkoSU4mMKCVlAhVU1VSKtxiXaFtKryXENbZdFaYgW0VBat-SpY06reiVZwhb3SerFaoee-Vw4Y6XgdrmJt9Ei3vhtNzx_04R8hDjfRTH-Jwtn-mMOPw31u_8Jcx8nht_zwQ291-NWu4NswJ8M-HRZkWNJhSYYVHVbnYf423DgJ83xh3rRJC6u0tEorkPbJtFWYt2zSwiotrdIKpBvkZQrCzRxhcR5ukeE2fYO0aRTqdG9Om-IjVGhVuABx2hXeAHFaFg5o4Rc32WkcmMjpyw3QBNLIJhBHOIE40gnEEU_84lbL4xNII6BAHAkF4ogoEEdGcdoZ3gZxWpqz-IVTnLZG1MGXCPD9BVAlaGsEsEbQ1ghgjaCtEcAaQVsj0PcvK2tAGlkD4sgaEEfWgDiyRlhZA9LIGhBH1oA4sgbEkTWCtkYAawRtjQDWCNoaCayRdtZI2hoJrJHg_0vAGklbI4E1krZGAmuklTUgjawBcWQNiCNrQBxZI62sAWlkDYgja0AcWQPiyBpJWyOBNZK2RgJrJG2NAtYoO2sUbY0C1ijaGgWsUeDpDHo8Q1ujgDXKyhqQhs937KwBcfiEx84aZWUNSCNrQBxZA-LIGhBH1ijaGgWsUbQ1ClijaGt8YI2f05r7l5_-DwAA__9zsYA8 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82FuP2kYcBfD3forRPGVVIzMXs2ApEmmWKEgUUkBqq3YfCEx3kVhMbSNBVvvdK6CLl4v_x_bY-xYuB5-cDD8RP_Po3wX3eeePb71P3T77cNcdjUe_9W7Yh1Gn1_k8Zlv2ZTj4lW22P9jvXzvDDtuwv9f1upoydcO6_XFnONq9Db3dfGTihg2Gd50h--VPtuUOXwYz0588mYj7f3HBHS65wxV3uOYO9_i9w1dhMDVRFIS7tzzvA93Zhvt1h8-Xq3W8e_re4dMgNNx_5vE8Xhju8_Hk-8IMzWRmQrfOHT4z8WS-2F9ms_3RXoXzp0m4a_A5WKyflpHPNs6-0Wg12T2quZLfvzg8WMfJRaJ48mC4L16c7EW-zBexCU3oeqctDs_7rC2ScXzf7_bHTe7wwTr2WTu9gsxT4e0WouwxVKExBFhjylT2MXSeCnfzKJ4vp7Erz5Zoi7MLJJnvW_Y4iR6vvD8p4RUr4ZVaopFaIvmc9TIIZyY0s5NP2n9Kak2Ftkoq3FZVAS2VVGhaVHAKtfw6iR5HJh6sXH221Hi7Mv4bIz_1etzhC_NP_KEtbj6G84fH_Z-Oxzz9r9XKc8JGQRib0NUXq_2czlo9w27XJvn_U6-06Ae1YOV69fORr1__1FWRA7UCprmy5qqMxIMqR9Ua1RGfZ43y51CF5hBgDwvkQYXEV1Eh8plLNCpEXpQnLNoqDfkSK6Cl0pDPV8EaefFOyIMT9or8xWqZkZfZWZFFVFE1V2dEFlQ5qnJbHbI51hDlz6EKzSHAHhbIggqJb7JCZDOXuK0QWVmecGirNGRLrICWSkM2XwVrZOU7IQtO2CuyF6tlRlZlZ0UVUUXXXC8jsqDKUZVmdcjmWEOUP4cqNIcAe1ggCyokvqkKkc1colkhsqo84dBWaciWWAEtlYZsvgrWyKp3QhacsFdkL1bLjKzOzoouoopXy0gsKHI0pVUdsTm2EGWPoQqNIcAaFsCCColtukJgM5doVQisLk83tFUasCVWQEulAZuvgjWw-p2ABSfsFdiL1QrdD75ygaGJVsEyMplu9dZ3o5nZgzn8I0TBOpyab2Ew3V_m8HCwz-2fmJkoPrwqDg-6y8NLu4Jvw4IMe3RYkmFFhxUZ1nRYn4fF23DjJCzyhcWtTVpapZVVWoO0R6atwqJpk5ZWaWWV1iDdII8pCN_mCMvzcJMMt-gvSItGoU73FrQpHkKFVkVIEKddEQ0Qp2URgBZx8SU7jQMTBX3cAE0gjWwCcYQTiCOdQBzxJC6-anl8AmkEFIgjoUAcEQXiyChBOyNaIE5Lcxa_cErQ1sg6-BEBfr8AqiRtjQTWSNoaCayRtDUSWCNpayT6_WVlDUgja0AcWQPiyBoQR9ZIK2tAGlkD4sgaEEfWgDiyRtLWSGCNpK2RwBpJW6OANcrOGkVbo4A1Cvx_CVijaGsUsEbR1ihgjbKyBqSRNSCOrAFxZA2II2uUlTUgjawBcWQNiCNrQBxZo2hrFLBG0dYoYI2irdHAGm1njaat0cAaTVujgTUa3J1Bt2doazSwRltZA9Lw_o6dNSAO7_DYWaOtrAFpZA2II2tAHFkD4sgaTVujgTWatkYDazRtjQes8XJac__y038BAAD__5nQkqI= # INTERSECT ALL and INTERSECT with swapped column orders. query T @@ -483,7 +483,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll2L2kAUhu_7K8K52oUJcfLhroGCS2upYHVrvCiUXGTNVAU3SWcimBX_e0ncrfWjczIdTS9j8sy8M-cB3w2In0vwofftcfDQHxo3H_vBJPg6uDWC3qD3YWKsiVEYn8ajL8a6eDH6w0lvHJS_PwwGb58UxFj__gQIJGnMhtEzE-B_BwoEbCDgAAEXCHgQEsh4OmVCpLz8ZFMB_XgNfovAIslWeflzSGCacgb-BvJFvmTgwyR6WrIxi2LGrRYQiFkeLZbVNuvipZvxxXPECyAQZFEifMO0yp1Hq9w3ujbpUgi3BNJV_rrDfuGnwphHYn64ZJeSrg3hNiQg8mjGwKdb8m9hPcWwrztrhbX_Gna_1CpJecw4iw8WC0sS--TMiT9HYh6wfJRZ9Gg6kyJj_qE8QGDJfuQ3VfDb93wxm789yK5hfz5H43xnwg9TM80s6h3fxNm93YO9aX0RaA0RLNu0nCt6qxC3rRz38ubSZs2lTZtr1x-HXWccjmm5V7RHIe6dctzL22M3a4_dtD1O_XE4dcbhmtWf1bXsUYh7rxz38vY4zdrjNG2PW38cbp1xeOYV3VEI21EMe3lz3GbNcf9n3zoTbcxEliaC1WpTrfJwLJ6x3WWJdMWn7JGn02qb3eOo4qo2EDOR797au4d-Ur2qBlAfbuvAHR2YauWmnpymCldG1eC2DtzRgalW7qMrO6HtY7r1J-3IYUcK08M7ax3Tro7gchgRXA4jgsthTHCERgT3dASXw4jgchgRXA5jgiM0InhbR_A7HUXlMKKoHEYUlcOYogiNKHqvo6gcRhSVw4iichhTFKERRTs6ilKtnoDQiKQIjViK0JimGI51Bb2yoNcW9OqCZl_QKwxUqzHQk8qgZKucxmyV05itchq1FcExW1XK0umtq7QlVRqzVakvKeOYrSflQWpruH33KwAA___e7YZe +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll1v2jAUhu_3K6Jz1UpGwUmgJdIkqo5pSAw64GLSlIuUeAUpjbM4kUgr_vuU0C8-5hPHkF0a_ODXPo_E-wziTwguDH7ejW6GY-Piy3A2n_0YXRqzwWhwOzfWxMiNr9PJd2OdPxnD8XwwnRWf34xGr1tyYqzftgCBiAds7D8yAe4voEDAAgI2EHCAQAc8AnHCF0wInhRbnktgGKzBbRNYRXGWFh97BBY8YeA-Q7pKQwYuzP37kE2ZH7DEbAOBgKX-KiyPWedP_ThZPfpJDgRueZg9RsIt0wOBWewXq5ZZJJlkqWv0LdKn4G0I8Cx9OfH9oPvcWPpiuXtEn5K-Bd7GIyBS_4GBSzekXvhOzfCaea1_5n3_qSziScASFuz8mFeQ2JYjl_7mi-WMpZPYpHsDm-cxc3d9AgIh-51elMEvPyerh-Xr4m1sL3f6-Azv97M17nck_Ji3eGzSzv5LHD3b2TmbVneB1nDBtFqmfUaVFeJ3a8c_qcy0WZlp0zJb1Sdi1ZmI3TKdMwqlEP-qdvyTCmU1K5TVtFB29YnYdSbitMp_uXMJpRD_unb8kwplNyuU3bRQTvWJOHUm0mmdUSeF8L2a4U8qk9OsTM7_7G5Hok2ZiHkkWKVm1i4ux4IHtn0swbNkwe4SviiP2S4nJVfWiICJdPuttV0Mo_KrcgDV4a4O3NOBqVZu2pHTVOHJqBrc1YF7OjDVyr33ZAe0tU-3P9K2HLalMN19s_Y-7egILocRweUwIrgcxgRHaETwjo7gchgRXA4jgsthTHCERgTv6gh-paOoHEYUlcOIonIYUxShEUWvdRSVw4iichhRVA5jiiI0omhPR1Gq1RMQGpEUoRFLERrTFMOxrqBXFvTagl5d0OwLeoWBajUGelAZlGyV05itchqzVU6jtiI4ZqtKWTp8dZW2pEpjtir1JWUcs_WgPEht9Taf_gYAAP__zcKoGQ== query T EXPLAIN (DISTSQL) SELECT x, y FROM xyz INTERSECT SELECT y, x from xyz @@ -503,7 +503,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmFFv4kYUhd_7K6z7tCsNgpmxgViqlFU3VZFosg08VKry4IVpgsRiahsJNsp_rzBtndj4nhlsp4_gfMzxjc_HDM-U_rWmkG5-_zL9NLn1PnyezOaz36YfvdnN9OanubcX3sH7-f7uV29_-O5Nbuc397Pj-_9cPghv_99lErSJl-Y2-mZSCv8gSYIUCdIkyCdBAT0I2ibxwqRpnBz_5DkHJss9hQNBq812lx3ffhC0iBND4TNlq2xtKKR59HVt7k20NEl_QIKWJotW63yZ_eH79TZZfYuSAwmabaNNGnq9_nHlu10WetdKXEt6eBEU77JihTSLHg2F8kVcliJwTCHFtapNoVxSfF6l2WqzyPqyNIlzaxTY14P3FKVP55Eiir4sStBBFL82SvFRu02cLE1ilm8-LP-U2rDKYm5FiqCrFBYjK1IMG6QQFwX9JUqfZia72_Z1aV7zw9aEr2TwaTolQWvzZ_Yhv4mPPyarx6d_X9g1YNTulG_jXrzt66A8ibNrj9-sLe0dIC0c0Fe9vr7ERQ45hs45HGwEchQKkJ3byDrKsHMbyfY8YDG3Ohu1mMJiZHU2ckvR2EbyvW2k7JuobJqoe33_EiM45Bg553AwAshR1FB1bgTrKKPOjaDa66LF3OqM0GIKi5HVGcEtRWMjqPc2grZvorZpot_LzxPORnDIMXbO4WAEkKOooe7cCNZRxp0bQbfXRYu51RmhxRQWI6szgluKxkbQ720E376Jvk0Tg94lPnBIceWYwsEGIEVRQb9zG1hHuercBn57PbSYW50NWkxhMbI6G7ilaGwD___8_eJMtHuTbuNNaqx-nRgcb84sH81pWGm8SxbmSxIv8mVOL-9yLn9jadLsdFWfXkw2p0vHgK9hycKKh1UZlq9h_w0s3WCpGtFXTWg1bEJrzdOapYMmsGy0tBo0okdNaA0eFp99TMH_K3CAVRkesjC46RFfzSFfrzFLS8nTVzw9AF6oWMWl24BG5UY4aDfAUb0BjvotK0p1KTigUcMBjiqOcPC4AxyVXFbE-vaRRXhFMRxeKbrkHYNunZeMHIO68ZqRI4BXROPUVp6GbQU4aiuPw7byOGxrRbJObeVp2FYeh20FOHpkeRy2lf-CURJsovhtawmvtFXxG1dw64o3jQrAvpc3jfIBXjGN076Zp-HGGeBo58zjcOvM46itqmJZl7YCGrUV4KitCEePLI-jtir-C0aNAc7vZEt4ta38VhbdOm8aDU6pGhyQwT5a85saMHdAo7YiHLQV4KitAIcnXf6gjI664IjfbHF42AU4Ou2C3wjQU8N_wWg0On4rW8IrbdX8XrZ86w8vP_wdAAD__3KVI_s= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYUhu_7K6xztSsNIjNjPmKpEqvdVEWiyTZwUanKhRemCRLB1DYSbJT_XmHadWLH553xR3oJzoPfOfH7MMMTJX9vKKCrP77OPk2vvQ9fpvPF_PfZR29-Nbv6vPAOwjt6v9ze_OYdjt-96fXi6nZ-ev_fy0fhHX5cJkHbaGWuw0eTUPAnSRKkSJAmQT4JGtCdoF0cLU2SRPHpT54yYLo6UHAhaL3d7dPT23eCllFsKHiidJ1uDAW0CL9tzK0JVybuX5CglUnD9Sa7zeH4fbKL149hfCRBn6PN_nGbBFlyEjTfhadXvf4pyc0-DbyJEhNJd8-Con2a3zFJw3tDgXwW9VINaqaqCqJcgnxZJ-l6u0z7sjCciRST4j1y7NvRewiTh7eRPIquF2XQQRS_Mkr-UfttFK9MbFavPiz7lMqwymJueYpBVyksRpanGDZIIWoF_TVMHuYmvdn1dWFei-POBC_88Gk2I0Eb81f6IVvEx5_j9f3Dfy9-VJFd36jdKV9HvWjX14PiJN689_jVvaW9BmQNDfRVr6_r6Mkh17B2LjtBgSi5FWTngrKOMuxcULI9NVjMrUpQLaawGFmVoNxSNBaUfG9BKfsyqjpl1L2-X0cSDrlGtXPZSQJEyZupOpeEdZRR55JQ7dXTYm5VkmgxhcXIqiThlqKxJNR7S0Lbl1HXKaPfyw4izpJwyDWunctOEiBK3kzduSSso4w7l4Rur54Wc6uSRIspLEZWJQm3FI0lod9bEr59Gf06ZRz06ijCIdVlzVR2ggBB8lb6nQvCOspl54Lw26umxdyqBNFiCouRVQnCLUVjQfj_528hb0S7Ncku2ibG6peOi9PizOrenIeVRPt4ab7G0TK7zfnlTcZlb6xMkp6v6vOL6fZ86RTwJSxZWPGwKsLyJey_gqUbLFUj-rIJrYZNaK15WrP0oAksG91aXTSiR01oDR4Wn31Mwf9r4ACrIjxkYbDoEV_NIV-vMUtLydOXPH0BvFCyiku3AY3KjXDQboCjegMc9VuWlOpScECjhgMcVRzh4HEHOCq5LIn19SOL8JJiOLxUdMk7Bi2dl4wcg7rxmpEjgJdE49RWnoZtBThqK4_DtvI4bGtJsk5t5WnYVh6HbQU4emR5HLaV_4JREmyi-G1rAS-1VfEbV7B0xZtGDcC-lzeN8gFeMo3Tvpmn4cYZ4GjnzONw68zjqK2qZFmXtgIatRXgqK0IR48sj6O2Kv4LRo0Bzu9kC3i5rfxWFi2dN40Gp1QNDshgH635TQ2YO6BRWxEO2gpw1FaAw5Muf1BGR11wxG92c3jYBTg67YLfCNBTw3_BaDQ6fitbwEtt1fxetrj0u-ef_gkAAP__-GNFtg== # INTERSECT ALL and INTERSECT with different ORDER BY types. query T @@ -527,7 +527,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9v2jAQwN_3KaJ7KppRYifhT6RJ7VamITHoCA-bJh5S4hUkSjInSNCq330iFLEQ4otJ6zco_p0vd7_r5RmSv0vwoPfzbnDTHxpXt31_4v8YNIwrvzfofZkYG-PrePTd2GyfjNH4tjc2Pv8ytg2jP5z0xv7uwM1gID381Dh-3gCBVRTyYfDIE_B-AwUCDAjYQMABAi5MCcQimvEkicTuyHMG9MMNeBaBxSpep7s_TwnMIsHBe4Z0kS45eDAJ7pd8zIOQC9MCAiFPg8Uyu2azfbqOxeIxEFsg4MfBKvGMprm7ebROPeOawvSFQLROX8Mfo95vjXmQzPPxsvNTAkkaPHDw6Au5LE1Xa5qsNM1jnPUqEiEXPMxFmu5I7MiZZ_0WJHOfp6PYpCcdmWxj7uUtAgJL_ie9uqaNT2LxMM8-lT768bFsler7kUi5MKl7WqmPpfGdCmU7V5HXoGeSGEbNKDaZdVrjs9e7uetpdbloBblM1jTtd5kChURbmhNlpYlqmAOqaQ6Q-h_moHXpHLDq_WVV-ms3TeddRFRItK05UVaaqAYRmSYRkfofRGxfKqJdvb92lf46zWwtv72ICol2NCfKShPVIKKtSUSk_gcRO5eK6FTvr1Olv27zXTRUSLOrNU1WmqYGCR1NEiLVP0jYfYvX0zPxxzyJo1XCK715Wrua8fCB73uQRGsx43cimmXX7L-OMi573Qh5ku5_Zfsv_VX2U9bX6nC7DkxpLdqtRXflNFWoGVWD23Xgk5qp0m4tuiun2Slt_U_bOdg6hW0p7MhvdqQwo_Kr3TrzIYeR-ZDD2HwgNDIfCI3MR6vOfMhhZD7kMDYfCI3MB0Ij89GWWtqRS9qpMx_dOobLYcRwOYwZjtCI4QiNbQCVtVn8T6qyN1VpdAkobU5lHNGcFrZITlXK5KJT-RpBTKeFPaKiOkIjriM0JjuGI7ZjOKZ7YYcq6S6nMd3lNKo7gmO6Izime2GR5nVvIboXdoqS7oWdoqS7nMZ0l9Oo7giO6Y7gmO6Ffaqku5zGdJfTqO4IjumO4Jjuha2af9e25Lqzwm6R6j59-fAvAAD__yMAfUs= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9vokoUx9_vX0HOU80dAzOAP0hu0t7Wm2viald82M3GByqz1cQKC5iITf_3DVjjIjKHAeVN63xmDnM-3x7eIfy1BgsG355HD8Oxcvc0tGf211FLubMHo8HjTNkp_00nX5RdvFcm06fBVPn3uxK3lOF4NpjayYKH0Ui4eN86fd4BgY3n8rHzxkOwfgAFAgwI6EDAAAImzAn4gbfgYegFyZL3FBi6O7A0AquNv42SP88JLLyAg_UO0Spac7Bg5rys-ZQ7Lg9UDQi4PHJW6_SYXby_94PVmxPEQODRW2_fNqGl7IiyBwK27yTf2mpSyWQbWco9hfkHAW8bfR53OuUlVpZOuMzun66fEwgj55WDRT9ItbLNsmXHtyibFZZ92me78QKXB9zN7DRPSGzJhWf_3wmXNo8mvkrPOjaLfW5lLQMCa_4zurunrX-C1esy_VT46KfH0mW6YXtBxAOVmuc39Xfh_kaJa7t0I5-bXihi7LU9X2Xa-R1fPN7MHE_Ly0YrZERlbVW_SUokCu9USMk1C2eFhTeQE9pQTpB-HHPSqZoTVr7frIqoels1biKqROHdKqJesXBWWHgDorKGREX6cRS1W1VUvXy_9SqiGu107F9fVInCe1VEvWLhrLDwBkTVGxIV6cdR1F5VUY3y_TaqiGq2b6KpRNn9KpperWxWWHYDkhoNSYp04yhp_xqvxxf2n_LQ9zYhL_XmqyV3xt1XfuhB6G2DBX8OvEV6zOHrJOXS1xmXh9HhV3b4MtykP6V9LQ9368CU1qLNWnRfTFOJO6NycLcOfHZnsrRZi-6LaXZOa3_SegbWzmFdCBvikw0hzKj4aLNOPsQwkg8xjOUDoZF8IDSSj06dfIhhJB9iGMsHQiP5QGgkH12hpT2xpL06-ejXMVwMI4aLYcxwhEYMR2hsAsiMzfx_Upm5KUujQ0BqckrjiOY0N0UyqlImFp2KxwhiOs3NERnVERpxHaEx2TEcsR3DMd1zM1RKdzGN6S6mUd0RHNMdwTHdc4M0q3sH0T03U6R0z80UKd3FNKa7mEZ1R3BMdwTHdM_NUyndxTSmu5hGdUdwTHcEx3TPTdXsu7Ym1p3lZotQ9_nHX78DAAD__1D8rmA= query T EXPLAIN (DISTSQL) (SELECT x FROM xyz ORDER BY y) INTERSECT (SELECT x FROM xyz ORDER BY z) ORDER BY x @@ -550,7 +550,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE1v6kYUhvf9FdZZJaoRzIz5slQptw1VkWi4BRatqix8YZogcTG1jQSJ8t8roJETBp93Jrazy4cfz-vDvI_GPFP674pCGvz5dfRleOdd3Q6ns-kfo2vvajoYDX6ZeTvv18n4d2-3f_LGk9vBxPv5L29_7Q3vZoPJ9HABd-HTdf7zjnxaxwt9F33XKYV_kyCfJPmkyKeAfGrTvU-bJJ7rNI2TwyXPR2C42FHY8mm53myzw5_vfZrHiabwmbJlttIU0iz6ttITHS100myRTwudRcvVcZnd_ulmkyy_R8mefJpuonUaeo3mYeXxNgu9G0H3Lz7F2yy_fZpFD5pC8eJ_LEK7sgjSJcLtMs2W63nWFGczMBbImW977zFKHy9cn4dQHwvRrjREUBgiv892HScLnejFuzsd71IYU6JZ5RHadUVAk8ojdEpE8D-U8rcofZzqbLxpqrNJzfYbHb4xwZfRiHxa6X-yqxtx_VOyfHg8_mSxzbsuO2waJ5lOmsqY2o-F9-9ZjO3SRP6_6YUQd3Ej3jSD1vmMLy7ff7e8sBeJsBBJUzaaytlmDiE6FYaQLiFylYgafWYdolOjz0R1MkGzKvJZhRHQpIp85hahtM_EJ_kM7LBXnxlTs_WZtO-ytOmyajQDZ6E4hOhWGEK6hMi7LGsUinWIbo1CkdW1Gc2qSCgVRkCTKhKKW4TSQpGfJBSww16FYkzNVijKvsvKpstB4_hK5CYUhxC9CkNIlxB5l1WNQrEO0atRKKq6NqNZFQmlwghoUkVCcYtQWijqk4QCdtirUIyp2QolsO9yYNPldsNZJw4R-pVFkC4R8h4HNcrEOkS_RpkE1TUZzapIJhVGQJMqkolbhNIyCT5JJmCHvcrEmNpHvr65cP-JTjfxOtVW38y0DjPTiwd9-gzSeJvM9dcknh-XOf06PnLHPyx0mp3-q06_DNenfx0CvoUFC0selueweAsH72DhBgtVhpaiFN0vQ6suTyuWbpeBBRg5T0tZhlatUnSPpwN2m3Z4uO0Ay3O4w8JdviBdFgbP3GPhQPBL91lagGYLXioCLC4MrbiYAdBIDQBHbkA4kAPAkR0ELxegB0AjPwAcCQLgyBAIB3URhmHeb1k0Ol4xZ7ihCcFLRnRAYXjNoEfnPSNbYHHeNKIPcEM1TmXnaVh2HodlBzgqO4-jskvDsi5lBzQqO8BR2QGOyo5wsOMlOLei06OhGg43yi551cgAHJt51aBH500je2Bx3jQSnGikoRqnMz9Pw0M_j8NTP8DRsZ_HYdkNyzqVnadh2Xkclp3HYdkBjnY8f5ZV4GNX4AVZ8GVXvGoUOEkrXjXg0RVvGgWOFYo3jWoD3FCNS9kBjcoOcFR2hIOyAxy-5BuWdXrL52n4ms_j8D2fx-GLPsDRjufPsgp9bvxZ9gw3y86rJgAn6YBXzfmj37_88F8AAAD__zvnDFs= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE1v6kYUhvf9FdZZJaoRzIz5lCrl9oaqSDTcAotWVRZcmCZIBFPbSJAo_70CbuSEweed8Ud2IfHjeX2Y99E4LxT_t6Ie9f_6NvwyuPOubgeT6eTP4bV3NekP-1-n3s77bTz6w9vtn73R-LY_9n7929tfe4O7aX88OVzAXfh8nf68I5_W4ULfzZ50TL1_SJBPknxS5FNAPjXp3qdNFM51HIfR4ZKXIzBY7KjX8Gm53myTw6_vfZqHkabeCyXLZKWpR9PZ95Ue69lCR_UG-bTQyWy5Oi6z2z_fbKLl0yzak09fw9X2aR33vJ3vPZNPk83s8KlWPyQZbZOedyPo_tWncJuky8XJ7EFTT7z6-SI1bSPtXSNJl0i3yzhZrudJXZzNyFggZb7vvcdZ_Hjh-jSEyheiWWqIIDNEep_tOowWOtKLD3c63iUzpkSzSiM0q4qAJpVGaBWI4OdK-fssfpzoZLSpq7NJTfcb3Xtnii_DIfm00v8mVzfi-pdo-fB4_Mlim7dddtgkjBId1ZUxtZ8z79-xGNulify46YUQd2Et3NSDxvmMLy7f_bC8sBeLyOG6uqzVlbPtHEK1ctjONpR0CZWqRlToO-sQrQp9J8qTDZpVlu9KjIAmleU7twiFfSc-yXdgh735zpiare-kfbdlHuGoWj1wFo5DqHYe4ViGki6h0q7LCoVjHaJdoXBkeW1Hs8oSTokR0KSyhOMWobBw5CcJB-ywN-EYU7MVjrLvtsojnKB2fOVyE45DqE4e4ViGki6h0q6rCoVjHaJToXBUeW1Hs8oSTokR0KSyhOMWobBw1CcJB-ywN-EYU7MVTmDf7SCPcJo1Z904ROrm0Y1VJOkSKe15UKFsrEN0K5RNUF7T0ayyZFNiBDSpLNm4RSgsm-CTZAN22JtsjKnl-ffRhfuPdbwJ17G2-s9Q4zAzvXjQp-8gDrfRXH-LwvlxmdPH0ZE7_mKh4-T0V3X6MFif_nQI-B4WLCx5WJ7D4j0cfICFGyxUEVqKQnS3CK3aPK1YulkEFmDkPC1lEVo1CtEdng7Ybdri4aYDLM_hFgu3-YK0WRg8c4eFA8Ev3WVpAZoteKkIsLgwtOJiBkAjNQAcuQHhQA4AR3YQvFyAHgCN_ABwJAiAI0MgHNRFGIb5uGXR6HjFnOGGJgQvGdECheE1gx6d94xsgMV504guwA3VOJWdp2HZeRyWHeCo7DyOyi4Ny7qUHdCo7ABHZQc4KjvCwY6X4NyKTo-GajjcKLvkVSMDcGzmVYMenTeN7IDFedNIcKKRhmqczvw8DQ_9PA5P_QBHx34eh2U3LOtUdp6GZedxWHYeh2UHONrx_FlWga9dgRdkwZdd8apR4CSteNWAR1e8aRQ4VijeNKoJcEM1LmUHNCo7wFHZEQ7KDnD4km9Y1uktn6fhaz6Pw_d8Hocv-gBHO54_yyr0vfFn2TPcLDuvmgCcpANeNeePfv_60_8BAAD__8gSPXA= # INTERSECT ALL and INTERSECT with different numbers of ORDER BY columns. query T @@ -574,7 +574,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9v2jAQwN_3KaJ7KppRYifhT6RJ7VamITHoCA-bJh5S4hUkSjInSNCq330iFLEQ4otJ67em8c--3P2O8zMkf5fgQe_n3eCmPzSubvv-xP8xaBhXfm_Q-zIxNsbX8ei7sdk-GaPxbW9sfP5lbBtGfzjpjf3dgpvBQL6YGE-N4-MGCKyikA-DR56A9xsoEGBAwAYCDhBwYUogFtGMJ0kkdkueM6AfbsCzCCxW8Trd_XtKYBYJDt4zpIt0ycGDSXC_5GMehFyYFhAIeRosltkxm-3TdSwWj4HYAgE_DlaJZzTN3cmjdeoZ1xSmLwSidfq6_XHX-60xD5J5fr9s_ZRAkgYPHDz6Qi4L09UaJisN87jPehWJkAse5naa7khsyZlv_RYkc5-no9ikJxWZbGPu5UUCAkv-J726po1PYvEwz_4q_fTjZ9kq2fcjkXJhUvc0Ux9L93cqpO1cRl43PRPEMGpGscms0xyfPd7NHU-ry0UryGWypmm_SxcoBNrSHCgrDVRDH1BNfYDk_9AHrUv7gFWvL6tSX7tpOu8iokKgbc2BstJANYjINImI5P8gYvtSEe3q9bWr1NdpZmP57UVUCLSjOVBWGqgGEW1NIiL5P4jYuVREp3p9nSr1dZvvoqFCmF2tYbLSMDVI6GiSEMn-QcLuW1xPz-w_5kkcrRJe6eZp7XLGwwe-r0ESrcWM34lolh2zfxxlXHbdCHmS7t-y_UN_lb3K6lodbteBKa1Fu7XorpymCjmjanC7DnySM1XarUV35TQ7pa3_aTsHW6ewLYUd-cmOFGZUfrRbpz_kMNIfchjrD4RG-gOhkf5o1ekPOYz0hxzG-gOhkf5AaKQ_2lJLO3JJO3X6o1vHcDmMGC6HMcMRGjEcobEJoDI2i7-kKnNTlUaHgNLkVMYRzWlhiuRUpUwuOpWPEcR0WpgjKqojNOI6QmOyYzhiO4ZjuhdmqJLuchrTXU6juiM4pjuCY7oXBmle9xaie2GmKOlemClKustpTHc5jeqO4JjuCI7pXpinSrrLaUx3OY3qjuCY7giO6V6Yqvm7tiXXnRVmi1T36cuHfwEAAP__dYp-EA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9vokwUh-_fT0HOVc07BmcA_5Bs0m7rZk1c7YoXu9l4QWW2mlhhB0y0Tb_7BqxxEZnDgHJXdZ6ZH3Oe08MbhH9WYEP_x-PwbjDSbh4GztT5PmxoN05_2L-falvty2T8TdvuXrXx5KE_0T7_1HYNbTCa9idOvOBuOJQvJtpr4_hxCwTWvsdH7gsPwf4FFAgwIGAAARMIWDAjEAh_zsPQF_GStwQYeFuwWwSW62ATxV_PCMx9wcF-g2gZrTjYMHWfVnzCXY8LvQUEPB65y1VyzHb3ehuI5YsrdkDg3l9tXtahrW1JEhAIOIEbf9HU4zDjTWRrtxRm7wT8TfRx4vGgp522cMNF-ohk_YxAGLnPHGz6Tsoltwonv0Zslhv7uM9m7QuPC-6ldprFJLbkzLN_dcOFw6NxoNOTok13AbfTrgGBFf8d3dzSxiexfF4kf-U--vGxDJVqOL6IuNCpdXpT_-fubxa4tnM38rHpmRAjv-kHOmud3vHZ463U8bS4bLRcm-isqRtXaRSF7O0SjXLJ4Cw3eA2tQmtqFaQeh1Zpl20VVrzerKSrRlM3r-KqQvZOGVcvGJzlBq_BVVaTq0g9Dq52yrpqFK-3UdJVs5nM_8u7qpC9W8bVCwZnucFrcNWoyVWkHgdXu2VdNYvX2yzpqtW8iqkKyXtlTL1YbJYbuwZPzZo8Rapx8LR3iVflM_tPeBj465AXegtuxXfGvWe-r0Hob8ScPwp_nhyz_zhOuOS9xuNhtP-V7T8M1slPSV2Lw50qMKWVaKsS3ZPTVOHOqBrcqQKf3JkqbVWie3KandKtf2kjBbdOYUMKm_KTTSnMqPxoq0p_yGGkP-Qw1h8IjfQHQiP90a7SH3IY6Q85jPUHQiP9gdBIf3Sklnblknar9EeviuFyGDFcDmOGIzRiOEJjE0BlbGb_k6rMTVUaHQJKk1MZRzSnmSmSUpUyuehUPkYQ02lmjqiojtCI6wiNyY7hiO0YjumemaFKustpTHc5jeqO4JjuCI7pnhmkad3biO6ZmaKke2amKOkupzHd5TSqO4JjuiM4pntmnirpLqcx3eU0qjuCY7ojOKZ7Zqqm37Vbct1ZZrZIdZ-9__c3AAD__xTvsv4= query T EXPLAIN (DISTSQL) (SELECT x FROM xyz ORDER BY y) INTERSECT (SELECT x FROM xyz ORDER BY y, z) ORDER BY x @@ -597,7 +597,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE9v6kYUxff9FNZdJaoRzIz5Z6lSXhuqItHwCixaVVn4wTRB4mFqGwkS5btXQCMnDL5nJrazC4l_nuPLnJ_Geab03xWFNPjz6-jL8M67uh1OZ9M_Rtfe1XQwGvwy83ber5Px795u_-SNJ7eDiffzX97-2hvezQaT6eEC9kLfe7rOP-7Ip3W80HfRd51S-DcJ8kmST4p8CsinNt37tEniuU7TODlc8nwEhosdhS2fluvNNjv8-t6neZxoCp8pW2YrTSHNom8rPdHRQifNFvm00Fm0XB2X2e2fbjbJ8nuU7Mmn6SZap6HXaB5WHm-z0LsRdP_iU7zN8tunWfSgKRQv_scitCuLIF0i3C7TbLmeZ01xNgNjgZz5tvceo_TxwvV5CPWxEO1KQwSFIfL7bNdxstCJXry70_EuhTElmlUeoV1XBDSpPEKnRAT_Qyl_i9LHqc7Gm6Y6m9Rsv9HhGxl8GY3Ip5X-J7u6Edc_JcuHx-NPFtu867LDpnGS6aSpjKn9WHj_nsXYLk3k_5teCHEXN-JNM2idz_ji8v13ywt7kQgLkTRlo6mcbeYQolNhCOkSIleJqNFn1iE6NfpMVCcTNKsin1UYAU2qyGduEUr7THySz8AOe_WZMTVbn0n7LkubLqtGM3AWikOIboUhpEuIvMuyRqFYh-jWKBRZXZvRrIqEUmEENKkiobhFKC0U-UlCATvsVSjG1GyFouy7rGy6HDSOr0RuQnEI0aswhHQJkXdZ1SgU6xC9GoWiqmszmlWRUCqMgCZVJBS3CKWFoj5JKGCHvQrFmJqtUAL7Lgc2XW43nHXiEKFfWQTpEiHvcVCjTKxD9GuUSVBdk9GsimRSYQQ0qSKZuEUoLZPgk2QCdtirTIypfeTfNxfuP9HpJl6n2uo_M63DzPTiQZ--gzTeJnP9NYnnx2VOH8dH7viLhU6z01_V6cNwffrTIeBbWLCw5GF5Dou3cPAOFm6wUGVoKUrR_TK06vK0Yul2GViAkfO0lGVo1SpF93g6YLdph4fbDrA8hzss3OUL0mVh8Mw9Fg4Ev3SfpQVotuClIsDiwtCKixkAjdQAcOQGhAM5ABzZQfByAXoANPIDwJEgAI4MgXBQF2EY5v2WRaPjFXOGG5oQvGREBxSG1wx6dN4zsgUW500j-gA3VONUdp6GZedxWHaAo7LzOCq7NCzrUnZAo7IDHJUd4KjsCAc7XoJzKzo9GqrhcKPskleNDMCxmVcNenTeNLIHFudNI8GJRhqqcTrz8zQ89PM4PPUDHB37eRyW3bCsU9l5Gpadx2HZeRyWHeBox_NnWQW-dgVekAVfdsWrRoGTtOJVAx5d8aZR4FiheNOoNsAN1biUHdCo7ABHZUc4KDvA4Uu-YVmnt3yehq_5PA7f83kcvugDHO14_iyr0PfGn2XPcLPsvGoCcJIOeNWcP_r9yw__BQAA__8-7g0g +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE1v6kYYhff9FdasEtXIzIz5slQptzdURaLhFli0qrLwhWmCRDC1jQSJ8t8rzI2cMPg9M_7ILhAez_HLnEdjXljy35oFbPjXt_GX0Z1zdTuazWd_jq-dq9lwPPw6d_bOb9PJH87-8OxMprfDqfPr387h2hndzYfT2fED5Add5_k6f7lnLttES3UXPqmEBf8wzlwmmMskc5nPXNZh9y7bxtFCJUkUHz_ykgGj5Z4FbZetNttdenz73mWLKFYseGHpKl0rFrB5-H2tpipcqthrM5ctVRqu1tky-8PzzTZePYXxgbnsa7TePW2SwNm7WUDmstk2PL7R8o5hJrs0cG44u391WbRL8xWTNHxQLOCvbrlUHeNUtpGETaTbVZKuNovU42dj0hbIme8H5zFMHi98Pg8hy4Xo1BrCLwyRX2e3ieKlitXyw5WyqxTGFGhWeYROUxHQpPII3QoR3FIpfw-Tx5lKJ1tPnk1qftiq4J0vvozHzGVr9W96dcOvf4lXD4_ZXwbbvGezw2ZRnKrYk9rUfi68ft9gbJcm8uOiF0LcRa1o6_nt8xlfXH7wYXluLhZeTneeaHnSWngWubolhGcaStiEym3DG1SecYhug8rj9fkGzapIeTVGQJMqUp5dhMrK45-kPLDD3pSnTc1UecK826Kkc2TL862dY5GrV8Y5hqGETai87qJB5xiH6DXoHFFf4dGsipxTYwQ0qSLn2EWo7BzxSc4BO-zNOdrUTJ0jzbstSzrHb2XPXnbOscjVL-Mcw1DCJlRed9mgc4xD9Bt0jqyv8GhWRc6pMQKaVJFz7CJUdo78JOeAHfbmHG1qps7xzbvtl3ROp2VtHItUgzLGMYokbCLlVfcb9I1xiEGDvvHrKzuaVZFvaoyAJlXkG7sIlX3jf5JvwA578402tTI_JV24_lQl22iTKKNfidrHmanlgzp9B0m0ixfqWxwtsmVOLycZl72xVEl6-q88vRhtTv86BnwPcxIWNCzOYf4e9j_A3A7msgoteCV6UIWWPZqWJN2pAnMwcpoWogot25XoPk375Dbt0nDHAhbncJeEe3RBeiQM7rlPwj6nlx6QNAfN5rRUOFica1qxMQOgkRoAjtyAcCAHgCM7cFouQA-ARn4AOBIEwJEhEA7qwjXDfNyyaHS0Ys5wTROclgzvgsLQmkG3TntGtMHitGn4AOCaaqzKTtOw7DQOyw5wVHYaR2UXmmVtyg5oVHaAo7IDHJUd4WDHC3BuRadHTTUUrpVd0KoRPjg206pBt06bRvTB4rRpBDjRCE01Vmd-moaHfhqHp36Ao2M_jcOya5a1KjtNw7LTOCw7jcOyAxztePosK8HXLsEDMqfLLmnVSHCSlrRqwK1L2jQSHCskbRrZAbimGpuyAxqVHeCo7AgHZQc4fMjXLGv1lE_T8DGfxuFzPo3DB32Aox1Pn2Ul-t7os-wZrpedVo0PTtI-rZrzW79__en_AAAA__9c1UIO # INTERSECT ALL and INTERSECT with compatible ORDER BY columns that are not in the final result. query T @@ -618,7 +618,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElkFv2jAYhu_7FdZ3aiWjYCfQEmkS3co0JAYdcNg05ZASryDRJIuD1LTiv08J0zoC-Ivn4d1K48d-_eWR8r6A_LEGHwZf7kY3wzG5uB3O5rPPo0tyMRuMBu_npCAfppNP5Kl4JpPp7WBK3n0lz5dkOJ4PprNywc1ohCwGCnESiXH4KCT434ABBQ4UXKDgAYUOBBTSLFkIKZOsXPJSAcPoCfw2hVWcbvLy3wGFRZIJ8F8gX-VrAT7Mw_u1mIowEpnTBgqRyMPVujrmqXjup9nqMcwKoDBLw1j6pOWUJ082uU_6HIIthWST_9r-ddf7gixDudzfr88g2AYUZB4-CPDZlv5dzI7VmPxkzNd9NnGSRSIT0d5OQUliS47c9WMolzORT1KH1d7IvEiFv68OUFiL7_lFn12-zVYPy-qv31dntau_Xss1uNaRzOOklaQO69QHcPRsb-9s1vzNswZv3uEtxz2LohpBu5aD8pNBLUjKLEnKm8-fN5m_23K8s4iiEfTKclB-MqgFUbglUdzm83ebzN9rVd-cfy-KRtBry0H5yaAWRHEtieI1n7_XZP6d1lk00YjZsxqTn4xpQRLvP3SjI4mmQqZJLEWj5tMu7ySiB7GbkUw22ULcZcmiOmb3c1Jx1Vc8EjLfPeW7H8O4elTNvTncNYF7JjAzys06apppjIzpwV0TuGcCM6PctZEd0LxOt_-kXTXsKmG2P7N2nfZMBFfDiOBqGBFcDWOCIzQieMdEcDWMCK6GEcHVMCY4QiOCd00EvzJRVA0jiqphRFE1jCmK0Iii1yaKqmFEUTWMKKqGMUURGlG0Z6IoM-oJCI1IitCIpQiNaYrhWFcwKwtmbcGsLhj2BbPCwIwaAzuoDFq2qmnMVjWN2aqmUVsRHLNVpywdTl2nLenSmK1afUkbx2w9KA9KW4Ptm58BAAD__1VGdco= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll1v2jAUhu_3K6xz1UpGwU6gJdKkdi3TkBh0wMWmiYuUeAWJ4iwOUkPV_z4lTOr4iE-MR3LXNH7i1z6PxPsK6vcSfOh-f-jf9gbk4r43noy_9S_Jxbjb795NSEo-j4ZfyUu6IcPRfXdEPv0gm0vSG0y6o3G24LbfRxYDhZUMxSB4Fgr8n8CAAgcKLlDwgEILphSiWM6EUjLOlrzmQC98Ab9JYbGK1kn27ymFmYwF-K-QLJKlAB8mweNSjEQQithpAoVQJMFimW_zkm5uonjxHMQpULiTy_XzSvkkpWQDFMZRkD01nCzJcJ345IbB9I2CXCd_t3vf5TEl80DNd7-fr59SUEnwJMBnb_S02K1aY_PC2O_fWa9kHIpYhDtfmmYktuTI2b8Eaj4WyTBy2N7EJmkk_F21gMJS_Eoubtjlx3jxNM__Kjz6-7Fci2MdyTyQDRk5rLV_AUf39nb2ZuVNYCeY4PCG455FYYPg7ZqD88LgFUjMKpKYl58HP2UebsPxziKSQfCrmoPzwuAViMQrEsktPw_3lHl4jfw37f-LZBD8uubgvDB4BSK5FYnklZ-Hd8o8Wo2zaGQQu1NrbF4YuwKJvBq62ZFEI6EiuVKiVPNqZmcS4ZPY3pGS63gmHmI5y7fZPg5zLm8JoVDJ9i3fPvRW-av83svDbRu4YwMzq9yspaeZwZUxM7htA3dsYGaVe-_KDmi-Tzf_pV097GphtntnzX3asxFcDyOC62FEcD2MCY7QiOAtG8H1MCK4HkYE18OY4AiNCN62EfzKRlE9jCiqhxFF9TCmKEIjil7bKKqHEUX1MKKoHsYURWhE0Y6NosyqJyA0IilCI5YiNKYphmNdwa4s2LUFu7pg2RfsCgOzagzsoDIY2aqnMVv1NGarnkZtRXDMVpOydHjrJm3JlMZsNepLxjhm60F50No6ffvwJwAA___gfqbk query T EXPLAIN (DISTSQL) (SELECT y FROM xyz ORDER BY z) INTERSECT ALL (SELECT y FROM xyz ORDER BY z) @@ -638,7 +638,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElkFv2jAYhu_7FdZ3aiWjYCfQEmkS3co0JAYdcNg05ZASryDRJIuD1LTiv08J0zoC-Ivn4d1K48d-_eWR8r6A_LEGHwZf7kY3wzG5uB3O5rPPo0tyMRuMBu_npCAfppNP5Kl4JpPp7WBK3n0lz5dkOJ4PprNywc1ohCwGCnESiXH4KCT434ABBQ4UXKDgAYUOBBTSLFkIKZOsXPJSAcPoCfw2hVWcbvLy3wGFRZIJ8F8gX-VrAT7Mw_u1mIowEpnTBgqRyMPVujrmqXjup9nqMcwKoDBLw1j6pOWUJ082uU_6HIIthWST_9r-ddf7gixDudzfr88g2AYUZB4-CPDZlv5dzI7VmPxkzNd9NnGSRSIT0d5OQUliS47c9WMolzORT1KH1d7IvEiFv68OUFiL7_lFn12-zVYPy-qv31dntau_Xss1uNaRzOOklaQO69QHcPRsb-9s1vzNswZv3uEtxz2LohpBu5aD8pNBLUjKLEnKm8-fN5m_23K8s4iiEfTKclB-MqgFUbglUdzm83ebzN9rVd-cfy-KRtBry0H5yaAWRHEtieI1n7_XZP6d1lk00YjZsxqTn4xpQRLvP3SjI4mmQqZJLEWj5tMu7ySiB7GbkUw22ULcZcmiOmb3c1Jx1Vc8EjLfPeW7H8O4elTNvTncNYF7JjAzys06apppjIzpwV0TuGcCM6PctZEd0LxOt_-kXTXsKmG2P7N2nfZMBFfDiOBqGBFcDWOCIzQieMdEcDWMCK6GEcHVMCY4QiOCd00EvzJRVA0jiqphRFE1jCmK0Iii1yaKqmFEUTWMKKqGMUURGlG0Z6IoM-oJCI1IitCIpQiNaYrhWFcwKwtmbcGsLhj2BbPCwIwaAzuoDFq2qmnMVjWN2aqmUVsRHLNVpywdTl2nLenSmK1afUkbx2w9KA9KW4Ptm58BAAD__1VGdco= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll1v2jAUhu_3K6xz1UpGwU6gJdKkdi3TkBh0wMWmiYuUeAWJ4iwOUkPV_z4lTOr4iE-MR3LXNH7i1z6PxPsK6vcSfOh-f-jf9gbk4r43noy_9S_Jxbjb795NSEo-j4ZfyUu6IcPRfXdEPv0gm0vSG0y6o3G24LbfRxYDhZUMxSB4Fgr8n8CAAgcKLlDwgEILphSiWM6EUjLOlrzmQC98Ab9JYbGK1kn27ymFmYwF-K-QLJKlAB8mweNSjEQQithpAoVQJMFimW_zkm5uonjxHMQpULiTy_XzSvkkpWQDFMZRkD01nCzJcJ345IbB9I2CXCd_t3vf5TEl80DNd7-fr59SUEnwJMBnb_S02K1aY_PC2O_fWa9kHIpYhDtfmmYktuTI2b8Eaj4WyTBy2N7EJmkk_F21gMJS_Eoubtjlx3jxNM__Kjz6-7Fci2MdyTyQDRk5rLV_AUf39nb2ZuVNYCeY4PCG455FYYPg7ZqD88LgFUjMKpKYl58HP2UebsPxziKSQfCrmoPzwuAViMQrEsktPw_3lHl4jfw37f-LZBD8uubgvDB4BSK5FYnklZ-Hd8o8Wo2zaGQQu1NrbF4YuwKJvBq62ZFEI6EiuVKiVPNqZmcS4ZPY3pGS63gmHmI5y7fZPg5zLm8JoVDJ9i3fPvRW-av83svDbRu4YwMzq9yspaeZwZUxM7htA3dsYGaVe-_KDmi-Tzf_pV097GphtntnzX3asxFcDyOC62FEcD2MCY7QiOAtG8H1MCK4HkYE18OY4AiNCN62EfzKRlE9jCiqhxFF9TCmKEIjil7bKKqHEUX1MKKoHsYURWhE0Y6NosyqJyA0IilCI5YiNKYphmNdwa4s2LUFu7pg2RfsCgOzagzsoDIY2aqnMVv1NGarnkZtRXDMVpOydHjrJm3JlMZsNepLxjhm60F50No6ffvwJwAA___gfqbk # INTERSECT ALL and INTERSECT with a projection on the result. query T @@ -659,7 +659,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElkGPmkAYhu_9FeQ7aTIGZwB3JWmym9amJla34qFJw4GV6WriAmUwkd3sf2_Abqyo8zGdCEeEZ-adb57E9xXE7w24MPrxMLkfT43O57G38L5PuoY3mow-LYyd8WU--2Z0Ou_PxMj3P-3yl64xni5Gc694cT-ZGOc_6gKBKA75NHjmAtyfQIEAAwIWELCBgAM-gSSNl1yIOC0-eS2BcbgDt09gHSXbrPjZJ7CMUw7uK2TrbMPBhUXwuOFzHoQ8NftAIORZsN6U2-zyl7skXT8HaQ4EvCSIhGv0zGLn2TZzjTtK7hj4bwTibfZ3h8PCj7mxCsTqeMl3xCcgsuCJg0vfyP-FdVoIyy6GPSy1jeI05CkPjxbzCxL75MyJvwZi5fFslpi0cjuLPOHusT9AYMN_ZZ0yePdjun5avT8cxlCZweFwlsbhziSfxr04MalTHcPZve2jvWl9C2gNC0zWM60rSqsQd9BKXHYxbgPa0ka1ZfXvgtW5C6tn2ldURyHuTStx2cW4DajDGlXHqn8XVp27sHvlf9S11FGIe9tKXHYxbgPqWI2qY9e_C7vOXTi9K4qjEHbYQlh2MWwD2titdawzueZcJHEkeK0G1S9OxsMnvp-UiLfpkj-k8bLcZv84K7myAYRcZPu3bP8wjspX5fTrwwMdeKgDU63c1JHTVGFkVA0e6MBDHZhq5a6M7IRmVbr_L23JYUsK0-OZ9au0rSO4HEYEl8OI4HIYExyhEcEdHcHlMCK4HEYEl8OY4AiNCD7QEfxGR1E5jCgqhxFF5TCmKEIjit7qKCqHEUXlMKKoHMYURWhE0aGOolSrJyA0IilCI5YiNKYphmNdQa8s6LUFvbqg2Rf0CgPVagz0pDIo2SqnMVvlNGarnEZtRXDMVpWydDp1lbakSmO2KvUlZRyz9aQ8SG313z78CQAA__9Al4gH +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElkFv2jAYhu_7FdF3Asko2EloiTSJqmMaEoMOOEyaOKTEK0gUZ3GQSKv-9ylhVUcAfzFGydFJnvj15-fwvoL8swYf-j8fhneDkdX4MpjOpj-GTWvaH_bvZ9bO-joZf7cajfc1sdL9o1360rQGo1l_Ms1e3A2H1umPmkBgI0I-Cp65BP8XUCDAgIADBFwg4MGcQBSLBZdSxNknrzkwCHfgtwmsNtE2yR7PCSxEzMF_hWSVrDn4MAse13zCg5DHdhsIhDwJVut8m1360ovi1XMQp0DgXqy3zxvp5-GAwDQKslXLZjB_IyC2yb9NPv79mFrLQC4P_9qjpJchcwIyCZ44-PSNXJbXqycvO5v341fbjYhDHvPw4GfzjMQ-OXHob4FcTnkyjmxauKNZGnH_0CIgsOa_k0YevPk5Xj0t3xdAYLxNfKtHCzP4OJxjcLgTyUeiJSKbesUxnNzbPdiblheBXiCCzVq2c111NRJ36krMziauQF5aqbys_HWwS67DadnudQXSSHxTV2J2NnEFArFKBXLKX4dzyXW4Ldu7rkAaiW_rSszOJq5AIKdSgdzy1-Fech1e67r6aOTt1pOXnc1bgTxubd3rRK4Jl5HYSF6qWbWzk_Hwie8nJcU2XvCHWCzybfbLcc7lnSDkMtm_ZfvFYJO_yqdfHu6YwF0TmBrlpp6aphojo3pwxwTumsDUKHdhZEc0K9Lt_2lHDTtKmB7OrF2kXRPB1TAiuBpGBFfDmOAIjQjumQiuhhHB1TAiuBrGBEdoRPCOieA3JoqqYURRNYwoqoYxRREaUfTWRFE1jCiqhhFF1TCmKEIjinZNFKVGPQGhEUkRGrEUoTFNMRzrCmZlwawtmNUFw75gVhioUWOgR5VBy1Y1jdmqpjFb1TRqK4JjtuqUpeOp67QlXRqzVasvaeOYrUflQWnr_O3T3wAAAP__p0aabQ== query T EXPLAIN (DISTSQL) SELECT x FROM ((SELECT x, y FROM xyz) INTERSECT (SELECT x, y FROM xyz)) @@ -679,7 +679,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmFFv4kYUhd_7K6z7lEiDYGZsIJYqZdVNVSSabAMPlao8eGGaILGY2kYKG-W_VxitnNj4nhlsZx_H5vOcucw5vuMXSv9bU0g3f3-ZfprcehefJ7P57K_ppTe7md78Nveevd_v7_70Li5-jIW3P1563n-_9Ca385v72eHG6R9ckqBNvDS30TeTUvgPSRKkSJAmQT4JCuhB0DaJFyZN4-Twk5ccmCyfKRwIWm22u-xw-UHQIk4MhS-UrbK1oZDm0de1uTfR0iT9AQlamixarfNpnvffr7fJ6luU7EnQbBtt0tDr9Q8z3-2y0LuW4lrRw6ugeJcVM6RZ9GgolK_iPBVBmyqUi4rPqzRbbRZZX5YqcWqOAvu6956i9Ok0UkjR50kJOpDi10opHrXbxMnSJGb57mH5U2rFKou6FSqCrlRYlKxQMWygQpwl9I8ofZqZ7G7b16V6zfdbE77Jg0_TKQlam3-zi3wRl78mq8enH4PCAbWLG7Vb4tu4F2_7OiiX4eTc43dzS_sAkBYB0Fe9vj4niBx0DNvVoVx0FP6XnUeRtZRh51Ek2wsBi7rVRVGLKixKVhdFbioaR5H80ChS9jZUNjbUvb5_Thw46Bi1q0O56Cg8qDqPA2spo87jQLVnRIu61cVBiyosSlYXB24qGseB-tA40PY21DY29Hv5McI5Dhx0jNvVoVx0FB7UnceBtZRx53Gg2zOiRd3q4qBFFRYlq4sDNxWN40B_aBz49jb0bWwY9M4JAwcVV22qUC4qCv_5nUeBtZSrzqPAb8-EFnWri4IWVViUrC4K3FQ0jgL_p32zOKHr3qTbeJMaqy8Sg8PKzPLRHCuVxrtkYb4k8SKf5ji8y7n8wtKk2fGuPg4mm-Otg8C3sGRhxcOqDMu3sP8Olm6wVI3oqya0GjahteZpzdJBE1g2mloNGtGjJrQGm8Vntyn4vwIHWJXhIQuDRY94aw55e41ZWkqevuLpAciFSqq4eBvQyNwIB-4GOLI3wJG_ZSVSXQwOaORwgCOLIxxsd4Ajk8tKsL7fsgivRAyHV4wu-YxBS-dDRo6B3fiYkSOAV4LGya08Dd0KcORWHodu5XHo1krIOrmVp6FbeRy6FeBoy_I4dCv_glESNFF821rCK25VfOMKlq74pFEB6Hv5pFE-wCtJ49Q38zRsnAGOOmceh60zjyO3qkrKurgV0MitAEduRTjasjyO3Kr4F4waA5zvZEt41a18K4uWzieNBqdUDQ7IoI_WfFMD6g5o5FaEA7cCHLkV4PCkyx-U0VEXHPGbTQ4PuwBHp13wjQDtGv4Fo1Hp-Fa2hFfcqvletrz0h9df_g8AAP__x5IlpA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmFFv4kYUhd_7K6z7lEiDzMzYQCxVymo3VZFosg08VKry4IVpgkQwtY0UNsp_rwBFTuz4nhlsp49j83nOXOYc3_EzZf-uKKKrv75PvoyvvbNv4-ls-ufk3JteTa6-zrwn77fbmz-8s7PXsfB2x0tPu5_n3vh6dnU73d_4-AfnJGidLMx1_Ggyiv4mSYIUCdIkKCBBId0J2qTJ3GRZku5_8nwAxosnivqCluvNNt9fvhM0T1JD0TPly3xlKKJZ_GNlbk28MKnfJ0ELk8fL1WGap93Py026fIzTHQn6mqy2j-ssOogjQdNNvB_1fEV3L4KSbV5MkuXxvaFIvojThIQtC1EuQr4ts3y5nue-LNXjUorL8hwF9mPnPcTZw8dIIUWfJiXsQEpQK6V41HadpAuTmsW7hx2eUitWWdStUBF2pcKiZIWKQQMV4iShv8fZw9TkNxtfl-o1221M9CYVvkwmJGhl_snPDos4_zVd3j-8DkjQzTaPvEtZu7hhuyW-TnrJxtdhuQwfzj16N7e0zwB5Qgb4qudryzhykDJoXYpykVKkgOw8kKylDDoPJNleFFjUrS6QWlRhUbK6QHJT0TiQ5KcGkrJ3ojrFibrnB5ah4CBl2LoU5SKlcKLqPBSspQw7DwXVnh0t6lYXCi2qsChZXSi4qWgcCupTQ0HbO1Gf4sSg54eWoeAgZdS6FOUipXCi7jwUrKWMOg8F3Z4dLepWFwotqrAoWV0ouKloHAr6U0MhsHdicIoTw55lJDgIuWhZiHIRUrgw6DwQrKVcdB4IQXtWtKhbXSC0qMKiZHWB4KaicSAE_9u3jA903Zpsk6wzY_Wlor9fmVncm2OlsmSbzs33NJkfpjkObw7c4cLCZPnxrj4Oxuvjrb3At7BkYcXDqgzLt3DwDpZusFSN6IsmtBo0obXmac3SYRNYNppa9RvRwya0BpslYLcp-L9CB1iV4QELg0UPeWsOeHuNWFpKnr7g6T7IhUqquHgb0MjcCAfuBjiyN8CRv2UlUl0MDmjkcIAjiyMcbHeAI5PLSrC-37IIr0QMh1eMLvmMQUvnQ0aOgN34mJFDgFeCxsmtPA3dCnDkVh6HbuVx6NZKyDq5laehW3kcuhXgaMvyOHQr_4JREjRRfNtawituVXzjCpau-KRRIeh7-aRRAcArSePUN_M0bJwBjjpnHoetM48jt6pKyrq4FdDIrQBHbkU42rI8jtyq-BeMGgGc72RLeNWtfCuLls4njQanVA0OyKCP1nxTA-oOaORWhAO3Ahy5FeDwpMsflNFRFxzxm00OD7sAR6dd8I0A7Rr-BaNR6fhWtoRX3Kr5Xra89LuXX_4LAAD__-qYOAo= subtest Except @@ -705,7 +705,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9uokAUh-_3Kci5arNjYAbwD8kmdls3a-LWrnjRzYYLKrPVxAo7YKJtfPcNWLdF7BxGlLtS-GYOZ76fhxeI_87Bgd793eCqf6td3PTdsftzcKlduL1B73qsrbVvo-EPbbV-vtR699e9u7F2NRj8v73SrtzcM8PRTW-kff2lrYHAIgz4rf_EY3B-AwUCDAiYQMACAjZ4BCIRTngchyJ95CUD-sEKHIPAbBEtk_TfHoFJKDg4L5DMkjkHB8b-w5yPuB9woRtAIOCJP5tn26zWz91IzJ58kVbgRv4idrSGnu48XCaO1mXgbQiEy-R1-bdVH9ba1I-n-fW6FLyNRyBO_EcODt2Q48q0FcuklcpkH5b5ts5yEYqACx7kVvJSEnvkwLt-9-Opy5NhpNO9ExmvI-68kwcIzPmf5KJLL7-I2eM0--vD9357J1Ol9W4oEi50au-36fOH61slenaoHa-LHijiNmyEkc6M_QYf3N7ObU_Lm0VLmKWzhm6eJQIKhTaVCz1lCGi9IaB1hABp_i4EzWNDwMofLitzuGZDt85ioUKhLeVCT2khq9dCVoeFSPN3FraOtdAsf7hmmcO1Gtk0Pr2FCoW2lQs9pYVmvRaadViINH9nYftYC63yh2uVOVy7cRYHFcrsKJZ5SgOteg206jAQaf3OwM4pPkkPrD_icRQuYl7qa9NIG8aDR749gDhcigm_E-Ek22Z7Ocy47Csj4HGyvcu2F_3F9lZaYHm4VQWmtBJtV6I7cpoq9Iypwa0q8F7PVGm7Et2R02yfNt7TZg429mFTClvy07KkMKPyre0q-ZDDSD7kMJYPhEbygdBIPppV8iGHkXzIYSwfCI3kA6GRfLSklrblkrar5KNTxXA5jBguhzHDERoxHKGxCaAyNou_pCpzU5VGh4DS5FTGEc1pYYrkVKVMLjqVjxHEdFqYIyqqIzTiOkJjsmM4YjuGY7oXZqiS7nIa011Oo7ojOKY7gmO6FwZpXvcmonthpijpXpgpSrrLaUx3OY3qjuCY7giO6V6Yp0q6y2lMdzmN6o7gmO4IjulemKr5b21DrjsrzBap7t7m078AAAD__2ZMc04= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9vmlAUx9_3V5Dz1GbX4L2AP0iWtGtdZuJqJz50WXigcldNrDDARNv4vy9gXYvoPRwxvEnhc--Xcz-nh1eI_87Bht7D_eC6f6dd3PadsfNzcKldOL1B72asrbVvo-EPbbV-udR6Dze9-7F2PRj8v73Srp3cM8PRbW-kff2lrYHBIvDlnfcsY7B_AwcGAhgYwMAEBha4DMIomMg4DqL0kdcM6PsrsJsMZotwmaR_dhlMgkiC_QrJLJlLsGHsPc7lSHq-jPQmMPBl4s3m2Tar9ctVGM2evShNcBPMl8-L2M7iOKGX_mzoAtwNg2CZvO3wvvDjWpt68TS_5BUHd-MyiBPvSYLNN-y0pFappKvzJRVHk76vs1wEkS8j6edWclMSe-TA63734qkjk2Go871zGa9DaX9QCBjM5Z_k4opffolmT9PsFzAYLhNby97j43u_v5NBqb4TRImMdG7tl-nz0fXNEjU7VI63RQ-EuAsaQaiL5n6BD25v5bbn5eXi1DbQRUM3ztgIhKwtaiNUzyqOZq2hFXgdrYDUf9cKrVNbQZQ_X0F20Wjo5hldJGRtk12snFUczVqDi6IOF5H671xsn-qiUf58DbKLZkO3zugiIWuH7GLlrOJo1hpcNOpwEan_zsXOqS6a5c_XJLtoNc5oIiFpl2xixaTiaNIaPDTr8BCp_s7D7jk-VQ-sP5JxGCxiWeortJkWTPpPcnsAcbCMJvI-CibZNtvLYcZl3x2-jJPtXbG96C-2t9KA5eF2FZjzSrRVie6qaU6omaDB7SrwXs2otFWJ7qppsU83P9JGDm7uw4YSNtWnZSphwdVbW1X6Qw0j_aGGsf5AaKQ_EBrpj1aV_lDDSH-oYaw_EBrpD4RG-qOttLSjlrRTpT-6VQxXw4jhahgzHKERwxEamwCUsVn8T0qZm1QaHQKkyUnGEc15YYrkVOVCLTpXjxHEdF6YIxTVERpxHaEx2TEcsR3DMd0LM5Sku5rGdFfTqO4IjumO4JjuhUGa172F6F6YKSTdCzOFpLuaxnRX06juCI7pjuCY7oV5StJdTWO6q2lUdwTHdEdwTPfCVM1_azfVuovCbFHq7m4-_QsAAP__uVOELg== query T EXPLAIN (DISTSQL) (SELECT y FROM xyz) EXCEPT (SELECT x AS y FROM xyz) ORDER BY y @@ -728,7 +728,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF1v4kYYhe_7K6y5SlQjMzPmy1KlpBuqRqIhBS62qnLhhWmCxGJqGylslP9eYcp68eD3zMQ2d0mcx3P8MufRmDeW_LtiARt-fhzd3j84V3f309n0z9G1czUdjoafZs7O-W0y_sN53X27doafPw0fZ98vvTq305Pr48ndcOL8-pezYy5bRwv1EH5VCQv-Zpy5TDCXSeYyn7msw55ctomjuUqSKN7_y1sG3C9eWdB22XK92ab7Pz-5bB7FigVvLF2mK8UCNgu_rNREhQsVe23msoVKw-UqW-Z19-1mEy-_hvE-wXQTrpPAaXn7lcfbNHBuBHt6d1m0TfPbJ2n4rFjA392PRehYRuClEYRNhLtlki7X89TjhRloC-TMl53zEiYvZ_4_DyE_FqJTawi_NER-n-06ihcqVouTO2V3KY0p0KzyCJ2mIqBJ5RG6FSK4H0r5e5i8TFU63niyMKnZbqOCowBuRyPmspX6J7264de_xMvnl-wngz3es9le0yhOVexJbWQ_l96_bzCzc-P4_6ZnQjxErWjj-e3igM8uPzhZnptbhBtYxBMtT1qrzCJE1zqEqcxAiNwjvEGZGYfoNigzXp9J0KzKZFZjBDSpMpnZRagsM34JmYHtdZSZNjJTmQnzIguTIsuW51vbxCJEzzqEqU1AiLzIokGbGIfoNWgTUV-V0azKbFJjBDSpMpvYRahsE3EJm4DtdbSJNjJTm0jzIkuTIvut7E3IziYWIfrWIUxtAkLkRZYN2sQ4RL9Bm8j6qoxmVWaTGiOgSZXZxC5CZZvIS9gEbK-jTbSRmdrENy-yb1LkTsvaJRYRBpYRTE0CIuQl9hs0iXGIQYMm8eurMZpVmUlqjIAmVWYSuwiVTeJfwiRgex1Noo3sI1_ZnLn_RCWbaJ0oo29j2vuBqcWzOnwASbSN5-oxjubZModfxxmX_WGhkvRwVRx-uV8fLu0D_ghzEpY0LIow_xH2T2BuB3NZhRa8Ej2oQsseTUuS7lSBORg5TQtRhZbtSnSfpn1ym3ZpuGMBiyLcJeEeXZAeCYNn7pOwz-mlByTNAc1pqXBkFU0rNmYANFIDwJEbEA7kAHBkB07LBegB0MgPAEeCADgyBMJBXbhmmNMti0ZHK6aAa5rgtGR4FxSG1gx6dNozfAAWp00j2gDXVGNVdpqGZadxWHaAo7LTOCq70CxrU3ZAo7IDHJUd4KjsCAc7XtDnVoFOj5pqKFwru6BVI3xwbKZVgx6dNo0ARxJBm0b0Aa6pxurMT9Pw0E_j8NQPcHTsp3FYds2yVmWnaVh2Godlp3FYdoCjHU-fZSX42CV9li3gWtkleEUGR2FJqwY8uqRNIztgcdo0EpxKpKYam7IDGpUd4KjsCAdlBzh8ydcsa_WWT9PwNZ_G4Xs-jcMXfYCjHU-fZSX63OizbAHXy06rxgdHYZ9WTfHRn95_-i8AAP__7rUCXg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF9v6jYYxu_3KSJftVpQsJ3wJ9Kkdi3TKnWlAy7ONPUiB7wWiRKWBAlO1e8-AePkEJP3sZukd23TX_zkxc9PDm8s_XfBQjb48nh_fffgXNzejSfjP-8vnYvx4H5wM3G2zm-j4R_OZvvt0hl8uRk8Tr5f2jjX45Prw9HtYOT8-pezZS5bxjP1EL2qlIV_M85cJpjLJHOZz1wWsCeXrZJ4qtI0Tnb_8rYH7mYbFrZdNl-u1tnuz08um8aJYuEby-bZQrGQTaKvCzVS0UwlXpu5bKayaL7YL7PZfrtaJfPXKNkluIkX69dlGu7jjFfR7seWJ9jTu8vidZavkGbRs2Ihf3c_liIwSrExSyFsUtzO02y-nGYeL0ziihcWyJmvW-clSl_O_H8eQn4sRFBrCL80RH6f9TJOZipRs5M77e9SGlOgWeURgqYioEnlEToVIrgfSvl7lL6MVTZcebIwqcl2pcKjBq7v75nLFuqf7OKKX_6SzJ9f9j8xlw3XWegQz9S12V7jOMlU4kltZD-X3r9nMLNz4_j_pmdCPMSteOX57eKAzy7fP1mem4uE2-rMEy1PGgrNIkfHVmh0DmGTI7cJb1BpxiE6DSqN1-cTNKsypdUYAU2qTGl2ESorjX-G0sD2OipNG5mp0oR5l4W1U2TL8w2dYpGja-0UMoewyZHXWTToFOMQ3QadIuorNJpVmVNqjIAmVeYUuwiVnSI-wylgex2doo3M1CnSvMvS2il-ywsMnWKRo2ftFDKHsMmR11k26BTjEL0GnSLrKzSaVZlTaoyAJlXmFLsIlZ0iP8MpYHsdnaKNzNQpvnmXfWunBC1Do1ik6FsbhUghbFLkVfYb9IlxiH6DPvHrKzOaVZlPaoyAJlXmE7sIlX3if4ZPwPY6-kQb2Ue-yjlz_5FKV_EyVUbf0rR3A1OzZ3X4ANJ4nUzVYxJP98scfh3uuf0fZirNDlfF4Ze75eHSLuCPMCdhScOiCPMfYf8E5nYwl1VowSvR_Sq07NK0JOmgCszByGlaiCq0bFeiezTtk9u0Q8OBBSyKcIeEu3RBuiQMnrlHwj6nl-6TNAc0p6XCkVU0rdiYAdBIDQBHbkA4kAPAkR04LRegB0AjPwAcCQLgyBAIB3XhmmFOtywaHa2YAq5pgtOS4R1QGFoz6NFpz_A-WJw2jWgDXFONVdlpGpadxmHZAY7KTuOo7EKzrE3ZAY3KDnBUdoCjsiMc7HhBn1sFOj1qqqFwreyCVo3wwbGZVg16dNo0AhxJBG0a0QO4phqrMz9Nw0M_jcNTP8DRsZ_GYdk1y1qVnaZh2Wkclp3GYdkBjnY8fZaV4GOX9Fm2gGtll-AVGRyFJa0a8OiSNo0MwOK0aSQ4lUhNNTZlBzQqO8BR2REOyg5w-JKvWdbqLZ-m4Ws-jcP3fBqHL_oARzuePstK9LnRZ9kCrpedVo0PjsI-rZrioz-9__RfAAAA___2XBM- # EXCEPT ALL and EXCEPT with MergeJoiner. query T @@ -749,7 +749,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lkFv2jAYhu_7FdZ3aiWjYCfQEmkSXcs0JFY64NBpyiElXkGiSRYHqWnFf58SprUE8BfPw7fS5LFff36kvK8gf63Ah8H93ehqeEvObobT2fTb6JycTQejwfWMFOTzZPyVPBcvZDy5GUzIp--kOCeD--vB3YxcjUbIm0AhTiJxGz4JCf4PYECBAwUXKHhAoQMBhTRL5kLKJCtfea2AYfQMfpvCMk7XefnvgMI8yQT4r5Av85UAH2bhw0pMRBiJzGkDhUjk4XJVbfNcvPTTbPkUZgVQmKZhLH3Scsqdx-vcJ30OwYZCss7_LP-26kNBFqFc7K7XZxBsAgoyDx8F-GxD_y1mx2pMfjTm2zrrOMkikYloZ6WgJLFXDpz1SygXU5GPU4fVbmRWpMJ_5w1QWImf-VmfnX_Mlo-L6q-_52a1c7-dyTU404HAt0krSR3WqZ_-4N7ezt6s-bWzBtfu8JbjnsRPjaBdy0H50aAWDGU2DOXNh8-bDN9tOd5JLNEIemE5KD8a1IIl3IYlbvPhu02G77WqT83_t0Qj6KXloPxoUAuWuDYs8ZoP32sy_E7rJI5oxOxZjcmPxrRgiGe7Dx2IMxEyTWIpGrWddnkgET2K7YBkss7m4i5L5tU225_jiqu-3JGQ-fYp3_4YxttHZcDmcNcE7pnAzCg366hppjEyrgd3TeCeCcyMctdGtkfzOt1-T7vqebtKmO3OrF2nPRPB1TAiuBpGBFfDmOAIjQjeMRFcDSOCq2FEcDWMCY7QiOBdE8EvTBRVw4iiahhRVA1jiiI0ouiliaJqGFFUDSOKqmFMUYRGFO2ZKMqMegJCI5IiNGIpQmOaYjjWFczKgllbMKsLhn3BrDAwo8bA9iqDlq1qGrNVTWO2qmnUVgTHbNUpS_t3ptOWdGnMVq2-pI1jtu6VB6WtwebD7wAAAP__fn1wWA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll1r2zAUhu_3K8S5akHBkWynjWHQrs1YIGu6JBcdwxdurDWBNPIsB-qW_PdhZ9DmS8eagu7i2o_06uiBvm-g_iwggt7D_eC6f0fObvvjyfjH4JycjXuD3s2ElOTraPidvJSvZDi67Y3Il5-kPCe9h5ve_YRcDwbIl0BhKVNxlzwLBdEvYECBAwUfKARAIYSYQpbLqVBK5tUnbzXQT18galOYL7NVUf05pjCVuYDoDYp5sRAQwSR5XIiRSFKRe22gkIoimS_qbV7K16ssnz8neQkUbuRi9bxUEakexllS_Wx5HOI1Bbkq_u3wvvBjSWaJmm0vecUgXscUVJE8CYjYmv5f0tB1Un406fs6q6XMU5GLdGuluCKxTw4c91uiZmNRDDOP7dzLpMxE9MEeoLAQv4uzK3b-OZ8_zepfQGG4KiJSn-Pjud_P5Fuc6UDgO9mSmcfC3dMf3DvY2ps1v3lmevMeb3n-CS01yNpxn5UfzerAU-bCU958_tx4_n7LC07oikHWC_dZ-dGsDlzhLlzxm8_fN55_0PLCE7pikPXSfVZ-NKsDV3wXrgTN5x8Yzz9sndAUg6Rd10n50aQOPAlc96QDcUZCZXKpRKMW1K4OJNInsRmQkqt8Ku5zOa232TwOa67-X54KVWze8s1Df7l5VQVsDnds4K4NzKxys1BPM4ORcTO4YwN3bWBmlXtnZHs036XbH2lfP29fC7PtmbV36cBGcD2MCK6HEcH1MCY4QiOChzaC62FEcD2MCK6HMcERGhG8YyP4hY2iehhRVA8jiuphTFGERhS9tFFUDyOK6mFEUT2MKYrQiKJdG0WZVU9AaERShEYsRWhMUwzHuoJdWbBrC3Z1wbIv2BUGZtUY2F5lMLJVT2O26mnMVj2N2orgmK0mZWn_zkzakimN2WrUl4xxzNa98qC1NV5_-hsAAP__RSqBOA== query T EXPLAIN (DISTSQL) (SELECT y FROM xyz ORDER BY y) EXCEPT (SELECT y FROM xyz ORDER BY y) @@ -769,7 +769,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mNFu4kYUhu_7FNa5SiQjMzM2EEuVst1QNRINKXCxVZULL54mSCx2bSOFjfLuFUatN3Z8fk9sc7cBPs8_Z-c7nOGF0n-25NP0y_3s0-2ddXFzu1wt_5hdWhfL6Wz6eWUdrF8X89-t58N3a764mS6sX_60DpfW9Mvn6f0KfIps2kWhvgu-6ZT8v0iQTZJsUmSTSzZ59GBTnERrnaZRcvzISw7chs_kD23a7OJ9dnz5waZ1lGjyXyjbZFtNPq2Cr1u90EGoE2dINoU6CzbbfJnnw_frONl8C5ID2bSMg13qWwPnuPJ8n_nWtaSHV5uifVY8Ps2CR02-eLU_FsHrLII0iXCzSbPNbp05olSDa1FaoGC-HqynIH165_NFCPWxEF6nIdzaEMVz9rsoCXWiwzdPyp9SG1OiWhURvL4ioEoVEUYtItgfSvlbkD4tdTaPHVWq1OoQa_8_9z_NZmTTVv-dXVyLy5-TzeNT_q__z3j9nsbdlvUuGkSxo7zy7t9de_JmbdFccdFAcUcOHGXcZwxCjDoMIU1CFJKLHjtN4xCjHjuN6E5zVKu6TtNhBFSpuk5jFqF1pxHn6DSyuWiyiWhq4LjGthuEGHcYQpqEKESTPdreOMS4R9tld6qhWtXZ3mEEVKk6280itLZdnsN21Vw01UQ0d5CP-Wa2G4SYdBhCmoQoRFM92t44xKRH21V3qqFa1dneYQRUqTrbzSK0tl2dw3a3uWhuE9G8gbHrBhGuOosgTSIUkrk9mt44xFWPprvdaYZqVWd6hxFQpepMN4vQ2nT33L8XvBNnodM42qW60a8Bw-OGdPioTwVKo32y1vdJtM6XOf05z7n8hVCn2eldefrjdnd66xjwR1iwsOJhWYbFj7D7BhZmsJCt6Ks2tBy1oZXiacXSXhtYtFpaDlvR4za0AofFZY8p-P_yDGBZhkcsDDY95u0a8XpNWFoMefqKpwXoC5WuYuI2oJHcCAd2AxzpDXDkt6i0VBPBAY0MBzhSHOHguAMcSS4qjfXtkUV4pcVweEV0wfcYtHW-yYgx0I1vM2IC8EqjMbKVp6GtAEe28ji0lcehrZUma2QrT0NbeRzaCnB0ZHkc2sp_wUgBhigwtgreVskPrmDrku800gVzL99ppAfwSqcxmpt5Gg7OAEeTM4_D0ZnHka2y0mVNbAU0shXgyFaEoyPL48hWyX_ByAnA-Um2hFdt5UdZtHW-0ygwyiq-0yhwQ1b8UAPqDmhkK8KBrQBHtgIc3nT5izK66oIrfrvF4WUX4Oi2C34jQKeG_4JRqHT8KFvCK7YqfpYtb_3h9ad_AwAA__--BQGd +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF1v4kYUhu_7K6xzlUhGZmZsIJYqZZtQNRINKXCxVZULL54mSAS7tpHCRvnvFaCVFzs-rye2uQsfD_POyTyHM7xR-t-afBp_fZh8ubu3Lm7v5ov5X5NL62I-noxvFtbO-n02_dN63X23prPb8cz67W9rd2mNv96MHxbgXWTTJgr1ffCiU_L_IUE2SbJJkU0u2eTRo01xEi11mkbJ_i1vB-AufCW_b9NqE2-z_dOPNi2jRJP_RtkqW2vyaRF8W-uZDkKdOH2yKdRZsFoflnndfb-Ok9VLkOzIpptovX3ZpL61fzCPg_2fPUfS47tN0TbLV0iz4EmTL97tz6Xw2kwhTVLcrtJstVlmjihU4loUFsiZbzvrOUifP3h_HkJ9LoTXagi3MkT-OdtNlIQ60eHJJx0-pTKmRLXKI3hdRUCVyiMMGkSwP5XyjyB9nutsGjuqUKnFLtb-jw7wZTIhm9b63-ziWlz-mqyeng9_kU3TbeZbzJ6G7Zb1PupFsaO84u4_XHt0sraob7kwtdyRPUfV7DYGOQbt5pAmOXLVRYf9pnaIQYf9RrQnO6pVVb9pMQKqVFW_MYvQuN-Ic_QbWd81aeya6jluTecNcgzbzSFNcuS6yQ6drx1i2KHzsj3hUK2qnG8xAqpUlfNmERo7L8_hvKrvmjJ2ze05Xk3nDXKM2s0hTXLkuqkOna8dYtSh86o94VCtqpxvMQKqVJXzZhEaO6_O4bxb3zXX2DWvV9N4gxRXbaaQJily1dwOfa8d4qpD3932ZEO1qvK9xQioUlW-m0Vo7Lt77t8RPogz02kcbVJd61eC_n5DOnzSxwKl0TZZ6ockWh6WOT6cHrjDE6FOs-Or8vjgbnN8aR_wZ1iwsOJhWYTFz7B7AgszWMhG9FUTWg6a0ErxtGJprwksGi0t-43oYRNagcPisscU_L88A1gW4QELg00PebsGvF4jlhZ9nr7iaQH6QqmrmLgNaCQ3woHdAEd6Axz5LUot1URwQCPDAY4URzg47gBHkotSYz09sggvtRgOL4ku-B6Dts43GTEEuvFtRowAXmo0RrbyNLQV4MhWHoe28ji0tdRkjWzlaWgrj0NbAY6OLI9DW_kvGCnAEAXGVsHbKvnBFWxd8p1GumDu5TuN9ABe6jRGczNPw8EZ4Ghy5nE4OvM4slWWuqyJrYBGtgIc2YpwdGR5HNkq-S8YOQI4P8kW8LKt_CiLts53GgVGWcV3GgVuyIofakDdAY1sRTiwFeDIVoDDmy5_UUZXXXDFb7Y4vOwCHN12wW8E6NTwXzAKlY4fZQt4yVbFz7LFrT--__J_AAAA__8TWRJ9 # EXCEPT ALL and EXCEPT with no overlap. query T @@ -799,7 +799,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v2kgUhu_3V4zOVaI1MjNjvixVSrelKhIbsoC0Xe1y4cJsgkQxaxsJGuW_rwwNCZjO62OIuSsfz8zp6_OcGfJI8X8z8qn95a77vnMrrj52BsPBH91rcTVod9sfhmIlPvV7v4vV-rv483O73xYr8c-yWtVjoa5F-8uH9t1QvO924ffNuxTo9T-2--K3v8SKHJqHE3MbfDMx-X-TJIcUOaTJIY8cqtHIoUUUjk0ch1H6lccN0JmsyK86NJ0vlkn69sihcRgZ8h8pmSYzQz4Ng68z0zfBxERulRyamCSYzjbbrNbfbxbR9FsQrcmhwSKYx76ouOnOvWXiixtJoyeHwmXysnycBPeGfPnk5C_h03SWmMhEbm1__-376T67GH3f79wOmwf7viz1dS0egvhhf51NnS-1KU5tr-OR58tHF8pHgoDSvjlHQt5Pq3tZZzkPo4mJzGRvpVFKoq8c-S9-DuKHgUl6C1cdhDxcL4z_Sh5yaGb-Ta5u5PW7aHr_sPlXjsRrnMQHYZSYyFW1w5h-_en69RyZHYvjx6JHirgNK-HC1dXDgI9u39jbXjKaOkdPu6riarb1oIhdV9cvYD0noHMmpAslJEFEb-O9LNd7WYb3IPFn7-tFvVf5-0rlaStdcT22eKCIXVs1LiAeIyB5zoR0oYQkiOhtxFPliqfKEA8k_ixeo6h4On9f6Txt5VU2t1GeeKCIXVs1LyAeIyB5zoR0oYQkiOhtxNPliqfLEA8k_ixes6h4Xv6-8vK0Va3C1g6UsGuq1gW0Y8Qjz5ePLpSPBAG9jXReudJ5ZUgHEn-WrnWOn5dH1u-beBHOY5Prl2M1DcxM7s32AcThMhqbuygcb7bZvuxtuM0bExMn20_l9kVnvv0oLfA1LA9h-Rr29mDJg6U8iW6cQit9Et2y08qauLYnrhmJKx58kDiXbpxCHyTOpVt22rMmXrMnXrPCdfuzrtufNdCrYaWbdrh5ipt2GLkJaOCmnUZuAhq42bJPwyoYh5lhyrET0EhPhAM_AY4ERTgwVGZG6n7wCgRvn6lAUpmZLvube2DzzHhhnYJ2Gh6DAEfnoB2HByHAgW3SPltlHQSfma4s3ew01A3gSDc7DnUDONLNfrJIcLTIzJBl6WYfsgoMWcUZstnLF2vIsnGgG8CRbghHF0_7kFVgyKrMkOXoBmikG8KBbgBHuiEc6KbsB4wCB4yy31-Bbso-ZBUYsoozZLObs4YsG0e6sYYsG0e62YesAkNWcS7w2ZZj3eDZONKNdYdn40g3-wGjwQGj7X8SOdRt9PTL_wEAAP__Gz3Neg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYUhu_7K6xzlahGZmbMl6WVss2yWiQaUkDqVi0XXpgmSART20iQKP-9MmxIsMm8PoaYO76emZOX85wZ8kTRfzPyqP39tvu5c2NdfOkMhoM_upfWxaDdbV8PrZX1td_73VqtH60_v7X7bWtl_bOsVtXYkpdW-_t1-3Zofe524ef1pwTo9b-0-9Zvf1krsmkeTPSN_6Aj8v4mQTZJskmRTS7ZVKORTYswGOsoCsLkI08boDNZkVe1aTpfLOPk5ZFN4yDU5D1RPI1nmjwa-j9muq_9iQ6dKtk00bE_nW22Wa0frxbh9MEP12TTdTBbPswjb1POYOEnDyuOpNGzTcEyft0hiv07TZ54tvNX8XU6i3WoQ6e2X8L2dc-6ErskPc_r3AybqX1fl_qxtu796H5_nStBo-fX2iSntrcJiZNGpApFJEBGSfecIiT33epe11nOg3CiQz3ZW2mUkOgjB_7Eb350P9Bxb-HIVM7D9UJ7bxQim2b63_jiSlx-Cqd395tHZFNvGSdBvJt4jZP4IAhjHTqylo7p13fXr-fI7FAcPxc9UMRNUAkWjqqmAz64fWNve8Hoa25bO7LiqJzugzp2jV0_g_ucjE4ckioUkgApfYz9olz7RRn2g8Rf7K8XtV_mby3J7ixVcdyc-oE6dp3VOIN-jIzEiUNShUISIKWP0U-Wq58sQz-Q-It-jaL6qfytpdid5VacWk79QB27zmqeQT9GRuLEIalCIQmQ0sfop8rVT5WhH0j8Rb9mUf3c_K3lsjurVskpH6hi11etM8jHSEicNCJVKCIBMvoY9dxy1XPLUA8k_qJe6xQ_Ow-s39fRIphHOtcvymoSmJ7c6e0XEAXLcKxvw2C82Wb7tLfhNi9MdBRv3xXbJ5359q2kwLewSMPiLezuwYIHC3EU3TiGluooumWmpTFxZU5cMRKXPDiVOJduHEOnEufSLTPtGhOvmROvGeG6-buum79roFfDSDfNcPMYN80wchPQwE0zjdwENHCzZZ6GVTAOM8OUYyegkZ4IB34CHAmKcGCoyIzU_eAlCN48U4GkIjNd9jd3weaZ8cI6Bc00PAYBjs5BMw4PQoAD24R5too6CD4zXVm6mWmoG8CRbmYc6gZwpJv5ZBHgaBGZIcvSzTxkJRiykjNks5cv1pBl40A3gCPdEI4unuYhK8GQlZkhy9EN0Eg3hAPdAI50QzjQTZoPGAkOGGm-vwLdpHnISjBkJWfIZjdnDVk2jnRjDVk2jnQzD1kJhqzkXOCzLce6wbNxpBvrDs_GkW7mA0aBA0aZ_yWS1m30_Mv_AQAA__8No95a query T EXPLAIN (DISTSQL) (SELECT x FROM xyz WHERE x < 2) EXCEPT (SELECT x FROM xyz WHERE x >= 2) ORDER BY x @@ -828,7 +828,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82F9v4kYUBfD3fgprnhLVyMwfE7C0UrYbVotEQwpI3arNAwvTBInF1DYSbJTvXgELDn98j4cZ8rYhHM-5d81PxC8s_W_CItb8-tD-2Lr3ru5avX7vj_a1d9Vrtpuf-t7C-9zt_O4tlj-8P780u01v4f0zr1bl0BPXXvPrp-ZDH75Xf1i9udO9a3a93_7yFsxn03ik7wffdcqivxlnPhPMZ5L5TDGfhezRZ7MkHuo0jZPVW17WgdZowaKqz8bT2Txbvfzos2GcaBa9sGycTTSLWH_wbaK7ejDSSVBlPhvpbDCerI9ZLH_czpLx90GyZD7rzQbTNPIqwerkzjyLvFvOHl99Fs-z_PJpNnjSLOKvfvkKn8eTTCc6CcL98zevr87ZrTCKotZ9v154rjA59-3o3N3s8qzZORh-dU-g6ZXJyXfjNBtPh1kgDkY_Gi3PfFt6z4P0-cT78xLheSVCpyVqhSXy68yncTLSiR7tXWl9lcKaEu0qr3BzqQpoU3mFukUF_6yWXwbpc09nnVmgDjbVX850tAXwY7vNfDbR_2ZXt_z6QzJ-el7_q8Snq2Fye_XiJNNJoI5W9muxXNUSSzu1j59XPdHiPq7EsyCsHm749Pn7dHIDwkoIFohKII39BiV2htUc-20yvMvp5VnTczC-ueDg5BxPfkHBS5eoXVBw7o5PtKsiwR1WQJsqEtysgrXg_D0EB7fXVvCjlZUWXJRHRJQxRFYCZSwoKLEz5MaxoAbDc5fTy7Om52B8c0HByTle4oKCli5xc0FBhTu-0K6KBHVYAW2qSFCzCtaCivcQFNxeW0GPVlZaUFkeEVnGEFVZ_6VvJigosTOk7lhQg-G5y-nlWdNzML65oODkHC95QUFLl6hfUFDpji-0qyJBHVZAmyoS1KyCtaDyPQQFt9dW0KOVlRZUlUdElTEkrBj7CSrsBGk49tNgdO5udnnW7BwMb64nODmHS11Qz9IlGhfUU7mjC-2qSE-HFdCmivQ0q2Ctp3oPPcHttdXzaGVnPYM9cUBXp7N4mupSj1erq43p0ZPe_A-k8TwZ6ockHq6P2fzYWefWL4x0mm1-yzc_tKabX60Kvg1zMqzosCDDkg5LMhzSYXUY5m_Dtb0wNwvzG5u0sEpLq7QC6ZBMW4V53SYtrNLSKq1AukbepiB8YxAWh-E6GW7QH5AGjUKV7s1pU0KECq0KFyBOu8KBDZyWhQPU-NGHbD9eA3H6dgM0gTSyCcQRTiCOdAJxxBM_-qiZ-ATSCCgQR0KBOCIKxJFRnHaGN0CcluYgfuQUp60RVfAlAnx_AVQJ2hoBrBG0NQJYI2hrBPoCRVsjgDXCyhqQRtaAOLIGxJE1II6sEVbWgDSyBsSRNSCOrAFxZI2grRHAGkFbI4A1grZGAmuknTWStkYCayT4ewlYI2lrJLBG0tZIYI20sgakkTUgjqwBcWQNiCNrpJU1II2sAXFkDYgja0AcWSNpaySwRtLWSGCNpK1RwBplZ40CT2aANYq2RqHnK7Q1ClijaGsUsEZZWQPS8PmOnTUgDp_w2FmjrKwBaWQNiCNrQBxZA-LIGkVbo4A1irZGAWsUbU0IrAkNrXl8_eX_AAAA___oPFwV +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82Ftv4kYcBfD3fgprnhLVyMzFXCytlG3CapFoSAGpW7V5YGGaIBFMbSPBRvnuFbDgcPH_eBg7bwF8PGf-O_zE-pXF_01ZwFrfHjqf2_fO1V27P-j_0bl2rvqtTut24CydL73u785y9cP582ur13KWzj-LalWOHHHttL7dth4G8Fr9aX1xt3fX6jm__eUsmctm4VjfD190zIK_GWcuE8xlkrlMMZf57NFl8ygc6TgOo_Ulr5tAe7xkQdVlk9l8kazffnTZKIw0C15ZMkmmmgVsMPw-1T09HOvIqzKXjXUynEw3yyxXP27m0eRlGK2Yy27D6eJlFgebOv35cP1nxRPs8c1l4SJJV4iT4ZNmAX9z87f4MpkmOtKR5x9W2L4fODd8P8UgCNr3g0bmusJk3fe754VuX160fQ72vz4ZaADKZOW7SZxMZqPEE0e7v-FHC6SZ7yvneRg_n7k-LeFfVsIvtEQts0R6n8UsjMY60uODO23ukllTolmlFeplVUCTSis0LCq4F7X8Ooyf-zrpzj11NKnBaq6DHYOfOx3msqn-N7m64defosnT8-Yv5rLuIlkf-sw9NU2OVz-MEh156mRkv2bjVc0xtHPz-HnXMy3uw0o49_zq8YTPr3-oJzdQzBQxT1Q8mVNx0GPPWK1gxU32X_AA5EUD4GAC5o6DlVNCeYmO5y5RK9FxXhyiaFZZjhdYAU0qy3GzCtaO849wHByvneMnI8vtuMjviDBmRFY8ldNR0GPPSL1gRw32zwsegLxoABxMwNxRsHJKmCjR0dwl6iU6KopDDM0qy9ECK6BJZTlqVsHaUfERjoLjtXP0ZGS5HZX5HZHGjKiK5-d0FPTYM9Io2FGD_fOCByAvGgAHEzB3FKycEiZLdDR3iUaJjsriEEOzynK0wApoUlmOmlWwdlR-hKPgeO0cPRlZbkdVfkeUMSN-JaeioMUekWbBihrsnhe6fXnR9jnYv7mhYOWUL1WioblLNEs0VBUHGJpVlqEFVkCTyjLUrIK1oeojDAXHa2foycguejZ7ZoGejufhLNa5HrtW1xPT4ye9_ReIw0U00g9RONoss33Z3eQ2b4x1nGw_5dsX7dn2o3XB92FOhhUdFmRY0mFJhn06rI7D_H24dhDmZmFet0kLq7S0SiuQ9sm0VZg3bNLCKi2t0gqka-QxBeG6QVgchxtkuEl_QZo0ClW6N6dN8REqtCpcgDjtCgc2cFoWDlDjJ1-yw3gNxOnjBmgCaWQTiCOcQBzpBOKIJ37yVTPxCaQRUCCOhAJxRBSII6M47QxvgjgtzVH8xClOWyOq4EcE-P0CqBK0NQJYI2hrBLBG0NYI9AOKtkYAa4SVNSCNrAFxZA2II2tAHFkjrKwBaWQNiCNrQBxZA-LIGkFbI4A1grZGAGsEbY0E1kg7ayRtjQTWSPD_JWCNpK2RwBpJWyOBNdLKGpBG1oA4sgbEkTUgjqyRVtaANLIGxJE1II6sAXFkjaStkcAaSVsjgTWStkYBa5SdNQo8mQHWKNoahZ6v0NYoYI2irVHAGmVlDUjD5zt21oA4fMJjZ42ysgakkTUgjqwBcWQNiCNrFG2NAtYo2hoFrFG0NT6wxje05vHtl_8DAAD___lvbPU= # EXCEPT ALL and EXCEPT with some overlap. query T @@ -858,7 +858,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYYhe_7K0bvVaIamZkxX5ZWYrvLapFoSAGpW7VcePE0QWKxaxspJMp_rwwbCDaZ4zHE3G0Ij-fdwzxnhjxR_N-CXOp9ux187N-wq8_98WT8x-CaXY17g96nCVuzL6Ph7-xh_cj-_Nob9dgD-2dVr0v1gfFr1vv2qXc7YR8HAwjMmLxmw9Hn3oj99hdbk0XLwFc33g8Vk_s3cbJIkEWSLHLIogZNLQqjYKbiOIjStzxtgL7_QG7dovkyXCXpy1OLZkGkyH2iZJ4sFLk08b4v1Eh5vorsOlnkq8SbLzbLPKwfu2E0_-FF6QTj0FvGLqvZ6crDVeKyLre6gqbPFgWrZL9CnHh3ilz-bBWf4st8kahIRXbjcITt6-lS-yRd1-3fTNq7KbIj7J_6fc3uvfj-8JFdTtPn_ZjCZMzXYfGzpiVLpcVBXDMmz5uW8-aY--eslkHkq0j5B0-apiR6y5H_61cvvh-rZBjaIhP4ZB0q95VVZNFC_Ztcdfn1h2h-d7_51z79N6NvmEQ_DqJERbZoZGP69c3nNwtkdiyOnw89MsRNUAtCW9azAR9dvnWwPDfY4AX2ty1qtizTB2CO3Q5vXrYPTOI6c16yVF4cBPbOjcCrbQReRSOA6F8aoVm2EUTxPSaKbDFZs50ySoI5dlusdVklDeLiZ85LlsqLg8DeWUlRrZKiCiVB9C9KtsoqKYvvMVlkizm1zcXWWEkwx26LtS-rpEFc_Mx5yVJ5cRDYOyspq1VSVqEkiP5FyXZZJZ3ie8wpssUatTJCgil2G6xzWSENwuJnTUuWSouDuN5ZR6daHZ0qdATRv-jYOcfX2CPPH6k4DJaxKvQNtZ4Gpvw7tf0A4mAVzdRtFMw2y2x_HG64zQu-ipPtb_n2h_5y-6t0wNcwz8L8NewcwNwM5vwkunUKLeRJdEdPC23iUp-4NEhcmMGZxE3p1il0JnFTuqOnHW3iDX3iDS3c1H_WTf1nDfRqaem2Hm6f4qYeRm4CGripp5GbgAZudvRtWAd1mCtTEzsBjfREOPAT4EhQhANDea5SD4MXIHh9pwJJea5dDhd3wOK5ejE6BfU0PAYBjs5BPQ4PQoAD27i-W3kTBJ9rVyPd9DTUDeBINz0OdQM40k1_snBwtPBcyRrppi9ZAUpWmJRs_vJlVLLGONAN4Eg3hKOLp75kBShZkStZE90AjXRDONAN4Eg3hAPdhP6AEeCAEfr7K9BN6EtWgJIVJiWbX9yoZI1xpJtRyRrjSDd9yQpQssLkAp_fckY3eGMc6WZ0hzfGkW76A0aCA0bq_ySS1W36_Mv_AQAA__9SNOwx +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF1v4kYYhe_7K0bvVaIamZkxX5ZWYptltUg0pIDUrVouvHiaIBHs2kaCRPnvFbCBYJM5HkPMXfh4PC-Hec6YPFP834xc6ny_633u3rKrL93haPhH75pdDTu9zs2IrdjXQf93tlw9sT-_dQYdtmT_LKpVqT4xfs063286dyP2udeDwITJa9YffOkM2G9_sRVZNA98des9qpjcv4mTRYIskmSRQxbVaGxRGAUTFcdBtH7L8wbo-ktyqxZN5-EiWT89tmgSRIrcZ0qmyUyRSyPvx0wNlOeryK6SRb5KvOlss8xy9dQOo-mjF60nuAlmi8d57LKltZloGHrrRxVb0PjFomCR7BeJE-9ekctfrPyDfJ3OEhWpyK4dTrF93mVtvg_Tdd3u7ahJFvUXicva6RH2V_2xYg9e_HB4yTan8ct-TGEy5tu8-LkDk4UC4yCxCZPnDcx5d8z9dRbzIPJVpPyDK43XJHrLkc_6zYsfhirph7ZIZT5ahcp94xZZNFP_Jldtfv0pmt4_bP7afW7-bvQ1k-iHQZSoyBa1dEy_vnv9eo7MjsXx86JHhrgNKkFoy2o64KPLNw6W5wZ7vMAWt0XFljlbAYyy2-T1y7aCSWLnj0wWioyDzD64F3i5vcDL6AUQ_Wsv1Iv2gsi_zUSRXSYrtpNTTDDKbpc1LiumQWL8_JHJQpFxkNkHiynKFVOUISaI_lXMRlExZf5tJovsMqdi13KKCUbZ7bLmZcU0SIyfPzJZKDIOMvtgMWW5YsoyxATRv4rZLCqmk3-bOUV2Wa2SU0swyG6PtS6rpUFe_NyByUKBcZDYB0vplCulU4aUIPpXKVvn-Hl75PoDFYfBPFa5frlW14Ep_15tv4A4WEQTdRcFk80y24f9Dbd5wldxsn2Vbx9059uX1gO-hXka5m9h5wDmZjDnJ9GNU2ghT6JbelpoE5f6xKVB4sIMTiVuSjdOoVOJm9ItPe1oE6_pE69p4br-u67rv2ugV0NLN_Vw8xQ39TByE9DATT2N3AQ0cLOlb8MqqMNMmZrYCWikJ8KBnwBHgiIcGMozlXoYvADB6zsVSMoz7XK4uAMWz9SL0Smop-ExCHB0DupxeBACHNjG9d3K6yD4TLsa6aanoW4AR7rpcagbwJFu-pOFg6OFZ0rWSDd9yQpQssKkZLM3X0Yla4wD3QCOdEM4uvHUl6wAJSsyJWuiG6CRbggHugEc6YZwoJvQHzACHDBCf_8KdBP6khWgZIVJyWYXNypZYxzpZlSyxjjSTV-yApSsMLmBz245ozt4YxzpZnQPb4wj3fQHjAQHjNT_SySt2_jll_8DAAD__5RZ_pc= query T EXPLAIN (DISTSQL) (SELECT y FROM xyz WHERE x >= 1) EXCEPT (SELECT y FROM xyz WHERE x < 3) ORDER BY y @@ -887,7 +887,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82N9v2lYcBfD3_RXWfUo0I3N_mIClSnQNVZFYyABpnbY8ULhLkChmtpFCo_zvE1Bw-OHvufa189YQDvf01P6I-oXF_81ZwDpf73sfu3fO1W13OBr-0bt2roadXufTyFk7nwf9353n9Q_nzy-dQcd5dv5Z1etSf3D4tdP5-qlzP4Jvnjjy2ukPbjsD57e_nDVz2SKc6rvxdx2z4G_GmcsEc5lkLlPMZT57cNkyCic6jsNo85aXbaA7fWZB3WWzxXKVbF5-cNkkjDQLXlgyS-aaBWw0_jbXAz2e6sirM5dNdTKezbfHPK9_tJfR7Ps42jQYLseLOHBq3ubk_ioJnDZ324I9vLosXCXpCXEyftQs4K-ueYvPs3miIx15_nGF3eubo9IVgyDo3o2ahxbZFUSeCm-H4KUuIQstwcEUE0eaL6HyVLidxclsMUk8cTJDm58ckGa-rZ2ncfx04f1pCb9YCb_UEo3MEunnrBZhNNWRnh590vZTMmtKtFVa4aaqCmiptELTooJbqOWXcfw01El_6amTpUbrpQ72Mn7s9ZjL5vrf5KrNrz9Es8en7Z_SOy3z79TKc3kNwyjRkafOJvs1G7S6wWiX9vj5qRda3IW1cOn59dOFL59_LCrPwZmBZp6oebKI7KDHwbNGdbLnmaLkLWShLTgYw8J2UCFllVdou3GJRoW28_JgRVtl2V5iBbRUlu35Kljbzt_DdnB57W0_m8zYdmEOijDxRNY8VcRW0OPgyU11tuaYgpe8hSy0BQdjWNgKKqSsiQptNS5xU6GtojzY0FZZtpZYAS2VZWu-Cta2ivewFVxee1vPJjO2VZqDIk08UbXtQ4PctoIeB0-a1dmaYwpe8hay0BYcjGFhK6iQsiYrtNW4RLNCW2V5sKGtsmwtsQJaKsvWfBWsbZXvYSu4vPa2nk1mbKsyB0WZeOLXisgKWhw0aVUna44heKlLyEJLcDCFhaugQkqaqtBV4xKtCl1V5aGGtspytcQKaKksV_NVsHZVvYer4PLau3o2WaFnvRcOGOh4GS5ibfQYt75ZTE8f9e5fIA5X0UTfR-Fke8zux_42t31hquNk91u--6G72P1qU_BtmJNhRYcFGZZ0WJJhnw6r0zB_G24chXm-ML-xSQurtLRKK5D2ybRVmDdt0sIqLa3SCqQb5GUKwjc5wuI03CTDLfoGadEo1OnenDbFR6jQqnAB4rQrHNjAaVk4QI2f3WTH8QaI05cboAmkkU0gjnACcaQTiCOe-NmtlscnkEZAgTgSCsQRUSCOjOK0M7wF4rQ0J_EzpzhtjaiDLxHg-wugStDWCGCNoK0RwBpBWyPQFyjaGgGsEVbWgDSyBsSRNSCOrAFxZI2wsgakkTUgjqwBcWQNiCNrBG2NANYI2hoBrBG0NRJYI-2skbQ1Elgjwf-XgDWStkYCayRtjQTWSCtrQBpZA-LIGhBH1oA4skZaWQPSyBoQR9aAOLIGxJE1krZGAmskbY0E1kjaGgWsUXbWKPBkBlijaGsUer5CW6OANYq2RgFrlJU1IA2f79hZA-LwCY-dNcrKGpBG1oA4sgbEkTUgjqxRtDUKWKNoaxSwRtHW-MAaP6c1D6-__B8AAP__bm96zA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy82Ftv4kYcBfD3forRPCWqkZmLCVhaKduE1UaiIQWkbtXmgYVpgkQwtY0EG-W7V8CCw8X_Y3vsvC2Xg8-eHX5i_cqj_6bc5-1vD53Pd_fs4vauP-j_0blkF_12p30zYCv2pdf9nS1XP9ifX9u9Nluyfxb1ujKfmLhk7W837YcBfPOIqUvW7d22e-y3v9iKO3wWjM398MVE3P-bC-5wyR2uuMM1d7jHHx0-D4ORiaIgXL_ldRO4Gy-5X3f4ZDZfxOunHx0-CkLD_VceT-Kp4T4fDL9PTc8MxyZ069zhYxMPJ9PNZZarH9fzcPIyDNcNboLp4mUW-WzpbBr158P1o5or-eObw4NFnFwkiodPhvvizcle5MtkGpvQhK532GL7vM-uRTKk7_t394Mmd3h3EfvsOr2CzFPh_Rai7DFUoTEEWGPEVPYxdJ4Kt5MonsxGsSuPlrgWRxdIMt9X7HkYPZ95f1LCK1bCK7VEI7VE8jmLWRCOTWjGB5-0-ZTUmgptlVS4qqoCWiqp0LSo4BRq-XUYPfdN3J27-mipwWpu_J2Pnzsd7vCp-Te-uBaXn8LJ0_PmT_sznv53auU5Xv0gjE3o6pPJfk03rZ5htHN7_PzUMy3ug1owd7368cLnr3-IqsghWgHQXFlzVUbfQZU9aY3qfM-zRvlzqEJzCLCHhfCgQoKrqFD4zCUaFQovyuMVbZUmfIkV0FJpwuerYC28-AjhwfHaCX8yWWbhZXZTZBFSVM3VGYUFVfakXFUnbI41RPlzqEJzCLCHhbCgQoKbrFDYzCWuKhRWlscb2ipN2BIroKXShM1XwVpY-RHCguO1E_ZksszCquymqCKk6JrrZRQWVNmT0qxO2BxriPLnUIXmEGAPC2FBhQQ3VaGwmUs0KxRWlccb2ipN2BIroKXShM1XwVpY9RHCguO1E_ZksszC6uym6CKkeLWMvoIie1Ba1fmaYwtR9hiq0BgCrGGhK6iQwKYr1DVziVaFuuryaENbpelaYgW0VJqu-SpY66o_QldwvHa6nkxW6B7wmQv0TDQPZpHJdHu3vl7MjJ_M9l8gChbhyDyEwWhzme3D7ia3eWJsonj7qtg-uJttX1oXfB8WZFjTYUmGFR1WZNijw_o4LN6HGwdhkS8srmzS0iqtrNIapD0ybRUWTZu0tEorq7QG6QZ5TEH4KkdYHoebZLhFf0FaNAp1uregTfEQKrQqQoI47YoANghaFgFQEydfssN4A8Tp4wZoAmlkE4gjnEAc6QTiiCdx8lXL4xNII6BAHAkF4ogoEEdGCdoZ0QJxWpqj-IlTgrZG1sGPCPD7BVAlaWsksEbS1khgjaStkegHFG2NBNZIK2tAGlkD4sgaEEfWgDiyRlpZA9LIGhBH1oA4sgbEkTWStkYCayRtjQTWSNoaBaxRdtYo2hoFrFHg_0vAGkVbo4A1irZGAWuUlTUgjawBcWQNiCNrQBxZo6ysAWlkDYgja0AcWQPiyBpFW6OANYq2RgFrFG2NBtZoO2s0uDMDrNG0NRrdX6Gt0cAaTVujgTXayhqQhvd37KwBcXiHx84abWUNSCNrQBxZA-LIGhBH1mjaGg2s0bQ1GlijaWs8YI2X05rHt1_-DwAA__-dWY0y # EXCEPT ALL and EXCEPT with swapped column orders. query T @@ -908,7 +908,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll1v2jAUhu_3K6xz1UqOgp2ElkiTqDqmIbHSFS4qTblIiVeQaJLFQSKt-O9TwhjlYz7xDNllah77tc8j9X0D-XMOPvQe7wc3_Tty8ak_Go--DS7JqDfo3Y7JkpKCfH4YfiXL4pX0Hm9792NyMxhs1gtKln_WgUKcROIufBES_O_AgAIHCg5QcIGCBwGFNEsmQsokK3_yVgH9aAl-i8IsThd5-eeAwiTJBPhvkM_yuQAfxuHTXDyIMBKZ3QIKkcjD2bw6Zlm8dtNs9hJmBVAYpWEsfWLZ5cnDRe6TLqNdDsGKQrLIf5-w3fipINNQTne33CABBZmHzwJ8tqL_FtbTDMtpl5mG5X8Nu91qESdZJDIR7WwWlCT2kyM3_hLK6Ujkw9Rme9MZF6nw35kDFObiR35Rpb78mM2ep5sP1cC2l3MMLnck-V1iJanNvP1nOHq2u3M2q28Bq2GBzS3bOaO0GnHb2nFPry1rVlvWqLa8_ix4nVk4lu2eUR2NuFfacU-vDm9WHd6oOk79WTh1ZuFa1f-oc6mjEfdaO-7p1XGaVcdpVB23_izcOrPwrDOKoxG2oxn29Nq4zWrj_reOdSTXg5BpEktRq0G1ypuJ6FmsX0omi2wi7rNkUh2z_hxWXNUAIiHz9Spff_Tj9VIZsD7cNoE7JjAzys08Nc00nozrwW0TuGMCM6Pce092QPN9uvWedtTv7ShhtvtmrX3aNRFcDSOCq2FEcDWMCY7QiOCeieBqGBFcDSOCq2FMcIRGBG-bCH5loqgaRhRVw4iiahhTFKERRa9NFFXDiKJqGFFUDWOKIjSiaMdEUWbUExAakRShEUsRGtMUw7GuYFYWzNqCWV0w7AtmhYEZNQZ2UBm0bFXTmK1qGrNVTaO2Ijhmq05ZOpyZTlvSpTFbtfqSNo7ZelAelLYGqw-_AgAA__-poYDu +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEls1u2kwUhvffVVhnlUiDzIxtEix9ElFKVSQa0sAiUsXCwdOARDyux5Zwotx7ZZMf_jrH4wF3aczjeeecZ_G-gPy9BB_697fDq8GNdfZlMJ6MfwzPrXF_2L-eWCti5dbXu9F3a5U_W_376_7txLoaDt_f58RafbwHApEI-U3wxCX4P4ECAQYEHCDgAgEPpgTiRMy4lCIp_vJSAoNwBX6bwCKKs7T4eUpgJhIO_guki3TJwYdJ8LDkdzwIeWK3gUDI02CxLI9Z5c-9OFk8BUkOBK7FMnuKpF9GBwLjOCieWjaD6SsBkaVvh3x--yG35oGcb3-1R0mvQKYEZBo8cvDpK6mX16uZl8AoS32rx0iPmoZnfw3_-aksEknIEx5ufWxakNhfDkzgWyDnY56OYpvuLGySx9zfkAkILPmv9KxMff5_snicvz98zODtQpsz-LycY3C5A8lvREvENvV2x3DwbHfrbFrdClrDCpu1bOe4Hmsk7tROfDqTabMm00ZNZtV3w-rsxmnZ7nFt0kh8UTvx6WxizdrEGrXJqb4bp85u3JbtHdcmjcSXtROfzianWZucRm1yq-_GrbMbr3VclzTydmvmPZ1JbrMmuf-srx3IdcdlLCLJK7WxdnEzHj7y9aSkyJIZv03ErDxm_TgqubI6hFym67ds_TCI1q-KgNXhjgncNYGpUW7qqWmqMTKmB3dM4K4JTI1y74xsj2a7dHuTdtTzdpQw3Z5Ze5d2TQRXw4jgahgRXA1jgiM0IrhnIrgaRgRXw4jgahgTHKERwTsmgl-YKKqGEUXVMKKoGsYURWhE0UsTRdUwoqgaRhRVw5iiCI0o2jVRlBr1BIRGJEVoxFKExjTFcKwrmJUFs7ZgVhcM-4JZYaBGjYHuVQYtW9U0ZquaxmxV06itCI7ZqlOW9nem05Z0acxWrb6kjWO27pUHpa3T1__-BAAA__8xhaKp query T EXPLAIN (DISTSQL) SELECT x, y FROM xyz EXCEPT SELECT y, x from xyz @@ -928,7 +928,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmFFv4kYUhd_7K6z7tCsNgpmxgViqlNUuVSPRJA08rFTlwQvTBInF1DYSbJT_XmGUemPH98xgO30k7MecuevzMcMTpf-sKaTJ19vpp6tr78OXq9l89uf0ozebTCef595eeAfvt7ubP7z94Yc3-fp5cjt_ee8gvP1_75GgTbw019F3k1L4F0kSpEiQJkE-CQroXtA2iRcmTePk-E-ecuBquadwIGi12e6y45_vBS3ixFD4RNkqWxsKaR59W5s7Ey1N0h-QoKXJotU6X2Z_-HG5TVbfo-RAgmbbaJOGXq9_XPlml4XepRSXiu6fBcW7rFghzaIHQ6F8FuelCBxTKHEpa1MolxRfVmm22iyyvixN4q2dFti3g_cYpY9vI0UUfV6UoIMofm2U4qN2mzhZmsQsX31Y_im1YZXF3IoUQVcpLEZWpBg2SCHOCvp7lD7OTHaz7evSvOaHrQlfTPBpOiVBa_N39iHfwcdfk9XD48sLuxKO2h3xddyLt30dlMfw5trjV2tLewFICwH0Va-vzxGRQ46hcw4HFYEcRf9l5yqyjjLsXEWyPQlYzK1ORS2msBhZnYrcUjRWkXxXFSn7GiqbGupe3z9HBw45Rs45HHQAchQdVJ3rwDrKqHMdqPaKaDG3Oh20mMJiZHU6cEvRWAfqXXWg7WuobWro9_JrhLMOHHKMnXM46ADkKDqoO9eBdZRx5zrQ7RXRYm51OmgxhcXI6nTglqKxDvS76sC3r6FvU8Ogd44MHFJcOKZwUAFIUfTP71wF1lEuOleB314JLeZWp4IWU1iMrE4Fbikaq8D_336zeCPXnUm38SY1Vr9IDI47M8sHc5pUGu-ShblN4kW-zOnlTc7lf1iaNDu9q04vrjant44Bf4YlC2seVmVY_gz7r2DpBkvViL5oQqthE1prntYsHTSBZaOl1aARPWpCa_Cw-OxjCv6_AgdYleEhC4NNj_h2Dfl6jVlaDnj6gqcl8ELFKi7dBjQqN8JBuwGO6g1w1G9ZUapLwQGNGg5wVHGEg8cd4KjksiLW148swiuK4fBK0SXvGLR1XjJyBOrGa0aOAV4RjVNbeRq2FeCorTwO28rjsK0VyTq1ladhW3kcthXg6JHlcdhW_gtGSXCIAsdWybdV8QdXsHXFm0b54NzLm0YFAK-YxunczNPw4AxwdHLmcXh05nHUVlWxrEtbAY3aCnDUVoSjR5bHUVsV_wWjxgDnT7IlvNpW_iiLts6bRoOjrOZNo8ENWfOHGjB3QKO2Ihy0FeCorQCHN13-ooyuuuCK32xxeNkFOLrtgt8I0FPDf8FoNDr-KFvCK23V_Fm2vPX751_-DQAA__-aVB6L +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmF9v2kgXxu_fT2Gdq1YaZGbGBmLplahSVhuJTbKBi0qrXLgwmyARzNpGgkb57itAqRs7Ps_4X_bScX_4mdN5fox5puSfNQU0-XY7_XJ17Xz6ejWbz_6cfnZmk-nkcu7shXNwfru7-cPZH344k2-Xk9v5672DcPY_75GgTbQ01-GTSSj4iyQJUiRIkyCPBPl0L2gbRwuTJFF8_CfPJ-BquaegL2i12e7S45_vBS2i2FDwTOkqXRsKaB5-X5s7Ey5N7PZJ0NKk4Wp9esz-8GO8jVdPYXwgQZfReve0SYJTbBI024bHq56r6P5FULRLs4ckafhgKJAvol4Qv2YQQTe7NHDGSoxlaSpVJdXXVZKuNovUlbnhjKUY51eeYd8PzmOYPL6PZFF0vSh-B1G80ijZR-02Ubw0sVm--bDTp5SGVRZzy1L4XaWwGFmWYtAghagV9PcweZyZ9Gbr6ty85oetCV7l8GU6JUFr83f66bSCz_-PVw-Prxc_tz-7uGG7I76OetHW1X5-DO8-e_Tm2dJeCLKGEFzVc7WlmypEGdSOUsNOIFemBNm5nayjDDq3k2zPCxZzK7NTiyksRlZmp2opGttJfqidlH0tVZ1a6p7rWRqiQpRh7Sg1DAFyZbVUnRvCOsqwc0Oo9rppMbcyQ7SYwmJkZYaolqKxIdSHGkLb11LXqaXXc31LQ1SIMqodpYYhQK6slrpzQ1hHGXVuCN1eNy3mVmaIFlNYjKzMENVSNDaE_lBDePa19OrU0u9Z-qFCkIuaQWrYAaTKKul1bgfrKBed28Frr5cWcyuzQ4spLEZWZodqKRrbwfvPfv94J9edSbbRJjFWv270jyszywdznlQS7eKFuY2jxekx58ubE3f6w9Ik6fmuOl9cbc63jgF_hSULax5WeVj-CntvYFkNlqoRfdGEVoMmtNY8rVnabwLLRo9W_Ub0sAmtwWbx2G0K_r_8CrDKwwMWBose8u0a8PUasbTs8_QFT0vghYJVqnQb0KjcCAftBjiqN8BRv2VBqVUKDmjUcICjiiMcbHeAo5LLgljfblmEFxTD4YWiS94xaOm8ZOQQ1I3XjBwBvCCaSm3ladhWgKO28jhsK4_DthYkW6mtPA3byuOwrQBHW5bHYVv5LxglwSEKHFsl31bFH1zB0hVvGuWBcy9vGuUDvGCaSudmnoYHZ4CjkzOPw6Mzj6O2qoJlq7QV0KitAEdtRTjasjyO2qr4Lxg1Ajh_ks3hxbbyR1m0dN40GhxlNW8aDd6QNX-oAXMHNGorwkFbAY7aCnD4psu_KKNXXfCK3-zh8GUX4OhtF_xGgHYN_wWj0ej4o2wOL7RV82fZ_NLvX_73bwAAAP___X9ARg== # EXCEPT ALL and EXCEPT with different ORDER BY types. query T @@ -952,7 +952,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lk9v2koQwO_vU6zmFPQW2bu2-WPpSclLqIpEQ4o5pKo4OHgbkAh210bCifLdK0woMSY7Xkx8g7C_2fHMbzJ-gfj3Alzo3d8Nrvq35OKm742974MGufB6g971mKzJl9HwG1mnz2Q4uumNyP8_SNogvfvr3t2YXA0Gf0-m5Mo7evy5sf-8BgrLMBC3_pOIwf0JDChwoGABBRsoODChEMlwKuI4lJsjLxnQD9bgmhTmy2iVbP48oTANpQD3BZJ5shDgwth_WIiR8AMhDRMoBCLx54vsmnX6fBnJ-ZMvU6DgRf4ydknT2Nw8XCUuuWQweaUQrpK38PuoDymZ-fEsHy87P6EQJ_6jAJe90tPSdDTT5JXS5B-muY-zWoYyEFIEuUiTDYkdOfKsX_145olkGBnsoCPjNBLuO4-AwkL8Si4uWeM_OX-cZZ8-bM_-mSyd0nuhTIQ0mHNYpn8_jG-XqNmxcrwFPZLEbdgMI4ObhwU-er2Tu56VN4uVMMvgTcP6lBHQSLSlneg5h4DVOwSsjiFAir8bgtapQ8DLN5eXaa7VNOxPsVAj0bZ2oue0kNdrIa_DQqT4Owvbp1polW-uVaa5djPbxue3UCPRjnai57TQqtdCqw4LkeLvLOycaqFdvrl2meY6zU9xUCPNrmaa5zTQrtdAuw4DkdLvDOye45X0SPyRiKNwGYtSb5vmpmAieBTbBsThSk7FnQyn2TXbr8OMy94yAhEn21_59kt_uf1pk2B5uF0FZqwS7VSiu2qaadSM68HtKvBBzXRppxLdVdP8kDbf01YONg9hSwnb6m7ZSpgz9dVOlflQw8h8qGFsPhAamQ-ERuajVWU-1DAyH2oYmw-ERuYDoZH5aCst7agl7VSZj24Vw9UwYrgaxgxHaMRwhMY2gM7aLP4n1dmbujS6BLQ2pzaOaM4KWySnKuNq0Zl6jSCms8Ie0VEdoRHXERqTHcMR2zEc072wQ7V0V9OY7moa1R3BMd0RHNO9sEjzurcQ3Qs7RUv3wk7R0l1NY7qraVR3BMd0R3BM98I-1dJdTWO6q2lUdwTHdEdwTPfCVs2_a5tq3Xlhtyh1n7z-8ycAAP___hN5LQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9u2jAUh-_3FNa5KppRsJPwJ9Kkdi3TkFjpgItOExcp8QoSJVkSJELVd58SyiiE-MQJ5I4Uf_YPn-_05BWCvwuwoPv40L_p3ZOru95oPPrZr5GrUbffvR2TNfk2HPwg62hDBsO77pB8_UWiGuk-3nYfxuSm3_-_MiI3o5PLN7X95zVQWLqOuLdfRADWb2BAgQMFHSgYQMGECQXPd6ciCFw_XvKaAD1nDVaDwnzprcL4zxMKU9cXYL1COA8XAiwY208LMRS2I3ytARQcEdrzRXLMOtpce_78xfYjoHDrLlYvy8Aia0ri55Fnx091LU4yWIUWuWYweaPgrsL34_anPEVkZgezw_2T9RMKQWg_C7DYGy0W28wVO6Jkc4nYPDP2fp_V0vUd4QvnYKdJTGJLTvz273YwG4lw4GnsqGLjyBPWB8-AwkL8Ca-uWe2LP3-eJZ8yf_f-N-kqpRi5fih8jZnH1_Q5c38jx52duo73TU-EuHfrrqfxxvEFnzzePDie5TeNFWgQjdc1_SItohC8WaBFzhmcZwavoElYFU2CFGPXJM2iTcLzF5sXsVSva8ZFLFUI3ipi6RmD88zgFVjKq7AUKcbO0lZRS_X8xdaLWGrUk2l_fksVgreLWHrG4DwzeAWW6lVYihRjZ2m7qKVG_mIbRSw16xdxVCF2p4ijZ4vNM2NXYKhRhaFIKXaGds7xSnxi_6EIPHcZiFxvu434woTzLLYFCNyVPxUPvjtNjtk-DhIueYtxRBBuv-Xbh95y-1UcMD_cKgMzVoo2S9EdOc0U7oyrwa0y8NGdqdJmKbojp_kx3fhI6wdw4xjWpbAhr5YhhTmTH22W6Q85jPSHHMb6A6GR_kBopD-aZfpDDiP9IYex_kBopD8QGumPltTStlzSdpn-6JQxXA4jhsthzHCERgxHaGwCqIzN9H9SlbmpSqNDQGlyKuOI5iw1RQ5UZVwuOpOPEcR0lpojKqojNOI6QmOyYzhiO4ZjuqdmqJLuchrTXU6juiM4pjuCY7qnBumh7k1E99RMUdI9NVOUdJfTmO5yGtUdwTHdERzTPTVPlXSX05juchrVHcEx3REc0z01VQ_ftRty3Xlqtkh1n7x9-hcAAP__jYOqQg== query T EXPLAIN (DISTSQL) (SELECT x FROM xyz ORDER BY y) EXCEPT (SELECT y AS x FROM xyz ORDER BY z) ORDER BY x @@ -975,7 +975,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE1v6kYYhff9FdasEtXIzIz5slQp6Q1VI9GQAotbVVn4wjRB4mJqGwkS5b9XmHKdePB7ZmI7u3z48Ry_zHk05oUl_65YwIZf70fXt3fOxc3tdDb9c3TpXEyHo-GXmbNzfpuM_3B2-2dnPLkZTpxf_3L2l87w65fh_ezHVXvnenr20ufL_Ocdc9k6Wqi78LtKWPA348xlgrlMMpf5zGUd9uCyTRzNVZJE8eGSlwy4XexY0HbZcr3Zpoc_P7hsHsWKBS8sXaYrxQI2C7-t1ESFCxV7beayhUrD5SpbZrd_vtrEy-9hvGcum27CdRI4Le-w8nibBs4VZw-vLou2aX77JA0fFQv4q_uxCB3LCKI0grCJcLNM0uV6nnq8MAPtGXPm2955CpOnM9fnIeTHQnRqDeGXhsjvs11H8ULFavHuTtldSmMKNKs8QqepCGhSeYRuhQjuh1L-HiZPU5WON54sTGq236jg5ILr0Yi5bKX-SS-u-OUv8fLxKfvJoGY9m-01jeJUxZ7URvZz6f37BjM7N47_b3omxF3Uijae3y4O-Ozyg3fLc3OLcAOLeKLlSWuVWYToWocwlRkIkXuENygz4xDdBmXG6zMJmlWZzGqMgCZVJjO7CJVlxj9DZmB7nWSmjcxUZsK8yMKkyLLl-dY2sQjRsw5hahMQIi-yaNAmxiF6DdpE1FdlNKsym9QYAU2qzCZ2ESrbRHyGTcD2OtlEG5mpTaR5kaVJkf1W9iZkZxOLEH3rEKY2ASHyIssGbWIcot-gTWR9VUazKrNJjRHQpMpsYhehsk3kZ9gEbK-TTbSRmdrENy-yb1LkTsvaJRYRBpYRTE0CIuQl9hs0iXGIQYMm8eurMZpVmUlqjIAmVWYSuwiVTeJ_hknA9jqZRBvZR76yOXP_iUo20TpRRt_GtA8DU4tHdfwAkmgbz9V9HM2zZY6_jjMu-8NCJenxv-L4y-36-K9DwLcwJ2FJw6II87ew_w7mdjCXVWjBK9GDKrTs0bQk6U4VmIOR07QQVWjZrkT3adont2mXhjsWsCjCXRLu0QXpkTB45j4J-5xeekDSHNCclgpHVtG0YmMGQCM1ABy5AeFADgBHduC0XIAeAI38AHAkCIAjQyAc1IVrhnm_ZdHoaMUUcE0TnJYM74LC0JpBj057hg_A4rRpRBvgmmqsyk7TsOw0DssOcFR2GkdlF5plbcoOaFR2gKOyAxyVHeFgxwv63CrQ6VFTDYVrZRe0aoQPjs20atCj06YR4EgiaNOIPsA11Vid-WkaHvppHJ76AY6O_TQOy65Z1qrsNA3LTuOw7DQOyw5wtOPps6wEH7ukz7IFXCu7BK_I4CgsadWAR5e0aWQHLE6bRoJTidRUY1N2QKOyAxyVHeGg7ACHL_maZa3e8mkavubTOHzPp3H4og9wtOPps6xEnxt9li3getlp1fjgKOzTqik--sPrT_8FAAD__xTXCD0= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF1v8jYYhs_3KyIftVoQ2A5fkSa1a5lWiZUOOHinqQd5wWuRKGFJkKBV__sEjDdtTJ7bzkfPSpsrvvPg-5LTNxb_u2Q-G3x7GF7f3TsXt3eT6eTP4aVzMRkMBzdTZ-v8Nh794Wx3r85ofDsYO7_-5ewuncG3m8HD9MdVO-d6cvbS18v05y1z2Sqcq_vgRcXM_5tx5jLBXCaZyzzmsjZ7dNk6CmcqjsNof8nbAbibb5nfctlitd4k-18_umwWRor5byxZJEvFfDYNvi_VWAVzFTVbzGVzlQSL5WGZ7e71ah0tXoJox1x2Ey43L6vYd7aus_88WQf7T43mPslok_jOFWeP7y4LN0m6XJwET4r5_N0tFqltFGnnOq-2kYRNpNtFnCxWs6TJMzPSFkiZ7zvnOYifz1yfhpDFQrQrDeHlhkjvs1mF0VxFav7pToe75MYUaFZphHZdEdCk0gidEhHcQil_D-LniUpG66bMTGq6Wyv_5Irr4ZC5bKn-SS6u-OUv0eLp-fCTwR7v2myvSRglKmpKbWQ_596_ZzCzc-P4_6ZnQtyHjXDd9FrZAZ9dvv9peW5uFV5AdE3RaEpr1VmE6hRQnWkoYRMq9QyvUXbGITo1yo5XZxo0qzzZVRgBTSpPdnYRSsuOf4XswPY6yU4bmanshHmxRRHbyEbTs7aNRahuEdsYhhI2odKiixptYxyiW6NtRHVVR7PKs02FEdCk8mxjF6G0bcRX2AZsr5NttJGZ2kaaF1sWsY3XOLxp2dnGIlSviG0MQwmbUGnRZY22MQ7Rq9E2srqqo1nl2abCCGhSebaxi1DaNvIrbAO218k22shMbeOZF9srYpt2w9o1FpH6RVxjFEnYREpL7tVoGuMQ_RpN41VXczSrPNNUGAFNKs80dhFKm8b7CtOA7XUyjTayIv8yOnP_sYrX4SpWRv8Nau0HpuZP6vgFxOEmmqmHKJwdljl-HB24wy_mKk6OfxXHD3er45_2AT_CnIQlDYsszD_C3ieY28FclqEFL0X3y9CyS9OSpNtlYA5GTtNClKFlqxTdo2mP3KYdGm5bwCILd0i4SxekS8LgmXsk7HF66T5Jc0BzWiocWUXTio0ZAI3UAHDkBoQDOQAc2YHTcgF6ADTyA8CRIACODIFwUBeuGebzlkWjoxWTwTVNcFoyvAMKQ2sGPTrtGd4Hi9OmES2Aa6qxKjtNw7LTOCw7wFHZaRyVXWiWtSk7oFHZAY7KDnBUdoSDHS_oc6tAp0dNNRSulV3QqhEeODbTqkGPTptGgCOJoE0jegDXVGN15qdpeOincXjqBzg69tM4LLtmWauy0zQsO43DstM4LDvA0Y6nz7ISfO2SPstmcK3sErwig6OwpFUDHl3SppFtsDhtGglOJVJTjU3ZAY3KDnBUdoSDsgMcvuRrlrV6y6dp-JpP4_A9n8bhiz7A0Y6nz7ISfW_0WTaD62WnVeOBo7BHqyb76I_vP_0XAAD__wMqOVI= # EXCEPT ALL and EXCEPT with different numbers of ORDER BY columns. query T @@ -999,7 +999,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8ll9v2jwUh-_fT2Gdq6LXKNhJ-BNpUruWaUisdMBFp4mLlHgFiZLMCRK06nefCEU0hPjEpPVd0-Sxfzl-DicvEP9dgAfd-7v-Ve-WXNz0RuPRz36NXIy6_e71mKzJt-HgB1lvnslgeNMdkq-_yKZGuvfX3bsxuer31U9S8lw7XK6BwjIMxK3_JGLwfgMDChwo2EDBAQouTChEMpyKOA7l9pGXFOgFa_AaFObLaJVs_z2hMA2lAO8FknmyEODB2H9YiKHwAyGtBlAIROLPF-k2683zZSTnT77cAIVR5C9jj9St7c6DVeKRSwaTVwrhKnlb_rDqw4bM_HiWXS99fkIhTvxHAR57pefFdI3G5IUxD-uslqEMhBRBZqXJlsQeOfGu3_14NhLJILLY0YmMN5Hw3lkEFBbiT3JxyWpf5Pxxlv5V-N6Hd7J1Sj8KZSKkxdzjMv1fuL5TomanyvG26IkQt2E9jCzeOC7wye3dzPasvFmshFkWr1v2p7SARtCm4aC8MKiBJmAmmgAp_r4Jmuc2AS9_uLzM4dp1y_kUCzWCtgwH5YVBDVjITViIFH9vYetcC-3yh2uXOVynnk7jj7dQI2jbcFBeGNSAhbYJC5Hi7y1sn2uhU_5wnTKH69Y_xUGNmB2jMXlhTAMGOiYMREq_N7DzEZ-kJ9YfijgKl7Eo9bXZ2BZMBI9idwBxuJJTcSfDabrN7nKQculXRiDiZHeX7y56y92tbcDycKsKzFgl2q1Ed9Q006gZ14NbVeCjmunSbiW6o6b5Md14T9sZuHEM20rYUZ-Wo4Q5U2_tVukPNYz0hxrG-gOhkf5AaKQ_mlX6Qw0j_aGGsf5AaKQ_EBrpj5bS0rZa0naV_uhUMVwNI4arYcxwhEYMR2hsAuiMzfwvqc7c1KXRIaA1ObVxRHOWmyIZVRlXi87UYwQxneXmiI7qCI24jtCY7BiO2I7hmO65Gaqlu5rGdFfTqO4IjumO4JjuuUGa1b2J6J6bKVq652aKlu5qGtNdTaO6IzimO4JjuufmqZbuahrTXU2juiM4pjuCY7rnpmr2W7uh1p3nZotS98nrf_8CAAD__zWpeKA= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lt9vokoUx9_vXzE5TzV3DMwA_iC5SXtbb66JW7vqQzcbH6jMVhMrLGCiNv3fN2CNRWQOA8rbzspn5sucz-nhHcLfS7Ch9_w0uOs_kpuH_ngy_j5okJtxb9C7n5AN-W80_EY22x0Zjh56I_LvD7JtkN7zfe9pQu4GA_mTlOwax-UGKKw8Vzw6byIE-ycwoMCBggEUTKBgwZSCH3gzEYZeED_yngB9dwO2TmGx8tdR_N9TCjMvEGC_Q7SIlgJsmDgvSzESjisCTQcKroicxTI5ZrPd3frB4s0JtkDh3luu31ahTTaUxOux78SrphYnGa4jm9wymH5Q8NbR53HHU162ZO6E8_T-yfNTCmHkvAqw2QctF9sqHJuS3TWS89zkx33WKy9wRSDc1E7TmMQeOfP6_zvhfCyioa-xk6JNtr6wv4gGFJbiV3Rzyxr_BIvXefKv3Pc-vpOhUo2xF0Qi0Jh1ek1_5-5vFrizc9fxuemZEI9e0_M1rp9e8NnjrdTxrLhsrESPaLypGVfpEoXgrXJdcsnsPDd7DX3C6ugTpB6HPmmV7RNevN68jKhGUzOvIqpC8HZJUS-Ynedmr0FUXoeoSD0OorbLimoUr7dRRlSzmYz9y4uqELxTUtQLZue52WsQ1ahDVKQeB1E7ZUU1i9fbLCOq1byKpgqxuyU1vVhynpu8BknNOiRFqnGQtHuJz-Mz-49E6HurUBT68tXjCxPuq9gXIPTWwUw8Bd4sOWa_HCZc8jnjijDa_8r3i_5q_1McsDjcrgIzVom2KtFdOc0U7oyrwe0q8MmdqdJWJborp_kprX-ljRSsn8KGFDbl1TKlMGfyo60q_SGHkf6Qw1h_IDTSHwiN9EerSn_IYaQ_5DDWHwiN9AdCI_3RllrakUvaqdIf3SqGy2HEcDmMGY7QiOEIjU0AlbGZ_UuqMjdVaXQIKE1OZRzRnGWmSEpVxuWiM_kYQUxnmTmiojpCI64jNCY7hiO2Yzime2aGKukupzHd5TSqO4JjuiM4pntmkKZ1byG6Z2aKku6ZmaKku5zGdJfTqO4IjumO4JjumXmqpLucxnSX06juCI7pjuCY7pmpmv7W1uW688xskeo-_fjrTwAAAP__ws-tjg== query T EXPLAIN (DISTSQL) (SELECT x FROM xyz ORDER BY y) EXCEPT (SELECT x FROM xyz ORDER BY y, z) ORDER BY x @@ -1022,7 +1022,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mF9v6jYYxu_3KSJftVpQsB3-RZrUs1OmVWKlAy7ONPUiB7wWiUNYEiRo1e8-EYbSxuR97CbhrhR-8ZMXPz85vLLk3xUL2PDbw-jL3b1zdXs3nU3_HF07V9PhaPh15uyc3ybjP5zd_sUZT26HE-fXv5z9tTP89nX4MKM_5Tov1_nLHXPZOlqo-_CHSljwN-PMZYK5TDKX-cxlHfbosk0czVWSRPHhI68ZcLfYsaDtsuV6s00P_3502TyKFQteWbpMV4oFbBZ-X6mJChcq9trMZQuVhstVtsxu_3KziZc_wnjPXDbdhOskcFreYeXxNg2cG84e31wWbdP88kkaPikW8Df3cxE6tUUQNhFul0m6XM9TjxdmoC2QM9_3znOYPJ_5fB5Cfi5Ep9YQfmmI_DrbdRQvVKwWH66UXaU0pkCzyiN0moqAJpVH6FaI4H4q5e9h8jxV6XjjycKkZvuNCk4m-DIaMZet1D_p1Q2__iVePj1nfxns8Z7N9ppGcapiT2oj-7n0-n2DmZ0bx_8XPRPiPmpFG89vFwd8dvnBh-W5uUW4gUU80fKktcosQnRrDCFsQuQe4Q3KzDhEt0GZ8fpMgmZVJrMaI6BJlcnMLkJlmfFLyAxsr5PMtJGZykyYF1mYFFm2PN_aJhYhejWGEDYh8iKLBm1iHKLXoE1EfVVGsyqzSY0R0KTKbGIXobJNxCVsArbXySbayExtIs2LLE2K7LeyJyE7m1iE6NcYQtiEyIssG7SJcYh-gzaR9VUZzarMJjVGQJMqs4ldhMo2kZewCdheJ5toIzO1iW9eZN-kyJ2WtUssIgxqiyBsIuQl9hs0iXGIQYMm8eurMZpVmUlqjIAmVWYSuwiVTeJfwiRge51Moo3sMz_ZnLn-RCWbaJ0oo19j2oeBqcWTOn4BSbSN5-ohjubZMseX44zL_rFQSXp8Vxxf3K2Pbx0Cvoc5CUsaFkWYv4f9DzC3g7msQgteiR5UoWWPpiVJd6rAHIycpoWoQst2JbpP0z65Tbs03LGARRHuknCPLkiPhME990nY5_TSA5LmgOa0VDiyiqYVGzMAGqkB4MgNCAdyADiyA6flAvQAaOQHgCNBABwZAuGgLlwzzMcti0ZHK6aAa5rgtGR4FxSG1gy6ddozfAAWp00j2gDXVGNVdpqGZadxWHaAo7LTOCq70CxrU3ZAo7IDHJUd4KjsCAc7XtDnVoFOj5pqKFwru6BVI3xwbKZVg26dNo0ARxJBm0b0Aa6pxurMT9Pw0E_j8NQPcHTsp3FYds2yVmWnaVh2Godlp3FYdoCjHU-fZSX42iV9li3gWtkleEQGR2FJqwbcuqRNIztgcdo0EpxKpKYam7IDGpUd4KjsCAdlBzh8yNcsa_WUT9PwMZ_G4XM-jcMHfYCjHU-fZSX63uizbAHXy06rxgdHYZ9WTfHWH99--i8AAP__trkHsA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE1v6kYYhff9FdasblQjMzPmy1Kl3CZUjURDCixuVWXhC9MEiWBqGwkS5b9XQJFvPPg9M_7ILk54PMcvcx6N88aSf1csYMNvD6Ovd_fOl9u76Wz65-jK-TIdjoY3M2fn_DYZ_-Hs9q_OeHI7nDi__uXsr5zht5vhw4z-lOu8XmWXO-aydbRQ9-GLSljwN-PMZYK5TDKX-cxlHfbosk0czVWSRPHhI29H4G6xY0HbZcv1Zpsefv3osnkUKxa8sXSZrhQL2Cz8vlITFS5U7LWZyxYqDZer4zK7_ev1Jl6-hPGeuewmWm1f1kng7FzncD3dhIerlndIMt6mgXPN2eO7y6Jtmi2XpOGTYgF_d8tF6hhHcp1X21TCJtXtMkmX63nq8dyYtAUy5vveeQ6T5wufz0LIciE6tYbwC0Nk99muo3ihYrX4cKfjXQpjCjSrLEKnqQhoUlmEboUIbqmUv4fJ81Sl440nc5Oa7TcqOMvi62jEXLZS_6RfrvnVL_Hy6fn4k8Ee79lsr2kUpyr2pDaynwvv3zeY2aVx_H_TCyHuo1a08fx2fsAXlx98WJ6bi4WXcJ0nWp60tp1FqG4525nmEja5MtXwBn1nHKLboO94fbJBsyryXY0R0KSKfGcXobLv-Gf4Dmyvs--0kZn6Tph3W5QRjmx5vrVwLEL1SgrHMJewyZV1XTQoHOMQvQaFI-prO5pVkXBqjIAmVSQcuwiVhSM-Qzhge52Fo43MVDjSvNuyjHD81vGVy044FqH6JYVjmEvY5Mq6LhsUjnGIfoPCkfW1Hc2qSDg1RkCTKhKOXYTKwpGfIRywvc7C0UZmKhzfvNt-GeF0Wta6sYg0KKkbo1TCJlXWc79B2RiHGDQoG7--pqNZFcmmxghoUkWysYtQWTb-Z8gGbK-zbLSRlfn30YX7T1SyidaJMvrPUPswMLV4UqcvIIm28Vw9xNH8uMzpcnzkjr9YqCQ9_VWcLu7Wpz8dAv4IcxKWNCzyMP8R9j_A3A7msgoteCV6UIWWPZqWJN2pAnMwcpoWogot25XoPk375Dbt0nDHAhZ5uEvCPbogPRIGz9wnYZ_TSw9ImgOa01LhyCqaVmzMAGikBoAjNyAcyAHgyA6clgvQA6CRHwCOBAFwZAiEg7pwzTAftywaHa2YHK5pgtOS4V1QGFoz6NFpz_ABWJw2jWgDXFONVdlpGpadxmHZAY7KTuOo7EKzrE3ZAY3KDnBUdoCjsiMc7HhBn1sFOj1qqqFwreyCVo3wwbGZVg16dNo0AhxJBG0a0Qe4phqrMz9Nw0M_jcNTP8DRsZ_GYdk1y1qVnaZh2Wkclp3GYdkBjnY8fZaV4GuX9Fk2h2tll-AVGRyFJa0a8OiSNo3sgMVp00hwKpGaamzKDmhUdoCjsiMclB3g8CVfs6zVWz5Nw9d8Gofv-TQOX_QBjnY8fZaV6Hujz7I5XC87rRofHIV9WjX5R398_-m_AAAA__-hoDye # EXCEPT ALL and EXCEPT with compatible ORDER BY columns that are not in the final result. query T @@ -1043,7 +1043,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lkFv2jAYhu_7FdZ3aiWjYCfQEmkSXcs0JFY64NBpyiElXkGiSRYHqWnFf58SprUE8BfPw7fS5LFff36kvK8gf63Ah8H93ehqeEvObobT2fTb6JycTQejwfWMFOTzZPyVPBcvZDy5GUzIp-_k5ZwM7q8HdzNyNRohbwKFOInEbfgkJPg_gAEFDhRcoOABhQ4EFNIsmQspk6x85bUChtEz-G0Kyzhd5-W_AwrzJBPgv0K-zFcCfJiFDysxEWEkMqcNFCKRh8tVtc1z8dJPs-VTmBVAYZqGsfRJyyl3Hq9zn_Q5BBsKyTr_s_zbqg8FWYRysbten0GwCSjIPHwU4LMN_beYHasx-dGYb-us4ySLRCainZWCksReOXDWL6FcTEU-Th1Wu5FZkQr_nTdAYSV-5md9dv4xWz4uqr_-npvVzv12JtfgTAcC3yatJHVYp376g3t7O3uz5tfOGly7w1uOexI_NYJ2LQflR4NaMJTZMJQ3Hz5vMny35XgnsUQj6IXloPxoUAuWcBuWuM2H7zYZvteqPjX_3xKNoJeWg_KjQS1Y4tqwxGs-fK_J8DutkziiEbNnNSY_GtOCIZ7tPnQgzkTINImlaNR22uWBRPQotgOSyTqbi7ssmVfbbH-OK676ckdC5tunfPtjGG8flQGbw10TuGcCM6PcrKOmmcbIuB7cNYF7JjAzyl0b2R7N63T7Pe2q5-0qYbY7s3ad9kwEV8OI4GoYEVwNY4IjNCJ4x0RwNYwIroYRwdUwJjhCI4J3TQS_MFFUDSOKqmFEUTWMKYrQiKKXJoqqYURRNYwoqoYxRREaUbRnoigz6gkIjUiK0IilCI1piuFYVzArC2ZtwawuGPYFs8LAjBoD26sMWraqacxWNY3ZqqZRWxEcs1WnLO3fmU5b0qUxW7X6kjaO2bpXHpS2BpsPvwMAAP__sUVwWg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEll1v2jAUhu_3K6xz1UpGwU6gJdKkdi3TkFjpgItOExcp8QoSxVmcSA1V__uUMKnlIz4xHuGuafzEr30eifcV1J8F-NB9uO9f9-7I2W1vNB796J-Ts1G3370Zk4x8HQ6-k5dsRQbD2-6QfPlJVuek-3DTvR-T634fWQkUljIUd8GzUOD_AgYUOFBwgYIHFFowoRDFciqUknG-5LUAeuEL-E0K82WUJvm_JxSmMhbgv0IyTxYCfBgHjwsxFEEoYqcJFEKRBPNFsc1LtrqK4vlzEGdA4UYu0uel8klGyQoojKIgf2o4eZJBmvjkisHkjYJMk3_bve_ymJFZoGab3y_WTyioJHgS4LM3eljs1klj89LY799JlzIORSzCjS9NchJbsufs3wI1G4lkEDlsa2LjLBL-B6-AwkL8Ts6u2PnneP40K_4qPff7mVyLM-0JfCcbMnJYa_v0e_f2NvZm1TVgB2jg8IbjHsVfg-DtEwfnpcFrMJjVYTCvPgx-yDDchuMdxSKD4BcnDs5Lg9dgEa_DIrf6MNxDhuE1ip-y_2-RQfDLEwfnpcFrsMitwyKv-jC8Q4bRahzFIYPYnZPG5qWxazDIq7uP7YkzFCqSSyUqta1mfiARPon1BSmZxlNxH8tpsc36cVBwRTMIhUrWb_n6obdcv8oDVofbNnDHBmZWuVlLTzODK-NmcNsG7tjAzCr31pXt0Hybbn6kXf19u1qYbd5Zc5v2bATXw4jgehgRXA9jgiM0InjLRnA9jAiuhxHB9TAmOEIjgrdtBL-wUVQPI4rqYURRPYwpitCIopc2iuphRFE9jCiqhzFFERpRtGOjKLPqCQiNSIrQiKUIjWmK4VhXsCsLdm3Bri5Y9gW7wsCsGgPbqQxGtuppzFY9jdmqp1FbERyz1aQs7c7MpC2Z0pitRn3JGMds3SkPWlsnb5_-BgAA___PZqF0 query T EXPLAIN (DISTSQL) (SELECT y FROM xyz ORDER BY z) EXCEPT (SELECT y FROM xyz ORDER BY z) @@ -1063,7 +1063,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mNFu4kYUhu_7FNa5SiQjMzM2EEuVst1QNRINKXCxVZULL54mSCx2bSOFRHn3CqPWiR2f3xPbudsAn-efs_MdzvBM6T9b8mn67Xb25frGOru6Xq6Wf8zOrbPldDb9urIO1q-L-e_W4-HJmi-upgvrlz-tp3Nr-u3r9HYFPkU27aJQ3wQ_dEr-XyTIJkk2KbLJJZs8urMpTqK1TtMoOX7kOQeuw0fyhzZtdvE-O758Z9M6SjT5z5Rtsq0mn1bB961e6CDUiTMkm0KdBZttvszj4ekyTjY_guRANi3jYJf61sA5rjzfZ751KenuxaZonxWPT7PgXpMvXuyPRfA6iyBNIlxt0myzW2eOKNXgUpQWKJjvB-shSB_e-XwRQn0shNdpCLc2RPGc_S5KQp3o8M2T8qfUxpSoVkUEr68IqFJFhFGLCPaHUv4WpA9Lnc1jR5UqtTrE2v_P_S-zGdm01X9nZ5fi_Odkc_-Q_-v_M16_p3G3Zb2JBlHsKK-8-3fXnrxZWzRXXDRQ3JEDRxn3GYMQow5DSJMQheSix07TOMSox04jutMc1aqu03QYAVWqrtOYRWjdacRndBrZXDTZRDQ1cFxj2w1CjDsMIU1CFKLJHm1vHGLco-2yO9VQreps7zACqlSd7WYRWtsuP8N21Vw01UQ0d5CP-Wa2G4SYdBhCmoQoRFM92t44xKRH21V3qqFa1dneYQRUqTrbzSK0tl19hu1uc9HcJqJ5A2PXDSJcdBZBmkQoJHN7NL1xiIseTXe70wzVqs70DiOgStWZbhahtenuZ_9e8E6chU7jaJfqRr8GDI8b0uG9PhUojfbJWt8m0Tpf5vTnPOfyF0KdZqd35emP693prWPA17BgYcXDsgyL17D7BhZmsJCt6Is2tBy1oZXiacXSXhtYtFpaDlvR4za0AofFZY8p-P_yDGBZhkcsDDY95u0a8XpNWFoMefqCpwXoC5WuYuI2oJHcCAd2AxzpDXDkt6i0VBPBAY0MBzhSHOHguAMcSS4qjfXtkUV4pcVweEV0wfcYtHW-yYgx0I1vM2IC8EqjMbKVp6GtAEe28ji0lcehrZUma2QrT0NbeRzaCnB0ZHkc2sp_wUgBhigwtgreVskPrmDrku800gVzL99ppAfwSqcxmpt5Gg7OAEeTM4_D0ZnHka2y0mVNbAU0shXgyFaEoyPL48hWyX_ByAnA-Um2hFdt5UdZtHW-0ygwyiq-0yhwQ1b8UAPqDmhkK8KBrQBHtgIc3nT5izK66oIrfrvF4WUX4Oi2C34jQKeG_4JRqHT8KFvCK7YqfpYtb_3u5ad_AwAA__8MwAGf +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8mE9v6kYUxff9FNZdJdIgmBkbiKVKeU2oGomGFFi8qsrCD6YJEsHUNlJIlO9eYfTkxI7v8WA7O_zn5zlzmXN8x68U_7cmn0bf78bfbm6ds-ub2Xz21_jcOZuNxqOrubN3fp9O_nSe9y_OZHo9mjq__e28nDuj71ejuzm4iwRtwqW5DZ5MTP4_JEmQIkGaBLkkyKN7QdsoXJg4DqPDLa8pcLN8Jr8naLXZ7pLD6XtBizAy5L9SskrWhnyaBz_WZmqCpYm6PRK0NEmwWqfDPO9fLrfR6imI9iToKlzvnjax7-yF80KCZtvgcNTpHpRMdonvXEq6fxMU7pJsuDgJHgz58k2cJslrTZKykXS9ipPVZpF0Za5GhQEy5sfeeQzix0_uz0To00R4jYpwS0Vkz9ltwmhpIrP88KT0KaUyFapVJsFrSwKqVCahX0OCOEnlH0H8ODPJZNvVuUrN91vj_8yGb-MxCVqbf5OzS3n-a7R6eEx_VVjjg2bLeht2wm1Xe_nZfzr28MPYsrrl5QmW76pOV1vnkIWofouilI2oLARki0lUWUS_xSSSzcUAqlVZEjUoAVWqLInsJNROIvkVSaSqG0-dYjzd6brWaWAhatCiKGUjKjOiajENKosYtJgGqjkrolqVpUGDElClytLATkLtNFBfkQa6uvH0KcZzO-k2wi4NLEQNWxSlbERlRtQtpkFlEcMW00A3Z0VUq7I0aFACqlRZGthJqJ0G-ivSwK1uPPcU43kd6yywkHTRmiRlIykzodtiElQWcdFiErjN2RDVqiwJGpSAKlWWBHYSaieB-9XfKz6RMzXxNtzEptLXiN5hQmb5YI4FisNdtDB3UbhIhzkeTlIuPbE0cXK8qo4HN5vjpYPA97BkYc3DKg_L97D7AZZ2sFS16Is6tOrXobXmac3SXh1Y1hpa9WrRgzq0BovFZZcp-L88C1jl4T4Lg0kPeHf1eXsNWVr2ePqCpyXIhUKq2Hgb0MjcCAfuBjiyN8CRv2UhUm0MDmjkcIAjiyMcLHeAI5PLQrB-XLIIL0QMhxeMLvmMQVPnQ0YOgN34mJFDgBeCxsqtPA3dCnDkVh6HbuVx6NZCyFq5laehW3kcuhXgaMnyOHQr_4JREjRRoG2VvFsV37iCqSs-aZQL-l4-aZQH8ELSWPXNPA0bZ4CjzpnHYevM48itqpCyNm4FNHIrwJFbEY6WLI8jtyr-BaOGAOc72RxedCvfyqKp80mjQSur-aTRYIes-aYG1B3QyK0IB24FOHIrwOFOl98oo60u2OLXGxxudgGOdrvgGwFaNfwLRqPS8a1sDi-4VfO9bH7q92-__B8AAP__NHYyuQ== # EXCEPT ALL and EXCEPT with a projection on the result. query T @@ -1084,7 +1084,7 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEllFr4kwUhu-_XzGcK4WROJNoa-CDlq7LCm7tVi8Kixepma2CTbKZCKal_31JsmKNOiezg8nlJHlm3jnngZx3kL_X4MLw6WF8O7onrS-j6Wz6Y9wm0-F4eDcjW_L1cfKdtFq7NSVp8WibvrXJ8Olu-DAjt-MxOf1FGygEoS_uvVchwf0JDChwoGADBQco9GBOIYrDhZAyjLNP3nNg5G_B7VJYBdEmyR7PKSzCWID7DskqWQtwYeY9r8Wj8HwRW12g4IvEW63zY7bp200Ur169OAUK08gLpEs6VnbyZJO45IbRGw7zDwrhJvl7wn7j55QsPbk83HKHzCnIxHsR4LIP-m9hew2E5WfD7rfaBGHsi1j4B5vNMxL75MSNv3lyORXJJLJYqTuzNBLuJ3mAwlr8Slp56vb_8epluVvsa1AqwP5mtsHNTsS-DzthZLFeuQYnz3YOzmbVFWAVFLB4x7IvaKxG3H4jcfnZuDU4y-pzlldvBK_SCLtjORf0RiPuVSNx-dm4NXjD6_PGrt4Iu0ojnE7-a7qUNxpxrxuJy8_GrcEbuz5vnOqNcKo0ote5oDUaYQcNhOVnw9bgjNPMXHUi1KOQURhIUWlq6mbXEv6LKMokw028EA9xuMiPKZaTnMv_-r6QSfGWF4tRULzKAlaH-ybwwARmRrlZT00zjZJxPbhvAg9MYGaUu1SyI5qX6e5n2lbX21bC7LBm3TLtmAiuhhHB1TAiuBrGBEdoRPCeieBqGBFcDSOCq2FMcIRGBO-bCH5loqgaRhRVw4iiahhTFKERRa9NFFXDiKJqGFFUDWOKIjSi6MBEUWY0JyA0IilCI5YiNKYphmOzgtmwYDYtmI0LhvOC2cDAjCYGdjQyaNmqpjFb1TRmq5pGbUVwzFadYem4ZzrTki6N2ao1L2njmK1Hw4PS1vnHf38CAAD___1ogpc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElkFv2jAYhu_7FdF3Asko2EloiTSJqmMaEitd4VBp4pASryBRnMVBglb971OSVZQA_mKMkqMhj_3a33N430D-XYIP_cf74c3gzmp8G4wn41_DpjXuD_u3E2tjfX8Y_bQajY81sbb5T5vta9PqP9727yfWzXBoHf-iCQRWIuR3wQuX4P8GCgQYEHCAgAsEPJgSiGIx41KKOP3kLQMG4Qb8NoHFKlon6c9TAjMRc_DfIFkkSw4-TIKnJX_gQchjuw0EQp4Ei2V2zGb72ovixUsQb4HArViuX1bSz8IBgXEUpKuWzWD6TkCsk_-H7PZ-2lrzQM73d-1R0kuRKQGZBM8cfPpOzsvr1ZOXncy722q9EnHIYx7ubTZNSeyTI5f-Ecj5mCejyKaFGU22Efc_KQQElvxP0shSN7_Gi-f5xwIIjNaJb_Vo4QF2N3MMbnYk9p1oicimXvENjp7t7p1Ny1tAz7DAZi3buay3Gok7dSVmJxNXYC6tzlxWfhbsnFk4Ldu9rD0aia_qSsxOJq7AHladPU75WTjnzMJt2d5l7dFIfF1XYnYycQX2ONXZ45afhXvOLLzWZd3RyNutJy87mbcCc9x6-taRUA9cRmIleak21U6vxcNnnj-TFOt4xu9jMcuOyZejjMt6QMhlkv_L8sVglf-VBiwPd0zgrglMjXJTT01TjSdjenDHBO6awNQod-HJDmhWpNufaUf93o4Spvtv1i7SrongahgRXA0jgqthTHCERgT3TARXw4jgahgRXA1jgiM0InjHRPArE0XVMKKoGkYUVcOYogiNKHptoqgaRhRVw4iiahhTFKERRbsmilKjnoDQiKQIjViK0JimGI51BbOyYNYWzOqCYV8wKwzUqDHQg8qgZauaxmxV05itahq1FcExW3XK0uHMdNqSLo3ZqtWXtHHM1oPyoLR1-v7lXwAAAP__bPGU_Q== query T EXPLAIN (DISTSQL) SELECT x FROM ((SELECT x, y FROM xyz) EXCEPT (SELECT x, y FROM xyz)) @@ -1104,4 +1104,4 @@ vectorized: true table: xyz@xyz_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmFFv4kYUhd_7K6z7lEiDYGZsIJYqZbVL1Ug0SQMPK1V58MI0QWIxtY0UNsp_rwBFXmx8zwy2s4_G-XzP3Mw5vuNXSv9bUkijr_fjTze33sWXm8l08vf40puMxqPPU-_F--Ph7i_v4uL9Wnjbw08v2x-X3ujr59H91Dt995IEreK5uY2-m5TCf0iSIEWCNAnySVBAj4LWSTwzaRonuz953QM38xcKe4IWq_Um2_38KGgWJ4bCV8oW2dJQSNPo29I8mGhukm6PBM1NFi2W-zIv2x_X62TxPUq2JGiyjlZp6HW6u8p3myz0rqW4VvT4JijeZHmFNIueDIXyTZynImhShXJR8WWRZovVLOvKQidO1cixb1vvOUqfTyO5FH2elKAFKX6llPxRm1WczE1i5kcP2z-lUqyy6FuuImhLhUXLchX9GirEWUL_jNLnicnu1l1d6Nd0uzbhexh8Go9J0NL8m13sV3D5e7J4en6_yLd_5coGzfb3Nu7E664Oij04WXt4VFvau19auL-rOl19Tgo56Og3q0O56MjNL1vPIWsp_dZzSDaXABZ9q8qhBlVYtKwqh9xU1M4h-XE5pOw9qGw8qDtd_5wscNAxaFaHctGRG1C1ngXWUgatZ4FqzoUWfavKggZVWLSsKgvcVNTOAvVxWaDtPahtPOh39qcH5yxw0DFsVody0ZEbULeeBdZShq1ngW7OhRZ9q8qCBlVYtKwqC9xU1M4C_XFZ4Nt70LfxYNA5JwkcVFw1qUK5qMjN57eeA9ZSrlrPAb85B1r0rSoHGlRh0bKqHHBTUTsH_F_zneKEqAeTruNVaqy-QvR2yzLzJ3NoUxpvkpm5T-LZvszh8m7P7X-YmzQ73FWHi5vV4dZO4M-wZGHNw6oIy59h_wiWbrBUteirOrTq16G15mnN0kEdWNYqrXq16EEdWoPN4rPbFPy_AgdYFeE-C4NFD3h39Xl7DVla9nj6iqclyIVSqrh4G9DI3AgH7gY4sjfAkb9lKVJdDA5o5HCAI4sjHGx3gCOTy1KwHm9ZhJcihsNLRpd8xqCl8yEjB8BufMzIIcBLQePkVp6GbgU4ciuPQ7fyOHRrKWSd3MrT0K08Dt0KcLRleRy6lX_BKAmGKDC2St6tih9cwdIVnzTKB3MvnzQqAHgpaZzmZp6GgzPA0eTM43B05nHkVlVKWRe3Ahq5FeDIrQhHW5bHkVsV_4JRQ4Dzk2wBL7uVH2XR0vmk0WCU1XzSaHBC1vxQA_oOaORWhAO3Ahy5FeDwpMsflNFRFxzx6xWHh12Ao9Mu-EaAdg3_gtGodfwoW8BLbtX8LFtc-uPbb_8HAAD__-F9IDQ= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEmFFr4zgUhd_3V5j71IKCK8lOUsNCh06WLWTbbpOHgaUPnkTbBtI4azvQTOl_X5JQPLXre6TY7jzKzmcd3egcX_mFsv-WFNHo2-34y9W1d_L1ajKd_D0-9Saj8ehy6j17f9zd_OWdnLyNhbc9XHre_jj1Rt8uR7dT7-O7pyRolczNdfxkMor-IUmCFAnSJCggQSHdC1qnycxkWZLufvKyB67mzxSdCVqs1pt8d_le0CxJDUUvlC_ypaGIpvH3pbkz8dyk_hkJmps8Xiz30zxvf1ys08VTnG5J0GWy3DytsmgvjgRN1vFu1PMV3b8KSjZ5MUmWxw-GIvkqjhMStixEuQj5usjyxWqW-7JUjwspLspzFNj3rfcYZ48fI4UUfZyUsAMpQa2U4lGbVZLOTWrm7x62f0qtWGVRt0JF2JUKi5IVKvoNVIijhP4ZZ48Tk9-sfV2q13S7NtFbJHwZj0nQ0vybn-xXcPp7unh4fBuQoJtNHnkXsnZlg3bre530krWvw3INPpx7-G5uaR8A8ogA8FXP15ZZ5CCl37oU5SKliADZeRpZS-l3nkayvRywqFtdGrWowqJkdWnkpqJxGsnPSyNlb0N1jA11zw8sE8FByqB1KcpFSmFD1XkiWEsZdJ4Iqj0vWtStLhFaVGFRsrpEcFPROBHU5yWCtrehPsaGQc8PLRPBQcqwdSnKRUphQ915IlhLGXaeCLo9L1rUrS4RWlRhUbK6RHBT0TgR9OclQmBvw-AYG4Y9yzxwEHLeshDlIqSwYNB5GlhLOe88DYL2fGhRt7o0aFGFRcnq0sBNReM0CH7N94sPRN2ZbJ2sMmP1deJstywzfzCHMmXJJp2Z2zSZ7ac5DG_23P7C3GT54a46DK5Wh1s7gT_DkoU1D6syLH-Gg3ewdIOlakSfN6FVvwmtNU9rlg6bwLLR1OqsET1oQmuwWQJ2m4L_K3SAVRnuszBY9IB3V5-315Cl5RlPn_O0BLlQSRUXbwMamRvhwN0AR_YGOPK3rESqi8EBjRwOcGRxhIPtDnBkclkJ1vdbFuGViOHwitElnzFo6XzIyAGwGx8zcgjwStA4uZWnoVsBjtzK49CtPA7dWglZJ7fyNHQrj0O3AhxtWR6HbuVfMEqCJgq0rZJ3q-IbV7B0xSeNCkDfyyeNCgFeSRqnvpmnYeMMcNQ58zhsnXkcuVVVUtbFrYBGbgU4civC0ZblceRWxb9g1BDgfCdbwqtu5VtZtHQ-aTRoZTWfNBqckDXf1IC6Axq5FeHArQBHbgU4POnyB2V01AVH_GaTw8MuwNFpF3wjQLuGf8FoVDq-lS3hFbdqvpctL_3-9bf_AwAA__8NXTKa diff --git a/pkg/sql/opt/exec/execbuilder/testdata/experimental_distsql_planning_5node b/pkg/sql/opt/exec/execbuilder/testdata/experimental_distsql_planning_5node index 26cc6fd63fd2..6fc57515b216 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/experimental_distsql_planning_5node +++ b/pkg/sql/opt/exec/execbuilder/testdata/experimental_distsql_planning_5node @@ -55,7 +55,7 @@ vectorized: true table: kv@kv_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyk0s1K80AYBeD9dxXhrD5lQv5dZKVohUBta9OFIFnEzEsJTTNxJilKyb1LJ4vaUnW0y_k588wLZwv1WiHG6Gk2vkkm1v-7JF2kj-MLKx2NR7cL69K6n08frNUGDLXgNMnXpBA_wwODD4YADCEYImQMjRQFKSXk7spWBxL-hthlKOuma3fbGUMhJCHeoi3bihBjkb9UNKeck3RcMHBq87LSzGpz3chynct3MKRNXqvYsh0fWc8gunb_pmrzJSH2evaFu-e6WkhOkvgBlfUnfjYRtmic6Ojiado_oD3zkb2fR3Z82wkMh_bNZd9ADmwnNJQDczkwkEPbiQzl0FwODeTI_kPBTrhzUo2oFRn1x90VkPiShrYq0cmCZlIUmhmWU53TG5xUO5x6wyKp9ZH-4Oew92346iDsHof9c-TgnHB4Tjj6VTjr_30EAAD__2R3o50= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkk9rq0AUxffvU8hZvfcY8f9buHolTUFIkzRmUSgurHMJEuPYGQ0twe9e1EWakJaJWd6Z--P8uJwD1FuBENPn5ewumhu_76N4HT_N_hjxdDadrI2_xsNq8Whs92AoBad5uiOF8AUOGFwweGDwwRAgYaikyEgpIbuVQw9E_B2hzZCXVVN3zwlDJiQhPKDO64IQYp2-FrSilJO0bDBwqtO86GO2-_-VzHep_ADDRBTNrlShsWVGJxRXaTeZloukZRBNfcxQdbohhE7LvvE4xjelkJwk8ZPopL1gOhemqKzgbPFytHsS7eifwLn-BJZrWp7mEVx9E3eEiWdavqaJp2_ijTDxTSvQNPH1TfwRJoE5oqAXPFakKlEq0uqf3RWY-IaGtivRyIyWUmR9zDAueq5_4KTq4dcZhqjsv3rBr7DzI_zvBLbPYfeWZO8W2L8FDq6Ck_bXZwAAAP__fvi71Q== # Note that we want to test DistSQL physical planning and the obvious choice # would be to use EXPLAIN (DISTSQL). However, this explain variant doesn't have diff --git a/pkg/sql/opt/exec/execbuilder/testdata/explain_analyze_plans b/pkg/sql/opt/exec/execbuilder/testdata/explain_analyze_plans index 3830b96149b9..5155eda48137 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/explain_analyze_plans +++ b/pkg/sql/opt/exec/execbuilder/testdata/explain_analyze_plans @@ -112,7 +112,7 @@ regions: table: kw@kw_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm99u4rgXx-9_T2H5qqMJE5yElkYaiZlqfqvOtjDqn5FGK1Sl5CyNgIRJTGm36mPtC-yTrRLKFAjYMdNZu9h3JI6Tk4-Pzzc-Pjzg7PsQ-_j808mnows0uH03sFBw298bTN8N3qD_n3VO0eAWfe4ct9Fgijrt4hL0HuXt6LezzuUX9PFbcRJbOE5CaAcjyLD_BybYwg62sIst7GELN3DXwuM06UGWJWl-yUPR4Ti8w37dwlE8ntD8dNfCvSQF7D9gGtEhYB9fBNdDOIMghNSuYwuHQINoWDxmcNsap9EoSO-xhc_HQZz5qGbnD-5MqI9auRm_f0U0GoGP6v_8nc2Oe0lMIaZREpea0mSaoRSC0EdPna_vKcxPNdFHbOHTr0dHKKMwRr1kElO0B3fUjmL6xkf1wsLZBQCDTReMgjs0glGS3qNgOEx6AYXQR_Xi7tcB7d1AhpIJHecvkV9fWDU_QXD30cKzoxnJOanre3QTZDfLjFr59V0LZzToA_bJo7Ud-v0V9NMyepsY-Ez4zkb4z_dJ0hBSCFfv8zZ_cKWr1ozjKaR9-JxEMaQ2WZlDQ_iT7rXI2zfv06h_M_v5PIZWKx9QuIPepDxkLJJ5W_Z9iCiMxiiMsgGaZEEftgb9DNEV8eAP_X4K_YAmqU0apbGxcGfG8cldP7S_XbU7F1fty5OTvRbJOZxfnu61nPzXUeeyffH0ewOQX-w-3s-5DxuPU_85POeXp1fHOSA3PzqDOIS08CDUcuyW-4LQnoE0KgCZxOuQrKXRTmrJ2HZW_GRbsxsbzd5fMptUj8GEL3-2U7NdE4OrCqAA_IMKAmjgiwggkSOAZKcEkOPBiwK4v1sCKOw-HAEkr10AnerBzKmgJG7N9kwwq6okAvCbFZTEwBdREkeOkjg7pSQcD15UkoPdUhJh9-EoifPalcStHszcCkri1eyGCWZVlUQA_mEFJTHwRZTElaMk7k4pCceDF5WkuVtKIuw-HCVxX7uSeNWDmVdBSRo1E8qq6ogA-gZfR2o2QUEcIoISegOpGYaqiuLJURRvpxSF48uLinK4W4oi7D4cRfFeu6JwdvzOIBsncQYr2z3r71zPaUHYhxndLJmkPfiSJr3iMbPDTtGvSDeGkNFZqzM7OI7nTRkNKGu76FdOovosaFS3vrnR-hjoNEkHaBhQiHv3P8yfn58GEV1-sRAySKNgGP0VlN963u0p5Pcgui1ee6FpHvt_tBXvPG8dQZajWO388kiIK5kJYTBpvggTIszE-El54sv2EylMiEAwdJQLhmzrmxut13ZAV4Lhf89ESjDkMDF-wguGmjBxVpnUF5ksI6mvdnaZQD2VPivXTBG29aSuozZymDQMk1LYMH5SZqKln3jMULqCZLVzg9nZ2V8OxMp9le5vmWDYYXdgI9m8Gn0NAyo9waDgiOqZYOBMfNl-ImXtdbBlgmGH3YSNZPNqVI1gyLZeeoJBwRHVM8HAmfiy_URKMGwyP2wP2QmGwy0TDDvsY2wkjKyFGkkXjvlaLhzZTPRMMHCYaOknpLSbx8ow6CEvRGQ3Txc_EdkjNEw4CQ01liA8-2UPqpKTX3b2QY6nl7b0TPqBw0TLxSqHCSOroUhE5Ngve1DlRETO5JedgpDj6aXdyqXvZuKxkxCktLFnshAcJnoWT_CgbF6gqZGb4divZyKCB0X2qlsOFHa5gmwmcqTX1ECIMtFz0WpKK8ShqF4uw5v8eg6qKYQQZaLnotXUV4hDUb1mhjf59RxUdjUE4ZRDEFMPUUa6dUGExlBkL9BUhMJIbyiSnjE1EWv-v2ZqIspM1K6JUJGJ7EyEnLmzdU2ExlCMpwilN9RYjDhq10TIiYimJkKUiZ6ZCB4U4ylC6Q1FIiK7JsLh1EQ4piaijNTURIhDkb1AUxGKnoUWPCiqV884piai-9h9_N-_AQAA___Lkw6x +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm99u4rgXx-9_T2H5qtWECU5CSyONxEw1v1VnWxj1z0ijFapScpZGQMIkprRb9bH2BfbJVkmGKRCwMdNZu9h3SRyHk4-Pzzc-Pjzi7NsQ-_ji4-nH40s0uHs7sFBw198bTN8O9tH_zztnaHCHPnVO2mgwRZ12cQt6h_J29Nt55-oz-vC1uIgtHCchtIMRZNj_AxNsYQdb2MUW9rCFG7hr4XGa9CDLkjS_5bHocBLeY79u4SgeT2h-uWvhXpIC9h8xjegQsI8vg5shnEMQQmrXsYVDoEE0LH5mcNcap9EoSB-whY-T4WQUZz7KrbkYB_lhzc6t-P0LotEIfFT_5--sPO8lMYWYRklcaUqTaYZSCEIfkfLKzQOF2aUm-oAtfPbl-BhlFMaol0xiivbgntpRTPd9VC-MLG8AGKy7YRTcoxGMkvQBBcNh0gsohD6qF0-_CWjvFjKUTOh4Qn2U319YNbtAcPfJwuVZCXMG6-YB3QbZ7SKmVn5_18IZDfqAffJkbUf_YIn-lEPfJob_Cv7OWv7Pz0nSEFIIl5_zJv_hje5aMZRnkPbhUxLFkNpkaSYN4U-61yJv9t-lUf-2PMQW7uRv2yJWKx9GuIfepDpkLJJ5W_ZtiCiMxiiMsgGaZEEftgb9DNEVceL3_X4K_YAmqU0albGxcKfkmL8qtvD79tfrdufyun11errXIjmHi6uzvZaTHx13rtqX34_XAPnF7uP9nPuw8Tj1n8NzcXV2fZIDcvOzc4hDSAsPQi3HbrkvCO0ZSGMDIJN4FZKVNNpJLRnbzpKfbGt2Y63ZBwtmk83DMBEUQdup2a4Jw2wZFOB_KCqDhj9fBokcGSQ7JYMcJ56XwYPdkkFh9-HIIHntMuhsHs8cUT1xa7Zn4hlbTwT4N0X1xPDn64kjR0-cndITjhPP68nhbumJsPtw9MR57Xribh7PXFE98Wp2w8Qztp4I8D8S1RPDn68nrhw9cXdKTzhOPK8nzd3SE2H34eiJ-9r1xNs8nnmietKomWjGVhMB-g1BNanZBAVxiAhK6C2kZiTYuuLJ0RVvp3SF487zunK0W7oi7D4cXfFeu65wdgLPIRsncQZL20Crn1zPaUHYh5JulkzSHnxOk17xM-Vpp-hXJCBDyGjZ6pQnJ_GsKaMBZW0j_cpJVC-DxubWN9daHwOdJukADQMKce_hh_mz69MgoosvFkIGaRQMo7-C6lvPun0P-T2I7orXnmuaxf4fbcU7z1pHkOUolju_PBLiSmZCGEyaL8KECDMxflKd-LL9RAoTIhAMHeWCIdv65lrrtR3QpWD43zOREgw5TIyf8IKhJkycZSb1eSaLSOrLnV0mUE-lz8oVU4RtPanrqI0cJg3DpBI2jJ9UmWjpJx4zlC4hWe7cYHZ2DhYDsXJfpQdbJhh22B3YSNavRl_DgEpPMCg4onomGDgTX7afSFl7HW6ZYNhhN2EjWb8aVSMYsq2XnmBQcET1TDBwJr5sP5ESDJvMD9sjdoLhaMsEww77GBsJI2uhRtKFY76WC0c2Ez0TDBwmWvoJqezmsTIMesgLEdnN08VPRPYIDRNOQkONJQjPftmDquTkl519kOPplS09k37gMNFyscphwshqKBIROfbLHlQ5EZEz-WWnIOR4emW3cuG7mXjsJASpbOyZLASHiZ7FEzwo6xdoauRmOPbrmYjgQZG96pYDhV2uIJuJHOk1NRCiTPRctJrSCnEoqpfL8Ca_noNqCiFEmei5aDX1FeJQVK-Z4U1-PQeVXQ1BOOUQxNRDVJFuXRChMRTZCzQVoTDSG4qkZ0xNxIr_r5maiCoTtWsiVGQiOxMhZ-5sXROhMRTjKULpDTUWI47aNRFyIqKpiRBlomcmggfFeIpQekORiMiuiXA4NRGOqYmoIjU1EeJQZC_QVISiZ6EFD4rq1TOOqYnoPnWf_vdvAAAA__-xnB8P # This query verifies stats collection for the hashJoiner, distinct and sorter. query T @@ -178,7 +178,7 @@ regions: table: kw@kw_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm9Fuo0YUhu_7FKO52lXxwgzYcZBWijZJ1Wy7cZVEK1WVLwhMY2QbvMw4ThrlsfoCfbIKvKyDMXMg2Yaph7vYgHPmO2fOP_wDD5h_mWEXX57-enp8hU7OLq_Ozo-v0Jvp6t3qLfrpYvQJTW_Rx9HZOZqu0OgcTW_fTdF7lB5Ho4uT0wv04ffsEzZwFAfs3Jszjt0_MMEGptjANjawgw3cx2MDL5LYZ5zHSXrKQ3bBWXCHXcvAYbRYivTrsYH9OGHYfcAiFDOGXXzlXc_YBfMClpgWNnDAhBfOsn8zvT1aJOHcS-6xgS8XXsRd1DPTfzxaChcdpWH88hmJcM5cZP3zN19_9uNIsEiEcVQ6lMQrjhLmBS76evH1vWD5V0P0ARv40-fjY8QFWyA_XkYCvWF3wgwj8dZFVhbh-gTGplUnzL07NGfzOLlH3mwW-55ggYus7NevPeFPGEfxUizSQaTnZ1HlXxA8fjTw-tOaZE7q-h5NPD4pMjpKzx8bmAvvhmGXPBrPQz_YQr8qozfJU_i0g78Nn1bC3_zOMoqTgCUsKPzSOL0SOmVHBn_2-ORjHEYsMcnW5JmxP8WbI_L2fRLeTLK_Cqljd8xfltMko5ce419mSLD5AgUhn6Il927Ys-FuwNlNqvYk5CKMfGGSfikbSoyrWdE4LygaGR1qqUlnM_J-k6xfxolgiUlLOf9RtWENaiR0VzqzsezM6XncixemvZXQikGDkfcrIz8oRE7qiweBddukPdPulLuucjeAf1BDuQvwO-UGlJu8snKTfVFuoGo3yj1QU5teotzNikaq3ERNOlXKDWQ9V-5SzhVXblq_BdMa-mf3TKfTv7r61wD-sIb-FeB3-gfoH31l_aP7on9A1W7070DNDv8S_WtWNFL9o2rSqdI_IOu5_pVyrrj-2fVbsF1D_5ye2e_0r67-NYB_WEP_CvA7_QP0z35l_bP3Rf-Aqt3o31DNDv8S_WtWNFL9s9WkU6V_QNZz_SvlXHH9c-q3YKeG_vV7nfrVVb8G6Puw-vVMgrwoQATFYsKSTgfr6qDzyjro7IsOAvW70cFDNTv9S3SwWdFIddBRk06VDgJZz3WwlHPFdRDYmL1gfBFHnG13g52_bKUJZ8ENW1cHj5eJz35LYj_7N-uPo-y6zFYOGBfro3T94SzKD3HhCdk26H9JzsJZt6sf_WFl9BETqziZopknWOTffws__37lhaI4sIBxloTeLPzLK486v-yrUPksvM2G_eRQrljfjmVjzo_OGU9RbF_8_ZGQfstMiITJ8LswIU2ZUNLVSYnJgY5MSINmSJVrhvLoDyuj1zahW83w9Zm00gyBIiddnQDNUBMmdJuJ9ZSJXUBibV9sS4E6Ki0rd0wRefREy_UCwETL9YKcCbU7JiUmWt6TOdJW2pe30r704kGR5_bFA3kTL3YyS7kl7cEz3Yk9riU5kurp9X9IaOvuhIIZ1dOdAJi0vdpo5cZt-Ex3Yo_LRI6k2vJQoxnKo2_dnVAwo3q6EwCTtt2JVprhoXRhSyz5mprI3e9qf2KPqwxgInE91DBtoPjbXjOomFQ9LQoIipYeBSl54MWOSoGOKreLBzou2AnghWlZZnImek49wFuvdkXUuI-B6rxtB0PJya_ncqTkhHceBsBEz-c25Ewk1ogiHRGo87ZtjHY6IgClbR-jnUqXb--RAbDsLm3wdUYGwETPxzcgKNXLEUXcHXn8mhoZABQ976ZKe4fFjjoEOmrJbe-MDFJy2zsjA2DS9tRTsU70fLwDmjxK7as8I34tjQza5L05TW5lACZtGxmtdESAiZ7PeECTp9odUaMjQvFraWRQ-f4hBfYPaWn_sDMyACZ6GhkQFD2XI3IoEndEDXcHir_tu6l2klraQSx2VAfoqPK3TrQ0MmjJbVfKyFCRiZ5TT85ETyMDmjx6LkcAKErtq-yKH9hC0PKmXc6kbSOjnToH9g_1NDKAydP2Yx5KQql2RxTpiPL9QwrsH1L52zp6GhnAm256rhwAKHoaGcC7blo-5gFBUeql_13rKfnLejbwsp5dsts1NDLGjz_8GwAA__8EUOFJ +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsm9Fuo0YXx--_pxjNVaIPL8yAHQdppWiTVM22G1dJtFJV-YLANEa2wcuM46RRHqsv0CerwGW9NmaOSbaZqYe72IBz5nfOnP_wH3jC_MsE-_j6_Ofz0xt0dnF9c3F5eoMOxot3i0P0w9XgExrfo4-Di0s0XqDBJRrfvxuj9yg_jgZXZ-dX6MOvxSds4SSN2GUwZRz7v2GCLUyxhV1sYQ9buIuHFp5lacg4T7P8lKfigovoAfuOheNkNhf510MLh2nGsP-ERSwmDPv4JridsCsWRCyzHWzhiIkgnhT_Znx_MsviaZA9YgufppP5NOE-GmMLX8-C_M-OnUfx02ck4inzkfPXn3z5OUwTwRIRp0nlUJYuOMpYEPmILL-5fRSs_KqPPmALf_p8eoq4YDMUpvNEoAP2IOw4EYc-cooglycwNq47YRo8oCmbptkjCiaTNAwEi3zkFL9-G4hwxDhK52I2Fz7Kzy-iKr8gePhs4eWnJcwS1u0jGgV8tI7pJD9_aGEugjuGffJsvYx-b4P-Yhv9xYq-TVr-W_jTWv6r35knaRaxjEVrvzTMr4RO2ZLEHwM--pjGCctssjGFJux3cXBCDt9n8d2o-AtbeJAP8iRPHXtg4byaJhm9_Bj_MkGCTWcoivkYzXlwx14MdwXObVK4ZzEXcRIKm3Qr2dBiXM2KxntF0cjoUEdPOquRd5tk_TrNBMtsWsn5_3UbVm-HhG5LZzGWrTm9TDvpzHY3ElozaDDybm3kR2uRk931gzRUb5t2bLfVD7l-N-B_1FS_W_6wfpM31m-yL_oNFO5Kv3t6KtRr9LtZ0Uj1m-hJp06_gayX-l3Jueb6TXfvwrSpCrod22u7sFwFG_DvN1XBlj-sgvSNVZDuiwoChbtSwSM9-_xrVLBZ0UhVkOpJp04FgayXKljJueYq6O7ehd2mKuh17G7bheUq2ID_cVMVbPnDKui-sQq6-6KCQOGuVLCvZ59_jQo2KxqpCrp60qlTQSDrpQpWcq65Cnq7d2GvqQp2O20PlmtgA_rdhhrYsQkKkggRlIoRy9pMyNXQe2M19PZFDYESXqnhsZ79_jVq2KxopGro6UmnTg2BrJdqWMm55moIbNheMT5LE842u8HWX3byhLPoji2rg6fzLGS_ZGlY_Jvlx0FxXWE0R4yL5VG6_HCRlIe4CIRse_TfJOfgotvtHv1xbfQJE4s0G6NJIFgSPn4Nv_x-EcRifWAR4yyLg0n8R1AddXnZP0IVsvi-GPY3h0rF-nqsGHN5dMp4jmLz4u-PhHQVMyESJv3vwoQ0ZUJJWycVJkcmMiENmiHVrhnKoz-ujd7YhG40w7dnoqQZAkVO2joBmqEhTOgmE-dbJu4aEmfzYlcK1NNpWbllisijJ0auFwAmRq4X5Eyo2zKpMDHynsyTttKuvJV2pRf31nluXtyTN_H1TuZot6Q9eqE7sce1JEdSP73-CwlV7k5omFEz3QmAierVhpIbt_4L3Yk9LhM5knrLQ49mKI9euTuhYUbNdCcAJqrdCSXN8Fi6sCWOfE1N5O53vT-xx1UGMJG4HnqYNlD8qtcMOibVTIsCgmKkR0EqHvh6R6VAR5XbxT0TF-wE8MKMLDM5EzOnHuCt17sietzHQHWu2sHQcvKbuRypOOGthwEwMfO5DTkTiTWiSUcE6ly1jaGmIwJQVPsYaipdvr1HesCyu7LB1xoZABMzH9-AoNQvRzRxd-TxG2pkAFDMvJuq7B2ud9Q-0FErbntrZJCK294aGQAT1VNPxzox8_EOaPJota_ygviNNDJok_fmDLmVAZioNjKUdESAiZnPeECTp94d0aMjQvEbaWRQ-f4hBfYPaWX_sDUyACZmGhkQFDOXI3IoEndED3cHil_13ZSapFZ2ENc7qgd0VPlbJ0YaGbTitmtlZOjIxMypJ2dippEBTR4zlyMAFK32VbbFD2whGHnTLmei2shQU-fA_qGZRgYweVQ_5qEllHp3RJOOKN8_pMD-IZW_rWOmkQG86WbmygGAYqaRAbzrZuRjHhAUrV7637aekr-s5wIv67kVu91AI2P4_L-_AwAA__9cpPHe # This query verifies stats collection for WITH ORDINALITY and the hashJoiner. query T @@ -236,7 +236,7 @@ regions: table: kv@kv_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsUcFu00AQvfMVozkBWhTbcTjsySUUNdA2KImKEMph4x2lq9i77u66JIryWfwAX4bspaJJm9CAuHGcN_Nm3ry3RndTIMfx6flpfwIv4d1oeAGLW_g0mJzBcPR2cHlyPph8hpMxCLanMUOG2ki6FCU55F8wxinDypqcnDO2gdbtwEAukUcMla5q38BThrmxhHyNXvmCkONEzAoakZBkOxEylOSFKtq1i9ussqoUdoUMx5XQjsMrZPjhCrwqiUP0_ZsLdW60J-2V0Q9a1nx1YElIDr2AzFae7qA0gjfI8OKq3wfnqYLc1NrDc1r6jtL-BYeolRUGiBb7BkqxhJJKY1cgisLkwpPkELbPhM-vyYGpfVV7Ds18K-sO6OF0wzBUP31yXswJebxhT_dyaKXSolB-1Ym3raQl5fVDe_5CWHKMsPshJ_9D3vWy-4chd_91yOleYb_01NpYSZbklphpw_zdyCPfnQl3_d4oTbaTbn83bKRmMcsSlnVZlrKsx7LXyPa9fSirpuduCvBUViCVW0DtxJyeHGWy37LeMVmOyFVGO9q17tHNUeMXyTkF_52pbU4frcnbM6EctrwWkOR86MahGOjQagTeJ8cHyekWOd4lJwfJ3cOXu0dcTnbJ6UFyb-fydPPsRwAAAP__PmxHoQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzsUcFu00AQvfMVozkBWhTbcTjsySUUNdA2KImKEMph4x2lq9i77u46JIryWfwAX4ZsU9GkjduAuPU4b-bNvHlvg-4mQ47j0_PT_gRew4fR8AIWS_gymJzBcPR-cHlyPph8hZMxCHagMUOG2ki6FDk55N8wxCnDwpqUnDO2gjb1wECukAcMlS5KX8FThqmxhHyDXvmMkONEzDIakZBkOwEylOSFyuq1i2VSWJULu0aGfZOVuXYcFgyWyHBciKp6gww_XYFXOXEIfv5wTZ0a7Ul7ZfS9ljXfHVgSkkOvQWZrT7dQHMA7ZHhx1e-D81RAakrt4SWtfEdp_4pDUMtsBogWhwZysYKccmPXILLMpMKT5NBsnwmfXpMDU_qi9Byq-VrWLdDD6ZZhU_32zXkxJ-Thlj3d26GVSotM-XUn3LWWVpSW9-35B2HRMcLuhh49h_6Yt92_DL37v0OPDwr7o6fUxkqyJHfETCvmYyMPfHcm3PVHozTZTrz73bCSmoQsiVjSZUnMkh5L3iI79HZbVlXP3WTgKS9AKreA0ok5PTnK6LBlvWOyHJErjHa0b92Dm4PKL5Jzavx3prQpfbYmrc805bDm1YAk55tu2BQD3bQqgXfJYSs53iGH--Soldxtv9w94nK0T45byb29y9Pti18BAAD__2MJUVE= # Verify that EXPLAIN ANALYZE on an unsupported query doesn't return an error. statement ok @@ -292,7 +292,7 @@ regions: table: kv@kv_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslctu2zoQhvfnKQazsgEaknw5KLhKG6RF0KYunMBdFF4w4sAlLJEKSfnSwI_VF-iTFaKsNHYuVfdacmZ-zczn35h7dHcZcry--HRxfgNiveyt-jCdX8yg14f3s-kVrNbIUBtJn0VODvk3TJDhEBmOkOEYGU5wwbCwJiXnjK1K7oPgUm6RxwyVLkpfhRcMU2MJ-T165TNCjjfiNqMZCUk2ipGhJC9UFtqs1meFVbmwO2R4XQjtOAyiqvG09BzOqjE-zsGrnDjEv366-p0a7Ul7ZfSTlDUbB5aE5HAQ3-48NaE38A4ZXs3Pz8F5KiA1pfbQo62PlPZ9DnGYsC4gWr1UkIst5JQbuwORZSYVniSHOHz9Vvj0OzkwpS-qJar6MFUTSHCxZ1i_DsicF0tCnuzZC1j_0Cy1sZIsySOSi_0z4L8qLc2GbDQ5pv52_qF3lvQfKFe8aUtp-ZToa4tWOXeXgae8AKncCkonltSaw-RFDsMjDkl7eyV_t1c0HESjzmAV2GF7sMMWYEeDaNyBrcCO2oMdtQA7HoR_cAeWj9uDHbcAOxl0WFsc8Bm5wmhHJxfn-S_H1SUiuaT6bDlT2pS-WJOGNvVzGnQhIMn5OpvUj0sdUmHAx-LkVfH_R-L4VDz8l85hlbAVavIbY1eQCU863T38_E18I5Q_NoYkR1aJTP0QT13TyA7WSUmt6WCfJtV4qMnVPmqyObnqxD4uiFsb4RjJqENyimTcITlFMumQ7Bf7_34HAAD__-kfW5M= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslctu2zoQhvfnKQazsgEaknw5KLhKa6RF0KYunMBdFF4w4sAlJJEKSfnSwI_VF-iTFaKiNnYutdfOznP5yeHnX5g7dLc5crw6_3Q-vgaxXHSyLkxm51PodOH9dHIJ2RIZaiPpsyjIIf-GCTLsI8MBMhwiwxHOGZbWpOScsXXLXRBcyDXymKHSZeXr9Jxhaiwhv0OvfE7I8Vrc5DQlIclGMTKU5IXKwzXZ8qy0qhB2gwzHJq8K7ThkyPCqFPXPXlRP8XEGXhXEIf710zVxarQn7ZXRj0rWrBxYEpJD0mRuNp7a1Bt4hwwvZ-MxOE8lpKbSHjq09pHSvsshDkM2DUTZcw2FWENBhbEbEHluUuFJcojD6TfCp9_Jgal8WXkOdX-Yqk0kON8ybKJ7as6LBSFPtuwZsn-BVtpYSZbkDsz59gn2X5WWZkU2Gu2Cfzv70DlLushwUs9zVlOmNaXVY6IvPbSuudscPBUlSOUyqJxY0MEcRs9y6O9wSA53WHKkw6J-Lxqcssf6h7PtH8t20IuGp8x2cDjbwbFsh73wUZ8s2-HhbIfHsh31TpnsP_b5lFxptKO97fP0yXG9lUguqFlhzlQ2pS_WpOGaJpwEXUhIcr6pJk1woUMpDPhQnLwo_n9HHO-L-8fcHJ4SXoWa_MrYDHLhSaebP39_m18J5XeNIcmRVSJXP8Rj17Sye-ukpJZ0b5-21HqorTU-aqsFuXrdPmyIDzbCLpLBK5J9JMNXJPtIRq9ItvPtf78DAAD__06QY8I= # Very simple query to make it easier to spot regressions when rewriting results # in test files. @@ -320,7 +320,7 @@ regions: table: kv@kv_pkey spans: [/0 - /0] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMUc1q4zAQvu9TDHPaBUHsq2AhbPDSkKYpTkgPxQdFHlJjW3KlcZoQ_Fh9gT5ZsVRSSgn0-P3oG803Z_TPDUpcZ7fZbAM1_M9XS6gP8HCT5RnU8BcSFGhsSXeqJY_yEVMsBHbOavLeupE6B8O8PKJMBFam63mkC4HaOkJ5Rq64IZS4UbuGclIluckYXBKrqgmx9WHauapV7oQC150yXsIkCa5VzxKmKQpcbIGrliQkb68-Ym0Nk-HKmm-Ssy8eHKlShi0WW9idmC4U_EOBy-1sBp6pA217w_CbjjypDP-REIdHA1F9zdCqI7TUWncC1TRWK6ZL-k6xfiIPtuduXGL0h199EsUgMKKPzjyrPaFMB_HzXnPynTWevlR6LTkZCoFU7ineztveabp3VocxEa7Cu0CU5DmqaQRzE6WhGH69BwAA__821Lg1 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMUcFq20AQvfcrhjm1sGD5ulAoFSo1resiG-cQdFivBkdI2lF2R46N0WflB_JlQVrjEIIht31v3nszvD1jeGxQ4zr7m6UbqOFXvlpCfYC731meQQ3fIUGFjkv6Z1oKqO9xjoXCzrOlENiP1HkSLMoj6kRh5bpeRrpQaNkT6jNKJQ2hxo3ZNZSTKcnPxuCSxFTNFFsffnS-ao0_ocKUm751QUONCtedGZ-zZLL82YJULWlIXp5DxJadkJOK3YeR56cAnkyp4WLenYSuFPxEhcttmkIQ6sBy7wS-0lFmlZNvGuLKKCCqbwlac4SWWvYnME3D1ghd03dG7AMF4F66XuIZ01VvRDEojOhSWxCzJ9TzQX2-2pxCxy7Qu1ZvJSdDoZDKPcXvC9x7S_8922lNhKvJNxElBYnTeQQLF0dDMXx5DQAA__98z7nY # Test a query that has a subquery and a postquery. statement ok @@ -410,6 +410,6 @@ regions: actual row count: 1 label: buffer 1 · -Diagram 1 (subquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJysUtFq20oQfb9fMcyTDRssOVwo-5Q0uGDiyMV2DKWYsF4NyhJpV90d1XaNP6s_0C8rlqw2IsRtaR_nzJzZM2fPHsOnHCWOk_lotoBxspiCfjR5Csvryf1oDr1YQG8-moxuFlAY2yv78G42vYNSebLc76NA61JKVEEB5UeMUeD_uBJYeqcpBOeP8L4eGqdblJFAY8uKj_BKoHaeUO6RDeeEEhN34crBEAWmxMrk9VLakq7YOAtsCpIQffsaUOBasX6kAK7ismIJEQr0bvMTiHF1ENhUp_cCq4xQXh7EM03xeU0Ltc5pRiolP4i6yhobrkpvCuV3KHBeKhskXKDAiSkMw9GQ22VX-O0StLNM9uVNt0uoT_CkUtmS1zumFnoDb1Hg3fLmBgJTCdpVlqFHWx4Yy30JUa2xGSB6em2gUFsoqHB-ByrPnVZMqYSo3v4XxsZ_Yux1lnnKFDs_iLu-XicfHpLp4iG5n0x6V_ExZv8-BMOO1l8Ec0ahdDZQR-drm6PDSiClGTXhD67ymt57p-tnmnJa82ogpcBN97IpxrZpHQU-J8dnycPz5OFZctQl16fUV6El3jj_BLlisnr3w_kW3yjD3T9JKZA3Kjdf1MsPa2mnmGsyn-kU9bbV5r3tNZlvuwWFoLLOQPS7QVgd_vseAAD___Xaogg= +Diagram 1 (subquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJysU9Fq20oQfb9fMcyTDRssOVwo-5TUuGDiyMV2DKWYsFkNyhJpV90dNXaDP6s_0C8rkqw2IsRtad-0Z-bMnjl79IThU44SZ8lqulzDLFkvQN-bPIXN5fxmuoJBLGCwms6nkzUUxg7KIbxbLq6hVJ4sD4co0LqUElVQQPkRYxT4P24Flt5pCsH5Gn5qmmbpDmUk0Niy4hreCtTOE8onZMM5ocTEnblyNEaBKbEyeTOUdqQrNs4Cm4IkRN--BhR4p1jfUwBXcVmxhAgFevf4E4hxexDYno73BVYZoTw_iGea4tOa1uoupyWplPwo6itrbbgovSmU36PAicurwgYJJQpclar-PEOBc1MYhtqdq01_i6sNaGeZ7MsFrzbQ7ONJpbIj3-2ZOugNvEWB15vJBAJTCdpVlmFAOx4Zy0MJUSO4bSB6eK2hUDsoqHB-DyrPnVZMqYSomf4XLsd_4vJllnnKFDs_ivsmXyYfbpPF-ja5mc8HF3GduX-fiHFP6y9SuqRQOhuop_O1ydFhK5DSjNo_IbjKa3rvnW6uaY-LhtcAKQVuq-ftYWbbUi3wOTk-SR6fJo9PkqM-uVml2Qot8aPzD5ArJqv3P5zv8EdluP8mKQXyRuXmi3r5YB3tGHNN5jMdo96Vurx3tTbzXbWgEFTWa4h-Nwjbw3_fAwAA__-BaaYj Diagram 2 (main-query): https://cockroachdb.github.io/distsqlplan/decode.html#eJyMj89K80AUxfffU1zOqoWBL9nOTiRCoLbSVjeSRZxc2oF0bpy5wULJY_kCPpk0I4gLweX53Tl_5oL02sOiXu-q7Z7q9X5D7uj7jp5uVo_VjhalocWuWlW3ezr5sBiWdLfd3NPQRg66XMIgSMfr9sQJ9hklGoMhiuOUJF7RZX5Qd2fYwsCHYdQrbgycRIa9QL32DIteXNuTkzEoFf8LGHSsre_nYD6zG9VLIPUntlR8vCcYvLTqjpxIRh1GtXR1RXn7BiWaySCrr96k7YFhy8n8fduW0yAh8Y9RvyUXU2PA3YHz_5OM0fFDFDfXZLmZfTPoOGm-llnUIZ-mZvr3GQAA__9Sm4hi Diagram 3 (postquery): https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lMGO2jAQhu99itGcQLJEAnuofNrtipWyZJMKslwqDsYZdt0Ndmo7KgjxWH2BPlmVmFVLV6BStTfm9_zjb_it7NB9qZBjks3G0wKSrMhBPquqhPlN-jieQS9m0JuN0_FtAWule3Uf7qb5A9TCkvb9PjLUpqRMrMkh_4QxLhjW1khyzthW2nUNSblBHjFUum58Ky8YSmMJ-Q698hUhx8pIUYGTQsOyWa3IQjSIkGFJXqiqG583nsP1EBnShmTjldHg1Zo4RN-_OWS4FF4-kwPT-Lrtbf3WfP0pxLjYMwzVgcN58UTI4z37c9Y7VXmyZAfxMWDQOVzHkMwgywvIHtP0v_AOL-G9N0pPSZRkB8Nj4mJbE4d0fFfATVYkcJ8nGTIMAV_XVq2F3SLD1JiXpobPRmkwut0Q2SGP9ld3ObToLfNr7byoquONJ_M3tTTak37750zm3UCwJMowdTKH5dbTq_QePiDDh_ntLThPNUjTaA892viB0r7PDw8oNBC9nGr423Cik-GMLgknPHyy1lhQq7BzPBgd5_TvGa8uYZySq412dAR1anK0XzCk8onCB8CZxkr6aI3srgll3vk6oSTnw2kcikSHoxbwV3N81jw8bx6eNY_Om0dnzVe_mRf7dz8CAAD__4iLwK8= diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial b/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial index f7463998f587..cc0796d43e3d 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial @@ -32,7 +32,7 @@ vectorized: true table: geo_table2@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk8-O0zAQxu88hTWXtpLZ2kkRyKfwJwtB3ba0lQDhqgr1UCJaO9guCqr67igJ0O2ukt3kYGlm8vN8_uw5gvu5AwHxp9n4ZTIh_TfJYrn4MB6QRTyOXy_JD3I9n96QLZq1T7_uMCAf38XzmDi_zrRH63DjXb83myaTZT-8YiS8YoOeEG_j6U28nH-mJbofAAVtFE7SPToQX4DDikJuzQadM7ZMHasfElWAYBQynR98mV5R2BiLII7gM79DELAsdcwxVWiHDCgo9Gm2q7Y9y4zKtutMKyyAwiJPtRNkKOGVlMU3JWXBmZQFe2iBp10ZLoGkWpGQEeO_o3VAYXrwgkScRiGNAlidKJiDPx_Q-XSLIPiJPt6ERP9C61FdZzuPFu2QXzrxrx4XuSVGkygQxJUuEOdT60V1qvD5MylZwKRk7KEFCGrVFSvNaHaj2YqgixXvTab_Poeg8TnkNtun9vfj2odd2v-_gfCyeZ0XdyeFccbZ_e_F6F7cE7fHKAoGZ_GNykddlM_R5UY7vNDdtDM7rSig2mI9rM4c7AZn1myqNnU4rbgqodD5usrrINF1qRR4G-atcNAOB61w2A6HrfDoDrw6PfkTAAD___DFn88= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk1GP0kAQx9_9FJt5OUjWY7fFaPYJPXtawwECiRqXkMqO2FB26-7W1BC-u2mrcnCBu_Kwyczw2_n_pzs7cD8zEBB9ngxfxyPSeRvP5rOPwy6ZRcPoZk425HY6viNrNEuffMswIJ_eR9OIOL9MtUfrcOVd52oyjkfzTnjNSHjNuldCvIvGd9F8-oVW6LYLFLRROEq26EB8BQ4LCrk1K3TO2Cq1q_8QqxIEo5DqvPBVekFhZSyC2IFPfYYgYF7pmGKi0PYYUFDokzSrrz3IHFRtl6lWWAKFG5MVW-0E2VCyWeZZ4ZZGY6MNKMzypCr2JLyRsvyupCw5k7Jkjx3wvC3DJZBEKxIyYvwPtA4Wewqm8Ae_zidrBMH39OkzifUvtB7VbZp5tGh7_Hgw_-pRmVtiNBkEgrjKNXE-sV7ULsKXL6RkAZOSsccOIKhVW6wyf-Kewrjwggw4HQRnRxG0GcUHk-q_ryM4-zpym24T-_tp7cM27f9_gfC4eZMXp4vDOOPs4e9V_0F8Je5v1SDoHsSfVd5vo3yKLjfa4ZHuczez_YICqjU2u-tMYVc4sWZVt2nCcc3VCYXON1XeBLFuSpXA-zC_CAeX4eAiHF6Gw4tw_wRe7J_9CQAA___iRKak query T EXPLAIN (DISTSQL) SELECT k, k_plus_one FROM geo_table2 WHERE ST_Intersects('POINT(3.0 3.0)'::geometry, geom) @@ -55,7 +55,7 @@ vectorized: true table: geo_table2@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk9-PEjEQx9_9K5p5OUjq0W4xmj6tP_Z0DQcIJGosISsdcXNLu7bFrCH872Z31Tvuspzw0GRm-HS-_e7MHvyPAiQkn6ajl-mY9N6k88X8w6hP5skoeb0gN5TcrMpi51fWILmaTa7JBu0qZF8LjMjHd8ksIT6schPQeVwH37uYTtLxoicuGRGXrH8h5dtkcp0sZp9pjW77QMFYjeNsix7kF-CwpFA6u0bvratT--YPqa5AMgq5KXehTi8prK1DkHsIeSgQJCxqHTPMNLoBAwoaQ5YXzbW3MuO67So3GiugMC8z4yUZKHilVPVNK1VxplTFHjvg6bkMV0Ayo4lgxIbv6DxQmOyCJDGnsaBxBMsDBbsLtw_0IdsgSH6g_29Can6iC6iv8iKgQzfgx078rSdV6Yg1JI4k8bULxIfMBdm8Sjx_phSLmFKMPXYAQaPPxWozut3otiI6x4r3Njd_xiHqHIfS5dvM_TpqT2PRqUCco-DfRxDH_du8vL8sjDPOHv5eDB_EF_LuJsVR_2iYOsUPzxE_Q19a4_FIetfN7LCkgHqD7cp6u3NrnDq7btq04aThmoRGH9oqb4PUtKVa4F2Yn4Sj03B0EhanYXESHt6Dl4cnvwMAAP__phyliA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk1GP0kAQx9_9FJt5AZL12G0xmn2qnj2t4QCBRI1LSGVHbK7s1t2tqSF8d9NWPeACd_Cwyczw2_n_pztbcD9zEBB_ngxfJyPSfZvM5rOPwx6ZxcP4ek7uKLlbFnnplkYjuZmOb8kazdKn33IMyKf38TQmzi8z7dE6XHnX7UzGyWjeDa8YCa9YryPEu3h8G8-nX2iNbnpAQRuFo3SDDsRX4LCgUFizQueMrVPb5g-JqkAwCpkuSl-nFxRWxiKILfjM5wgC5rWOKaYKbZ8BBYU-zfLm2nuZUd12mWmFFVC4Nnm50U4cWmu1AYVZkdbFvoQ3UlbflZQVZ1JW7LEDnl_KcAkk1YqEjBj_A62DxY6CKf29X-fTNYLgO_r0mST6F1qP6ibLPVq0fX44mH_1uCosMZpEgSCudk2cT60XjYvw5QspWcCkZOyxAwhqdSlWmz9yT2FcekEiTqPg5CiCS0bxwWT67-sITr6Owmab1P4-aE-j8KSC8BIF_z9CeNi_zYvj3WGccfbw92rwIO6I_cWKgt6-_tPiB5eIn6IrjHZ4IP3UzWy3oIBqje0GO1PaFU6sWTVt2nDccE1CofNtlbdBottSLXAf5mfh4DwcnIXD83B4Fh4cwYvdsz8BAAD__wPdrF0= query T EXPLAIN SELECT k, k_plus_one FROM geo_table2 WHERE ST_Intersects('POINT(3.0 3.0)'::geometry, geom) diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial_dist b/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial_dist index 0121fc6d1fd8..d1499f7cf771 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial_dist +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_geospatial_dist @@ -43,7 +43,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFP2zAQx9_3Kax7odW81naCNvxUGGHLVChLO21orlDW3FhEsTPbnTKhfvcpCQNa1ED84PbO_v3P_7OcW3C_lyAh-nY-PozPSO84ns6mn8d9Mo3G0fsZuSYnyeSUXKG59OmPJZKvH6MkIs5f5tqjdbjwrrd3-mU8i88n8dms1xMDQcRA9CnpBQNGggHr9_ek_BBNTqNZckErrZs-mSTHUUKOLsg1UNAmw7P0Bh3I78BhTqGwZoHOGVulbusNcVaCZBRyXax8lZ5TWBiLIG_B536JIGFWnTHBNEM7ZEAhQ5_my1r23sKoOsBlrjMsgcK0SLWTZKjgSKnyZ6ZUyZlSJXtugjddGa6ApDojASPG_0LrYL6mYFb-wY_z6RWC5Gv6cs-x_oPWY3aSLz1atEO-afz_elQWlhhNRlwSV7kmzqfWy9pF8HZfKSaYUow9NwFBnXXFKvNb7ilMVl6SEd_ZB9GlD59Mru-uXuy6-sLmN6n9-1CajsTO6kGX6vfdDzZrN3m5_WIYZyFrhrj75Yw3fw4OD-4H4-GT-GHnxngXPon35OOHNxL9F_Q87OJ6aqxHOww3PY_4653y-13kE3SF0Q435Hcps_WcAmZX2HwynFnZBZ5bs6jLNOGk5upEhs43q7wJYt0sVQd8DPNWWLTDohUO2uGgFQ7b4bAV3t-C5-tX_wIAAP__VL3gzA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlG9P2z4Qx5__XoV1T2j181rbCdrwo_InbJkKZWmnDc0Vypobi2jtzHanTKjvfUrCgIIaiB-4vTt_7u57snML7tcSJERfL8aH8TnpncTT2fTTuE-m0Tg6npEbcppMzsg1miuffl8i-fIhSiLi_FWuPVqHC-96e2efx7P4YhKfz3o9MRBEDESfkl4wYCQYsH5_T8r30eQsmiWXtMq16pNJchIl5OiS3AAFbTI8T1foQH4DDnMKhTULdM7YynVbH4izEiSjkOti7Sv3nMLCWAR5Cz73SwQJs6rHBNMM7ZABhQx9mi_rtPcSRlUDV7nOsAQKx2a5XmknyU3TGVCYFmnlGCo4Uqr8kSlVcqZUyV7a4E1Xhisgqc5IwIjxP9E6mG8omLV_kOh8eo0g-Ya-fgyx_o3WY3aaLz1atEO-PYt_8agsLDGajLgkrlJNnE-tl7WK4O2-UkwwpRh7aQOCOuuKVeKfqKcwWXtJRnznHESXOXw0ub67DWLXbShsvkrtn4fSdCR2Vg-6VL-ffrBdu_HLp4-IcRayZom7X8548-fg8OB-MR4-sx9Obq134TN7Tz5-iyPRf8XMwy6qp8Z6tMNwW_OI_78z_X6X9Am6wmiHW-l3ZWabOQXMrrH5ijiztgu8sGZRl2nMSc3Vjgydb6K8MWLdhKoGH8O8FRbtsGiFg3Y4aIXDdjhshfefwPPNf38DAAD__97t5tY= # The inverted filterer handles five inverted index rows with decoded # datums, where the first column is the PK (k) and the second is the cellid @@ -94,7 +94,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFP2zAQx9_3Kax7odW81naCNvxUGGHLVChLO21orlDW3FhEsTPbnTKhfvcpCQNa1ED84PbO_v3P_7OcW3C_lyAh-nY-PozPSO84ns6mn8d9Mo3G0fsZuSYnyeSUXKG59OmPJZKvH6MkIs5f5tqjdbjwrrd3-mU8i88n8dms1xMDQcRA9CnpBQNGggHr9_ek_BBNTqNZckErrZs-mSTHUUKOLsg1UNAmw7P0Bh3I78BhTqGwZoHOGVulbusNcVaCZBRyXax8lZ5TWBiLIG_B536JIGFWnTHBNEM7ZEAhQ5_my1r23sKoOsBlrjMsgcK0SLWTZKjgSKnyZ6ZUyZlSJXtugjddGa6ApDojASPG_0LrYL6mYFb-wY_z6RWC5Gv6cs-x_oPWY3aSLz1atEO-afz_elQWlhhNRlwSV7kmzqfWy9pF8HZfKSaYUow9NwFBnXXFKvNb7ilMVl6SEd_ZB9GlD59Mru-uXuy6-sLmN6n9-1CajsTO6kGX6vfdDzZrN3m5_WIYZyFrhrj75Yw3fw4OD-4H4-GT-GHnxngXPon35OOHNxL9F_Q87OJ6aqxHOww3PY_4653y-13kE3SF0Q435Hcps_WcAmZX2HwynFnZBZ5bs6jLNOGk5upEhs43q7wJYt0sVQd8DPNWWLTDohUO2uGgFQ7b4bAV3t-C5-tX_wIAAP__VL3gzA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlG9P2z4Qx5__XoV1T2j181rbCdrwo_InbJkKZWmnDc0Vypobi2jtzHanTKjvfUrCgIIaiB-4vTt_7u57snML7tcSJERfL8aH8TnpncTT2fTTuE-m0Tg6npEbcppMzsg1miuffl8i-fIhSiLi_FWuPVqHC-96e2efx7P4YhKfz3o9MRBEDESfkl4wYCQYsH5_T8r30eQsmiWXtMq16pNJchIl5OiS3AAFbTI8T1foQH4DDnMKhTULdM7YynVbH4izEiSjkOti7Sv3nMLCWAR5Cz73SwQJs6rHBNMM7ZABhQx9mi_rtPcSRlUDV7nOsAQKx2a5XmknyU3TGVCYFmnlGCo4Uqr8kSlVcqZUyV7a4E1Xhisgqc5IwIjxP9E6mG8omLV_kOh8eo0g-Ya-fgyx_o3WY3aaLz1atEO-PYt_8agsLDGajLgkrlJNnE-tl7WK4O2-UkwwpRh7aQOCOuuKVeKfqKcwWXtJRnznHESXOXw0ub67DWLXbShsvkrtn4fSdCR2Vg-6VL-ffrBdu_HLp4-IcRayZom7X8548-fg8OB-MR4-sx9Obq134TN7Tz5-iyPRf8XMwy6qp8Z6tMNwW_OI_78z_X6X9Am6wmiHW-l3ZWabOQXMrrH5ijiztgu8sGZRl2nMSc3Vjgydb6K8MWLdhKoGH8O8FRbtsGiFg3Y4aIXDdjhshfefwPPNf38DAAD__97t5tY= statement ok ALTER INDEX geo_table@geom_index EXPERIMENTAL_RELOCATE VALUES (ARRAY[2], 1152921574000000000) @@ -132,7 +132,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFP2zAQx9_3Kax7odW81naCNvxUGGHLVChLO21orlDW3FhEsTPbnTKhfvcpCQNa1ED84PbO_v3P_7OcW3C_lyAh-nY-PozPSO84ns6mn8d9Mo3G0fsZuSYnyeSUXKG59OmPJZKvH6MkIs5f5tqjdbjwrrd3-mU8i88n8dms1xMDQcRA9CnpBQNGggHr9_ek_BBNTqNZckErrZs-mSTHUUKOLsg1UNAmw7P0Bh3I78BhTqGwZoHOGVulbusNcVaCZBRyXax8lZ5TWBiLIG_B536JIGFWnTHBNEM7ZEAhQ5_my1r23sKoOsBlrjMsgcK0SLWTZKjgSKnyZ6ZUyZlSJXtugjddGa6ApDojASPG_0LrYL6mYFb-wY_z6RWC5Gv6cs-x_oPWY3aSLz1atEO-afz_elQWlhhNRlwSV7kmzqfWy9pF8HZfKSaYUow9NwFBnXXFKvNb7ilMVl6SEd_ZB9GlD59Mru-uXuy6-sLmN6n9-1CajsTO6kGX6vfdDzZrN3m5_WIYZyFrhrj75Yw3fw4OD-4H4-GT-GHnxngXPon35OOHNxL9F_Q87OJ6aqxHOww3PY_4653y-13kE3SF0Q435Hcps_WcAmZX2HwynFnZBZ5bs6jLNOGk5upEhs43q7wJYt0sVQd8DPNWWLTDohUO2uGgFQ7b4bAV3t-C5-tX_wIAAP__VL3gzA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlG9P2z4Qx5__XoV1T2j181rbCdrwo_InbJkKZWmnDc0Vypobi2jtzHanTKjvfUrCgIIaiB-4vTt_7u57snML7tcSJERfL8aH8TnpncTT2fTTuE-m0Tg6npEbcppMzsg1miuffl8i-fIhSiLi_FWuPVqHC-96e2efx7P4YhKfz3o9MRBEDESfkl4wYCQYsH5_T8r30eQsmiWXtMq16pNJchIl5OiS3AAFbTI8T1foQH4DDnMKhTULdM7YynVbH4izEiSjkOti7Sv3nMLCWAR5Cz73SwQJs6rHBNMM7ZABhQx9mi_rtPcSRlUDV7nOsAQKx2a5XmknyU3TGVCYFmnlGCo4Uqr8kSlVcqZUyV7a4E1Xhisgqc5IwIjxP9E6mG8omLV_kOh8eo0g-Ya-fgyx_o3WY3aaLz1atEO-PYt_8agsLDGajLgkrlJNnE-tl7WK4O2-UkwwpRh7aQOCOuuKVeKfqKcwWXtJRnznHESXOXw0ub67DWLXbShsvkrtn4fSdCR2Vg-6VL-ffrBdu_HLp4-IcRayZom7X8548-fg8OB-MR4-sx9Obq134TN7Tz5-iyPRf8XMwy6qp8Z6tMNwW_OI_78z_X6X9Am6wmiHW-l3ZWabOQXMrrH5ijiztgu8sGZRl2nMSc3Vjgydb6K8MWLdhKoGH8O8FRbtsGiFg3Y4aIXDdjhshfefwPPNf38DAAD__97t5tY= # Data is distributed, but the filterer can't be distributed since it is not a union. query T @@ -160,7 +160,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFP2zwUhu-_X2GdG1p9Xms7QRu-KoywZSqUpZ02NFco1GcsosSZ7aIg1P8-JWFAQQ3EF27PsZ_3-D2WcwfuzxIkRD9Ox_vxCekdxtPZ9Ou4T6bROPo4I1fkKJkck0s05z69WCL5_jlKIuL8-cLcoEV9cdvbOf42nsWnk_hk1uuJgSBiIPqU9IIBI8GA9fs7Un6KJsfRLDmjldR1n0ySwyghB2fkCijkRuNJeo0O5E_gMKdQWLNA54ytUnf1hliXIBmFLC9WvkrPKSyMRZB34DO_RJAwq46YYKrRDhlQ0OjTbFnLPjgYVQc4z3KNJVCYFmnuJBkqOFCq_KWVKjlTqmSvTfCuK8MVkDTXJGDE-N9oHczXFMzKP_pxPr1EkHxN3-45zm_QetRH2dKjRTvkm8b_rUdlYYnJyYhL4irXxPnUelm7CN7vKsUEU4qx1yYgmOuuWGX-mXsKk5WXZMS39kF06cMXk-X3Vy-2XX1hs-vU3j6WpiOxtXrQpfpD94PN2k1ePnswjLOQNUPc_3LGmz97-3sPg_HwRfy4c2N8CF_EO_LpuxuJ_htaHnYxPTXWox2Gm5ZH_P-t8rtd5BN0hckdbshvU2brOQXUl9h8MZxZ2QWeWrOoyzThpObqhEbnm1XeBHHeLFUHfArzVli0w6IVDtrhoBUO2-GwFd59Bs_X__0NAAD___MV38o= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlN9P2zAQx9_3V1j3Qqt5re0Ebfip_AhbpkJZ2mlDc4VCfWMRbdzZLgpC_d-nJAwoqIH4we3d-XN335OdO3B_5yAh-nk23I9PSecoHk_G34ZdMo6G0eGEXJPjZHRCrtBc-PRyjuTHlyiJiPMXM3ODFvXlbWfn5PtwEp-N4tNJpyN6goie6FLSCXqMBD3W7e5I-TkanUST5JyWqRZdMkqOooQcnJNroJAbjafpAh3IX8BhSmFpzQydM7Z03VUHYl2AZBSyfLnypXtKYWYsgrwDn_k5goRJ2WKCqUbbZ0BBo0-zeZX2QcGgbOAiyzUWQOHQzFeL3ElyXXcGFMbLtHT0FRwoVfzWShWcKVWw1zb40JbhCkiaaxIwYvwftA6mawpm5R8lOp9eIUi-pm8fQ5zfoPWoj7O5R4u2zzdn8T8eFUtLTE4GXBJXqibOp9bLSkXwcVcpJphSjL22AcFct8VK8c_UUxitvCQDvnUOos0cvposv78NYtttWNpskdrbx9J0ILZWD9pUf5h-sFm79stnb4hxFrJ6iftfznj9Z29_72ExHr6wH09urE_hC3tHPn2KA9F9w8jDNqLHxnq0_XBT8oC_35p-t036BN3S5A430m_LzNZTCqivsP6IOLOyMzyzZlaVqc1RxVUOjc7XUV4bcV6HygafwrwRFs2waISDZjhohMNmOGyEd5_B0_W7fwEAAP__bbfl1A== # Move all the index data that will be read to node 2 while the query executes # at node 1. The filtering moves to node 2 when it is distributable. @@ -201,7 +201,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFP2zwUhu-_X2GdG1p9prWdlA1fFUbYMpWWpZ02NFcoa85YRLEz2506of73KQ0DAmogvnB7jv2ck_e17Ftwv5YgIfp6PjqKx6RzEk9n00-jLplGo-jdjFyT02RyRq7QXPr0-xLJlw9REhHnL3Pt0TpceNfZO_s8msXnk3g863RETxDRE11KOkGPkaDHut09Kd9Hk7NollzQstZNl0ySkyghxxfkGihok-E4vUEH8htwoCBgTqGwZoHOGVumb7eb4mwNklHIdbHyZXpOYWEsgrwFn_slgoSx2TdFfwAUMvRpvtxu21AwK_8AOZ9eIciDDX1UmDcXnpUGJJhmaPusVh7u_RmW6i5zneEaKEyLVDtJ-gqOlVr_yJRac6bUmr00wX5bhisgqc5IwIjxP9E62KWZt9Ec699oPWan-dKjRdvndeH_1qN1YYnRZMglcaVq4nxqvdyqCN4MlGKCKcXYSxMQ1FlbrBT_RD2FycpLMuQ7fRBtfPhocn139GLX0Rc2v0ntn4fWdCh2dg_adL93P6j3rvLy6XVknIWsGuLulzNe_Tk8OrwfjIfP4oedtfE2fBbvyce3eii6r_A8bKN6aqxH2w_rmof8_53lB7XyL7wTCbrCaIeveijYZk4Bsyus3iJnVnaB59Ystm2qcLLltokMna9WD6og1tVS-YGPYd4Ii2ZYNMJBMxw0wmEzHDbCg2Z40AizJ_B889_fAAAA___nMRL3 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlN9v2jAQx9_3V1j3UtBcsJ3QrX6iP9ItE4UuMG3VjKqM3LqoYGe2mZgq_vcppGtLK9LGD4Y7-3OX71e2b8H9noOE6NvF4CgektZpPJ6MPw_aZBwNopMJuSFnyeicXKO58umPOZKvH6MkIs5f5dqjdTjzrrV3_mUwiS9G8XDSaomOIKIj2pS0gg4jQYe123tSfohG59EkuaRlrUWbjJLTKCHHl-QGKGiT4TBdoAP5HThQEDClUFgzQ-eMLdO3m01xtgLJKOS6WPoyPaUwMxZB3oLP_RxBwtDsm6LbAwoZ-jSfb7atKZilf4CcT68R5MGaPirM6wtPSgMSTDO0XbZVHu796ZfqrnKd4QoonJj5cqGdJDeVbKAwLtIy0VVwrNTqZ6bUijOlVuylCfabMlwBSXVGAkaM_4XWwS4beBMbYv0HrcfsLJ97tGi7fNuL_-vRqrDEaNLnkrhSNXE-tV5uVATvekoxwZRi7KUJCOqsKVaKf6KewmjpJenznT6IJj58Mrm-Ow1i12kobL5I7d-H1rQvdnYPmnS_dz_Y7l3l5dMbyjgLWTXE3S9nvPpzeHR4PxgPn8UPO7fG-_BZvCcfX_S-aL_C87CJ6rGxHm033Nbc5293lu9tlX_h6UjQFUY7fNXbwdZTCphdY_U8ObO0M7ywZrZpU4WjDbdJZOh8tXpQBbGulsoPfAzzWljUw6IWDurhoBYO6-GwFu7Vw71amD2Bp-s3_wIAAP__EGcZAQ== # Filtering is at gateway node since the filter is not distributable. query T @@ -229,7 +229,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFP2zAQx9_3Kax7odVMazspG34qjLBlKi1LO21orlCobyyixJntoiLU7z6lYUBBDcQPbu_s3__yP8u-A_d3DhKin6eDg3hIWkfxeDL-NmiTcTSIPk3IFTlORifkEs25Ty_mSH58iZKIOH8-MzdoUV_ctnZOvg8m8ekoHk5aLdERRHREm5JW0GEk6LB2e0fKz9HoJJokZ7SUum6TUXIUJeTwjFwBhdxoHKbX6ED-Ag4UBEwpFNbM0Dljy_TdelOslyAZhSwvFr5MTynMjEWQd-AzP0eQMDS7puj2gIJGn2bz9bYVBbPwj5Dz6SWC3FvRJ8K8XnhS-k8w1Wi7bEMeHtrTL92dZ7nGJVAYF2nuJOkqOFRq-VsrteRMqSV7bYLdpgxXQNJck4AR4_-gdbDNM2_iOc5v0HrUx9nco0Xb5ZvG_69Hy8ISk5M-l8SVronzqfVy7SL40FOKCaYUY69NQDDXTbHS_DP3FEYLL0mfb-2DaNKHrybL749ebDv6wmbXqb19LE37Ymv1oEn1h-4Hm7WrvHx2GxlnIauGuP_ljFd_9g_2Hwbj4Yv4cefG-Bi-iHfk00vdF-03tDxsYnpsrEfbDTct9_n7rfK9DflXnokEXWFyh296J9hqSgH1JVZPkTMLO8NTa2brMlU4WnPrhEbnq9W9Kojzaqn8wKcwr4VFPSxq4aAeDmrhsB4Oa-FePdyrhdkzeLp69y8AAP__-8wR9Q== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlF9v2jwUxu_fT2Gdm4JeF2wndKuv6J90y0ShC0xbNaMqxWddVIgz21RUFd99Cuna0opQfGE4x_6dk-eR7Qdwf6YgIfpx0TuK-6RxGg9Hw6-9JhlGvehkRG7JWTI4Jzdornx6PUXy_XOURMT5q4m5Q4v6-r6xd_6tN4ovBnF_1GiIliCiJZqUNIIWI0GLNZt7Un6KBufRKLmkZalZkwyS0yghx5fkFijkRmM_naED-RM4UBAwplBYM0HnjC3TD6tNsV6AZBSyvJj7Mj2mMDEWQT6Az_wUQULf7Jui3QEKGn2aTVfblhTM3D9Dzqc3CPJgSV8U5vWFR6X-BFONts3WysOTPd1S3VWWa1wAhRMznc9yJ8ltJRsoDIu0TLQVHCu1-KWVWnCm1IJtm2B_V4YrIGmuScCI8b_ROthkA9_Fhji_Q-tRn2VTjxZtm6978W89WhSWmJx0uSSuVE2cT62XKxXBh45STDClGNs2AcFc74qV4l-ppzCYe0m6fKMPYhcfvpgsfzwNYtNpKGw2S-39c2vaFRu7B7t0f3I_WO9d5eWrC8o4C1k1xOMvZ7z6c3h0-DQYD9_EzzvXxsfwTbwnX97zrmi-w_JwF9FDYz3adrguucv_31i-s1Z-y8uRoCtM7vBdTwdbjimgvsHqdXJmbid4Yc1k1aYKBytuldDofLV6UAVxXi2VH_gS5rWwqIdFLRzUw0EtHNbDYS3cqYc7tTB7BY-X__0NAAD__xVlF_8= # Bounding box operations. statement ok @@ -257,7 +257,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk29v0z4Qx5__XoV1T7pJ3mon7Q_kR-VPBkFdW9pKgHA1hfooEa0dbAcFVX3vKAlsS6emxA9Oujt_7vw96_bgfmxBQPRxNn4RT8jF63ixXLwfX5JFNI5eLcl3cjOf3pINmjuffNki-fA2mkelvyMyZyz4v7akN5vGk-VFeM1IeM0ue0K8iaa30XL-CShoo3CS7NCB-AwcKASwopBZs0bnjC3D--pSrAoQjEKqs9yX4RWFtbEIYg8-9VsEARNzZbL-ACgo9Em6ra4dKJjcP0DOJxsEMTzQR4V5e-FlKXCOiULbZ43ycK9_VCq_S7XCAigsskQ7QfoSXkpZfFVSFpxJWbBzBq66MlwCSbQiISPGf0Pr4JRm3kVzrH-i9ahu0q1Hi7bPm8L_5qMis8RoMuKCuFI1cT6xXlQqwmdDKVnApGTsnAGCWnXFSvFH6ilMcy_IiJ-cQ9BlDu9Mqv98fXDq6zOb7hL766E1HQUnu4ddut9PP2z2ruOCjIKjZWOccfb0PB888XuisYnnhjZoPPvMJs7RZUY7_KdVZIcVBVQbrLfdmdyucWbNumpTu9OKqwIKna-zw9qJdZ0qH_gY5q1w0A4HrXDYDoet8KAdHrTC7AheHf77HQAA__-eq8eX +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlFFv0zAQx9_5FNa9dJO81U5aQH4qjAyCura0lQDhagr1UaKldrAdFFT1u6MksK2dmq55sHRn_-78_8uXDbhfGQiIvkyGb-IROXsXz-azT8NzMouG0dWc3JHr6fiGrNDc-uR7huTzh2gaVfGayIKx4GWzks5kHI_mZ-ElI-ElO-8I8T4a30Tz6VegoI3CUbJGB-IbcKAQwIJCbs0SnTO2Sm_qQ7EqQTAKqc4LX6UXFJbGIogN-NRnCAJG5sLk3R5QUOiTNKuPbSmYwj9AzicrBNHf0keFeXvheSVwiolC22U75eFe_6BSfptqhSVQuDJZsdZOkDtaWwIUZnlSJboS3kpZ_lBSlpxJWbJjC1ycynAJJNGKhIwY_xOtg0M28FNsiPVvtB7VdZp5tGi7fNeL__tRmVtiNBlwQVylmjifWC9qFeGrvpQsYFIydmwBglqdilXi99RTGBdekAE_6ENwig8fTar_vYbg0GvIbbpO7J-H1nQQHOwentL93v1wt3eTF2QQ7M0f44yzp9_r3pO4I3aG85hpvZ1rHxnOKbrcaIfPmk62XVBAtcLmB-BMYZc4sWZZt2nCcc3VCYXON7v9Joh1s1Vd8DHMW-GgHQ5a4bAdDlvhXjvca4XZHrzYvvgbAAD__-uIzaE= query T EXPLAIN (DISTSQL) @@ -281,7 +281,7 @@ vectorized: true table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk9Fv2j4Qx99_f8XpXmglV9gJ_Db5ibGmGhODDpCGNKMqwzcWDezMNlMmxP8-Jdna0o5Q_HDS3flz5-9Zt0P_Y40Sk_nt8M1gBBfXg-ls-nF4CdNkmLydwXe4mYw_wIrsXUi_rAk-vUsmCbS44II_P687z_yWlP3xPLoGteU8-r-2ZcENMjRW0yjdkEf5GQUyjHDBMHd2Sd5bV4Z31aWBLlByhpnJt6EMLxgurSOUOwxZWBNKHNkrm7c7yFBTSLN1dW3P0G7DA-RDuiKU3T17VFg0F56VyieUanJtflAe7wfTKxXdZUZTgQyneWq8hLbCvlLFV61UIbhSBT9l8OpcRiiE1GiIOdjwjZzHY5rFOZoH5ie5QPomWwdy5NriUPjffFLkDqyBnpDgS9XgQ-qCrFTEr7pK8Ygrxfkpg0BGn4uV4p-oZzjeBgk9cXQO0TlzeG8z8-fro2Nfn7tsk7pfD61ZLzraPT6n-_3048PedVxCqz-eX8QQsxjiy5b856r1ohfMpHPwqhOLNiGfW-PpRZvG9wuGpFdUL7O3W7ekW2eXVZvaHVdcFdDkQ53t1s7A1KnygY9h0QhHzXDUCMfNcNwId5rhTiPMn8CL_X-_AwAA__8rRsTS +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk99v2jAQx9_3V1j3Qiu5wk5gm_zEaFONiUEHSEOaUZXhG4sa7Mx2pkyI_31Ksv6gHaHJg6W7y-fO3698O3C_UhAQLW_GH0YTcnY1mi_mX8bnZB6No8sFuSPXs-lnskFz6-PvKZKvH6NZRDqMM85efu97L-KOEMPpMrgiMmcseFufZcMtUNBG4STeogPxDThQCGBFIbNmjc4ZW6Z31U8jVYBgFBKd5b5MryisjUUQO_CJTxEETMyFybo9oKDQx0la_banYHL_CDkfbxBEf0-fNObNjRel8hnGCm2XHbSHB2MGpaLbRCssgMKlSfOtdoLc0Xup8ywuE10JQymLH0rKgjMpC3bqgIu2DJdAYq1IyIjxP9E6OGYDb2PDSP9G61FdJ6lHi7bLD724r0dFZonRZMAFcaVq4nxsvahUhO_6UrKAScnYqQMIatUWK8U_U09hmntBBvyoD0EbHz6ZRP97DcGx15DZZBvbP4-j6SA4Oj1sM_3B_fBwdp0XpDOcLs9CEtKQhOcd8d_tGwSv8KR3cKsTuzdDlxnt8FXLx_YrCqg2WO-3M7ld440162pMHU4rrkoodL6u9utgpOtSecGnMG-Eg2Y4aITDZjhshHvNcK8RZs_g1f7N3wAAAP__-TrK3A== query T EXPLAIN (DISTSQL) @@ -305,7 +305,7 @@ vectorized: true table: geo_table@geom_index spans: 33 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlG9v2j4Qx5__XoV1T2glF-wk6Cf5EfsTukwUuoC0TTOqMnxj0cDObDNlQuy1T0nWFpAIxVIc3Z0_d_meddmC-7kCAfGn-9GrZEyu3ibT2fTD6JpM41H8ZkZ-kGE6uSNLNA8--7pC8vFdnMakM0rG8XSWJuPbK95lhHcZJf0uq57rjhC38eQunqWfyZ8KXQMFbRSOszU6EF-AA4UA5hQKaxbonLGVe1sfSlQJglHIdbHxlXtOYWEsgtiCz_0KQcDY3JiiFwEFhT7LV_WxHQWz8c-Q89kSQfR3dC8xb088qzSmmCm0PXaQHp5aMKgUPeRaYQkUpkWmnSA9Ca-lLL8pKUvOpCzZuQ1uLmW4BJJpRcKAGP8drYNTmvklmhP9C61HNcxXHi3aHj8U_hiPy8ISo8mAC-Iq1cT5zHpRqwj_70vJAiYlY-c2IKjVpVgl_kg9hcnGCzLgJ_sQXNKH9ybX_64-OHX1hc3Xmf39XJoOgpPVw0uqP3U_PKzd-AXpMM4C1qzH994asnDYZvMoYsd2RxwM6iB4QUejA01nxjRFVxjt8EVzynZzCqiW2PwKnNnYBd5bs6jLNOak5mqHQuebaL8xEt2Eqg_ch3krHLTDQSsctsNhKxy1w1ErzI7g-e6_vwEAAP__M6HNEQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUlGFv2jwQx98_n8K6N7SSC3YS9Eh-xdaFLhOFLiBt04yqjNxY1GBntpkyIfbZpySjBSRCsRRHd_bPl_9fvmzA_sxBQPj5YfQmGpOrd9F0Nv04uibTcBTezsgTGcaTe7JE_eiSbzmST-_DOCSdUTQOp7M4Gt9d8S4jvMso6XdZ9Vx3hLgLJ_fhLP5C_lToCigoneI4WaEF8RU4UPBgTqEweoHWalOlN_WmKC1BMAqZKtauSs8pLLRBEBtwmcsRBIz1jS56AVBI0SVZXm_bUtBr9wJZlywRRH9L9w7m7QfPKo0xJimaHjs4Hp4tGFSKHjOVYgkUbnW-XikryBPdSZ0WSZXoSXgrZfk9lbLkTMqSnZvg5lKGSyCJSonvEe1-oLFwygZ-iQ2R-oXGYTrMcocGTY8ferFbD8vCEK3IgAtiK9XEusQ4Uavw_-9LyTwmJWPnJiCo0kuxSvyRegqTtRNkwE_64F3iwwedqX-3wTt1GwqTrRLz-6U0HXgnq_uXVH923z-s3eQF6TDOPNaM3XtvDJk_bIt5ELDjuCMOenfgvcLR4EDTmc6N0RZaWXxV67LtnAKmS2z-DlavzQIfjF7UZZpwUnN1IkXrmtV-E0SqWao-cB_mrbDXDnutsN8O-61w0A4HrTA7gufb__4GAAD__zWM0xs= query T EXPLAIN (DISTSQL) @@ -329,4 +329,4 @@ vectorized: true table: geo_table@geom_index spans: 30 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk9-LGjEQx9_7V4R5uTvIYZJdKc2TtbdSi9WrChUaObZmapdqsk1i2SL2by-72zt_gGvdhywzyWcm32-YLfifK5CQzB4Hb_tDcvvQn0wnnwZ3ZJIMkndT8oP0xqOPZIn2KaRfV0g-v0_GSRmvyR9ywzgTrP6e_wdfj0W9ppjHMTuNb6TsjmbiASgYq3GYrtGD_AIcKAiYU8idXaD31pXpbXWorwuQjEJm8k0o03MKC-sQ5BZCFlYIEob23uatGChoDGm2qo7tKNhN2EM-pEsE2d7Rg8K8ufC0tGWMqUbXYkfl4cW1TunXU2Y0FkBhkqfGS9JS0FWq-KaVKjhTqmCXFri_luEKSGo0EW-IDd_ReTinmV-juW9-oQuoe9kqoEPX4sfCn_eTInfEGtLhkvhSNfEhdUFWKqLXbaWYYEoxdmkBgkZfi5XiT9RTGG2CJB1-1gdxjQ8fbGb-Pb049_S5y9ap-71vTTvibPfomu4v7kfHveu8JB1Rjmh3NLvlhNM2ad_dyP10XTIiPrrKhekao8-t8fhf48V2cwqol1hPsLcbt8BHZxdVmzocVVyV0OhDvduug76pt8oLHsK8ERbNsGiEo2Y4aoTjZjhuhNkJPN-9-hsAAP___rvHVQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk9-LGjEQx9_7V4R58Q5ymOyulObJerdSi9WrChUaObZmapdbk20Syxaxf3vZ3d75A1xrHhJmJp-ZzJfMFtzPDATE88fh-8GI3DwMprPp5-EtmcbD-H5Gnkl_Mv5EVmiefPItQ_LlQzyJS3tN_pAW4yxg9Xo5D1afhf0mm0cRO7VbQvTG8-ABKGijcJSs0YH4ChwoBLCgkFuzROeMLd3b6tJAFSAYhVTnG1-6FxSWxiKILfjUZwgCRubO5O0IKCj0SZpV13YUzMbvIeeTFYLo7OhBYt6ceFbKMsFEoW2zo_Twqlq31Osp1QoLoHBvss1aO0GeaSUkUJjmSeloS-hJWXxXUhacSVmwSxvcXctwCSTRigTviPE_0Do4JwO_RoaB_oXWo-qnmUeLts2PtXiJx0VuidGkywVxZdfE-cR6UXURvu1IyQImJWOXNiCo1bVY2fxJ9xTGGy9Il5_VIbhGh48m1f9-Q3DuN-Q2XSf297407QZnq4fXVH9VPzyuXfsF6Qbl1PbG8xtOOO2Qzm1L7AfukhDR0VMuDNwEXW60w_-aOLZbUEC1wnqondnYJT5as6zK1Oa44iqHQufraKc2BroOlQ88hHkjHDTDQSMcNsNhIxw1w1EjzE7gxe7N3wAAAP__7DXNXw== diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_json_array_dist b/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_json_array_dist index 9d241e0ac7c0..0364e320b6be 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_json_array_dist +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_filter_json_array_dist @@ -92,7 +92,7 @@ vectorized: true table: json_tab@json_inv spans: 2 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysUt2KEzEUvvcpDudmFbNMkqk3uaq6IxZqW2cKKjpI2hzXkZqMSUYWlr67NLNiR-rYFW9Czs_3w8e5xfBthwqLt6v509kCHl7NqnX1ev4IqmJePF-Dhhfl8hV8Cc5-jHoDb14WZQEbmH7oOM8JLsQFLMurooRn70AjQ-sMLfRXCqjeo0CGEhnmWDNsvdtSCM4fRrdpcWZuUHGGjW272LdjE3eECp035MkgQ0NRN7vENxWPsd7XDLfOE6pf2wt36dpsMtiu9wxdF--Ya4Yh6mtCle_Zkbo4Uj9BvNabHZWkDfmMD838zGSaPo39jgyrVtugIBM8E5fpzVaePjU3hTWgrQEBLn4mjwyXXVQwFfgnm-I-NivnI_lMnorrNL0c0MvzUxDnpyBTCvL_pfAXm3cp5P-aAh-nLym0zgY668r44UzJXFN_1sF1fksr77ZJpi-XCZcahkLsp0_6Ymb70cHgMViMguU4WI6C-QAsfgfno-DJuPLkXsr1_sGPAAAA__-G2ntW +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykktFv0zAQxt_5K6x7GQhPsZ3ykqfCFkSk0pakEiCIkBsfIyizg-2gSVP-dxRniAaVsHUvlu2777tPP90tuB8NJJB-2K5eZmvy9DIrdsW71TNSpKv0YkckeZ1v3pLvzugvXu7J-zdpnpI9WX7uGIuRnPEzsskv05y8-kgkUNBG4Vpeo4PkE3CgIIBCDCWF1poKnTN2KN2GxkzdQMIo1Lrt_Pjta98gJGCsQosKKCj0sm6C35I_h7IvKVTGIiR_utfm3LTRYtJd9hRM5--cSwrOyyuEJO7pwXR-MP2I8U7uG8xRKrQRm4b5zWQZLrX-CRQuTNNda5cEFEUrh2vEWcTPwxltLX6tb1KtiNSKcGL8N7Twr6T8IUkLYz3aSBwjdtxeTOzF_UHwE0GIAEI8FsR_kt6BiE8Fwebtc3St0Q7vtWtsWFZUVzgutzOdrXBrTRXGjM9N0IUPhc6P1RfjI9NjaQh4KOazYjEvFrNiNhHzv8XxrHgxP3nxoMll_-RXAAAA__-0m36I # Filter with fully-specified arrays. query T @@ -114,7 +114,7 @@ vectorized: true table: json_tab@json_inv spans: 4 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUmFv0zAQ_c6vON2XbWAUO0Ga5E8ZLBORylqSSoCWCLn1MYKCHWxnqlT1v6Mk2qCgFvrldPfu3vN7krfof7QoMfu4mF3lt3B-nZfL8v3sAspslr1ZgoKbYv4OvnlrPge1gg9vsyKD8xWkVc95QnB2JxjE9dkFzIt9PGHwasKvswJefwKFDI3VdKu-k0d5hwJrhp2za_LeugHajge53qDkDBvT9WGAa4Zr6wjlFkMTWkKJS7VqqSClyUUcGWoKqmlH2Uez6dg05gEZlp0yXkIkeHTlXCRePnXRwtGXZpMZDcpouAQbvpLzyHDeBwmpYGmM9Y6h7cMvOz6oe0Ipduz_LefmgVwgfdO0gRy5SOz7ftxnm86BNZAKCX7wDT4oF2SFl1XFOR9K8tSJ50ONpxmBjP73oagQxrTJX2kPRo1PiVpaF8hF8X7AVLw4KJ-cIl-Q76zxtCd_SJnvaoak72n6YN72bk0LZ9fjM9M4H3kjoMmHaSumITfTajD4O1kcJcfHyfFRcvIHud49-xkAAP__grwnDQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUlFr2zwUff9-xeW-tP2mYckeFPTkrnWZIWsyO7CN2gwluus8XMmT5BII-e_DNumWQbL1Rdxz7j3H54C36H-0KDH7tJhd5XdwfpOXy_LD7ALKbJZdL0HBbTF_D9-9NV-CWsHHd1mRwfkK0qrnPCE4uxcM4vrsAubFIZ8weDPxN1kBbz-DQobGarpTj-RR3qPAmmHn7Jq8t26gtuNBrjcoOcPGdH0Y6Jrh2jpCucXQhJZQ4lKtWipIaXIRR4aagmra0XYfNh2Hxjwhw2vb9o_GS1AMVsiw7NSAIsGjK-ci8fp5ihaOvjabzGhQRsMl2PCNnMd6x9D24VciH9QDoRQ79u-pc_NELpC-bdpAjlwkDqPv99mmc2ANpEKCH6KCD8oFWeFlVXHOhyd5nsT_wxtPGIGM_vuhqBDGgsm-IMN5HySk4mjV-CVVS-sCuSg-LJiKV0ftk5fYF-Q7azwd2B9z5ruaIekHmv4xb3u3poWz6_EzE5yPupHQ5MO0FRPIzbQaAv4uFifF8WlxfFKc_CGud__9DAAA__-7OSi2 # Filter with a path ending in an empty object. query T @@ -136,7 +136,7 @@ vectorized: true table: json_tab@json_inv spans: 2 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVFFv0zwUff9-xdV92YcwSpysIPwUoJmoVNaSVgJEIuTWlxFU7GI7U6Uq_x0lYVpT1mx7QOIliu-5556TY93s0f3coMD043z6anIJ_48ni-Xi_fQJLNJp-mYJEi6y2Tv47oz-4uUKPrxNsxRWkORVGMYEZ_scZY4C9nV9BrNsnGbw-hNIZKiNokv5gxyKz8iRYYQMYywYbq1Zk3PGNtC-bZyoHYqQYam3le_KvvQbQoGVNlaRJYUMFXlZbhq8qAuGa2MJxW3ruHS-1GsfnPd6MWnkZ5UXkHAsaoam8r91CobOyytCEdfshJc7lBbGerLB6Fjn6cnx573xfHj8Uq42lJFUZIOwr3FzFUn7UuprZLjYSu0EBDwM2usI9vWzw0Mwt_S13KVagdQKOBj_jextJiyJTvrmj_E90ddkPamLcuPJkg2ivvkbPN1tLRgNCRfgGvPgvLRe5PhC5nkYhs2Dv8wRSKujqsgRDj_DnbQe9axHD4-cPzzy6DDy6G9Efo_vPyKP_53I71mijNzWaEdHi3335LBZeFJX1P0dnKnsmubWrFuZ7jhreW1BkfMdyrvDRHdQY_CQzAfJz4fJ0SA5HibHg-SwR-bH5PNB8mhYefQo5aL-71cAAAD__xdB_D4= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVMFu00AQvfMVo7kUxCJ77RbEngKNKyKFJjiRAGELbbJDMXJ3w-66ihT535FtKuLQuBRx4BJl5s2b9_RW4x267yUKTD7Mp68ml_B4PFksF--mT2CRTJPzJUi4SGdv4Zsz-rOXK3j_JkkTWMEoq8IwJjjZZSgzFLCr6xOYpeMkhdcfQSJDbRRdymtyKD4hR4YRMowxZ7ixZk3OGdtAu3ZworYoQoaF3lS-a_vCl4QCK22sIksKGSrysigbPK9zhmtjCcWv0XHhfKHXPjjtzeKokZ9VXsCIY14zNJX_qZMzdF5eEYq4Zke83KG0MNaTDc4OdZ4eXX_aW8-H1y_lqqSUpCIbhH2N26cYtX8KfYMMz01ZXWsnQDJYIcPFRjZVwMOgfZ5gVz_bL4K5pS_FNtEKpFbAwfivZI9a5w-xPtE3ZD2pi6L0ZMkGUd__LZ5sNxaMhhEX4Bq_4Ly0XmT4QmZZGIbND3-ZIZBWB12RIew7d0etRz3r0Z-nzv8-9Wg_9egfpX6P9d9Sj_-f1O85pZTcxmhHB-d99-awOXtSV9R9I5yp7Jrm1qxbma6ctby2ocj5DuVdMdEd1BjcJ_NB8vNhcjRIjofJ8SA57JH5Ifl0kHw2rHz2IOW8fvQjAAD__5ze_5A= # Filter with a path ending in an empty array. query T @@ -158,7 +158,7 @@ vectorized: true table: json_tab@json_inv spans: 2 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVF1v0zAUfedXXN2XgTBKnGx8-ClAM1GprCOtBKiJkFtfjaBiF9uZJlX57ygJU5uyZpvEAy9RfM8995wc62aL7tcaBaZfLidvxxfwdDSezWefJs9glk7S93OQcJ5NP8IPZ_Q3L5fw-UOapbCEJK_CMCY42eYocxSwKOoTmGajNIN3X0EiQ20UXcif5FAskCPDCBnGWDDcWLMi54xtoG3bOFY3KEKGpd5Uviv70q8JBVbaWEWWFDJU5GW5bvCiLhiujCUUu9ZR6XypVz447fVi0shPKy8g4VjUDE3l_-gUDJ2XV4QirtkRL3cozYz1ZIOzQ53nR8ef9sbz4fFzuVxTRlKRDcK-xu1VJO1Lqa-R4WwjtRMQ8DBoryNYFC92h20NUivgYPx3srskWBIddcsf43asr8l6Uufl2pMlG0R9y7d4erOxYDQkXIBrLIPz0nqR4yuZ52EYNg_-OkcgrQ6qb3KE_c9wR61HPevRw4PmDw862g86-ndB3-P2r6Dj_yfoexYmI7cx2tHBEt89OWyWm9QVdX8CZyq7oktrVq1Md5y2vLagyPkO5d1hrDuoMbhP5oPkl8PkaJAcD5PjQXLYI_ND8ukg-WxY-exRykX95HcAAAD__3dB9BI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVE1v00AQvfMrRnMpiEX22i0fewo0rogUmuJEAhRbaJMdFSN3N-yuq0qR_zuyTdU4NC6FC5coM2_evKe3Gm_R_ShRYPL5Yvp2cg5Px5P5Yv5x-gzmyTQ5XYCEs3T2Ab47o796uYJP75M0gRWMsioMY4KjbYYyQwHLvD6CWTpOUnj3BSQy1EbRubwih2KJHBlGyDDGnOHGmjU5Z2wDbdvBibpBETIs9KbyXdsXviQUWGljFVlSyFCRl0XZ4HmdM1wbSyjuRseF84Ve--C4N4ujRn5WeQEjjnnN0FT-l07O0Hl5SSjimh3wco_S3FhPNjjZ13l-cP1xbz0fXr-Qq5JSkopsEPY1bp9i1P4p9DUyPDVldaWdAMlghQznG9lUAQ-D9nmCZf7irtjWILUCDsZ_I3vQMH-M4Ym-JutJnRWlJ0s2iPqub_HkZmPBaBhxAa5xCc5L60WGr2SWhWHY_PDXGQJptdd9kyHsOncHrUc969GfZ83_PutoN-von7J-wPBvWcf_T9YPnE1KbmO0o71Tvn9z2Jw4qUvqvgfOVHZNF9asW5munLW8tqHI-Q7lXTHRHdQY3CXzQfLLYXI0SI6HyfEgOeyR-T75eJB8Mqx88ijlvH7yMwAA___nIvdk # Filter with a nested array. This index expression is not tight. query T @@ -186,7 +186,7 @@ vectorized: true table: json_tab@json_inv spans: 4 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk9Fv2j4Qx99_f8XpXkp_85Q4oarkp7RrqlExYAnSNkE0GXLrMlE7s03FhPjfpyS0W7oSwUMi350_5-_5fFu0P1coMP48GV4NRtC7GaTT9OPwHNJ4GL-bgoTbZPwBflitvjq5gE_v4ySG3gKi-dr3Q4Kz2YwzCLLs7BzGyYtIyKC_j9zECVx_AYkMlc5pJB_Iopghx4xhafSSrNWmcm3rDYN8g8JnWKhy7Sp3xnCpDaHYoivcilDgVC5WlJDMyXg-MszJyWJVp30SHNWLQj0iw7SUygrwuO9dGVN__G3L8iaGvhWbWOUgVQ6XoN13MhYZjtdOQMRZFGC2Y6jX7o8s6-Q9oeA7drz0gXok4yi_LVaODBmPt_U_xeNNaUAriLgAW-kH66RxYo6X87nv-9UvfGXF_6_-QWMjkMpPQfgcob6B8J8bOFh-cEr5qTaOjBe0i474m4Ppw1PS3-lC7d9FeOBdlKZ4kObXca3tn3L4c0v77aMbv4BeFLwyPUKIu3Q8um6mqL1lP0bPW47oxsUpihOypVaWWnoPZfZ3GUPK76mZVavXZkkTo5f1MY05rrnakZN1TZQ3xkA1oUrg3zDvhINuOOiEw2447IT73XC_E754AWe7_34HAAD__4w7tkQ= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUU99vmzAQft9fcbqXtpsnMKSq5Cf6g2qpuqaDStvUoMkJt46J2Mw2VaYo__sEJO2oGtQ8gHz33Xf3fbJvhfZPiQLjb7fXp-MbOLwYp3fpl-sjSOPr-PwOJFwmk8_w22r1w8kZfP0UJzEcziCa1r4fEhzc33MGQZYdHMEkeYGEDEYb5CJO4Ow7SGSodE43ckEWxT1yzBhWRs_JWm2a1KotGOdLFD7DQlW1a9IZw7k2hGKFrnAlocA7OSspIZmT8XxkmJOTRdm23QqO2kOhHpHhuS7rhbICJIMZMkwr2UQe971TY9qPf-xF3q2hn8UyVjlIlcMJaPeLjMVszVDX7lmZdfKBUPA1e7v6sXok4yi_LEpHhozH-xa2eLysDGgFERdgG8lgnTROTPFkOvV9v_mFr5z4--YfdDECqXwfCp8itKbDrWmGk9oJiPhO-8E-9lNtHBkv6JuO-Ied7cN92l_pQm2eRrjjaVSmWEjz99kYi4Kdw0f7DH-60lF_dJcXcBgFryyQEOIqndycdYvUL9ls0lPJG27jeB_FCdlKK0s9vbs6--uMIeUP1K2r1bWZ063R83ZMF05aXpvIyboO5V0wVh3UCPyfzAfJwTA5GCSHw-RwkDwaJo8GyccvyNn63b8AAAD__69Ct-0= # Combine predicates with OR. query T @@ -208,7 +208,7 @@ vectorized: true table: json_tab@json_inv spans: 2 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVNFv0z4Qfv_9Fad72fbDKHHSguSnDJqJSmUtaSVAa4Tc-hhBxS62M1Wa-r-jJKxbyppuEi-8WPbdffd9l0-5W3Q_Vygw_TQZnQ8v4XQwnM6mH0ZnME1H6dsZSLjIxu_huzP6i5cL-PguzVI4XUAyL8MwJji54vnJGYyzdjBqgoM0gzefQSJDbRRdyh_kUFwhR4YRMowxZ7i2ZknOGVulbuvCodqgCBkWel36JuwLvyIUWGpjFVlSyFCRl8WqyufbnOHSWEJxXzoonC_00ge9Vi0mFf249AISjvmWoSn9b56cofPymlDEW3ZAyyNMU2M92aC_z_PiYPteqz3vbj-TixVlJBXZIGxz3DmT1JdC3yDD6VpqJyDgYXBubcBf7m7BxNLXYpNqBVIr4GD8N7L3X4Ml0UHF_DmKh_qGrCd1Uaw8WbJB1JZ9l083awtGQ8IFuEo2OC-tF3N8PZ-HYVgd8e7G_6_OqHkjkFbHC_kc4eGw7uCAUWvA6OmW8KdbEu0sif66JUcU_2FJ_K9ZcuQnzMitjXa0txge7xxWC4PUNTXbxZnSLmlizbKmaZ7jGlcHFDnfZHnzGOomVQl8COad4Ffd4KgTHHeD405w2ALzfXCvE9zvZu4_iznf_vcrAAD___KFDc0= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVE1v00AQvfMrRnNpC4vstRuQ9pTSuCJSaIITCVBjoU12KEbubthdV5Gq_Hdkm4Y6NA5FXLhYOx9v3hs9ee7QfS9QYPJxMjobXsLxYDidTd-PTmCajJLzGUi4SMfv4Jsz-rOXC_jwNkkTOF5Af16GYUxwdMWzoxMYp-1k1CQHSQpvPoFEhtooupQ35FBcIUeGETKMMWO4smZJzhlble7qxqFaowgZ5npV-ibtc18QCiy1sYosKWSoyMu8qOrZJmO4NJZQ_God5M7neumD01Yv9iv6cekF9DlmG4am9D95MobOy2tCEW_YHi2PME2N9WSD3i7Pi73jT1vjeff4mVwUlJJUZIOwzXHvTL9-5PoWGZ6borzRToBksECG05WsooCHwZm1AX-5fQUTS1_ydaIVSK2Ag_Ffye4VzZ8ieqhvyXpSF3nhyZINorby-3qyXlkwGvpcgKuUgvPSejHH1_N5GIbVJ96--PPqGzUxAml1uJHPER7u5_YuGLUWjP7cFf73rkRbV6J_4coB0b-5Ev9vrhz4FVNyK6Md7ZyHxyeH1dkgdU3NjXGmtEuaWLOsaZpwXOPqhCLnmypvgqFuSpXAh2DeCX7VDY46wXE3OO4Ehy0w3wWfdoJ73cy9JzFnm2c_AgAA__9M1BEf # Combine predicates with OR. query T @@ -236,7 +236,7 @@ vectorized: true table: json_tab@json_inv spans: 3 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk99v0zAQx9_5K073sh8YJU46kPyUjWWiU2lLUglQGyG3OUZQZwfbnYqq_u8oCS0ElEBfLN-Pz933dLod2m9rFBh_mI6uh2M4vx2ms_Td6ALSeBS_nsEl3CWTt_DVavXJySW8fxMnMZwvIVpsfD8kOJuH2dkFTJK2c84ZBFkTuY0TuPkIEhkqndNYPpJFMUeOGcPS6BVZq03l2tUJw3yLwmdYqHLjKnfGcKUNodihK9yaUOBMLteUkMzJeD4yzMnJYl2XPWiN6k-hnpBhWkplBXjc966N8cIXx583NfS52MYqB6lyuALtvpCxyHCycQIizqIAsz1DvXG_5FgnHwgF37P_lzxUT2Qc5XfF2pEh4_G27kM83pYGtIKIC7CVbrBOGicW-Gqx8H2_esLjj19W78vGRiCV_zuRLxDqaYO_pu0cNThl1FQbR8YL2gNG_Hln-fCU8ve6UD93H3bsvjTFozTfW2tkUdjZf3BK_-MGB-3ujV_AeRS070MIcZ9OxjfNnbSih0M5pnRKvDpFYkK21MpSS2BXZX-fMaT8gZobtHpjVjQ1elW3acxJzdWOnKxrorwxhqoJVQJ_h3kvHPTDQS8c9sNhLzzohwe98NUfcLZ_9iMAAP__ygWqBA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUU91u00wQvf-eYjQ3_fkW2WunIO2V--OKVKUpdiVAjYU28VCMnF2zu66Corw7sk1SjGRDblY7c-bMnKPRbNB-L1Fg_PH-9nx6B8dX0_QhfX97Aml8G18-wClcJ7N38M1q9dnJBXx4GycxHC8gmte-HxIcPYbZ0QnMkn7ykTMIsg65ihO4-AQSGSqd051ckUXxiBwzhpXRS7JWmya1aQum-RqFz7BQVe2adMZwqQ2h2KArXEko8EEuSkpI5mQ8Hxnm5GRRtm13WqP2U6hnZHipy3qlrADJYIEM00o2kcd979wYL3y1_3n3hr4U61jlIFUOZ6DdVzIWsy1DXbsXRdbJJ0LBt-zfVU_VMxlH-XVROjJkPN6XvsPjdWVAK4i4ANtIBeukcWKOb-Zz3_ebJ9z_-Gnzvu5iBFL53wv5HKE1GOwMMpzVTkDEB60Gh1hNtXFkvKBvMOL_D7YPD2l_owv1a_3hwPorU6yk-fFijEUBi8LB-ZND5u83OOlP7_ICjqOgfyJCiJt0dnfRnUoP3d3KvmRQ4tkhEhOylVaWegKHOvvbjCHlT9SdodW1WdK90ct2TBfOWl6byMm6DuVdMFUd1Aj8ncxHycE4ORglh-PkcJQ8GSdPRslnf5Cz7X8_AwAA__-wPaut # More complex combination. query T @@ -260,7 +260,7 @@ vectorized: true table: json_tab@json_inv spans: 6 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklGL00AUhd_9FZf7si2OZCZFhHnKrs1ipTY1Kahsgkw71zVSZ-rMdCmU_ndJ4tJGad19CTP33O_kHJg9-l9rlJh-nk-vJzMYjCfFovg4HUKRTtO3C1Bwm2cf4Ie35mtQS_j0Ls1TGAyWkJRbzkcEV3eiupLyfZHNboaQ5dDT4qM2hOvZuI-OzoIlLpUr8QTO8nGaw80XUMjQWE0z9ZM8yjsUWDHcOLsi761rRvt2YaJ3KDnD2my2oRlXDFfWEco9hjqsCSUu1HJNOSlNLuLIUFNQ9bq1feyctIfaPCDDYqOMlxAJHv1J-OrkHM0dfat3qdGgjAYhwIbv5DwyzLZBQiJYEmN1YGi34ZjJB3VPKMWBPT33xDyQC6Rv63UgRy4S_fCPerrbOLAGEiHBN-HBB-WCLPFNWXLOm48oSx7HTYPjBIGM_s9WXCK0RV__0_Nsyfg5JQvrArko7ldLxMuz9qPn2OfkN9Z46tmfc-aHiiHpe-rel7dbt6K5s6v2N901a7l2oMmHThXdZWI6qQl4CouLcHwZji_Co7_g6vDidwAAAP__rm46Zw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklFr2zAUhd_3Ky73pQ3TsOQwBnpK27gsI4szO7CN2gwluus8XCmT5BII-e_DzkLiQbL1xejeo-_4HNAW_a8aJSZf5tObyQyux5N8kX-aDiBPpsndAhTcZ-lH-Omt-RbUEj6_T7IErq-XMCoazocEVw-ivJLyQ57ObgeQZtDT4qM2gJvZuI8Oz4IFLpUr8AROs3GSwe1XUMjQWE0z9UQe5QMKLBmunV2R99a1q213YaI3KDnDyqyb0K5LhivrCOUWQxVqQokLtawpI6XJRRwZagqqqjvbQ-dRd6jMMzK8s3XzZLwExWCJDPO1aqdI8OhP4jcn52ju6Hu1SYwGZTQIATb8IOex3DG0TTjG8kE9EkqxY_8ffWKeyQXS91UdyJGLRD__QU82awfWwEhI8G1e8EG5IAt8VxSc8_YjioLHcRv6uEEgo_9xKy4Qum5vD9UYpk2QMBJnS8YvKZlbF8hFcb_aSLw-az98iX1Gfm2Np579OWe-KxmSfqT9E_O2cSuaO7vqfrMf047rFpp82KtiP0zMXmoDnsLiIhxfhuOL8PAvuNy9-h0AAP__F-w8EA== # Combined with non-JSON predicates. query T @@ -281,7 +281,7 @@ vectorized: true table: json_tab@json_inv spans: 1 span · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k--K00AUxb_7FJcLsi3OkkyyrTIgtNosFmpb04LKGmTaXJdIzcSZiSwsfXdJUmsj3dlW8dv8-51zksO9R_N9gwKjD_PJcDyFzmi8WC7eTbqwiCbR6yVIuI5nb-GrUflnK1fw_k0UR9BZweBT6fshwcUNTy66MJyOoNOR8BSCLrwEvwuzeBTF8OojSGSYq5Sm8hsZFDfIkWGADENMGBZarckYpaur-_rhOL1D4TPM8qK0zbHN7IZQoNIpaUqRYUpWZptab8CfYbJNGK6VJhS_X0_VpSq8fut1smWoSrtTThgaK28JxdWWHbjzA_cjwku52lBMMiXt-e0wv_7UoF5k-Q9kuChkbgR43PeGWnv8cr_y5pq-ZHdRXn3SrLQCBhwfisjPiXidbSxp0l7QztecC-gMeFWWEGI8Xb6oO9utH_QPzvFfKG1Je1fHqjouH7bkg9Mb4Kc3EOwbCP69gUci7hsI_1MDj_jvGuj9bQO-Wz4mU6jc0EnT5VfjSektNeNsVKnXNNdqXds021nN1QcpGdvcPm8247y5qgIewtwJB244cMKhGw6dsN-C-Z_wlRPuuZ17TrjvhvtnxU62T34GAAD__2_w9Gk= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k-9q2zAUxb_vKcSF0YSp2LKTbAgGyRqXBTInswPb6MxQ4rvi4VqeJI9CybsP21kWj1RtAvt29ed3zkEHPYD-mQOH4PNyPpmFpDedxav447xP4mAeXK2IINfR4gP5oWXxzYg1-fQ-iALSW5Px18p1fSQXNyy56JNJOCW9niAvidcnb4nbJ4toGkTk3RcigEIhUwzFHWrgN8CAggcUfEgolEpuUGup6qOH5uIsvQfuUsiKsjLttslMjsBBqhQVpkAhRSOyvNEbs1eQbBMKG6kQ-N_bobyUpTPq3E62FGRldsoJBW3ELQIfbOmBOztwPyK8EuscIxQpKsfthvnzUuNmyIpfQOFK5tVdoXnzFHEp6tFhrjNRymGX-8lZKvye3QdFCo-lZKekvM5ygwqV43Ujtvuc9Mas7otzPgtXb5radvOj_t4p_rFUBpUzONbWcXm_I-89vwR2ZgnevgTv3BKeSLkvwf9PJTzhvytheG4Jrl0-Ql3KQuOz_phbf1JMb7H91FpWaoNLJTeNTbtcNFyzkaI27enrdjEr2qM64CHMrLBnhz0r7Nth3wq7HZj9Cw-s8NDuPLTCIzs8Oil2sn3xOwAA__8Gpfeb # The split disjunction rule allows us to use the index for this query. query T @@ -313,7 +313,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: [/44 - /44] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lFFP2zAUhd_3K6z7AmhBiZ20hUiTykamdWKUpUjbxKLJbTzIVOLMdicQ6n-fkrCmKcRu1og3N_Z377HvOX0A-XsOPgRfL85ORudo_3Q0uZx8PjtAk-AseHeJKHofjj-hX5KnPxSdoi8fgjBA-1M0_L5wHJehvSsc7R2gcYj2KXqDPC9fnwYhevsNUbAg5TE7p7dMgn8FGCwgYIELkQWZ4DMmJRf51kNxcBTfge9YkKTZQuWfIwtmXDDwH0Alas7Ah0s6nbOQ0ZgJ2wELYqZoMi_K_1M5zERyS8U9WDDJaCp9ZHtecXi8UD4aYmtIIFpawBeqaiQVvWbg46W1vZjTRKoknSn7uK5kmN90LGImWJw33OhWFZjeoxsqb57Q0bJS1GtUVNXhZa_NOq_LQo2yMWmlu9LU71zTOT_kmY3d-vHHgTXqGNR04O2tgxusUyyS9M-ad7Bjnwhh48PVyr4Q7GdyF6Rx5alGiaSNxAkXignbfe7Rni_vtin_kSfp4wP0jNnZIixem-Yr1w1eLCy407A4nYSFbG9Ssr1JycqkZHeTGiQ-mtT7X5Mayq-ZtN-9SQ3NV9M-ejGTkk5Nijv_R3-mXchkxlPJar2aKju5YBZfs_KCki_EjF0IPivalD_HBVd8iJlU5S4uf4zScisXuA7jTRivw0c1GLeDsbsLTfQw0V7a0NnVv5infzJPS_f0cE8L9_VwXwsP9PBgl0nrYdOk9bRh0ke7TPpYP2nHEA5DtEzZeuLwOk4M-BOPt8qmnjaGU48bZob1CdvsHS1f_Q0AAP__NmxOwg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyslF9v0zAUxd_5FNZ92SY8JU7TP0RC6liDKCptSSsBGhFym8sU1NrBdtBQ1e-OmpStmRr3D7zdG_t3z5FP7BXonwsIIPw8Htz0h-Sy159MJx8HV2QSDsLbKeHkbTT6QH5oKb4ZPiOf3oVRSC5npPs1d90Gkos7Fl9ckVFELjl5TXx_U_fCiLz5QjhQEDLBIV-ihuAOGFDwgEIDYgqZknPUWqrN0qrY2E8eIHAppCLLzeZzTGEuFUKwApOaBUIAUz5bYIQ8QeW4QCFBw9NFMf6vy26m0iVXv4HCrVzkS6EDwimZAYVJxjed4_uOC_GagszNk5Y2_B4hYGta4-fJhlQJKkyqBrrsJcTrPaaH8lpmTruyu069Wau-Z3Av1SYVc-N0njsBCqPSY0DKLjdFVafbquiy41NgNSkURSp-VWLYyYC5zo1SDrt-rJyxwu_pQyiSWpfeKS4nUhlUTmNfSvvHN04Z_16mYnsGzYN_4vb4aderFfcr4t7xCXhnJuA9JuCdm8ABl9sE_HMTODB-J4HW_0_gwN2LUGdSaDzqVrubZwGTeyyfES1zNcexkvNCpmxHBVd8SFCbcpWVTV8US8XTtAszK-xVYPc57FnhV3a4YYV9O-xb4aYdbv7LgbWscNuu3LbCHTvcOcl2vH7xJwAA__9zIHf0 # We cannot use the index for this query. query T @@ -331,7 +331,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkd_Km0AQxe_7FMPcfAa2xLV3CwXzx1CLiakG2pJK2egQLMY1uyu0BN-9qJTEQkq_yzlnz8yPszc01woFBl_20SLcgbMO00P6KZpBGkTB6gASNkm8hR9G1d-tPMHnD0ESgHMC_1vruu8IXo48e5lBnIBjrto6Uoh1sAq3i2gG78HrnXWQwPIrSGRYq4J28kIGxRE5ZgwbrXIyRuleug0PwuInCpdhWTet7eWMYa40obihLW1FKPAgTxUlJAvScxcZFmRlWQ1r_7D6jS4vUv9ChmkjayPgLTKMWyvA58z3MOsYqtbejxgrz4SCd-z_QTZlZUmTnvMpxagLcHxv2pUQ4mMa75YPnfl8Wpq4j3fip7jea3ATMo2qDU1gn212u4whFWca_8aoVue01yofzoxjPOQGoSBjR5ePQ1iPVg_4GOb_DHt_hbPuze8AAAD__3Di014= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkVGrm0AQhd_7K4Z5uQa2XNe-LRS8SQy1mJhqoC2plFWHYDGu2V2hJfjfi0pJLKT0Pp4ze2Y-zl7RXGoUGHzZRy_hDpx1mB7ST9EC0iAKVgeQsEniLfwwqvluZQ6fPwRJAE4O_rfOdd8RPB159rSAOAHHXLR1pBDrYBVuX6IFvAdvmKyDBJZfQSLDRpW0k2cyKI7IMWPYalWQMUoP1nV8EJY_UbgMq6bt7GBnDAulCcUVbWVrQoEHmdeUkCxJP7vIsCQrq3pc-4fVb3V1lvoXMlypujs3RoBkkCPDtJWDeotZz1B19nbHWHkiFLxn_8-yqWpLmvQzn4NMvgDH9-Z1CSE-pvFueVebz-e9iZtEhnFnBfj8Ia73GtyETKsaQzPYR5vdPmNI5Ymm7zGq0wXttSrGM5OMx9xolGTsNOWTCJtpNADeh_k_w95f4ax_8zsAAP__JavVBw== statement ok INSERT INTO array_tab VALUES @@ -378,7 +378,7 @@ vectorized: true table: array_tab@arr_inv spans: 1 span · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k9Fv0zAQxt_5K6x7GQhPiZOWSX4K0ExUCu1IigDRaHLj0xQp2MF2pqEq_ztKAoyUNduE9mLJvvvd9_Vrbg_2ewUc4s8XyevlijxfLLNN9iF5QbI4id9uiCDn6fo9EcaIH5dO7Mind3Eakx2Jto3vh0hO9u0JWaeLOCVvvhABFJSWuBLf0AL_CgwoBEAhhJxCbXSB1mrTlfZ941LeAPcplKpu3PDsSlchcGiUNhINSqAg0Ymy6up5m1MotEHgt62L0rpSFc6bjXoh6uTXjeMkYpC3FHTjfunkFKwTVwg8bOkRL3coZdo4NN78UOfl0fGz0Xg2PX4jdhWmKCQazx9r_PkLImHMZamugUJWC2U58Zh_6jHfW31Mkv64_dU0Co46Y49xtlTXaBzK87JyaNB4wdje73p8UxuiFYkYJ7azR1BJvoXtNjw7Gw4gRy0FI0vBw8NiDw8r8E-94D_DusfZP2GFTx_WPR9uirbWyuLBMt092e-WDOUVDhtpdWMKvDC66GWG67rn-geJ1g1VNlyWaih1Bv-G2ST8ahoOJuFwGg4nYX8Es0N4NgnPp5Xnj1LO22c_AwAA___3ic2c +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k19r2zwUxu_fT3E4N33HVGzZyQq6yta4LJAlnZOxjcUUJToUgyt5klw6gr_7sL1_zhp3GexGIJ3zO8_DY589us8FCkw-XM9fzhbw_3S2Wq_ezp_BKpknl2uQcJUu34C0Vn658XIL718naQJbmGyqMIwJzvb1GSzTaZLCq48gkaE2ihbyjhyKT8iRYYQMY8wYltbsyDljm9K-bZypBxQhw1yXle-efe4LQoGVNlaRJYUMFXmZF009qzOGO2MJxc_Wae58rnc-GPV6cdLILysvYMIxqxmayn_TyRg6L28JRVyzI14eUVoZ68kG40Od50fHj3rj-fD4tdwWlJJUZIOwr_HjE0yktTe5vkeGl6ao7rQTIBlskeGqlM0t4OF5wMNg8W4-b4-j5vgp5mb6nqwndZUXnizZIOo7_F5PHkoLRsOEC3CNIyCtxAY3m_jiojsQjlqKepaiP8-L_31eUXgeRKfn9YS53_KK_31eT_y-KbnSaEcHK_X45LBZNVK31O2lM5Xd0bU1u1amuy5brn1Q5HxX5d1lprtSY_BXmA_CL4bhaBCOh-F4EA57MD-ER4PweFh5fJJyVv_3NQAA__8gYNDu # Combined with non-Array predicates. query T @@ -399,7 +399,7 @@ vectorized: true table: array_tab@arr_inv spans: 1 span · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k--K00AUxb_7FJcLsi3O0kzSVhkQutosFmq7JgUVDcu0uSyBmIkzE1FK3l2SlLWV7my7sF9K58_vnJMz3C2anzkKDL_czK9mC-hNZ_Eq_jTvQxzOw_crkHAdLT-C1Fr-ubVyDZ8_hFEIvTVMvleeFxBcbHl90YerxRR6PQkvwe_DW_D6sIymYQTvvoJEhoVKaSF_kEHxDTky9JFhgAnDUqsNGaN0c7RtL87S3yg8hllRVrbbtpnNCQUqnZKmFBmmZGWWt3oT_gqTOmG4UZpQ_Lu9UJeqHIwPbic1Q1XZnXLC0Fh5RyiGNdtz53vuR4RXcp1TRDIlPfAOw9xXNZFa32bFL2QYl7IwAgbcG_DL5rf5-mVlBUw4PhSInxPoOsstadKt8l6abl9Ab8KbpxFCzBarN-0L7f4_6O-f4x8rbUkPhsce5rh8cCDvn943P71vv-3bf0rfjwS67zt4pr4f8d_1PXpq355bPiJTqsLQSZPjNaNH6R11o2pUpTd0o9WmtemWy5ZrN1Iytjt93S1mRXfUBNyHuRP23bDvhAM3HDhh7wDm_8NDJzxyO4-c8NgNj8-KndQv_gYAAP__ZXjoOA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k29r2zwUxd8_n0JceGjCVGzJSTYEg3SNywJZ0tmBbWymKPGlGFzLk-SxEfzdh-3QxSNVk8LeGOvP75zDEXcH5nsOAsLPt4ur-ZIMZvN4HX9cDEkcLsLrNZHkJlp9IFJr-evOyg359D6MQjLYkOm3yvcDJBc7Vl8MydVyRgYDSf4nfEjeEn9IVtEsjMi7L0QChUKluJQPaEB8BQYUOFAIIKFQarVFY5RujnbtxXn6E4RPISvKynbbNrM5ggClU9SYAoUUrczyVm_KXkFSJxS2SiOIP7eX6lKV3qR3O6kpqMrulRMKxsp7BDGq6YE7O3A_IryWmxwjlClqz--HeaxqKrW-y4ofQOFa5dVDYURbRVzK5tdjvscumy-HpzKxczLdZLlFjdrj_UDdviCDKWteRwgxX67ftI-0_3_Sn5_jHyttUXujY29zXD7oyfPTK2cvrJy3lfPTK38m02PlwT-q_Bn_feXjl1buu-UjNKUqDJ40P34zgJjeYzewRlV6i7dabVubbrlquXYjRWO709fdYl50R03AQ5g5Ye6GuRMO3HDghP0ezP6GR0547HYeO-GJG56cFTup__sdAAD__70F62o= # The split disjunction rule allows us to use the index for this query. query T @@ -431,7 +431,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: [/1 - /1] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF9r2zAUxd_3KcR9acpUbNn5axhkWzyWkSWdHdjGZopiX4ohtTxJHivB333EDm1dEsVJ6YuxpPu751wd0AbUnzV44P-4nr2fzklnMg2X4bfZJQn9mf9xSTj5FCy-Ei4lv7_RfEW-f_YDn3RWZPy7sG0XycWGlReXZBGQDifvCNv-TvyAfPhJOFDIRIJzfocKvF_AgIIDFFyIKORSxKiUkNujTVU4Tf6BZ1NIs7zQ9bZO9RrBAyETlJgAhQQ1T9dVvzF7C1EZUYiFRPAeq-fiSuTWsFEdlRREoXedIwpK81sEr1fSA-p7Gk9SpdMs1tbouROgsKg9eqReFbr6O6Tbb-gys-6Sr9YYIE9QWqwp_ZDNmEt5k2Z_gUKY80x5xGK2xa62X6eFIecUQ6GQGqXl7gtkf3v3lPZfRJrtxu0dGjeX6R2X94-T0bFzUL3bUHfa37Z9XP7htqviFmbYuWac9tE7VfTOOdEfMbSLvntu9EfaP4m-_8rRv-x5GbR6XuxTnpcAVS4yhS07RxQwucV6FCUKGeO1FHElUy8XFVdtJKh0fcrqxTSrj7YGn8LMDNtm2jHSrhl2jXDXDHeNcNM2ew73jPDIDPeN8MBse2CEh2Z4-BLbo5MuLCrf_A8AAP__OQalPQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF1r2z4Uxu__n0Kcm6b8VWzZeTUMsjUey8iSzglsYzNFiQ_FkFieJI-V4O8-bIclLrHyUnZjJEu_8zw6etAW1M81eOB_fZi8HU9JazSeL-afJ7dk7k_8-wXh5H0w-0S4lPz5UfMl-fLBD3zSWpLhj8y2XSQ3W5bf3JJZQFqcvCGsGI78gLz7RjhQSESEU75BBd53YEDBAQouhBRSKVaolJDF0rbcOI5-g2dTiJM009VvHes1ggdCRigxAgoRah6vy3pD9j-EeUhhJSSCt989FXcitfq13WFOQWR6VzmkoDR_QvA6OW1QP1J4FCsdJyttDV46AQqzyqNHqlmmy1GTbremy8y6C75cY4A8QmmxuvTfuxlyKR_j5BdQuBfrbJMor7yCecqLocVsi90VX6fRk3OJp7mQGqXlHruT4-XdS8p_FHGyO3Gn6cSpjDdcPu-7TYfNh2vX1J3zG26flt83nJLlYc8tu9EPu9aPc2UAnDIAzvkBOOFpF4D2tQE4Uf4gAN1_HIDXvTO9s94Z-5J3JkCVikThmZVDChg9YXUUJTK5wgcpVqVMNZ2VXPkjQqWrVVZNxkm1VBg8hJkZts20Y6RdM-wa4bYZbhvhum32Eu4Y4YEZ7hrhntl2zwj3zXD_NbYHFzUszP_7EwAA___x1qoY # The split disjunction rule allows us to use the index for this query. query T @@ -467,7 +467,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: [/1 - /1] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlV9P2zwUxu_fT3F0bgC9QY2dlkKkSd1G0DoxylqkbVor5DZHEKnYme0iEOp3n5J0LSmt0yA07QbhP4_Pz-d54j6h-TXFEKPvl-fvuxewf9odXA2-nh_AIDqPPl6BgLN-7wsIrcXjtRVj-PYp6kewvz-GznDm-wHB3hOb7x1Arw-lST7fOyhmBbwDlv17GvXhww8Q6KFUMV2IOzIY_kSGHnL0MMCRh6lWEzJG6WzpKd_YjR8w9D1MZDqzxbRN7JQwxJlUOiZNMXoYkxXJNFsfzUceTpQmDFdbTxNjEzmxjVZpL3ay8r2ZDaHDcDT3UM3sos7IQ2PFDWHYnHtbWDZUGihtSTeO1uv8v_X4Vp3jP6tE9knEpBvtcomlTZ1UJ3dCP65u5nX41upHdaov23i8qY2FGRtauTpg_Ai3wty-UOemLYjaW4lW52wyftFkFzbza3GvmI7fnOlCHaq0wXh5e1UUT0oczO3WlRhPaREWti0sQuvrRN6jh4NUSBNCg_kNdpj9DXZLEK_D1JX3pC3FZ8nUkiadF3kG9mc9ekg1KAkdFoLJwMBYoW04xOGQMzZEIBkvRsEQYStdUKLju3fMr_68lh3LN-_QKvZaGL67fTy3j7_SvgqmF_Y1_yX7lt_5yV97nvibPk_szZ-nDeX6ZFIlDa39am4-2c-AKb6h4oJGzfSELrWa5GWKYS_X5RMxGVussmLQlcVSBvhczJxi7hZzpzhwi4N1MXsubpbErJ6Ycbe66eRuucUtd7srbn3kVLfd4rZT7Lu5j93cFTk5cav9ipS5M1pBzl6EtE5UKtRVWWHukK-HZTT_73cAAAD__yXI0Rs= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lNFP2zAQxt_3V5zuBdCMEielQKRJ3SBonRhlLdI2rRVymxOKFOzMdhAI5X-fknSwsMZtmbSXqvb5y_e7-xI_ovmZYYTxt8vz98ML2D0dTq4mX873YBKfxydXIOBsPPoMQmvxcG3FHL5-jMcx7O7OYTAtfD8k2Hnk5c4ejMbQ2gzKnb1mV8A74NXf03gMH76DQIZSJXQhbslg9AM5MgyQYYgzhrlWCzJG6ar0WB8cJvcY-QxTmRe22bapzQgjLKTSCWlKkGFCVqRZVZ-VM4YLpQmj56OnqbGpXFjvoHUWB5X9qLARDDjOSoaqsEufGUNjxQ1h1CtZB8sKp4nSlrTXf-nztvPxB9s8_pNK5ZhEQto7bFs8xTTIdXor9MNzZ2wQdLr3O92fTVeNednSCsQLta9y7-hFKKvdD7fp_SnE41UhNox1kOsjPWr5crfvlZhntBw67xq60Po6lXfI8ERlxa00EQgGc2Q4yUW18rjv8f3qN-zECrbBGso70paSszSzpEl7YZvtdz2-zzUoCQMegalYwFihbTTF6TTgfIpAMlmuwilCJ13Yogs2H5q__k3tHJrnd_Lw1_IErw8xqEMMNg9xDdZfIfb-a4hrvrgxmVxJQxt9y351GVByQ83lYVShF3Sp1aK2aZajWldvJGRsU-XNYiibUgX4p5g7xYFbHDjFYUvMX4pDp7jndu65e_bd6gOnuu8W951i39304b9M7MgpPnZjH2-FPSvf_AoAAP__5zvVHQ== # We cannot use the index for this query. query T @@ -485,4 +485,4 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkVFr2zAQx9_3KY57qQMqkeWXISg4W1xmyJxOCWwlM0OJj2JwLU-SYSX4uw_bIW0G8bbH--v-5x_-HdH9rFBi8u1htUgzCJbpZrv5sprBJlklH7eg4V6tP4O2Vr_88HoPXz8lKoEg2EP8veU8Irg5iu5mBotsCYGGO4hmM1grCPY7nsMd6H5aJgo-PIJGhrUpKNPP5FDuMESGEeYMG2sO5JyxfXwcltLiF0rOsKyb1vdxzvBgLKE8oi99RSgxM7emmQtkWJDXZTWsdQxN619LzusnQhl17M3hcPrwVu8rUqQLsnN-cR7P_yJubPms7Qsy3DS6dhJukeG69RLikMUCr5GE_0NyX1aeLNl5eIkx5hKCIBZnFwulFo87IaVMs-37_GQlDnstp_BkZ8hisePn3Vf2q-DiAvwvbhS5xtSO_kkO73KGVDzR6N-Z1h7owZrD8JlxXA-9ISjI-fE1Goe0Hp96wLflcLIspstissz_KOfdu98BAAD__xs0B0Q= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklFr2zAUhd_3Ky73pQ6oRJZfhqDgrHGZIXM6JbCVzAw5vhSDY3mSDCvB_33YDlkzaLY9nnPvd33w0RHdjxolJl8fV4s0g2CZbrabz6sZbJJVcr8FDQ9q_Qm0tfrlu9cFfPmYqASCoID4W8d5RHBzFP3NDBbZEgINdxDNZrBWEBQ7nsMd6EEtEwUfnkAjw8aUlOkDOZQ7DJFhhDnD1po9OWfsYB_HpbT8iZIzrJq284OdM9wbSyiP6CtfE0rMzK1p5wIZluR1VY9rPUPT-d-Q8_qZUEY9e3U4vH54q4uaFOmS7JxfnMfzv4hbWx20fUGG96buDo2ToBkUyHDT6kHd4lthwv8J81DVnizZeXiZZPIlBEEsznUslFo87YSUMs227_NTMXE4NHMyTwWNXix2_LyLDNedlxCHbwYXF8H_Uo8i15rG0T_1w_ucIZXPND0BZzq7p0dr9uNnJrkeudEoyflpGk0ibabREPA1HF6FxXVYXIX5H3Dev_sVAAD__583CO0= diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_index_geospatial b/pkg/sql/opt/exec/execbuilder/testdata/inverted_index_geospatial index 322e17ef7910..2b4f0dbc8e4b 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_index_geospatial +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_index_geospatial @@ -78,7 +78,7 @@ regions: table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVe9u2zYQ_76nONyXxJgGk5LiuRwGeHHVzdtSF7LRoZiMgJFurmCJVEl6UxD4sfYCe7JBUtLFNazWy5f4A4378zvf_X5H-g7thwIFLqJfo-kSNvAqnl_BmvS1kzcFwW8_RXEE1l3nypGxlDp7fraIZy-_90cv-Pi7N_PZ6-V5yBhjAbRfLBicCfFjNL-KlvE7r6lVDmAev4xiuHwHG_RQ6Yxey5Isit-R48rDyuiUrNWmcd21CbOsRsE8zFW1dY175WGqDaG4Q5e7glDgsukxJpmRGTL0MCMn86It-3GESdPAda4yqtHDRSWVFTBM8DJJ6j-yJKk5S5Kafe7Ab07F8ARBqgwCBtq9J2PRw1_egstLEsD--fveTrVypFyu1UHI6L8sGJKZgLDz3Nw6enAFPlyih1dvp1OwjipI9VY5OKfaDXPlBgJYS0qXQLQ5llDKGkoqtbkFWRQ6lY4yAaytfiNd-p4s6K2rtk5Ak9-29eAIcbXzsLPuVbJOrgkF33lfruRM_UnGUfYqLxwZMkO-L-dDPKorA1rBhAuwjZZgnTROtNoE314kCfNZkjD2uQOBVHYqrJH0QNN5Q8Ok6bcdsFWtE6yzrZNFsa8t1ZRuDyXvE6KJ2Q8FOCoryHK7ga2Va_pinfyjOvmn6PSzztX9hfOPXbjK5KU0t_9R4038p-y-f7j7fPQcdv84p8EpnH7c-WCf0c4vPn19GWe8eWd95o9GL9jjz3T0Ax-HvDPGbMzHYRiF_Ew8fpAn_uDo1vr_Y2ufQFN4Ck0LbRyZYbhP0oR__dwu1MUpU8VkK60s7U11rDLbrTykbE3d36TVW5PSG6PT9mc6c97iWkdG1nVR3hkz1YWaBh-DeS_Y7wf7veCgHxz0gsN-cNgLvvgEvNp99W8AAAD__wVq2is= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMVeFu2zYQ_r-nONyfJJgGk5LiuRwGeHHVzdtSF7LRoZiMgJFurmCJVElqUxD4sfYCe7JBUtLFNazW65_6B437jh99931H-h7tuwIFLqNfo9kKtvAiXlzDhvSNk7cFwW8_RXEE1t3kypGxlDp7fraM58-_98fP-OS7V4v5y9V5yBhjAXRfLLg4E-LHaHEdreI3XntWeQGL-HkUw9Ub2KKHSmf0UpZkUfyOHNceVkanZK02LXTfbZhnDQrmYa6q2rXw2sNUG0Jxjy53BaHAVVtjTDIjM2LoYUZO5kV37PsWpm0BN7nKqEEPZ7qoS2UFbPvK0MNlJVtglOBVkjR_ZEnScJYkDfvYgt-cyuEJglQZBAy0e0vGooe_vAaXlySA_fP3Q5xq5Ui5XKuDlNF_WTAkMwFhj9zeOXqEAh-u0MPr17MZWEcVpLpWDs6pcaNcuQsBrNOp30C0PbahlA2UVGpzB7IodCodZQJYd_qtdOlbsqBrV9VOQLu_K-sRCHG987CPHoyzTm4IBd95n27uXP1JxlH2Ii8cGTIjvu_wYz5qKgNawZQLsK2XYJ00TnTeBN9eJgnzWZIw9rEFgVR2Kq219MDTRSvDtK23a7BzrTesj62TRbHvLTWU1oeWDxnR5uy7AhyVFWS53UJt5YY-2Sf_qE_-KT79rHP1cAf9Y3ewMnkpzd1_0nhT_3Nm3z-cfT7-Emb_uKbBKZq-n_lgX9EeFx8-yIwz3j69PvPH42fs6Wc2_oFPQt4HEzbhkzCMQn4mnr7RU__i6NT6_2NqP0Om8BSZlto4MqNwX6Qp__pLu1CXp3QVk620srTX1bGT2W7tIWUb6v85ra5NSq-MTruf6cNFx-uAjKzrs7wP5qpPtQU-JfNBsj9M9gfJwTA5GCSHw-RwkHz5AXm9--rfAAAA__8Rp-A1 statement ok DROP TABLE geo_table @@ -162,7 +162,7 @@ regions: table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkleFu2zYQx7_vKQ73JQmmwaSkeC6HAV5cdfO21IVsdCgmI2CkmytYIlWS3hQEfqy9wJ5soJR0cYNoM5YPA-YPNO6Of_r4_5H0LdoPFQpcJj8msxVs4VW6uIQN6SsnryuCn75L0gSsuyqVI2Mpd_b0ZJnOX34djl_wyVdvFvPXq9OYMcYi6L5YdHYixLfJ4jJZpe8Cv1Z9Bov0ZZLCxTvYYoBKF_Ra1mRR_Iwc1wE2RudkrTY-ddtNmBctChZgqZqd8-l1gLk2hOIWXekqQoEr32NKsiAzYhhgQU6WVbfsxy1MfQNXpSqoxQCXjVRWwCjDiyxrfymyrGWRH9jfDPjFsRqeIUhVQMRAu_dkLAb4w1twZU0C2B-_38W5Vo6UK7V6VDL6NwuGZCEg7DPXN47uU3wMFxjg5dvZDKyjBnK9Uw5OqXWjUrkzAawzpZ9AtH1qQi1bqKnW5gZkVelcOioEsG71a-ny92RB71yzcwL8_K6t-0SI632AfXRHyTq5IRR8H_xzknP1KxlHxauycmTIjPghzvt60jYGtIIpF2A9S7BOGic6NtGX51nGPBvmEQwOCKSKY2Ue6SOmC2_D1PfbbbCj1gPrY-tkVR2ypZby3WPkQyB8zX6owFHdQFHaLeys3NAzcAqP4fS9LtXdhQufunCNKWtpbv6yJpiG_7OzHx3j6cczHx062ufFp68v44z7dzZk4Xj8gj38zMbf8EnM-2DCJnwSx0nMT8TDB3kanj3rqf0XNsXH2LTUxpEZxYcmTfnn_7ULdX7MrlKyjVaWDnb11Mpsvw6Qig31f5NW70xOb4zOu5_pw0Wn6xIFWddXeR_MVV_yDT4U80FxOCwOB8XRsDgaFMfD4nhQfP6JeL3_7M8AAAD__xfz2i0= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkleFu2zYQx7_vKQ73JQmmwaSkeC6HAV5cdfO21IUSdCgmI2CkmytYIlWS2hQEfqy9wJ5soJR0cYNoM5YPA-YPNO6Of_r4_5H0LdoPFQq8SH5MFpewhVfp6hw2pK-cvK4IfvouSROw7qpUjoyl3Nnjo4t0-fLrcPqCz756s1q-vjyOGWMsgv6LRSdHQnybrM6Ty_Rd4NeqT2CVvkxSOHsHWwxQ6YJey5osip-R4zrAxuicrNXGp277CcuiQ8ECLFXTOp9eB5hrQyhu0ZWuIhR46XtMSRZkJgwDLMjJsuqX_biFuW_gqlQFdRjgQldtrayA7dAZBnjRSJ-YZHiWZd0vRZZ1LPID-5sBvzhUwzMEqQqIGGj3nozFAH94C66sSQD74_e7ONfKkXKlVo9KRv9mwZAsBIRD5vrG0X2KT-EMAzx_u1iAddRArlvl4Jg6NymVOxHAep-GCUTbpybUsoOaam1uQFaVzqWjQgDrV7-WLn9PFnTrmtYJ8PP7tu4TIa53AQ7RHTjr5IZQ8F3wz-Eu1a9kHBWvysqRITPh-4Tv60nXGNAK5lyA9SzBOmmc6NlEX55mGfNsmEcwOiCQKg6VeaSPmK68DXPfb7_BntoAbIitk1W1z5Y6ytvHyMdA-Jr9UIGjuoGitFtordzQM3AKD-H0vS7V3R0Mn7qDjSlraW7-siaYh_-zsx8d4unHMx_tOzrkxacPMuOM-6c3ZOF0-oI9_Cym3_BZzIdgxmZ8FsdJzI_Ewzd6Hp4866n9FzbFh9h0oY0jM4n3TZrzz_9rF-r0kF2lZButLO3t6qmV2W4dIBUbGv45rW5NTm-MzvufGcJVr-sTBVk3VPkQLNVQ8g0-FPNRcTguDkfF0bg4GhXH4-J4VHz6iXi9--zPAAAA__8kMOA3 # Also works when creating an index. statement ok @@ -230,4 +230,4 @@ regions: table: geo_table@geom_index spans: 31 spans · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkleFu2zYQx7_vKQ73JQmmwaSkeC6HAV5cdfO21IVsdCgmI2CkmytYIlWS3hQEfqy9wJ5soJR0cYNoM5YPA-YPNO6Of_r4_5H0LdoPFQpcJj8msxVs4VW6uIQN6SsnryuCn75L0gSsuyqVI2Mpd_b0ZJnOX34djl_wyVdvFvPXq9OYMcYi6L5YdHYixLfJ4jJZpe8Cv1Z9Bov0ZZLCxTvYYoBKF_Ra1mRR_Iwc1wE2RudkrTY-ddtNmBctChZgqZqd8-l1gLk2hOIWXekqQoEr32NKsiAzYhhgQU6WVbfsxy1MfQNXpSqoxQCXjVRWwCjDiyxrfymyrGWRH9jfDPjFsRqeIUhVQMRAu_dkLAb4w1twZU0C2B-_38W5Vo6UK7V6VDL6NwuGZCEg7DPXN47uU3wMFxjg5dvZDKyjBnK9Uw5OqXWjUrkzAawzpZ9AtH1qQi1bqKnW5gZkVelcOioEsG71a-ny92RB71yzcwL8_K6t-0SI632AfXRHyTq5IRR8H_xzknP1KxlHxauycmTIjPghzvt60jYGtIIpF2A9S7BOGic6NtGX51nGPBvmEQwOCKSKY2Ue6SOmC2_D1PfbbbCj1gPrY-tkVR2ypZby3WPkQyB8zX6owFHdQFHaLeys3NAzcAqP4fS9LtXdhQufunCNKWtpbv6yJpiG_7OzHx3j6cczHx062ufFp68v44z7dzZk4Xj8gj38zMbf8EnM-2DCJnwSx0nMT8TDB3kanj3rqf0XNsXH2LTUxpEZxYcmTfnn_7ULdX7MrlKyjVaWDnb11Mpsvw6Qig31f5NW70xOb4zOu5_pw0Wn6xIFWddXeR_MVV_yDT4U80FxOCwOB8XRsDgaFMfD4nhQfP6JeL3_7M8AAAD__xfz2i0= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkleFu2zYQx7_vKQ73JQmmwaSkeC6HAV5cdfO21IUSdCgmI2CkmytYIlWS2hQEfqy9wJ5soJR0cYNoM5YPA-YPNO6Of_r4_5H0LdoPFQq8SH5MFpewhVfp6hw2pK-cvK4IfvouSROw7qpUjoyl3Nnjo4t0-fLrcPqCz756s1q-vjyOGWMsgv6LRSdHQnybrM6Ty_Rd4NeqT2CVvkxSOHsHWwxQ6YJey5osip-R4zrAxuicrNXGp277CcuiQ8ECLFXTOp9eB5hrQyhu0ZWuIhR46XtMSRZkJgwDLMjJsuqX_biFuW_gqlQFdRjgQldtrayA7dAZBnjRSJ-YZHiWZd0vRZZ1LPID-5sBvzhUwzMEqQqIGGj3nozFAH94C66sSQD74_e7ONfKkXKlVo9KRv9mwZAsBIRD5vrG0X2KT-EMAzx_u1iAddRArlvl4Jg6NymVOxHAep-GCUTbpybUsoOaam1uQFaVzqWjQgDrV7-WLn9PFnTrmtYJ8PP7tu4TIa53AQ7RHTjr5IZQ8F3wz-Eu1a9kHBWvysqRITPh-4Tv60nXGNAK5lyA9SzBOmmc6NlEX55mGfNsmEcwOiCQKg6VeaSPmK68DXPfb7_BntoAbIitk1W1z5Y6ytvHyMdA-Jr9UIGjuoGitFtordzQM3AKD-H0vS7V3R0Mn7qDjSlraW7-siaYh_-zsx8d4unHMx_tOzrkxacPMuOM-6c3ZOF0-oI9_Cym3_BZzIdgxmZ8FsdJzI_Ewzd6Hp4866n9FzbFh9h0oY0jM4n3TZrzz_9rF-r0kF2lZButLO3t6qmV2W4dIBUbGv45rW5NTm-MzvufGcJVr-sTBVk3VPkQLNVQ8g0-FPNRcTguDkfF0bg4GhXH4-J4VHz6iXi9--zPAAAA__8kMOA3 diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial index 3749f680c517..08ca32b1ec6f 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial @@ -39,7 +39,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUksGO0zAQhu88xWhOW2lgm3Th4JMRFCmr0ixtD0goWoV4VJmmdrAdVFT13ZGdFUsLregtM55v_OmP9-i_tyhw-vlh9raYw837YrlafpqNYDmdTd-toN0QuE0GHxblR2hD_bVluC-LObj0Lddst4_aKN5BOQcfHrUJ7Dw3wd8M46_iSEZPQKpGSGis4nm9ZY_iC2ZYEXbONuy9dbG1TwOF2qEYE2rT9SG2K8LGOkaxx6BDyyhwFdcuuFbsbsdIqDjUuk1rBwHZOb2t3U8kXHa18QJeImHZBwEyI5ljdSC0fXi-wod6zSiyA_2_RmF-sAus7q027G6zY5O_0kL6TUx3nTtJTuYE8m50pElyQvL1Wdn8Gtko-RRZ_k_R58hm1m76Dr5ZbcAaAdHiLoqd_u3k_ObI-bzt5BrbBfvOGs9Hpuc2jw8VIas1D6_I2941_OBsk64ZyjJxqaHYh-E0G4rCDEdR8E84uwjnl-H8Ijw5gavDi18BAAD__7oxLRY= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklFv0zAQx9_5FNY9bdLB6nTw4CejUaRMpRltH5BQNIX4VJkmdrAdVFTluyM7E6OFVutb7ny_8y__ZA_-RwMCZl8e5u_zBbv6kK_Wq8_za7aazWd3a9ZskbktZx-XxSfWhOpbQ-y-yBfMpWe5Ids-aqNox4oF8-FRm0DOUx381Tj-Jo5wfAJSdQ0IxipaVC15EF-BQ4nQOVuT99bF1j4N5GoHYoKgTdeH2C4RausIxB6CDg2BgHVcu6RKkbuZAIKiUOkmrR0FZOd0W7lfgHBnm741XqTXSl6AsOqq2HoN5YBg-_B8lQ_VhkDwAV-uk5uf5AKpe6sNuRt-aPRPaoB_iNmuc0cJygyZvI1xFX0QTHKUGcopyrcnZbNLZKPkU3TZf0Wfo5tbu-079t1qw6wRLFrcRrHjr56c3x04n7adXmK7JN9Z4-nA9NTmyVAikNrQ-Dd527uaHpyt0zVjWSQuNRT5MJ7yscjNeBQF_4b5WTg7D2dn4ekRXA6vfgcAAP__vkAwrA== query T EXPLAIN SELECT lk, rk1, rk2, rtable.geom diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial_dist b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial_dist index 50ec816f58b2..bef206b13de0 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial_dist +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_geospatial_dist @@ -68,7 +68,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElF1v2jAUhu_3K6xzVVSz4CT0I1fZVialYqSDXmyaUJUlR13WYGe2mZgQ_31Kwgah4IR9iDuM_eZ9fPTIS1DfMvBg8OFu-CoYkbObYHI_eT_skMlgOHhzT7InSuQTeTsO35FMR58zJLdhMCKy_O0_opg9pDzBBQlHROmHlGuUCmOtzqrjL4sjjK4D5apDwvHNYExefyRn1fc7QIGLBEfRDBV4n4ABBRsoODClkEsRo1JCFlvL8mCQLMDrUUh5PtfF31MKsZAI3hJ0qjMED-6LwjFGCUqrBxQS1FGalZ-v0PxcprNI_gAKkzziyiNdqygN59ojPqO-DdMVBTHXmxKlo0cEj61oe5CAf0epMbkVKUdpOXWWZ5ME-jsxWORyZ6q-TYnvdmqY1HcOktrHkBaE64ld7KXcTGwoxNM8J19FyongHvGLaz1zoKTt12jdg6jOMagTITVK67qO6bNz6tvnQGEW6fgLyZB7hB1sdA82boqETFBisr9nutqDNhJdkVvMrkUOIfRrCKy90qyd0pbdLY07WuoGlB2p3RNK3UC6JfXlqaVuQF1LzXr_0Gq7vVJ2S6Wc7p8I1QCyI1T_hEI1kG4JdXVqoRpQfwnF_tMzuadyjCoXXGGr169XvJ-YPGL15ioxlzHeSRGXNdUyLHPlHwkqXe2yahHwaqsA3A4zY9g2h21j2DGHHWPYrYXZbtg137mhum9MX5jDF8bwpTl8aQxfmcNXfzOxa_PEeg2aNEjWZJlZM9bgGTOLtnvz6erFzwAAAP__HnjL0g== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElF1vmzwUx--fT2Gdq1Z1HmJD-sIVW5tJVFnokl5smqKKwVHHSmxmm6lTle8-Ad1a0mBSZVPu8Muf8_PRT-cB9PccfBh_vJq8Cafk4CKcX88_TA7JfDwZn1-T_I4SdUfezaL3JDfxlxzJZRROiaq_g1uUy5tMpHhPoinR5iYTBpXGxOiD5vr_1RVGHwP16pBEs4vxjLz9RA6a_x8CBSFTnMZL1OB_BgYUOFBwYUGhUDJBraWqjh7qi2F6D_6QQiaK0lTbCwqJVAj-A5jM5Ag-XFcFZxinqJwhUEjRxFle_75BCwqVLWP1Eyicy7xcCu3X762JgcK8iKutgcNhsaIgS_NUTJv4FsFnK7o9UCh-oDKYXspMoHLcNtOLjgL9kxjfF2qtuwGnJPCqxkWl8UnAaMBp4HaS8teQVoSPnTveSPnUuYmUd2VBvslMECl8ElTPeuFCTTtq0XqdqO5rUOdSGVTOWRszYEc04EdAYRmb5CvJUfiEdVb0Ois-FZIqRYXp5jqL1Qa0qRzIwmG8FelCGLUQ2PZqsx3UdvjA6VaGvQZpTW5vj3L3kD6T-2TfcvegPsrNhn_Rbr69WnwXtdzBlmL1AK2JNdqjWD2kz8Q63bdYPai_xWL_aGxuKDlDXUihcatpOKzmKaa32MxgLUuV4JWSSV2mWUZ1rt5IUZvmlDWLUDRHFeDzMLOGuT3MrWHXHnatYa8VZuthz_7mntIja_rYHj62hk_s4RNr-NQePt2lY2f2jg17NOmRrM8yu2asxzNmF2395YvVf78CAAD__-C31pQ= query T EXPLAIN (DISTSQL) SELECT lk, rk FROM ltable JOIN rtable@geom_index @@ -95,7 +95,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlV1v2j4Uxu__n8I6V6Cagh1oqa_S_0olKkY64GLThKqMHLVZg53ZZutU8d2nJN1KKDjpXqT2Dr_8OM9zeI65B_MlAQGD95ej0-GYNM6G09n03ahJpoPR4M2MJLeU6FtyPgneksSGnxIkF8FwTHT-2b9GtbyKZYR3JBgTY69iaVEbXFjTKK4cZlfoA5svWJMEk-xu9C22N7FsbJ5RUsJ4dvdsMCH_fyCNQksTKEgV4ThcogHxERhQ4EDBgzmFVKsFGqN0dnSfXxxGdyA6FGKZrmy2PaewUBpB3IONbYIgYJbVnGAYoW53gEKENoyT_OsLdX6q42WovwOFaRpKI0irnRUNVlYQn1Gfw3xNQa3sYxFjw2sEwda0vpCh_IraYnShYom67ZW1POk60F_E4C7VW7-Azynxu9vtLnYp4YcdIcT5KDid9ZslK9T39rrhz3GTuXjo6tFOJ49dHSl1u0rJZxVLoqQgfmb9Sab8HiU-3-mo53DU3WvHe46dqdIWdfukbMVnB9TnB0BhGdrFDUlQCsL2VuzurfhYSOkINUa768zXO6SNVUulbcZLyD4JvZIEVn80WL3RaPNWntxnD0eFlK3h6L7w4ahwszEcx69hOCrsPAwH6_zF6eD1o8lrRtNr_U4wK4RsBbP3woNZ4WYjmP3XEMwKOz-Dyf7Rs72j5ARNqqTBWq9xJ3vPMbrG4j_AqJVe4KVWi7xMsQxyLt-I0NjilBWLoSyOMoGbMHPC3A1zJ-y5Yc8Jd0sw24a7bs8VpXtO-sgNHznhYzd87IT7brj_Jx07cXesUxGTipBVpcwdM1aRM-YO2rbz-fq_HwEAAP__1ugV_g== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlV9v2jAUxd_3Kaz7RFXTYAda6qd0LZWoGOmAh00TqjJy1WYNdmabrVPFd5-SdCtQ4lB1k9o3_OfHPedyrrkH8z0FAb1Pl4OT_pA0zvrjyfjjYI-Me4Pe6YSkt5ToW3I-Cj-Q1EZfUyQXYX9IdPE5uEY1v0pkjHckHBJjrxJpURucWdMorxzkV-gDWyzYHglH-d34Z2JvEtlYPaNkDeP53bPeiLz_TBqllj2gIFWMw2iOBsQXYECBAwUfphQyrWZojNL50X1xsR_fgWhRSGS2sPn2lMJMaQRxDzaxKYKASV5zhFGM2msBhRhtlKTF15fqgkwn80j_AgqnKl3MpRFFbwrRQGGcRflW0-MwXVJQC_tYzNjoGkGwJd1dUF_-QG0xvlCJRO3565qedB_oX6J3l-mNXyLglATtzbaXu5Twg5YQ4nwQnky6eXPDhRUkYDTgNPAr3fDnuMldPHT3cKuTx-4OlLpdZOSbSiRRUpAgt_4kW0GHkoBvddRxOGpX2vGfY2estEXtHa9bCdg-Dfg-UJhHdnZDUpSCsMqK7cqKj4WUjlFjvL3OdLlF2lA1VeYxvoZUSeisSWC7jwh7wYh4vOlVx4o9R9LGkLRf-ZDUuFkZkqO3MCQ1dh6GhLX-4ZTw3SPKXxJRv7ljQGsEbQS088oDWuNmJaDdtxDQGjt_Asr-0zO-peQITaakwZ1e51b-vmN8jeV_glELPcNLrWZFmXIZFlyxEaOx5SkrF31ZHuUCV2HmhLkb5k7Yd8O-E26vwWwTbrs915TuOOlDN3zohI_c8JET7rrh7ks6duzuWKsmJjUhq0uZO2asJmfMHbRN59Plu98BAAD__-gFIMA= query T EXPLAIN (DISTSQL) SELECT lk, rk FROM ltable JOIN rtable@geom_index @@ -122,7 +122,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlV1v2j4Uxu__n8I6V6Cagh1oqa_S_0olKkY64GLThKqMHLVZg53ZZutU8d2nJN1KeHFgL1J7h19-nOc5PMc8gvmSgIDe--vBeX9Iahf98WT8blAn496g92ZCkntK9D25HAVvSWLDTwmSq6A_JDr_7N-imt_EMsIHEgyJsTextKgNzqypFdePsyuMPgH5qk7OhxfZ5ehbbO9iWVs5o6SM8ToJRhe9Efn_A6kVYupAQaoIh-EcDYiPwIACBwoeTCmkWs3QGKWzo8f8Yj96ANGiEMt0YbPtKYWZ0gjiEWxsEwQBk6zoCMMIdbMFFCK0YZzkX18I8lMdz0P9HSiM01AaQRrNrGiwsIL4jPocpksKamGfixgb3iIItqT7C-nLr6gtRlcqlqibXlnLRtuB_iJ6D6le-wl8Tonf3uh3sU0JP24JIS4HwfmkWy95ob630w4_xE5m46mtJ1utPLd1oNT9IiWfVSyJkoL4mfeNVOXaO5uWOpRkRzsttXf68Q7xM1baom6elb347Ij6_AgozEM7uyMJSkHYzortnRWfCykdocZoe53pcou0oWqotMl4CdkloVOSwPYfDrbfcDR5I8_uweNRIWVtPNovfTwq7KyMx-mrGI8KP0_jwVp_cT74_uHke4bTa_xONCuErEWz89KjWWFnJZrdVxHNCj8_o8n-0dO9peQITaqkwb1e5Fb2pmN0i8X_gFELPcNrrWZ5mWIZ5Fy-EaGxxSkrFn1ZHGUCV2HmhLkb5k7Yc8OeE26XYLYOt92eK0p3nPSJGz5xwqdu-NQJd91w9086dubuWKsiJhUhq0qZO2asImfMHbR159Plfz8CAAD__ytAF1w= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlV9v2jAUxd_3Kaz7BKop2IGW-ildSyUqRjrgYdOEqoxctVmDndlm61Tx3ack3cq_OFTdpPYN__lxz7mcax7AfE9AQO_T1eC0PyS18_54Mv44qJNxb9A7m5DkjhJ9Ry5GwQeS2PBrguQy6A-Jzj_7N6jm17GM8J4EQ2LsdSwtaoMza2rF9cPsCqOPQL6qk9PheXY5-hnb21jWVs4oWcd4nQSj896IvP9MaoWYOlCQKsJhOEcD4gswoMCBggdTCqlWMzRG6ezoIb_Yj-5BtCjEMl3YbHtKYaY0gngAG9sEQcAkKzrCMELdbAGFCG0YJ_nXF4L8VMfzUP8CCmcqWcylEXlzcp1AYZyG2VajyWG6pKAW9qmYseENgmBLur-gvvyB2mJ0qWKJuumta9pqP9C_RO8-1Rs_hc8p8dtbfS-2KeGHLSHExSA4nXSz7gYLK4jPqM-p75Xa4c-xk9l4bO_RTitP7R0odbdIyTcVS6KkIH7mfStdufbOtqUOJdlRqaV2qR_vOX7GSlvUzZN1Lz47oD4_AArz0M5uSYJSEFZasV1a8amQ0hFqjHbXmS53SBuqhkqbjK8hZRI6axLY_kPCXjAkTd5olueKPUfSxpi0X_uYVNhZGZPjNzEmFX4ex4S1_uGc8P1Dyl8SUq-xZ0QrBG1EtPPaI1phZyWi3TcR0Qo_fyLK_tNTvqPkCE2qpMG9XuhW9sZjdIPF_4JRCz3DK61meZliGeRcvhGhscUpKxZ9WRxlAldh5oS5G-ZO2HPDnhNur8FsE267PVeU7jjpIzd85ISP3fCxE-664e5LOnbi7lirIiYVIatKmTtmrCJnzB20TefT5bvfAQAA__91dSIe query T EXPLAIN (DISTSQL) @@ -147,7 +147,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslUFv4jgUx-_7Kax3KUgG4gRS6lOqLaxS0aQLHHY1QlWGeDqZpnbGdjqtKr77KEk1JQFMqtHc4ITt9_P_5f_ek19BfU-BwuS_29mlH6DOlb9YLv6dddFiMpv8vUTpA0byAU3n4Q1KdfQ5Zeg69AMky__ePROPdwmP2TMKA9RR-i7hmknF1lp1qvh-EUPwG1GuuugyuEJK363FE5O1QLseWEUW98Zf8jR9-ZHorwnvbIVgVJchltVF4RzVUzm7Df1g2SF9C5G-1T1rqAAGLmIWRI9MAf0EBDDYgMGBFYZMijVTSsji6LUM9ONnoBaGhGe5LrZXGNZCMqCvoBOdMqCwLO6fsyhmcmABhpjpKEnL66uMvUwmj5F8AQyLLOKKot7AhtUGg8j1-71KR_cMKNng9to-f2JSs_haJJzJgVOX36kd4F_E5DmTzTp6NkbeqFk0zyl3D1SoYspy9C1K6XQWXi7H-ypjEYtYO7-p5Uyb6zNK6T-T8GaynP9faQOGMNcUeQR7NvYc7A0PGmh_xMDCuLfauXvNe6_dTIiHPEPfRMKR4BR5wyKrnWEoDXH3mugeNNHFqOD-oIlu3cTRQfucg_a9u5ZzIWMmWVyzbLXZY3AgeiIbXDQC90sPa9Kk_diRdmM3sHsDp-XgHVFvDN7wNHjNwTti4NbgnZ8Gb3fw7Pbdb7fsfqfXsvePaDd6f3Tq_WbvHzFwq_fHp943Pzp77JszlQmuWKs3xSoeJRbfs-oFUyKXa3YrxbqUqZZhyZUbMVO6OiXVwufVUZHgNkyMsG2GbSPs1GDShB1z2pZZemikR2Z4ZIRdM-z-zkefG-GxWXlshC_M8MWH0l5t_voZAAD__6-2LRk= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzslcFv2jAUxu_7K6x3KUgG4gQo9SlVC1MqmnTAYdOEqox4XdZgZ7bTtar436ck1UoCGKpuNzhh-31-X35Pn_wM6lcCFIafb8bnno8al950Nv00bqLpcDy8mKHkHiN5j0aT4BolOvyWMHQVeD6SxX_3jonlbcwj9ogCHzWUvo25ZlKxhVaNsr6d1xD8oihWTXTuXyKlbxfigclKoV0tLCvze6PvWZI8_Y71j5g31kowqrYhltVEwQRVrZzcBJ4_a5C2hUjbap7UugAGLiLmh0umgH4FAhhswODAHEMqxYIpJWR-9FwUetEjUAtDzNNM59tzDAshGdBn0LFOGFCY5fdPWBgx2bEAQ8R0GCfF9aVjN5XxMpRPgOFCJNmSK1rgfvmQggZgmKZhftLq2DBfYRCZfu2pdHjHgJIVPtyXxx-Y1Cy6EjFnsuNUrW3MFfBfxfAxlfUZuzZGbq8-UNcpdndMr9QUo2pblNLRODifDbZNzSIWsTZ-I8sZ1dcnlNKPw-B6OJt8KXsDhiDTFLkEuzZ2Hex2dwK03wIwB_cy1_5WeK9zHQtxn6Xop4g5Epwit5u72ghKAaS_FWJ_J8Q-RrnuP0LsVyH2duJzduJ7pZZxISMmWVRBNl9tAeyLlkg7Z7XC7a27ldbk8EiS90eyY7c6zoGh3OOsFsruMZT1UO4BuBbK02MoN0NpH54M-x8kw2kdmIs9vmq56B1zUc_FHoBruRgcc2F-rLbgmzCVCq7YQW-RlT9mLLpj5cunRCYX7EaKRdGmXAaFrtiImNLlKSkXHi-PcoPrYmIU22axbRQ7FTGpix2zbcvcumtU98zinlHcN4v77_noU6N4YO48MIrPzOKzN9merz78CQAA___UpEeA # This query performs a semi-join, which is converted to paired joins by the # optimizer. @@ -172,7 +172,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlE9v2kAQxe_9FKs5JdVSsA0k-OSqdVRHBFJAaqQKRa53ityYXXd3XREhvnu1Ni1_BItpL8lxvPM87zd6miWonxn4ED7c999HA3LxMRpPxp_7l2Qc9sMPE5I9kZvR8I5kOv6WIfnyKRyFJHwwXeRi3fO2apHbLUo_plyjVJhodVGp381QzF26biyry0ugwAXDQTxHBf5XcICCCxQ8mFLIpUhQKSHN07JsjNgC_BaFlOeFNp-nFBIhEfwl6FRnCD5MzP9HGDOUzRZQYKjjNCt_XzkJcpnOY_kMFMZ5zJVPGk0zdFhonwQODTyYriiIQm-GKB3PEHxnResbifgvlBrZrUg5yqa366XaQ2D28JhyhgugfxXhIpd7SwxcSoK2Wdj3VCpNfoiUk5STPE4lsoYptxFcGng06BwFcc8BMQDrhXZ3ISbPOfqkH95MyDi8i8jtMBoA_cO22XNfiKcir0wL7pPALGM4OMTYNYwKE8GZHfIom3eUbYNUcCEZSmQ7PNPVAfqBaIi82dtrPDy6vTPaqR9Up15Qm26jzNHZUT1hZS-q7Zcb1RMgW1G9enVRdevnxa2ZF6_xL2k5YWQvLZ2Xm5YTIFtpuX51aTlxtEeocsEV1rpbLXP4kM2wupJKFDLBeymSckxVDktd-YGh0tWrUxURr56MwW2xYxW7drFrFXs7Ymdf7Nltt-yj21Z1xy7uWMVdu7j7P9BXVvG1ffK1Vdyzi3tn2Z6u3vwOAAD__5qPa_k= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlF9v2jwUxu_fT2Gdq_aVWUgCtM1Vpi7VUlHoAGmVJlRl8VmVNdiZ7UxUiO8-OWHjj8Ck4qa9tH0en-d39OgsQP3KIYDo4b7_MR6Qs0_xeDL-0j8n46gfXU9I_kxuRsM7kuvke47k6-doFJHowVSRs1XN_3WJ3CxR-jHjGqXCVKuzWv3hCcXMo6vC6nR-DhS4YDhIZqgg-AYuUPCAgg9TCoUUKSolpHlaVIUxm0PQppDxotTmekohFRIhWIDOdI4QwMT8P8KEoXTaQIGhTrK8-r52EhYymyXyBShci7yccRWQ_JmSyiBQGBeJuWo5HkyXFESp182UTp4QAndJmxuK-W-UGtmtyDhKx9_2VM8jNM0fM85wDvSfIpoXcmeYoUdJ2DGD-5FJpclPkXGScVIkmUTWMkegMCx1QEKXhh4NfRp2D4J4rwExAKvB9rYhJi8FBqQf3UzIOLqLye0wHgD9y7aed1-I57KoTQsekNAMYzjYx9gzjApTwZkd8iCbf5BtjVRyIRlKZFs80-Ue-oFoicK52inc37qz1dptHlj3hMA6XsvxG0b2iKWdyHbebmSPgGxE9uLdRdZrnhvvlNz4rYapOWJoJzXdt5uaIyAbqbl8d6k5ssRHqArBFTbaY22zCJE9Yb01lShlivdSpFWb-jisdNUFQ6XrV7c-xLx-MgY3xa5V7NnFnlXsb4ndXbFvt922t-5Y1V27uGsV9-zi3inQF1bxpb3zpVV8ZRdfvcr2dPnfnwAAAP__IAJ2uw== # Left joins are converted to paired joins by the optimizer. query T @@ -196,7 +196,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlF9vmzAUxd_3Kaz71ErOEiBJW56YNipRZaFLmDRpiiqG7ypWYjPbTKmifPfJUC1_1hiyPeXR2Mf3nMNPXoP6WYAP4Zf7ybtoSi4-RPNk_mlySebhJHyfkOKJEvlEbmfxR1Lo9FuBZBLeJuQujqZENh_iKVH6IecapcJMq4vm4NtHFEuHvpyqV5dAgQuG03SJCvyv4AAFFyh4sKBQSpGhUkKarXV9MGIr8AcUcl5W2nxeUMiERPDXoHNdIPiQmOtnmDKU_QFQYKjTvKivb4wEpcyXqXwGCvMy5convb4ZGlfaJ4FDAxcWGwqi0tshSqePCL6zod2NRPwXSo3sTuQcZd_b95I8l-g35cWfk3BWVwgUmnoCU89DzhmugP65KVyV8qDbwKUkGJoiv-dSafJD5JzknJRpLpH1zHIvGg08GoyOBnRPCWiCvRQ9Pinc9gdMhHiqysa14D4JTEt_AVSHHJuQCjPBWVvK4_m8o_m2sSouJEOJbC_TYvNKA1PRE2X_5uDg66OHe6Od7hA73SDuu72asZMxbrFygPHw_DBuCbiD8dVZYux2Z8ntyJLX-xeSWowckDQ6P5JaAu6QdH2WJLU8-DNUpeAKO713A_NgInvE5nVVopIZ3kuR1WOaZVzr6g8MlW52nWYR8WbLGNwVO1axaxe7VrG3J3YOxZ7d9sA-emhVj-zikVU8tovH_xP6yiq-tk--topv7OKbk2wvNm9-BwAA__8Y9H45 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVVFvmzwUff9-hXWfWsn5CJCkLU9MHZWostAlTJo0RRXDdxUrsZltplZV_vtkqNYkawxRnvJ4r-_xPedwZF5A_SohgOjr3fRDPCNnH-NFuvg8PSeLaBpdp6R8pEQ-kpt58omUOvteIplGNym5TeIZkW0jmRGl7wuuUSrMtTprB_9_QLFy6etUU50DBS4YzrIVKgi-gQsUPKDgw5JCJUWOSglpjl6awZg9QTCkUPCq1qa9pJALiRC8gC50iRBAaq6fY8ZQOkOgwFBnRdlc3xIJK1msMvkMFK5FWa-4ChpdDT-gsKgy0xo4HizXFESt35YpnT0gBO6a9icU898oNbJbUXCUjr_NKX2uMGhNTL6k0byxEii0NoWG1H3BGT4B_XtT9FTJHY9Dj5JwZAz9UUilyU9RcFJwUmWFRDYwJVBIah2Q0KWhR0OfhuO9Ar1DBBphr4ZPDhL39iGmQjzWVcta8ICExqV_gtSInBiRCnPBWZfK_fr8vfreZNVcSIYS2Zam5fodB2ZiICrnamfw_dWjrdVu_zC7R4TZ8QaO3zPOHZR24jw6vTh3CNyI88VJxtnrnynvmEz5g56J6iC0k6jx6SWqQ-BGoi5PMlEdP4A5qkpwhb3ev6F5QJE9YPvaKlHLHO-kyJs1bZk0uKbBUOn21G2LmLdHhuAm2LWCPTvYs4L9LbC7C_bttIf21SMremwHj63giR08OUb0hRV8ad98aQVf2cFXB9Ferv_7EwAA__9CfIj7 query T EXPLAIN (DISTSQL) @@ -224,7 +224,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVU1vGjsU3b9fYd0VUUzA5iPEq8l7IRIRj0mBSq0qFE1nbpNpBntqmzZRxH-vZiZtGAIe6MeGpT-Oz7nn3iM_gfmSgID-u-vh-WBEaheDyXTyZnhEJv1h_78pSe4p0ffkcuz_TxIbfEyQDPuXU3LlD0ZE5xveLar5TSwjfCD-iBh7E0uL2mBoTa24cpJdoc8P5At2RPxxdjf6Ftu7WNZWzygpwXh296I_Jv--J7VC0BFQkCrCUTBHA-IDMKDAgUILZhRSrUI0Runs6Cm_OIgeQDQpxDJd2Gx7RiFUGkE8gY1tgiBgmnGOMYhQN5pAIUIbxEn-fKHOS3U8D_QjUJikgTSC1BsZqb-wgniMehxmSwpqYV9IjA1uEQRb0t2FDORX1BajKxVL1I1WWcv0MUVRdMF_O-2P814AhVfdAPrzpf5Dqtc643FKvPZ6G4pdSvhJUwhxOfTPp73M7E-xNpZ8VrEksSRpEGuM6tmyVD71WtTrbDWB72NCVvxzM7p7GfDSpKFS94u0UK2kIF7m5KsR9bqUeHyjEd3XRhgMlYyqnNjuQWsfDyZKW9SNs3L9HjumHj8GCvPAhnckQSkI28rY3sr4QqR0hBqjzTyz5QZpI1VXaYPxEmSbhE5JAts9hmy3GDZ4PU_J3kGskLIWxPZhBrHChJUgnh5sECs8eA4ia_7BJPLdY8B3jEGr_ishqBCyFoLOYYagwoSVEPQONgQVHvwIAftL39EGyjGaVEmDO_0yzeyfwugWi7_NqIUO8VqrMKcpln6OyzciNLY4ZcViIIujTOAqmDnB3A3mTnDLDW45we0SmK2D2-6aK6g7TnTXDe46wadu8KkT3HODe7_j2JnbsWbFmFQMWdWUuceMVcwZcw_aeuWz5T_fAwAA__8Gpnyb +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVVFv2jwUff9-hXWfqGoKdoBSP6VfSyUqRjpg0qYJVVly12YNdmabrVXFf5-SdCtQcKi6vfBo-x6f43PvkR_BfE9BQO_j1eC0PyS18_54Mn4_OCDj3qB3NiHpHSX6jlyMgnckteGXFMmgdzEhl0F_SHSx4d-gml0nMsZ7EgyJsdeJtKgNRtbUypKjvIQ-XVAs2AEJRnlt_DOxt4msLZ9RsgLjee15b0T-_0RqpaADoCBVjMNwhgbEZ2BAgQMFD6YUMq0iNEbp_OixKOzH9yCaFBKZzW2-PaUQKY0gHsEmNkUQMMk5RxjGqBtNoBCjDZO0uL5U52c6mYX6ASicqXQ-k0YUBhWigcI4C_OteoPDdEFBze0zmbHhDYJgC7q7oL78gdpifKkSibrhrWqaPGQoym4EHya9UdEToPCiK0D_3NS7z_Rah3xOid9ab0e5Swk_agohLgbB6aSbm_410caSbyqRJJEkCxONcT1fAoVgbgXxGfU59T3qt7eawF9jQv74p6Z0XmXAc7MGSt3Ns1K1koL4uZMvRtXvUOLzjUZ0XhphMFIyrnJiuwfeazwYK21RN05W3--zQ-rzQ6AwC210S1KUgrCtjK2tjM9ESseoMd7MM11skDZUdZU1GF-BbJPQXpHAdo8je0McG7ze8HYMZIWktUC29jOQFSYsBfJ4bwNZ4cFTIFnzLyaS7x4H_pY4ePUdw1AhaC0M7f0MQ4UJS2Ho7m0YKjz4HQb2j76nDZQjNJmSBnf6dZr5v4XxDZZ_nVFzHeGVVlFBUy6DAldsxGhsecrKRV-WR7nAZTBzgrkbzJ1gzw32nODWCpitg1vuN1dQt53ojhvccYKP3eBjJ7jrBnff4tiJ27FmxZhUDFnVlLnHjFXMGXMP2vrLp4v_fgUAAP__db-HXQ== query T EXPLAIN (DISTSQL) @@ -252,7 +252,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzclc1u2zgUhffzFMRdOQgdm5T_opUyEwdw4LEytgdoURiBat0mamRSJek2QeB3Lyilja3ElIK2Gy_5c3guP54LPoL-koIPw3dX47PRhDTOR7P57L_xEZkNx8N_5iS9o0TdkYtp-C9JTfQxRTIeXszJZTiaEJVPBDcoV9eJiPGehBOizXUiDCqNS6MbhebEbmH0SZCPjkg4tXvjb4m5TURja4mSLRWnhNu958Mp-fs9aRQFHQEFIWOcRCvU4H8ABhQ4UPBgQSFTcolaS2WXHvONo_ge_DaFRGRrY6cXFJZSIfiPYBKTIvgwt6ZTjGJUrTZQiNFESZofXxQUZCpZReoBKMyySGifNFscFhsKcm2ez9UmukHw2YbW9x6Jr6gMxpcyEaha3q79_CFDvwAf_j8fTnP8QOHFAwD9edLwPlOlxwg4JUG3TD7w7Cwl_KTt-_7FODybDyzfT4nShnyWiSCJIFmUKIybdggUwrXxScBowGng0aBDg95eDvwtHOz9n56g9yYGz08zlvJunRWFS-GToGMLLgczZ9F_waJPieVRZqFxKUVcBWM_A-8tDGZSGVSt0937B-yYBvwYKKwis7wlKQqfsL2Onb2Oz0ZSxagwft1nsXmltIlsyqzF-I5kXwndnRJY_eZj9ZqvxZstr2b7VbiX2q9zsO1XwWGr_foH234VDJ7aj7V_Y__x-uHnNcPvNWtGv8K7FP3uwUa_gsNW9AcHG_0KBj-iz_7Q1_OK5RR1JoXGWj9K2_5JGN9g8Y9puVZLvFJymdsUwzDX5RMxalOssmIwEsWSLXBbzJxi7hZzp9hziz2nuLMjZmVxx33nCuuuU91zi3tOcd8t7jvFA7d48CvETt3E2hUxqQhZVcrcMWMVOWPuoJVvvtj89T0AAP__0Fl1ZA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVV1P4zgUfd9fYd2nIlxaO_0iT2GhSEXdhm270q5WFco0dyBDamdsdwaE-t9HTjpDG6hTBPPSR38cn3PPvUd-Av01BR_6_14PzwYjUrsYTKaTv4dHZNIf9s-nJL2nRN2Ty3H4F0lN9ClFMuxfTslVOBgRlW8EtygXN4mI8YGEI6LNTSIMKo1zo2sF5sReYXQNyFdHJBzbu_H3xNwlorZxRMkGilPC7d2L_pj8-R-pFYKOgIKQMY6iBWrw_wcGFDhQ8GBGIVNyjlpLZY-e8ouD-AH8JoVEZEtjt2cU5lIh-E9gEpMi-DC1pGOMYlSNJlCI0URJmj9fCAoylSwi9QgUzmW6XAjt5watq8vlAoVJFtmTeoPDbEVBLs0zpzbRLYLPVnR_XQPxDZXB-EomAlXD25Y2fczQL5oS_jPtj_PWAIUXzQH666X-Q6ZKjQo4JUG73JXAs7uU8JOm7_uXw_Bs2rPef06UNuSLTARJBMmiRGFct0ugEC6NTwJGA04DjwYtGnR2-sDf4oOtf92ezps8eG7bUMr7ZVYIl8InQcsKLg9t7kX3hRddSqwfZS80zqWIq8zY7YH3Fg8mUhlUjdPt-gN2TAN-DBQWkZnfkRSFT9hOxtZOxmciqWJUGL_OM1u9Im0k6zJrML4F2SWhvSWB7R9M9v5gNni94e0ZzQplpWi2DjaaFT5sRLN7sNGs8GAdTdb8wGzy_YPBPyAYXn3PWFToKsWifbCxqPBhIxa9g41FhQc_Y8F-05f1CuUYdSaFxr1-oqb9yzC-xeL_03Kp5nit5DynKZZhjss3YtSmOGXFYiCKIytwE8ycYO4GcyfYc4M9J7i1BWZlcMtdcwV124nuuMEdJ7jrBned4J4b3HuPY6dux5oVY1IxZFVT5h4zVjFnzD1o5cpnqz9-BAAA___NKI_L query T EXPLAIN (DISTSQL) @@ -334,7 +334,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlNFv0zAQxt_5K6x72pBLm6TttjxlgkxkKslog5iEqinExxSW2cF20Kap_ztyMrE2Wt0Unvpo-z7f9zt9uidQv0rwIby-mp1HMTn6EC3SxefZMVmEs_B9Sso7cjFPPpFSZ99LJF8_hvOQxElKwmtTSY6e6962ZXK9TOmbgmuUCnOtjtof3t2iuHfpc2FzOj4GClwwjLN7VOB_AwcouEDBgyWFSooclRLSPD01hRF7AH9EoeBVrc31kkIuJIL_BLrQJYIPqfl_jhlDORwBBYY6K8rm-9ZJUMniPpOPQGFRZVz5ZDA0TZNa-yRwaODBckVB1PqlidLZLYLvrGh_IxH_jVIjuxQFRzn0Nr2kjxX6ZBZepCT5koZzcplEMVBo5xOY-dwUnOED0L8_hQ-V7Aw3cCkJxmaQPwqpNPkpCk4KTqqskMgG5riO5tLAo8FkK6C7D6ABex70dCvceZxGHbaX-c-EuKur1rTgPgnMkJL4NcapYVSYC87skFvZvK1sL0g1F5KhRLbBs1y9Qh-LgaiGZ53C11uPN1o7_QPs9Avw0B00-do7wjusdCI8PrwI7wBci_DJwUXY7Z8jt2eOvMG_pGiHkU6KJoeXoh2Aayk6PbgU7Vjyc1SV4Ap77bmRWZTIbrHdqkrUMscrKfKmTXtMGl1zwVDp9tVpDxFvn4zBdbFjFbt2sWsVextipyv27LZH9tZjq3piF0-s4qldPP0f6BOr-NTe-dQqPrOLz_ayvVy9-RMAAP__XKWAxg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlFFP2z4Uxd__n8K6T_CXuzZJWyBPQSxoQV3C2kxDmiqUxXcoI7Uz25lAqN99coJGG1E3iKc-Or7H9_xuju4TqN8l-BDeXM_Oo5gcfYwW6eLL7Jgswll4kZLynlzOk8-k1NmPEsm3T-E8JHGSkvDGVJKj57r_2zK5Wab0bcE1SoW5VkftCx_uUKxc-lzYnI6PgQIXDONshQr87-AABRcoeLCkUEmRo1JCmqunpjBiD-CPKBS8qrX5vKSQC4ngP4EudIngQ2ren2PGUA5HQIGhzoqyeb51ElSyWGXyEShciLJeceWT8p6SxiBQWFSZ-TQYurBcUxC1fmmmdHaH4Dtr2t9QxP-g1MiuRMFRDr1tT-ljhT6ZhZcpSb6m4ZxcJVEMFNo5BcbUbcEZPgD991L4UMnOkAOXkmBsBvqzkEqTX6LgpOCkygqJbGCOQCGptU8ChwYuDTwaTHYCum8BNGDPA5_uhDuP06jD9vIfZkLc11VrWnCfBGZISfwa49QwKswFZ3bInWzeTrYXpJoLyVAi2-JZrl-hj8VAVMOzTuHrrcdbrZ3-QXbeEeShOxh6PaO8x1InyuPDi_IewI0onxxclN3-eXLfkydv0DNNewx10jQ5vDTtAdxI0-nBpWnP0p-jqgRX2GvvjcziRHaH7ZZVopY5XkuRN23aY9Lomg8MlW5vnfYQ8fbKGNwUO1axaxe7VrG3JXa6Ys9ue2RvPbaqJ3bxxCqe2sXT90CfWMWn9s6nVvGZXXz2JtvL9X9_AwAA__-eDouI query T EXPLAIN (DISTSQL) @@ -361,7 +361,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVVFv2jwUff9-xdV9gm9mkAQo9VO6NdVSsaQLmdZpQ1VG7qqMNM7sULWq-O9TElYIGoZuT-2j7Xt8zzk-N3lA9TNFjs7lxfjE9aB16k7CyYdxGybO2HkbQjqHs8B_D2kRfUsJPr1zAgc8PwTnsqyE1qru_7pMbpa1VHE1E7ckVauGv74mcWOwVVW1asOJdwqtdA5fF72eRTBor7bk45ZhttvgB6dOAG8-QzpHhpmIyYtuSCH_ggYyNJGhhVOGuRQzUkrI8uihKnTjO-Q9hkmWL4pye8pwJiQhf8AiKVJCjmHJKKAoJtntIcOYiihJq-tr7nYuk5tI3iPDSR5likOnWzb1FwUH22C2idMlQ7Eo1k1UEV0TcmPJDifiZrckC4rPRZKR7FpNLuF9ThzGzlkI_sfQCeDcdz1kWDtql45eJVlMd8geb3Lucgnrp7BNBna_XVL3oGUbj8Zzzl0vHK3st621_b9PkOH3RKoCfogkgySDPEokxZ1y2bCC2RazBzsNMZ9iSGnE6mGGO8048UJ3y4v1e42FmC_ymrTIONhWLX7Lk2GpT9FMZPFhAvs7BVo7Ba51CRmTpLgpyTZe4XT5Bxc80RF597hZveKzk0a_QcM4fAKMwyaga3aqgD55BvZQ2ZqB_sufgT2GbMzA0fOcAfPw8JkHhs_q_E309hDZit7g5UdvjyEb0Rs9z-jt-b8EpHKRKWqI23Vzr_w2U3xN9bdciYWc0YUUs6pNvfQrXLURkyrqU6NeuFl9VBLcBBtasKkHm1qw1QAb22BLT7unb93Xogd68EALHurBw38RfaQFj_SdR1rwsR58_CTa0-V_vwIAAP__qvStug== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzcVU1v2kAQvfdXjOYE7VKwDYTsyWniqI6oSY2rpmpR5OJp5GK87q4dJYr475VtGj5UFqKckuPOztt5782M_YDqT4IcnavL4YnrQePMHQfjz8MmjJ2hcxpAMoNzf_QJkjz8mRB8_ej4DnijAJyrMhMay7y3dZpcT2uo_HoqbkmqRg1_f0NibrBlVnVqwol3Bo1kBj-KTsci6DWXIfkYMsxmE0b-mePDh2-QzJBhKiLywjkp5N_RQIYmMrRwwjCTYkpKCVlePVSJbnSHvMMwTrMiL8MThlMhCfkD5nGeEHIMSkY-hRHJdgcZRpSHcVI9X3O3MxnPQ3mPDE9FUsxTxSGZMagkIcNxFpahVtvEyYKhKPJVMZWHN4TcWLDDCbnpLcmcogsRpyTb1ian4D4jDkPnPIDRl8Dx4WLkesiwdtYuSV3HaUR3yB5fcu4yCauW2CYDu9tEhiMPGrbx2ADOuesFg2UbbGvVhn83yPBXLFUOv0WcQpxCFsaSolZ5LN8rcg62wWyT2RazezsNMZ9iSGnEskH9nWaceIG75cWqb0MhZkVWkxYpB9uqxW950i_1KZqKNDpMYHenQGunwJUuISOSFG1Kso13OFn8xwVPtETWPt7MXvLZSaO7QcM4fBOMZ2xC22y1rQN3YQ-lrV3ovv5d2GPI2i4cvcxdMA8fQvM5Q2i1DhzBPYS2RrD3-kdwjyFrIzh4mSO453_jk8pEqmhD3K6XO-W3mqIbqr_tShRySpdSTKsy9XFU4apARCqvb4364Kb1VUlwHWxowaYebGrB1gbY2AZbetodfemuFt3Tg3tacF8P7j9H9JEWPNBXHmjBx3rw8ZNoTxZv_gYAAP__ttm4fA== # Bounding box operations. statement ok @@ -388,7 +388,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElM2O2jAQgO99itGcdiVTSAIs5JSqpVJWNNkCh0oVWqVkhFKCndrOigqxz14lQeWnYEIrlVtsz-f57Jl4jepHii4OvjwN3_kB3H3wx5Px5-E9jAfDwfsJpAsGcgEfR-EnSHX0LSV4DP0AZPntzUksnxMe0wrCYBvwtpi04HUbUw6RIRcxBdGSFLpf0UKGNjJ0cMowk2JGSglZLK3LQD9eodtimPAs18X0lOFMSEJ3jTrRKaGLk2L3EUUxyWYLGcakoyQtt69EvEwmy0j-RIbjLOLKhUazSBrm2gXPYp6N0w1DketdEqWjOaFrbVh9EZ-_kNQUP4qEk2w6hy5_3BSy38RglUlQ-nkmXkiqO89m4LXvDxSZ55y1tK-xLOy2t9U9abi7raEQizyD7yLhILgLXnGkMADPhlfwOvt-7bNyzlm5nVPOhYxJUnwgNN2c0A9EQ2TN_lHg6dTtg9RW_Tay6rVR026UVb66kS6oHDVS-0aNdMFyr5Ee_n8j2fWradesptP4m1peEDmqZedGtbxguVfL3m0fhRNyI1KZ4Ipq_fOt4tGgeE7VC6NELmf0JMWsTFMNw5IrJ2JSulq1qoHPq6VCcB-2jLBthm0j7BzA1jHsmLVb5tRtI90xwx0j3DXD3X859IMR7pkz94xw3wz3r9Kebt78CgAA___dcAFE +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElF9v2jAQwN_3Kax7aiWzEAco5ClTx6RULOmAh0kTqjJyQhnBzmynYkL0s09J0PgzMEFI5S2275f72Xe6FajfKbjQ__48-OQH5O6zPxqPvg3uyag_6D-OSTqnRM7Jl2H4laQ6-pkieQr9gMjy25uhWLwkPMYlCYNNwMdi0yZvm5hyCRS4iDGIFqjA_QE2UGBAwYEJhUyKKSolZHG0KgP9eAluk0LCs1wX2xMKUyER3BXoRKcILoyLvw8xilFaTaAQo46StPx9JeJlMllE8g9QeBRpvuDKLe9T-gGFURYVWw2LwWRNQeR6m0zpaIbg2mtaX8jnryg1xk8i4SgtZ9_pvxcD-o_oLzNJlH6ZileU6s5jlHite6AQ5tolnk09Rj3npCW7xLKw27xa56jh9tUGQszzjPwSCSeCu8QrrhQGxGPkjXjtXb_WSTnnpNzWKedCxigx3hOarI_oB6IhMqt3EHg8dWsvtV2_newr2sliDet0qexLlA4aqnWjhjpjudNQD-_fUKx-Vdk1VXUaNWt6Ruigpu0b1fSM5U5Nu7cdEkfkhqgywRXWmgHNYohgPMNq4iiRyyk-SzEt01TLsOTKjRiVrk7tauHz6qgQ3IVtI8zMMDPCzh5sH8KOWbtpTt0y0m0z3DbCHTPcuebSD0a4a87cNcI9M9y7SHuy_vA3AAD__2I2DAY= query T EXPLAIN (DISTSQL) @@ -411,7 +411,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElFFv2j4QwN__n8K6p1Yyf0gCFPKUaWNSKkY64GHShKoUn1BGsDPbqagQ_eyTk24QBiZs0njDZ_9yP98d3oD6noIPgy8Pw3fhiNx8CCfTyefhLZkMhoP3U5IuKZFL8nEcfSKpjp9SJPdROCKy-B0sUKweE85wTaKfwf9NkLy-HS9WDlDgguEoXqEC_yuYgAsUPJhRyKSYo1JCmq1NcTBka_BbFBKe5dqEZxTmQiL4G9CJThF8mJrPjzFmKJstoMBQx0lafL5MHWQyWcXyBShMspgrnzSaJmmUa58EDg1cmG0piFzvkigdLxB8Z0vri4T8GaVGdi8SjrLpVV1-qxTQX8RgnUmi9ONcPKNE9vRyE7iUBO3biiUNvJOi7iWiRvCtYN2jkruCDYVY5hn5JhJOBPdJYG4VjUjQIa8kqFSxfVLOOym3c8q5kMxcviI02x7RH4mGyJr9g4PHU7crqZ36k-TUm6Sm2ygaffEsnVE5mKX29WbpjOjeLN39-1ly6zfUrdlQr_En7TwjctDOzvXaeUZ0r5296z4NR-TGqDLBFdb657fM04FsgeU7o0Qu5_ggxbxIUy6jgisCDJUud51yEfJyywjuw44Vdu2wa4W9Cuwcwp5du2VP3bbSHTvcscJdO9z9m0vfWeGePXPPCvftcP8i7dn2vx8BAAD__4F6BNc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElN9v2j4QwN-_f4V1T61kviEOUMhTpo5JqRjpgIdJE6pSckIZwc5sp6JC9G-fnLTjx8CAkMZbfPYn97HvdEtQvzLwofv9sfcp7JObz-FwNPzWuyXDbq97PyLZjBI5I18G0VeS6fg5Q_IQhX0iy-9gimL-lPIEFyT6CP5vguTt_Xi5coECFwn24zkq8H-ACTCg4MGYQi7FBJUS0mwty4NhsgC_TiHleaFNeExhIiSCvwSd6gzBh5H5_QDjBKVTBwoJ6jjNyt9XqYNcpvNYvgKFe5EVc6788j4fRsM8NqGaw2C8oiAKvU6mdDxF8N0VPV0o5C8oNSYPIuUoHW_b6a8XA_qH6C5ySZR-mogXlJg8v94EjJKgcQsUokL7JHBpwGjgHRRl54gawfeHa-2VXD9cT4hZkZOfIuVEcJ8E5lZRnwRN8kYCtunXOCjnHZRbOxVcyMRcfktovNqj3xc1kTudnYP7Uze2Urund5R7QUc5rOYcLpV7jtJOTzWu11NHRDd66u7f9xQ7vbDsksJ6tRPLekRop6zN65X1iOhGWdvXHRV75AaocsEVnjQJ6maUYDLFau4oUcgJPkoxKdNUy6jkykCCSle7brUIebVlBDdh1wozO8yssLcFu7uwZ9eu21M3rHTTDjetcMsOty659J0Vbtszt61wxw53ztIer_77HQAA__9jZA-Z query T EXPLAIN (DISTSQL) @@ -434,7 +434,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlE-P2jwQh-_vp7DmtCuZl_wBFnJK1VIpK0q2wKFSi1YpHqGUYKe2U1EhvnvlZFsIBRPaA70gMs6TeezfyFtQXzMIYPjhafQqGpO7N9F0Nn0_uifT4Wj4ekayFSVyRd5O4nck08nnDMljHI2JLP-HSxTr55Qz3JD4Z_F_UySfCsfxetXvC1kuuECBC4bjZI0Kgo9gCh5Q8GFOIZdigUoJaZa25YsR20DgUEh5XmhTnlNYCIkQbEGnOkMIYGY-P8GEoWw7QIGhTtKs_HzVOsxluk7kd6AwzROuAtJqm6ZxoQMSujT0YL6jIAq9b6J0skQI3B1tLhLxbyg1skeRcpRtv-7y26EB_UUMN7kkSj-nXKNUuNDqLvQoCTv3NU0a-mdNvWtMjeHLifVOWu5PbCTEqsjJF5FyInhAQrOteEzCbj3lsHainbOe_lnPvV7BhWQokdXc5rsTOxmLlsjbg6MXT7fu1Fq7zafKbTZVba9Vhn71XF1QOZqrzg3n6oLpwVw93HSuvObheg3D9Vt_Eu0FkaNouzeM9oLpQbT9f-bKOOE5QZULrrDRjeCYKwXZEqv7R4lCLvBJikXZpnqMS64sMFS6WnWrh4hXS0bwEHatsGeHPSvs12D3GPbt2o69dcdKd-1w1wr37HDvbzb9YIX79s59Kzyww4OrtOe7_34EAAD__weJESo= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlE-P2jwQh-_vp7DmtCuZN4kDLOSUakulrCjZAodKLVqlZIRSgp3aTkWF-O6Vk93yp2BAHOgFkXGezGP_Rl6B-pFDAL3Pz_130YDcvY9G49Gn_j0Z9fq9xzHJ55TIOfkwjD-SXCffciRPcTQgsvofzlAsXjKe4pLEb8X_TZF8LV2XtevfV7Ja8IACFykOkgUqCL6AKTCg4MOEQiHFFJUS0iytqhejdAmBSyHjRalNeUJhKiRCsAKd6RwhgLH5_BCTFKXjAoUUdZLl1efr1mEhs0UifwGFR5GXC66CamtvRqMiMaWGw2CypiBKvWmmdDJDCLw1PV8o4j9RakyfRMZROv6u01-HB_QP0VsWkij9knGNUuFUq7uQURI274FCXOqAhB4NGQ39o6bsElNj-Hpy7YOWm5PrCzEvC_JdZJwIHpDQbCsekLC1m3bItlWbRz39o54bvZILmaLEdMdtsj6wk4FoiMLp7r14uHVzp7V3_nR5V0yXwxrO8dS8S5T25qt5w_k6Ybo1Xw83nS92fsjsmpD9xpkRnxDai7h1w4hPmG5F3PlnrpADnkNUheAKz7ohXHPFYDrD-j5SopRTfJZiWrWpH-OKqwopKl2vevVDxOslI7gNe1aY2WFmhf0d2NuHfbu2a2_dtNItO9yywm073L5m0w9WuGPv3LHCXTvcvUh7sv7vdwAAAP__eYob7A== # Tests where the table with the inverted index has multiple columns in the primary # key. @@ -482,7 +482,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlF1v2jwYhs_fX2E9R0U1L9jho82Rt5VJVAw66MGmCVUZedRlDXZmm6lTxX-fnHQrYY0T9qH2BOHYd-4rjy75DsyXFEIYvbuYvBhPydHZeHG5eDtpkcVoMnp1SdIbSvQNcz-cvJ7P3pDURh9TJOez8ZTo_D8X16jWV4mM8ZbMpsTYq0Ra1AZX1hwV5_93R9xrikS-bJHZ_Gw0Jy_fk6PdnhZQkCrGabRGA-EHYECBA4UAlhQyrVZojNJu6y4_OI5vIexSSGS2se7xksJKaYTwDmxiU4QQLl3vHKMYdacLFGK0UZLmry8IRaaTdaS_AYVFFkkTknbHlc42NiSCUcFhuaWgNvahxNjoGiFkW9ocZCy_orYYn6tEou4EZZZfJwr0Z2R0m-m96QpOiei1SpxUBFT0K2n5IbSO8n5qg8dJH8Y2Uepmk5HPKpFEyZA4jJ4j21cihx6UoPtUDCuJg0OIF0pb1J3TMq1gx1TwYyqCY6CwjuzqE0lRhoRVtvYqWx_KlI5RY1zdtdw-gjhVbZV1GC_FqjD6JQzW3HLWzPIOb-cSHux5Dcqe570n9ryGdsfz4TPxvIb43nPW_cui8-aG8YaGBe3f8asGZM-v_hP7VUO749fJM_GrhviHX-wfXqSP1M7RZEoabHQ3dt3tivE1FreyURu9wgutVnlNsZzlufxBjMYWu6xYjGWx5QB3w8wb5v4w94YDfzjwhnulMNsP9_zfXFPd96YH_vDAGx76w0Nv-MQfPvmTiZ36J9at0aRGsjrL_JqxGs-YX7T9L19u__seAAD__1202VQ= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlF1v0zAUhu_5Fda52jSX1E4_tlwZtiJ1Ku1odwFC1RSaoxGW2sF20dDU_46cDNaWxclU0HZTNbHfvI-PHvkOzPcMIhh8vBi9GY7Jwdlwdjn7MDoks8FocHpJshtK9A1zP5y8m07ek8zGXzIk55PhmOjiPxfXqJZXqUzwlkzGxNirVFrUBhfWHJT7X7st7jNlong8JJPp2WBK3n4iB5s9h0BBqgTH8RINRJ-BAQUOFEKYU8i1WqAxSrulu2LjMLmFqE0hlfnKutdzCgulEaI7sKnNECK4dL1TjBPUQRsoJGjjNCs-XxKKXKfLWP8ECqcqWy2liYrTF-BAYZbH7lUr4DBfU1Ar-1BmbHyNELE1bQ40lD9QW0zOVSpRB-E209-TBfonMrjN9c6UBadEdNzkJisbEcGo4FSEVHQraflTaB3l_fR6j5M-jG-k1M0qJ99UKomSEXEYHUe2q0YB3duC7lLRryQOn0I8U9qiDk62aQU7ooIfUREeAYVlbBdfSYYyIqyytVPZ-lCmdIIak-qu-foRxLFqqTxgfCtWhdHdwmDNbWd72B7wVhA29L0Gacf3zjP7XkO74Xv_hfheQ3zvO2v_Y-F5c9P4PqaFrYae1QDteNZ9Zs9qaDc8O34hntUQ__aM_ceL9ZHaKZpcSYON7sq2u20xucbyljZqpRd4odWiqCkfJ0WueJGgseUqKx-GslxygJth5g1zf5h7w6E_HHrDna0w2w13_Geuqe560z1_uOcN9_3hvjd87A8f7zOxE__E2jWa1EhWZ5lfM1bjGfOLtnvy-frVrwAAAP__G1TkFg== query T EXPLAIN (DISTSQL) @@ -510,7 +510,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVctu2zoU3N-vIM4qQehrU_IrWrFtFMCBa6W2C7QojECVTlM1MqmSdJEg8L8XlNL60Ziy-1h4E4CkhjNzMmM-gv6aQwDhu-vhi8GInFwMJtPJm-EpmYTD8NWU5HeUqDtm_3jkchy9JrmJP-ZIhuHllFxFgxFR5YbHb1HObzKR4j2JRkSbm0wYVBoTo08q0P_2E3tXhSiXpyQaX4Rj8vI9OVknOwUKQqY4iueoIfgADCh4QMGHGYVCyQS1lsoePZYfDtJ7CFoUMlEsjN2eUUikQggewWQmRwhgannHGKeomi2gkKKJs7y8vlLIC5XNY_UAFCZFLHRAGk1LGi1MQDij3IPZkoJcmBWJNvEtQsCWdH8hA_ENlcH0SmYCVdPf1DJ9KDCoJhy9nYbjcs5A4ddJA_15VXhfqK2pc48S3raT_JQpbcgXmQmSCVLEmcK0YZcb3ij3Ke9Q3t1p0jvEpDX3NOzuYQZX_4WhlHeLolIuRUCswrYVvZ2w0mvPetWYSJHWme1S3t9p0z_E5kQqg6p5vmmRszPKvTPK_TOgMI9N8pnkKALCdrK2d7KuyKRKUWG6m2u2fEbiSDZk0WTeBmyXjM6GDLZ_o9h-jWp6jTLwB3eqRspWp9rH2akak2ud6h1zp2psPnWKtf5yqbz90-ztmWa_8TtZrhGyleXOcWa5xuRalvvHnOUamz-yzP7hA_EM7Rh1IYXGvX7zW_bVwPQWq9dGy4VK8FrJpKSpllGJKzdS1KY6ZdViIKojK3AdzJxgzw32nGDfDfad4PYGmG2D227PNdQdJ7rrBned4J4b3HOC-25w_08mdu6eWKsmJjUhq0uZO2asJmfMHbRt57Plf98DAAD__0O7QAM= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUVd9v2joYfb9_hfU9taq5wQ6_mqfc26YSFSMdMGnThKos-dZlDXZmm6lVxf8-OelWYMWh6vbAC5LtHJ9zPs6RH0B_KyCA6P3V6L_hmBydD6ez6dvRMZlGo-hsRopbStQtsz-cXEziN6QwyacCySi6mJHLeDgmqtrg4Q3KxXUuMrwj8Zhoc50Lg0pjavRRDfrXfmLvqhHV8pjEk_NoQv7_QI7WyY6BgpAZjpMFagg-AgMKHCj4MKdQKpmi1lLZo4fqw2F2B0GbQi7KpbHbcwqpVAjBA5jcFAgBzCzvBJMMldcGChmaJC-q62uFYanyRaLugcKZLJYLoYNqBJVwoDAtE7vV8jjMVxTk0jyRaZPcIARsRfcXNBTfURnMLmUuUHn-pqbZfYlBPen43SyaVPMGCr9PHOivq6K7Um1NP-SUhB070c-50oZ8lbkguSBlkivMWnYJFOKlCUjIaMhp6NOwS8PeTpP8JSatuceh915m8OnfGEl5uyxr5VIExCrsWNHbSau89q1XjakUWZPZHg0HO236L7E5lcqg8k43LYbshIb8hIb-CVBYJCb9QgoUAWE7WTs7WZ_IpMpQYbaba756RuJYtmTpMb4B2yWjuyGD7d8s9opmebzl-Xt2q0HSVrc6h9mtBpNr3eofcrcabD52i7X_cLn4_qnmr0m139oz0w2CtjLdPcxMN5hcy_TgkDPdYPNnptlffDCeoZ2gLqXQuNcb0LavCGY3WL8-Wi5VildKphVNvYwrXLWRoTb1KasXQ1EfWYHrYOYEczeYO8G-G-w7wZ0NMNsGd9yeG6i7TnTPDe45wX03uO8ED9zgwWsmduqeWLshJg0ha0qZO2asIWfMHbRt5_PVPz8CAAD__19vSsU= query T EXPLAIN (DISTSQL) @@ -534,7 +534,7 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlF9P2zAUxd_3Kaz7RDd3bf60QJ6yjaAFlZallcY0VSiL71BGsDPbnUCo331y0gHpqJtuL_B47Xt8z-_qyHegfhYQQHR-NnoXj8neUTydTT-NOmQajaIPM1JckeNkckoKnX4rkHz-GCURic5NF9lb9byuW2TV4oaXKK4vcs7wZtWu9EXONUqFmVZ79UtvTZdD_4iqstMhk-QoSsj7L6S4AgpcMByn16gg-AoOUHCBggdzCqUUGSolpLm6qxpjdgNBn0LOy4U2x3MKmZAIwR3oXBcIAczMsARThrLXBwoMdZoX1fO1rbCU-XUqb4HCtEy5Cki3Z4ZOFjogoUNDF-ZLCmKhH4YonV4iBM6StjcS818oNbITkXOUPa_p5e9NAr2XRDelXFtp6FIS-h2g8D2XSpMfIuck56RMc4msa8oGAw09Gg5oONwI4-4CYyBWSx02QWa3JQZkFB3PyDQ6jcnJJB4Dved7WPZIiKtFWRsXPCDGoG88j59C3TeoCjPBWTtWn4aDjazeRtYHRCEZSmRNutB5A_PlEwsZi64oe4fN7pWljTb8hg2nfZCddkHuud0qZztHeYuVtSj7zzvKW2AeRXn_xUfZbZ8ht2WGvO6_JGiLkbUEDZ53grbAPErQwYtP0JaPP0FVCq6wwbnp5b75KZFdYv2zKrGQGZ5JkVVj6nJS6aoDhkrXt05dxLy-MgYfix2r2LWLXavYa4iddbFnt923j_at6oFdPLCKh3bx8H-g963iA_vkA6v40C4-3Mn2fPnqdwAAAP__D-uCuQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlVFP2z4Uxd__n8K6T_Q_d22StkCeskHQgkrL2kpjmiqUxXcoa2pntjOBUL_75KQD0lE3qC_weO17fM_v6ii5B_UrAx_Cq8vhh2hEDk6j6Wz6edgi03AYnsxItiBnk_EFyXT8PUPy5VM4CUl4ZbrIwbrn_6pFli1ucINieZ1yhrfrdqWvU65RKky0Oqheem-6HPpXVJatFhlPTsMJ-fiVZAugwAXDUbxEBf43cICCCxQ8mFPIpUhQKSHN1X3ZGLFb8LsUUp4X2hzPKSRCIvj3oFOdIfgwM8MmGDOUnS5QYKjjNCufr2wFuUyXsbwDCiciK5Zc-SRbUFK6BQrTPDZH7Y4L8xUFUejHYUrHNwi-s6LNDUX8N0qN7FykHGXHq3v6d6NAHyThbS43Vhu4lAS9FlD4kUqlyU-RcpJyksepRNY2JVAYF9ongUMDlwYeDfo0GGyFcV8CYyDWyx3UQWZ3OfpkGJ7NyDS8iMj5OBoBfeB7XPpQiEWRV8YF94kx2DOeR8-hHhpUhYngrBlrjwb9razeVtZHRCEZSmR1usB5B_PVMwsZibbIO8f17rWlrTZ6NRtO80A7ewS647Y7XsNI77C0Eene6470DpgnkT5885F2m2fJ3SdLXrthknYY2khS_3UnaQfMkyQdvfkk7fgRTFDlgiuscW57uWu-nMhusPrSKlHIBC-lSMoxVTkudeUBQ6WrW6cqIl5dGYNPxY5V7NrFrlXs1cTOptiz2-7aR_es6r5d3LeKB3bxYB_oQ6v4yD75yCo-touPX2R7vvrvTwAAAP__t8uNew== query T EXPLAIN (DISTSQL) @@ -558,4 +558,4 @@ vectorized: true table: ltable@ltable_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUldFv0zAQxt_5K6x7WsGlTdJ2W54yWCYylWSkQQyhagr1MYVldrBdtGnq_46cFLaU1W3hqY-O77v7ftdP7gOoHyX4EF5ejE-imBycRpNs8mHcIZNwHL7NSHlDztLkPSl1_rVE8uldmIYkTjISXppKcrCse9mUybrMDa5R3F4VnOHdUqL0VcE1SoUzrQ6abq9NlUN_i-pjp0OS9DRMyZvPpLwBClwwjPNbVOB_AQcouEDBgymFSooZKiWkuXqoCyN2B36fQsGruTafpxRmQiL4D6ALXSL4kJlhKeYMZa8PFBjqvCjr9o2toJLFbS7vgcKkyrnySbdnhiZz7ZPAoYEL0wUFMdePQ5TOrxF8Z0G3NxLxnyg1snNRcJQ9r-0lu6_QJ-PwLCPJxyxMyXkSxUDh7w0D_dMqvKvkyqoDl5Jg0AEK3wqpNPkuCk4KTqq8kMi65thio4FHgyENRmsh3V0gDdxy2aO1gCdxFq3yPf4IYyFu5lVjXHCfGIMD4zl-DvXQoCqcCc62Yx3QYLiW1VvL-ogoJEOJrE0XOK9gunhmIbHoiqp33K5eWlprY9Cy4WwfcGe7gPfcbp2_nSO-wcpKxAf7GfENkE8ifrj3EXe3z5a7Zba87r8ka4ORlWQN9zNZGyCfJOto75O14Y8iRVUJrrDFua5z37ysyK6xeYmVmMsZXkgxq8c0x6TW1R8YKt3cOs0h4s2VMfhU7FjFrl3sWsVeS-ysij277b599MCqHtrFQ6t4ZBeP_gf60Co-sk8-soqP7eLjnWxPFy9-BQAA__95W5eG +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlVFv2j4Uxd__n8K6T-U_M0gCtM1TujbVUrGkC5nWaUJVhu-qjGBntplaVXz3yQlbCyuGiicebd9z7_ldjsIjqJ8l-BDeXA_PopgcXUSjbPRx2CKjcBieZ6Sckss0-UBKnX8rkXx-H6YhiZOMhDemkhwt6_5vymRd5gZ3KGa3BWd4v5QofVtwjVLhRKujpttbU-XQP6L62GqRJL0IU_LuCymnQIELhnE-QwX-V3CAggsUPBhTqKSYoFJCmqfHujBi9-B3KRS8mmtzPaYwERLBfwRd6BLBh8wMSzFnKDtdoMBQ50VZt29sBZUsZrl8AArnopzPuPJJOaWkdgsURlVurtodF8YLCmKun4Ypnd8h-M6C7m4o4r9QamRXouAoO96qp-yhQp8Mw8uMJJ-yMCVXSRQDhX83DfRvq_C-kmsrD1xKgl4LKHwvpNLkhyg4KTip8kIia5sjUEjm2ieBQwOXBh4N-jQYbIR0XwNp4JZLH2wEPIuzaJ3v6ccYCjGdV41xwX1iDPaM5_gl1GODqnAiONuNtUeD_kZWbyPrE6KQDCWyVbrAeQPjxQsLiUVbVJ3T1eqlpY02eis2nN2D7uwR9I7b7ng7Rn2LpbWo9w4z6lsgn0X9-OCj7u6eMXefjHntHRO2xdBawvqHmbAtkM8SdnLwCdvyx5GiqgRXuMK5qXPXfGmR3WHzZVZiLid4LcWkHtMck1pXXzBUunl1mkPEmydj8LnYsYpdu9i1ir0VsbMu9uy2u_bRPau6bxf3reKBXTzYB_rYKj6xTz6xik_t4tNX2R4v_vsdAAD__91Aokg= diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_json_array_dist b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_json_array_dist index 588b78756cf4..cc5d6fdf8d26 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_json_array_dist +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_json_array_dist @@ -94,7 +94,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElF9vmzwUh-_fT2Gdq3erU7Ah_cOVu5VpmbKkg0jbtEUVCWcVWYqZgapTlO8-QbI0iYJN1am9xObn85yjR2cB-a85eOB_uepf9Abk_8teOAo_9V-R0O_7b0fkNXkXDD-SWS7T6yKaiB9SXifpHbkIyYzRzXn9zcnn937gkxk7nhDxvbRtB8mMH0_IMLj0A_Lma3UV0eosAgqpjHEQ3WIO3jdgQIEDBQfGFDIlp5jnUlVXi_rHXnwPnk0hSbOyqI7HFKZSIXgLKJJijuDBKJrMMcAoRmXZQCHGIkrm9fObBjKV3EbqN1AIsyjNPdKxmA3jJQVZFg9P50V0g-CxJW1fvpfeoSow_iCTFJXlNBCsRwh0E_DvM0WEu5mZqAYxLAuPCEYFp8JpBOSPAazA1uM5MY6nL-XPMiMzmaREph4RVT_DARHdQ5wuFV1a0zaiOo9BDaUqUFnnu5iCHVHhHDWWcBtLPLwsVYwK46aHD7AMZEdmFuM7kSaE7g4Cay8sayusxeyOxds6ayDYc9Z9fmcNgFvOnr60swbUtbPMfoq0vL0xvLUx3O601MVQfk-X7vPrYgDc0uXspXUxoP7Vhf2rHXegRoB5JtMcW60uu1p-GN_gamHmslRTvFJyWpdZfQ7rXH0QY16sbtnqo5eurirA7TDThrk-zLVhRx92tGF3J8z2w66-Z0PprjZ9og-faMOn-vCpNnymD589ZWLn-onZBk0Mkpks02vGDJ4xvWj7nY-X__0JAAD__xWKngI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElN9v0zAQx9_5K6x7AuYusZPuR548tiCKSjuSSYCgmtLmmFK6ODjJNDT1f0dJS9dWjZ1taHu0nW_uc6eP7g7y3zPwwP963j_pDcjrs154EX7uvyGh3_dPL8hb8j4YfiLTXKaXRTQWP6W8TNIbchKSKaOr-_rMyZcPfuCTKdsfE_GjtG0HyZTvj8kwOPMD8u5b9RTR6i4CCqmMcRBdYw7ed2BAgQMFB0YUMiUnmOdSVU939Ye9-BY8m0KSZmVRXY8oTKRC8O6gSIoZggcX0XiGAUYxKssGCjEWUTKrf79qIFPJdaT-AIVTOSuv09wjESVjoBBmUXXqWMyG0ZyCLIv7UnkRXSF4bE7b4_TSG1QFxh9lkqKynAai5UiBrgL-baaIcFczFNVghmXhEcGo4FQ4jYD8IYAV2HJcB8Zx9aX8VWZkKpOUyNQjoupnOCCiu4vTpaJLa9pGVOchqKFUBSrreBNTsD0qnL3GEm5jifs_SxWjwrjpxztYBrIjM4vxjUgTQncDgbUXmD1WYIvZHYu3ddhAtOWw-_wOGwDXHD58aYcNqEuHmf0UiXl7g_ijDeJ2p6U-BpwtfbrPr48BcE2fo5fWx4D6Tx_2v3bgjhoB5plMc2y12uxqOWJ8hYuFmstSTfBcyUldZnEc1rn6Isa8WLyyxaGXLp4qwPUw04a5Psy1YUcfdrRhdyPMtsOuvmdD6a42faAPH2jDh_rwoTZ8pA8fPWVix_qJ2QZNDJKZLNNrxgyeMb1o252P5q_-BgAA___uXKww # This query performs a cross join followed by a filter. # Note that the distribution shows as either full or partial depending on the @@ -122,7 +122,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk2Fv0zwQx98_n8I66dGAuUvsdBvKqwwWtEJpRlIJ0IgmtzlGSmcH25GYqn53lHR0pGpLSvsu9t3fv_vf5WZgfkzBhyTsh6-HJJdfFXkTR-_JTfjpun_RG5Bnl71kmHzoPyePOS8WCROj5K0Vo-D3x23xHR_IRUImjC6j9ZmTj1dhHJIJOxmR4Evpuh6SCT8ZkSi-DGPy6nMVErS6E-ljcl3KIBqSfu9dSI6y3Fidj0qbK-n_fwQUpMpwIO7RgH8DDChwoOBBSqHQaozGKF2FZnViL_sJvkshl0Vpq-uUwlhpBH8GNrdTBB-GYjTFGEWG2nGBQoZW5NP6-aXZQuf3Qj8AhaQQ0vik4zAX0jkFVdqnp40Vdwg-m9N_w3sHwfON-CdqKZXOUGPWIKaV8m8pazxcCfPtrcolauesaSEakIAvhx90gUJUWp8EjAacBh4Nuht9eLu0MVHaonbOm_iAHdPAO96I6DYQrP2kWNtJOcztOLztv7JDBd1DVdD8XXj7CnjrCrjbadmAHfCnB8FvXpY1-BhNoaTB1aVZ-7JbbQpmd7jYPKNKPcZrrcY1ZnGMal19kaGxiyhfHHqyDtX9-VPMdhDzVTHfKvYaYndV7G0Vv9wu7u7j-XQfz2f7kM93Iqfz_34FAAD__1-wY7Q= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k29v0zAQxt_zKayT0IC5S-x0G8qrjC1ohdKMpBKgEU1Oc4yUNg62IzFV_e4o6ehI1Xb9o77L-e7J8zv7bgL69whciPyuf9knWf5Dkvdh8Inc-l9vuhedHnl11Yn60efua_JY82ZWMNQyvzMi8f593BW_8IFcRGTI6Dxbx5x8ufZDnwzZSUK876VtO0iG_CQhQXjlh-TdtyolaHUm4sfiGqUX9Em389EnR2mmjcqS0mQyd18eAYVcptgTY9Tg3gIDChwoOBBTKJQcoNZSValJXdhJ_4BrU8jyojTVcUxhIBWCOwGTmRGCC32RjDBEkaKybKCQohHZqP79vNlCZWOhHoDCpRyV41y7RFCSAIWoEFXUspgN8ZSCLM2TlTbiHsFlU7objnMQHL4S54mizKVKUWHaIIgr5XMlS3q6FvrnB5nlqKyzZktBj3h8PhxeGygEpXGJx6jHqedQr72yD2eba42kMqis86a9x46p5xyvtGg3LNjmL8d2fTmL2S2LbzpLWxC1D0XUHCe-ORHfmYjbrQ0vaAuc04PgrF62JTgh6kLmGheXbumf7WrTML3H2eZqWaoB3ig5qG1mYVDr6oMUtZll-Szo5HWqvq__xWwLMV8U87VipyG2F8XOWvHb9eL2Pj2f7tPz2T7O51s5x9MXfwMAAP__LzGAEA== # This query performs an inverted join with an additional filter. query T @@ -151,7 +151,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: [ - /19] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk09vm0AQxe_9FKO5xE42hgU7SfdEUlOJyIUUrKpVY0Vrs41wHZYuOEpl-btXQP4RmbUt9dAed3Z-M--N9FaY_1ogQ_fr1ejc86Ez9KJx9HnUhcgduR_GMKe9QwJzq3cIH8PgE8xzmd4UfArnEcwt8HzfDcHzv7jh2B3CZeD5zRYKgQ-dzpz2puBcL03TFuW0aRfO_SE06wera-TXyGC1Xh90nzqsHoeqYQaW2YUgHLohXHwrlfFKGUeCqYyFz-9Ejuw7UiRo4YRgpuRM5LlUZXlVNXnxAzKTYJJmy6IsTwjOpBLIVlgkxUIgwzGfLkQoeCyUYSLBWBQ8WVSjn7w5mUruuPqNBKOMpzmDY4OaOFkTlMviZXRe8FuBjK7J7uu99F6oQsSXMkmFMqwWBT-kvEnSeyTPgPuQKeg4_eeDOtbjEV_VGkdmjF1GgX_RRYLBsmDgUOJYxLFbnVj7OCkdPN6xv_WOIyl_LjOYyyQFmTJw7FKUDx1nsMHQYD9DfeIMWj3Z-3iKpCqEMk6afhz7iDj0qHVFv3XFy2SpYqFE3DZ4gxZfHsvMOGsStW278lyab9U0aGiiu2eC7poJg5rHhrVrLLYoeBML-x-OxRYnr2Ix-G9iscXTYyxO_1YsNqwIRZ7JNBeNFW2TzTIvIr4VdcZyuVQzcaXkrFpTP4OKqwqxyIv6l9YPL62_SoGvYaqFLT1saWFbD9tauN-A6Vu4r4Xf6zcPtPCJHj7Rwqd6-FQLn-nhs70ONlm_-xMAAP__cGXXeQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk09vm0AQxe_9FKO5xE42hgU7SfdEElOJyIUUrKpVY0Vrs41wHZYuEKWy_N0rcP4RhbVd9dAed3Z-M--N9JaY_1wgQ_fL5ejU86Ez9KJx9GnUhcgduedjmNPePoG51duHD2HwEea5TK8LPoXTCOYWeL7vhuD5n91w7A7hIvD8ZguFwIdOZ057U3CuStO0RTVt2oVTfwjN-t7yCvkVMliuVnvdxw6rx6FumIFldiEIh24IZ18rZbxWxpFgKmPh81uRI_uGFAlaOCGYKTkTeS5VVV7WTV58j8wkmKRZWVTlCcGZVALZEoukWAhkOObThQgFj4UyTCQYi4Ini3r0ozcnU8ktV7-Q4LlclLdpzoATmCLBKOPV69CgJk5WBGVZPK_KC34jkNEV2V6Ol94JVYj4QiapUIbVoui7lNdJeofkCXDvMwUdp_90YMd6OOqLWuPojLGLKPDPukgwKAsGDiWORRy71Ym1i5PKwcNd-xvvOpLyR5nBXCYpyJSBY1eifOg4gzcMDXYz1CfOoNWTvYunSKpCKOOo6cexD4hDD1pX9FtXPE-WKhZKxG2D39Diy0OZGSdNYm3brj1X5ls1DRqa6PYZoX-aEYOah4a1bUw2KHoVE_sfjskGJy9iMvhvYrLB00NMjv9WTN5YEYo8k2kuGivaJptVfkR8I9aZy2WpZuJSyVm9Zv0Maq4uxCIv1r90_fDS9Vcl8CVMtbClhy0tbOthWwv3GzB9Dfe18Hv95oEWPtLDR1r4WA8fa-ETPXyy08Emq3e_AwAA__8nLODt # This query performs a cross join followed by a filter. query T @@ -182,7 +182,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lG9v2jAQxt_vU5xOmiirS2KH_vOrtGuq0jHSEaRtalFliNeF0ZjZjrQK8d2nhJYuFaSwdnuHfffc7-7hnCman2PkGAXt4H0PkvSbgtNu-BEugy8X7aNWB7ZOWlEv-tSuw33Ou3nCyKj02oqB__DjevJD3sFRBCNKFtHizODzWdANYGtrRBsD8K8y1_UkjFhjUIejzgmU72vTKxRXyGE6m9XqDxmsIaBIGAJz6xB2T4IuHH-FEW0IktcS_XtMMUQn7EG79SGAWpwYq5NBZhOV8rc1JJiqWHbErTTIL5EiQYYEPewTnGg1lMYonYemRWIr_oXcJZikk8zm132CQ6Ul8inaxI4lcuyJwVh2pYildlwkGEsrknFRfmHTRCe3Qt8hwWgiUsNhx6Eu9mcEVWYfSxsrbiRyOiN_h2evgmeb4E-TsZVaame3zJ7fc_DZ8r-Wc34ehZ3jlV14K7t4hGep0rHUMi6x-7nyuZQlo5wJ8_1cJanUzkF5mLADfnMxh5_bHGaWg0-Jz4jvEb-5co7mJm5GSlupncMy3ve2iU-3F9ScRwr2SupuiUrXXyG67go51N1x2LpLvEEH3mt1wDbpYLHHe_90j9n6PjTX9oG5O2ua8Ax-YcL-f3vMS7roSjNRqZFPH_XSym7-kmV8I-dfBqMyPZQXWg0LzPwYFrriIpbGzqPe_NBKi1CxrX-KaaWYlcTuUzHbgMyeir1KcbOa3KwUU7davfsSx_YqxfvV5P2XOHZQKT6sJh9uRO7P3vwOAAD__xIQ9LU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lF1v2j4Uxu__n-LoSH9RVpfEDn3zVfqSqnSMdARpm1pUGeJ1YTRmtiOtQnz3KaGlSwUptOrusH0e_57zcOIpml9j5BgF7eCkB0n6XcFZN_wEV8HXy_ZRqwNbp62oF31u1-Gh5sO8YGRUemPFwH_8cTP5Ke_hKIIRJYvTYs3gy3nQDWBra0QbA_CvM9f1JIxYY1CHo84plPdr02sU18hhOpvV6o8VrCGgKBgCc-sQdk-DLhx_gxFtCJLfJfoPmKKJTtiDdutjALU4MVYng8wmKuX_15BgqmLZEXfSIL9CigQZEvSwT3Ci1VAao3R-NC0KW_Fv5C7BJJ1kNt_uExwqLZFP0SZ2LJFjTwzGsitFLLXjIsFYWpGMi-sXMU10cif0PRI8UePsLjUcBIEBEowmIl_tONTF_oygyuwTylhxK5HTGXmdHfYudtgmds6SsZVaame37GW-z8Fny_96zvlFFHaOV7rwVrp4gmep0rHUMi6x-7nypZIlrZwL8-NCJanUzkG5mbADfnPRh5_HHmaWg0-Jz4jvEb-5so_mJmlGSlupncMy3ve2iU-3F9ScRwr2SupuiUrXHyn62pFyqLvjsHWHfANH3ns5Yps4Wsz53rvOOVs_l-arc2HuzpqhvGBnEcr-P_v4l7joSjNRqZHPH4GlN7v5ly_jWzl_SYzK9FBeajUsMPNlWOiKjVgaOz_15otWWhwV0_y3mFaKWUnsPhezDcjsudirFDeryc1KMXWr1btvSWyvUrxfTd5_S2IHleLDavLhRuT-7L8_AQAA___8hAxm # This query performs a left inverted join with an additional filter. query T @@ -212,7 +212,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkld9P4kAQx9_vr5jMi3Au0G0BcZ-qR01quNaD3uUuJzGFrqYcdnvbYjSE__1SqkKJbGu8J33cH9-Z2c_ON7PE5O8cGVo_LwYntgO1vj3yRt8GdRhZA-uLB5_hbOh-hVkioqvUn8DJCGY6DKwzD2znhzX0rD6cu7ZTvEHBdaBWm9HmBMzLhaYZHGZ6c1KHE6cPxf2D5SX6l8hguVod1J9u6E0f1hemoGt1cId9awinv2BGmz7JYvlIMBIBd_xbniD7jRQJ6kjQwDHBWIopTxIhs6Pl-qId3CPTCIZRvEiz7THBqZAc2RLTMJ1zZOj5kzkfcj_gsqUhwYCnfjhfh396nxnL8NaXD0hwFPtRwqDRohqOVwTFIt2ETlL_hiOjK1I9vR3dcZny4FyEEZcto1iB9xBzlqN3v3vWcM0dyaayayGuwugOyXMg6z6WUDPbz7BN_RHw1l7hAxhj5yPXOa0jQdcBk25-gTFmO14PCV6HMklhJsIIwghiP5Q8aGTLTLRIGZiUmDoxDWJ29pLRX0MmI_L4L91XUtn810CIP4s4r1tEDEwjf2TN7L4AqFsOKOFTEQUVQHSI2d0LwngNiJGQKZet4yIE0zgkJj3cm6K9N8UmspABlzzYF_iFWhzREHGL6gXJvhI6hRJodR_Sqj5sUa3R0qtasaSCHSu2P5AVS8hsWfHofVuxBMSjFan2Fi_q1Y2gVzaCrjUquqAk_Y4LOh_IBSVktlzQe98uKAHx5AL6vybSCzmGPIlFlPBKg0bLRhUPbng-3hKxkFN-IcV0nSZfumvdeiPgSZqf0nxhR_lRVuC2mCrFulqsK8WGWmwoxe2CmO6K2-o3l6TuKNVdtbirFB-pxUdKcU8t7r2F2LGamFbSJiVNVtZl6jajJX1G1Y22-_Lx6tO_AAAA___k5WOg +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzklV9P8kgUxu_3U5ycmxfWATpTQJyrqtSkhm1d6G52sxJT6GjKYqc7LUZD-O6bUhVKZIr6Xunl_HnOOfM758ksMf1vjhztv64Gp44Ltb4z8ke_D-owsgf2uQ-_wsXQ-w1mqYxvsmACpyOYMRjYFz447p_20Lf7cOk5bvkGBc-FWm1GmxOwrheGYQqYseakDqduH8r7P5bXGFwjh-Vq9aP-coM1A1hfmAIz6uAN-_YQzv6GGW0GJI8VIMFYhsIN7kWK_B-kSJAhQRPHBBMlpyJNpcqPluuLTviI3CAYxckiy7fHBKdSCeRLzKJsLpCjH0zmYiiCUKiWgQRDkQXRfB3-5X1WoqL7QD0hwXM5X9zHKYeAwAQJjpIgXzVa1MDxiqBcZJtUaRbcCeR0RQ4vx4kfhMpEeCmjWKiWWa7If0oEL1rh_eHbw3UfkGwqvZXyJoofkLwGsh8TBTWr_QrfYs_At_ZKDeGcX44896yOBD0XLLrpCufccf0eEryNVJrBTEYxRDEkQaRE2MiXuWiRcbAosRixTGJ19pJh7yGTE3nuU_edVDb9G0j57yIp6pYxB8ssHlmzum8A6lYDSsVUxuEBIDrE6u4FYb4HxEiqTKjWSRmCZR4Rix7tTdHem2ITWapQKBHuC_xGLa5syKRFWUmyr4ROqQR6uC_pR33ZokajxQ61ZkVFO9ZsfyNrVpDZsubx17ZmBYhna1LjM95khxuDfdgYzGgc6IqKcnZc0flGrqggs-WK3td2RQWIF1fQn_VjvZFjKNJExqk46CMy8q9MhHei-P5SuVBTcaXkdJ2mWHpr3XojFGlWnNJi4cTFUV7gtphqxUwvZlqxqRebWnG7JKa74rb-zRWpO1p1Vy_uasXHevGxVtzTi3ufIXaiJ2ZUjEnFkFVNmX7MaMWcUf2g7b58vPrl_wAAAP__01Rxzg== # This query performs a semi inverted join with an additional filter. query T @@ -240,7 +240,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: [ - /19] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUkkFvm04Qxe__TzGak_3vOmbBdiVOpA1RiRycgqWmaq0IwySCOrt0F6JEkb97BURxiAxxbu1xZ-c3897oPaL-vUEb3cuL-bHnw-DEC5fh1_kQQnfufl7C_3AaLM4h01JcFdEajkPITPj2xQ1ccC-rZhjsb3WupbxKxV2N8CdkkPGjNTg_S8OwCDLzaD2EY_8EBpl5FEFdjsE0hkNYBCduAJ--V00RMhQyIT-6JY32D-TI0MQVw1zJmLSWqio_1k1eco-2wTAVeVlU5RXDWCpC-xGLtNgQ2riM1hsKKEpIjQ1kmFARpZt69LP8XKW3kXpAhmEeCW3DaMwNXG0ZyrLYjdZFdENo8y07fL0n7kgVlJzJVJAamx0Kng6I7Blw73MFzuT5gE6FXqdKF5DJVEAqII9SRcmoeiLDRVnY4HDmmMyxmDPt1G--R3-l--l6k7b25UNONszd0yWE7rkHZwvPR7bvqHMpf5V5I1sKGxyrkuuDM2u70xRLkRxmb9Jpz-q0t3MlVUKKkrYhh3_A1XbPDXw5kvl41u7e6elUMmkp4YfnlB-a0zE3RmPz0Ki-oeBVVK2_Lqpv6H8R1em_HtU99gLSuRSaWta6JhtVjim5oSb3WpYqpgsl43pN81zUXF1ISBfNL28enmi-KoEvYd4Lm_2w2QtbLZi_hq1e-GP_5kkvPO2Hp73wrB-evcvzavvfnwAAAP__i3FydQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk0FP20wQhu_frxjNKfm6IV47SSWfTMGoRiGhcaRStRHa2AOyG3bdXRuBUP57ZRsBRrEJPbXHHc-z-7yj8QOaXxt00b84nx4GM-gdB-Ey_DLtQ-hP_aMl_A8ni_kZpEbJy1ys4TCE1Iavn_2FD_5F2Qy93a3elVKXibytEP6I9FJ-sAbvR2FZDkFqH6z7cDg7hl5qHwioyhHYVr8P88Wxv4BP38omgQylimkmbsig-x05MrRxxTDTKiJjlC7LD1VTEN-hazFMZFbkZXnFMFKa0H3APMk3hC4uxXpDCxIx6aGFDGPKRbKprn7Sz3RyI_Q9MjxSm-JGGhcEgzUyDDNRngZDbuFqy1AV-fNTJhfXhC7fsv11AnlLOqf4VCWS9NBuMXocKLInwL_LNHijp4F6JXqVaJNDqhIJiYRMJJriQXlEhvMid8HjzLOZ5zBv3Opvv8e_9H6c5qjpvrzPyIWpf7KE0D8L4HQezJDtGvJUqZ9FVmsr6YLnlLoz8CbNdIYiJeP94o1a4zmt8Z5TKR2TprgZyOMfcLXdMYOZGqhsOGl2P_u0mowaJnz_veV_urdDbg2G9r6r-4bRq9V1_rrVfcP_xeqO__XV3RFvQSZT0lAjWtvNVrnXFF9T_R8YVeiIzrWKqmfq47ziqkJMJq-_8voQyPpTKfgS5p2w3Q3bnbDTgPlr2OmEP3a_POqEx93wuBOedMOTd2Vebf_7HQAA__-Y3Xvp # This query performs an anti inverted join with an additional filter. query T @@ -269,7 +269,7 @@ vectorized: true table: json_tab@json_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUld9u2jAUh-_3FEfnCjZT4gQo9VXYmmqpWOhCpnXaUBWIW4VRO7ND1ari3aeEqjSsmFS74tJ_Pp_zHX4Kj6j_LJChd3kxHPgBNE79cTT-OmzC2Bt6nyJ4D2fh6AvMtRRXeTyFwRjmNnz_7IUeBKMIvMsCgMbr191rKa9ScVdi9AlrzOnRFNxfS8tyOMzto2kTBsEpNOb2UQzl9gxsq9mEUXjqhfDxR3EpRoJCJjyIb7lG9hMpErSRoIMTgpmSM661VMXRY3nRT-6RWQRTkS3zYntCcCYVR_aIeZovODKM4umChzxOuGpbSDDheZwuyuefFTKV3sbqAQmOs1hoBq02tXCyIiiX-eZpncc3HBldkfrlfXHHVc6Tc5kKrtpOtYPoIeMMht5ZBKNvkRfC-cgPkOD2cJE8P-TdZwrczvNw3WJAowBcupkrY8wPoj4SvE6VzmEuUwGpgCxOFU9axbKAljkDlxLXJq5D3O5OYfstwoXo07h7O2UHQeT_47r5FYZS_l5m67alYOA6T469qrbmMymSenqdnXrOTr2NlVQJVzypCrn0A05Wr8wgkC2ZtU-qtzf97OykU-mE1g82rRvsNrVabbtutvd0sJXtzuFne4_wi2wfH2K27fqJsmsnyrZaNeO0p_xWnLqHH6c9wi_i1D_EOO35Jwi5zqTQvKK262Wr-I7y5Iavv7taLtWMXyg5K8usl6OSKzcSrvP1KV0vfLE-Khp8CVMjbJth2wg7FZhuw465bctcumOku2a4a4R7Zrj3P9LHRrhvrtw3widm-ORNbU9W7_4GAAD__yWwhNA= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUlVFv2j4Uxd__n-LqPsF_psQJUJqnsDbVUrGkC5nWaUNVIG4VRu3MTqpWFd99SqgKYcXQ7onHa9-f7zmXo_CE6vccbXSvLocDz4fGmTeKRl-GTRi5Q_c0gv_hPAw-w0wJfp3HExiMYGbCt09u6IIfROBelQA0Xm93boS4Tvl9hdFnrDGjRxNwfhaGYTGYmUeTJgz8M2jMzKMYquMpmEazCUF45obw8XvZFCNBLhLmx3dMof0DKRI0kaCFY4KZFFOmlJDl1VPV6CUPaBsEU54VeXk8JjgVkqH9hHmazxnaGMWTOQtZnDDZNpBgwvI4nVfPv1jIZHoXy0ckeCrmxR1XNsQEJkhwlMVl1WpTA8cLgqLIV6NUHt8ytOmC7C_H4_dM5iy5EClnsm3VFUWPGbNh6J5HEHyN3BAuAs9HgpvLRvLykPuQSXA6L8t2yoUFPjh0tWfbtj0_6iPBm1SqHGYi5ZByyOJUsqRVliVU5DY4lDgmcSzidLcaNt9iuDT6vP7eVrMDP_L-8rr6VYZC_CqypWzBbXCsZ4-9um3FpoIn-9nrbLVnbbW3ciVkwiRL6oYc-gHHi1d24IuWyNon9e6Vnq1KOjUldP-g0_cGvU2NVtvcN-s7FG1kvXP4Wd9heC3rx4eYdXP_hJnvTphptPaM1w45G_HqHn68dhhei1f_EOO1458iZCoTXLGatW0vG-V3liW3bPldVqKQU3YpxbQasyyDiqsOEqby5S1dFh5fXpUC12GqhU09bGphqwbTTdjSyzb0oztauquHu1q4p4d7_2L6WAv39ZP7WvhED5-8SfZ48d-fAAAA__89fpL- statement ok INSERT INTO array_tab VALUES @@ -318,7 +318,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEkt1u2kwQhs-_qxjN0ddmiVnb_NRHmzauSkUhtZHaqkXRgqeRW-J11-soEeLeKxsUQoQXkCrl0LN-5n00epdY_FlggOHXq-HFYAT_Xw7iSfx5-AricBi-m8BreB-NP4HUWj5cGzkTP5W6TrM7uIhBcrZ9qAcufPkQRiFIfj4D8aNstz0C6Z7PYBxdhhG8_VY9SVbNJDLMVEIjeUsFBt-RI0MPpwxzreZUFEpX42X90yC5x6DNMM3y0lTjKcO50oTBEk1qFoQBTuRsQRHJhLTTRoYJGZku6tVb_Vynt1I_IMM4l1kRQMvxcLpiqEqzXV0YeUMY8BU7Pn6Q3ZE2lHxUaUbacZsMNgdE9kiE97kG4T8eTFTsuDQBCM6Ey0SzoXuKYWW2uY9_-D5DpX6XOfxSaQYqC0B4ldUIRGefqM9Eh9W6ja7eKa6x0oa00931FPyMCe-sMcJvjNhuVjohTUnT4j0uI9VSudPfIZoMOjsG_PjG8qMb63itIxt7IP5ZY70XaOwBwyeN7bx4Yw-4bhrb-1eN3RMRUZGrrKCjmtiuqkzJDa3rX6hSz-lKq3kds_4c11w9SKgw61e-_hhk66dK8CnMrbBrh10r7Nlhzwr7OzB_DvtW-I09uWOFu3a4a4V7drhnhft2uH_Swaar__4GAAD__54xmXI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEk0Fv2kwQhu_frxjN6WuziVnbBOrTpomrUlFIbaS2alG04GnkFrzueh0lQvz3ygaFEOEFqko57oyfmUej1wssfs8wwPDLdf-iN4D_r3rxKP7UfwVx2A8vR_Aa3kXDjyC1lg83Rk7ED6Vu0uwOLmKQnG0adcGFz-_DKATJzyYgvpetlkcg3bMJDKOrMIK3X6uWZFVNIsNMJTSQcyow-IYcGXo4ZphrNaWiULoqL-qPesk9Bi2GaZaXpiqPGU6VJgwWaFIzIwxwJCczikgmpJ0WMkzIyHRWj97o5zqdS_2ADC_VrJxnRQCSwQQZxrmsXqeOh-MlQ1WazarCyFvCgC_Z4Tq97I60oeSDSjPSjttktD4oskcivM81CP_xgKJih6UJQHAmXCaaDd1jDCuz9b38_ffqK_WrzOGnSjNQWQDCq6wGINq7RH0m2qzWbXT1jnGNlTaknfNtT8FPmPBOGlf4jSs2k5VOSFPSNHiHy0CdqtzpbhFNBu0tA354gvlfJ9jxTg9M8B6dZwn2XiDBewyfJLj94gne47pOcOdfJXjHioiKXGUFHZTMVhVtSm5p9TsUqtRTutZqWq9ZPYc1VxcSKsyqy1ePXrZqVYJPYW6FXTvsWmHPDntW2N-C-XPYt8Jv7JvbVvjcDp9b4Y4d7ljhrh3uHnWw8fK_PwEAAP__0a2i5g== # This query performs a cross join followed by a filter. query T @@ -344,7 +344,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysktFv0zAQxt_5K04noQHz1iTueMiTBwtaoDQjqQRoRJPTHCOii4PtSFRV_3eUZFpJ1ZaW7S2-u8-_fL5vgebXDH1MglHwdgJF-V3Buzj6CNfBl6vReTiGFxdhMkk-jV7C_cyrbkBqLec3Vmbi4eum-klzOE9AumzVbwsefL4M4gCke5qB-FY7DieQ3mkGUXwRxPDma9OSrKnJ9H64_ZtxNIFR-CGAo7wwVhdZbQtV-s-PkGGpchrLOzLoX6OLDDmmDCutpmSM0k150Q6F-W_0HYZFWdW2KacMp0oT-gu0hZ0R-jiR2YxikjnpgYMMc7KymLVXr7xWuriTeo4Mk0qWxoeTAcd0yVDVdnW1sfKW0HeX7P_w3pPgva34FbUulc5JU94jpo3yXyMbPFxK8-O9KkrSg2HfQjQG4T0sXjTdqLY-CJcJjwnOxHCrD37IMyZKW9KDsz5euMdM8OOtiGEP4e6_KXfvTQ34yZ5BOQDPnwS_PSgb8DGZSpWG1gOz8WanSQnlt9SlzqhaT-lKq2mL6Y5Rq2sLORnbdb3uEJZtq32fv8XuAWJvXeztFPOe2FkX853i17vFw8d4PjvIc7p89icAAP__LfbnHg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0Ul9v0z4Uff99iqsr_TRg3prEHQ958tiCVijNSCoBGtHkNJcRkcbBdiSqqt8dJZlWUrVlHdqb75_jc459lmh-FuhjHIyDiynk5TcFb6PwA9wEn6_H56MJvLgcxdP44_gl3O-86hak1nJxa2UqHk631Q9awHkM0mXredvw4NNVEAUg3dMUxNfacTiB9E5TCKPLIII3X5qRZE1PJvfLrZpJOIXx6H0AR1lurM7T2uaq9P8_Qoalymgi52TQv0EXGXJMGFZazcgYpZv2sl0aZb_QdxjmZVXbpp0wnClN6C_R5rYg9HEq04IikhnpgYMMM7IyL9qr114rnc-lXiDDC1XU89L4IBmkyDCuZFOdDDgmK4aqtmsqY-Udoe-u2NPkeM8ix9spZ62iLpXOSFPWU5A0yL-tbPF0Jc33dyovSQ-GfUvhBIT3EAzRTMPa-iBcJjwmOBPDnT74Ic8aK21JD8769MI9ZoIf76QY9ijcx_-c--SfG_CTRwbpADn8WeTsDtIWORGZSpWGNgO19WanSRFld9Sl0qhaz-haq1lL05Vhi2sbGRnbTb2uGJXtqH2vP8HuAWBvE-ztBfMe2NkE873g1_vBw3_xfHaQ52T13-8AAAD___hO-gY= # This query performs an inverted join with an additional filter. query T @@ -374,7 +374,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: [ - /4] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk0Fv2k4Qxe__TzGaS-CfDWZtnFCflhZXckRNalDVKEXRgqeRG-J11yZKhPjulQ1NIIo3IPXQ3uwZ_2beGz0vMf85Rw_9rxeDXhBCox-MxqPPgyaM_IH_YQz_w8do-Amk1vLxupBT8fR0nd3SI_RGIG0IwtCPIAi_-NHY78P5MAi3kO9KXSfpffUth2EIjYbkrSmIb4t22yGQdmvahF7Yh9360ZKvjpq_O3ZLQtWYgduEYdT3I3h_CZK3JCtHSGSYqphCeUc5elfIkaGDE4aZVjPKc6XL8rL6KIgf0GszTNJsUZTlCcOZ0oTeEoukmBN6OJbTOUUkY9JWGxnGVMhkXo1-9pbp5E7qR2Q4ymSae3BiOThZMVSL4nl0XsgbQo-v2P7rg_SedEHxuUpS0pZdp2BzXWRPhP-QaWiIztMhhb054latF0W9yyvueV4QjruTJjIcLgoPBGfCZqLehH2IiVL85oSdt084UOp2kcEPlaSgUg-EU6oKoSHcV7y4-3rpMOHW2nEOsTNSuiBtne5aEc4xE_y4dkWndsXzZKVj0hTXDX5FS6hOVGZ1d4g6Be6OAr5_7vneubecE6v-yvwQAS-S7_ydyX_DxFby3X8h-W_Y2ST_7E8l_5UVEeWZSnPaK9Ht8peg-IbWv1GuFnpGF1rNqjXr12HFVYWY8mLd5euXIF23SoHbMDfCthm2jbBjhh0j3NmB-Uu4Y4TfmTe7RvjUDJ8a4TMzfGaEu2a4e9DBJqv_fgUAAP__JtfSng== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk0Fv2k4Qxe__TzGaS-CfDWZtnFCfTIMrOaImNahqlKJowdPIDfG6aztKhPjulQ1NIIoXqHpob-yMfzPvjXgLzH7M0UHvy-Wg5wfQ6Puj8ejToAkjb-Cdj-F_-BAOP4JQSjzd5GLqPv-6Se_oCXojECb4QeCF4AefvXDs9eFi6AcbyDcpb-LkofqWwzCARkPw1hTcr0W7bREIszVtQi_ow3b9aMGXR81fHbMloGrMwG7CMOx7Iby_AsFbgpUjBDJMZESBuKcMnWvkyNDCCcNUyRllmVRleVF95EeP6LQZxkla5GV5wnAmFaGzwDzO54QOjsV0TiGJiJTRRoYR5SKeV6NfvKUqvhfqCRmey3lxn2QOCAZTZDhKRfk6MSycLBnKIn9ZleXiltDhS7a_HD95IJVTdCHjhJRh1ilaXxvZM-E9pgoabuf5sK65PupGrReGvatr7jiOH4y7kyYyHBa5Ay5nrsncehPmISZK8euTdnafdCDlXZHCdxknIBMHXKtUFUDDtd_wYu_rpcNcu9aOdYidkVQ5KeN024prHTOXH9eu6NSueJksVUSKorrBb2gJ5IlMje4WUafA3lLA988B_-0cGNaJUX91foigV0mw_s4k7DCxkQT7X0jCDjvrJJz9qSS8sSKkLJVJRnv9w9tlRCi6pVWsMlmoGV0qOavWrJ7DiqsKEWX5qstXDz9ZtUqBmzDXwqYeNrWwpYctLdzZgvlruKOF3-k321r4VA-fauEzPXymhbt6uHvQwSbL_34GAAD__yb33BI= # This query performs a cross join followed by a filter. query T @@ -405,7 +405,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8k1Fv0zAQx9_5FKeTUFfmNXXSbpOfUlimFUo70kowjWhym2NEdHGxHYmp6ndHSUdLpjVrAPEW393_fr7zP0s03-cocBwMgjcTSNIvCs7D0Xu4Dj5dDnr9IRyc9ceT8YdBEx5qXq0LpNby_sbKqb_5ull8o3vojUFyts0XARc-XgRhAAcHkrem4H_O2m2PQLqtaRN6wzMoxxtLvmo0f2XcloQiMYNuE0bhWRDC6yuQvCVZ3kJGD92L6w9HExj03wXQiBNjdTLNbKJS8bKBDFMV01DekUFxjRwZehgxXGg1I2OUzsPLoqgf_0DRZpiki8zm4YjhTGlCsUSb2DmhwImczikkGZN22sgwJiuTedF6u5yFTu6kvkeG44VMjYAjx8NoxVBldtvaWHlLKPiK_Rne_Sd4tw7-PJlb0qSdTpm9jgvw3c1r9sKwd3XNhRD94eQ02sn3dvK32CxVOiZNcYka5crnSp4Y4kKar29VkpJ2jstjjIbgdzYT-PmCR5kV4HPmu8z3mN_ZOUenzh7HSlvSzkkZ73uHzOeHG2rOYwV7J7VbovL9zcP3No_jHTndPd1b4wJenQvs6d5n8Bv3dv-De5_gh2QWKjX02MVPdm7n1qX4lta_glGZntGlVrMCsz6OCl0RiMnYddZbH_ppkSre53cxrxS7JXH7sditQXYfi71Kcaea3KkUn1aLu3-zsONK8Uk1-aTWwqLVi58BAAD__9bmcVY= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8k2Fv2j4Qxt__P8XppL8oq0twAm3lV2FtqrIx6ALSVnVRZciti0ZjZjvSKsR3n5J0sFQlLa22d_jOj3_PXR6WaH7MUeA4GAQnE0jSrwrOwtEHuAo-Xwx6_SHsnfbHk_HHQRPu77wpL0it5d21lVN__et68Z3uoDcGydmmXxRc-HQehAHs7UnemoL_JWu3PQLptqZN6A1PoVpvLPmq0fzdcVsSisYMuk0YhadBCG8vQfKWZPkTMrp_vbA_HE1g0H8fQCNOjNXJNLOJSsX_DWSYqpiG8pYMiivkyNDDiOFCqxkZo3ReXhaX-vFPFG2GSbrIbF6OGM6UJhRLtImdEwqcyOmcQpIxaaeNDGOyMpkXT2-Ws9DJrdR3yPBEzbPb1AiQDKbIcLyQ-enA8TBaMVSZ3aCMlTeEgq_Yy-y4f8WOu4uds2RuSZN2OlUvZV2A766_di8Me5dXXAjRH06Oo618byt_g81SpWPSFFeoUa586sojQ5xL8-2dSlLSzmF1jNEQ_M56Aj9f-CizAnzOfJf5HvM7W-fo7LLHsdKWtHNUxfvePvP5_pqa81jB3krtVqj8-WHiLw6T4x043WemewdD3msMPTPdT9hZp7v7D9L9CD8ks1CpoYcpf_Tldh5tim-o_KsYlekZXWg1KzDlcVToikJMxpZdrzz006JVfK8_xbxW7FbE7Ydidwey-1Ds1Yo79eROrfi4Xtx9zcIOa8VH9eSjnRYWrf77FQAA__8kRIQ- # This query performs a left inverted join with an additional filter. query T @@ -436,7 +436,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkk09v2kAQxe_9FKO5BJLlz9pAqE9LiyM5oiY1btUoRdGCN5Eb4nXXJgpCfPfKNuVPGm9A6qm9sTP85s086y0x-TlDC-1vV4Oe40Kl74z80edBFUb2wP7oA6f1UwLcqJ_ChTf8BFwpvrhN-YRtft3GD2IBvRFwAwb2hQ-O-9X2fLsPl0PH3SHupLwNo6f8rxSGLlQqnNYnwL7Pm01TZCqTKvTcPuzXT5Z0dVL93THqHPLGFNpVGHp924MP19miPF-UI8FIBsLljyJB6wYpEjRxTDBWciqSRKqsvMz_5ATPaDUJhlE8T7PymOBUKoHWEtMwnQm00OeTmfAED4RqNJFgIFIezvLR29tiFT5ytUCCo5hHiQW1honjFUE5T7ejk5TfC7Toihwu70RPQqUiuJRhJFTD2N_AX8TCKmwffvFtL_ccCf7hOpLNJPs5VlBhrY3BzFibu1PreV7v-oZaluW4fndcRYJDFxjdeL_uIMG7UCUp_JBhBGEEMQ-VCGrZM2PmqQWMEmYQZhLWLvXEOMaTzIv1F2kd68f2Sw2kfJjHxeIysoCZxZEV1nnFmo7OmkRMZRQc4EGbsE6pB-YxHoykSoVqdPbvZ-YZYfSsVKJVKrGdLFUglAjKBr-yiytrMm5094nibJOwFsmPL92pvbcTPTyN9OA0NszagWl8Q_5FGs3_Io1veLKTxvY_m8Y3PFin8fxvpfEVCU8ksYwSsSdRNrmZxVQE96KIdiLnaiqulJzmMsVzmHN5IRBJWnRp8XCiopUtuAtTLWzoYUMLm3rY1MKtPZi-hFta-L1eua2FO3q4o4XP9fC5Fu7q4e5Rho1X734FAAD__1WRJvc= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkk19v2koQxd_vpxjNSyBZ_qwNhOun5QZHcsQ1qXGrRimKFryJ3BCvuzZREOK7V7Ypf9J4A1Wf2jfvrn8zZ87oLDH5NkML7c_Xg57jQqXvjPzRh0EVRvbAvvCB0_opAW7UT-HSG_4PXCm-uEv5hG2-7uJHsYDeCLgBA_vSB8f9ZHu-3YeroePuEPdS3oXRc_4rhaELlQqn9QmwL_Nm0xRZl0kVem4f9u9PlnR1Uv3xYtQ55A9TaFdh6PVtD_67yYTyXChHgpEMhMufRILWLVIkaOKYYKzkVCSJVNn1Mv_JCV7QahIMo3ieZtdjglOpBFpLTMN0JtBCn09mwhM8EKrRRIKBSHk4y0tvZ4tV-MTVAgleyNn8KUos4AQmSHAU8-xUa5g4XhGU83TbKkn5g0CLrsjhcpzoWahUBFcyjIRqGPuK_EUsrGINw4--7eU7QII_bQHJppL9EiuosNbGcGaszd6563le7-aWWpbluH53XEWCQxcY3exi_YIE70OVpPBVhhGEEcQ8VCKoZceMmacWMEqYQZhJWLvUE-MYTzIv1htqHevHdnMDKR_ncSFcRhYwsxiywjpvWNPRWZOIqYyCAzxoE9Yp9cA8xoORVKlQjc7-_Mw8I4yelbZolbbYVpYqEEoEZYXf0OLKmowb3X2iGNskrEXy4Us1tfc00cPTSX85nQ2zdmA635HzKp3mX5HOdzzZSWf7j03nOx6s03n-u9L5RgtPJLGMErHXoqxyM4utCB5EEfVEztVUXCs5zdsUx2HO5ReBSNLilRYHJyqeMoG7MNXChh42tLCph00t3NqD6Wu4pYX_1Xdua-GOHu5o4XM9fK6Fu3q4e5Rh49U_3wMAAP__1kswaw== # This query performs a semi inverted join. query T @@ -464,7 +464,7 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUkkFP20AQhe_9FaM5QbshsZ2kkk-mxahGIaF2pFK1EdrEA3IJu-7uGhGh_Pdq7YhgGptwa2-e8X4z743eI-rfS_QxvLwYHUdjODiJkmnydXQISTgKP0-Bu0fv4TSenANXiq-uDJ8HT19X-S2t4DgB7sK3L2EcQnhpeTjY0H-h11JeZeK-ZJwNw52jOQQ_i17PI7tvfgiT-CSM4dN3W3JkKGRKY35HGv0f6CBDD2cMcyUXpLVUtv1YPorSB_R7DDORF8a2ZwwXUhH6j2gysyT0ccrnS4qJp6S6PWSYkuHZshy9FZqr7I6rFTJMci60D52uh7M1Q1mY7Wht-A2h76zZ_usjcU_KUHomM0Gq6zYp2JwK2RMRPuQKgv7TrQLLXmdKG_glMwGZgJxnitKOLZHhpDA-BA4LXBZ4LBg0GnDfYsAK35yvXxc_XeXkwyg8nUISnkdwNonGyHZedSTlbZFXuqXwIfCs3jEEw7o9TQsp0v389Rv9eY3-trakSklRWncUOB9wtt5xhLHsyLw7rL_e6mlU0q8pcfZPqrN3UrteZ8-kvrL-RVK9fy-prxh4ltTBf5_UHf5i0rkUmmremib3bIwpvaEq9loWakEXSi7KNVU5KbmykZI21V-nKiJR_bICn8NOK-y2w24r7NVg5yXstcIf2zf3W-FBOzxohYft8PBNnmfrd38CAAD__0Ahdgk= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk0Fv2kAQhe_9FaM5Je0SsA1U8slp4qiOCKQ2UlO1KFrwJHIDu-6uHQUh_nu1NoI4xQ7pqb15ZvfbeW_0vEL9a44u-jfXg9NgCEfnQTSOvgyOIfIH_tkYuH3yHi7C0RVwpfjyNuNTb_t1mz7QEk4j4DZ8_eyHPvg3hoejDf0HeiflbSIeC8baMNw6mYL3I-90HDLzpscwCs_9ED59MyVHhkLGNOQL0uh-RwsZOjhhmCo5I62lMu1VcSmIn9DtMExEmmemPWE4k4rQXWGWZHNCF8d8OqeQeEyq3UGGMWU8mRdP74SmKllwtUSGZ3KeL4R2gTOYIsMo5aZqtR2crBnKPNuN0hm_J3StNTtcTiAeSWUUX8pEkGrbdYo2q0O2JfynVIHX3e7OM-xdonQGP2UiIBGQ8kRR3DIlMhzlmQuexTybeQ7zerUG7LcYMMI36-xWxY-XKbkw8C_GEPlXAVyOgiGyvVseSPmQp6VuKVzwHKN3CF6_ak_TTIr4MH_dWn9Orb-dLaliUhRXHXnWB5ys9yxhKFsybfert3d6apV0K0qsw5Nr_XVy207rwOS-IudFcp1_L7mvGHiW3N5_n9w9_kLSqRSaKt7qXu6YWFN8T-VvoGWuZnSt5KwYU5ajgisaMemsPLXKIhDlkRH4HLYaYbsZththpwJbL2GnEf7YPLnbCPea4V4j3G-G-2_yPFm_-x0AAP__pSl_fQ== # This query performs an anti inverted join. query T @@ -492,4 +492,4 @@ vectorized: true table: array_tab@array_tab_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk0Fvm04Qxe__TzGaU_LvOjZguxIn3IaoRC6kmKqpWstam0lE4-zSXYhiWf7uFWDZIQ7EOebG7O6beb_RY4367xJtdK-vxiPPh5NzbxJNvo1PYeKO3c8RcPPsf7gIg6_AleKrWcbnzu5rlt7RCkYT4Cb8-OKGLvhBBO510QNOth0O5DdSzhLxUOqMrY4bZ3Nwfue9nkXFzPkpBOG5G8Knn0XJkaGQMfn8njTav9BAhhZOGaZKLkhrqYrjdfnIix_R7jFMRJpnxfGU4UIqQnuNWZItCW2M-HxJIfGYVLeHDGPKeLIsW--Npiq552qFDCcpF9qGTtfC6YahzLN9a53xW0Lb2LDjx3vigVRG8aVMBKmuWXcQrVKyYexeRBB8j9wQLgPPR4YHK0S26-Q-pgqc_m6HTtHzJlE6gz8yEZAISHmiKO4UJTIM8swGx2COyRyLOYNGMPMtYAXQdq39RqiRH3mHTPttj6W8y9PKtxQ2OFbh1wdnWMfTtJAiPo6v38hnNfLtsaSKSVFcJ3KMDzjdvLAEX3Zk2h3WX-_9NDrp15wYxyfYODrBXatzZIJfGf8swdb7SfArYE8SPHj3CX6BLySdSqGpxtbUuVfEm-Jbqn4HLXO1oCslF-WYqgxKXXkQk86qW6MqPFFdFQafio1WsdkuNlvFVk1sPBdbreKP7ZP7reJBu3jQKh62i4dvYp5u_vsXAAD__1tvhEI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzUk0FP204Qxe__TzGaE_y7IbGdpJJPpmBUo9SmjqtStRHaxANyCbvuro2IUL57tTYimGATeuPm2d03836j53vUf5boon9-NjkMQtg7DqbJ9OtkH6b-xD9KgNsH_8NJHH0BrhRfXRR87j1-XeTXtILDKXAbvn_2Yx_CKAH_3PSAvYcOW_JLKS8ycVvprAcdtw7m4P0qBwOHzMz5PkTxsR_Dpx-m5MhQyJRCfkMa3Z9oIUMHZwxzJRektVTm-L56FKR36A4YZiIvC3M8Y7iQitC9xyIrloQuJny-pJh4Sqo_QIYpFTxbVq03RnOV3XC1QoZHclneCO0CZzBHhtOcm6rXd3C2ZijLYjNKF_yK0LXWbHc7gbglVVB6KjNBqm83HSWrnFyY-CcJRN8SP4bTKAiR4dZKkT128u9yBd7wcaee6XmZKV3Ab5kJyATkPFOU9kyJDKOycMGzmGczz2HeqBXMfguYAXpY87AV6jBMgm2mzfYnUl6Xee1bChc8x_gNwRs38TQtpEh34xu28jmtfBssqVJSlDaJPOsDztYvLCGUPZn3x83XGz-tToYNJ9buibb-OdF9p7djol-x8yzRzvtJ9CtgTxI9eveJfoEvJp1LoanB1tZ5YOJO6RXVv4eWpVrQmZKLakxdRpWuOkhJF_WtVReBqK-Mwadiq1Nsd4vtTrHTEFvPxU6n-GP35GGneNQtHnWKx93i8ZuYZ-v__gYAAP__oEWNtg== diff --git a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_multi_column_dist b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_multi_column_dist index 37c9c74c2d86..f4cf695d9ef6 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_multi_column_dist +++ b/pkg/sql/opt/exec/execbuilder/testdata/inverted_join_multi_column_dist @@ -115,7 +115,7 @@ vectorized: true └── • values size: 1 column, 2 rows · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk11vmzAUhu_3K47OVbJ6DRhIJa7cLkzNlCUdifahDU0sHLWQ1GY2TJmi_PcJ0jVNVti4tH0evw_wskXzY40-Bp9uJpfjKfRG4_li_n7Sh3kwCV4v4CW8CWfvIOMizb6lyYZBZsPH6yAMoJdCRXAGTr8Pl9MR9DJ-noH4WlqWQ5DZ51kfZuEoCOHqc7VcMcj4-QoZSpXQNL4ng_4XtDFimGu1JGOUrra29cA42aBvMUxlXhbVdsRwqTShv8UiLdaEPi7i72sKKU5IDyxkmFARp-v62swWuU7vY_0LGc7zWBofXmG0Y6jK4nCjKeJbQt_esf9P_RCvSzID-zjQhSvocVjelXJl-o1JVmPSIaCUSiekKTlKiCryXyPP6F7H5u6tSiXpAT9WnpWFD8JmgjPhNBrzLu9mLH-SLih5CHROPsqfIiF7nAw2uQYxfCyOqCSfmrlMeI1yThe5SuqhLe5fYoe2TJRalTlkKpWgpA-ieorZFMTFc5IeE0MmLlht2-jpdvGcK12QHnjHjsI9Y8I-a4zwukSEZHIlDZ02rKGzEUNKbmlfU6NKvaQbrZZ1zH45q7l6IyFT7E_5fjGW9VH9kz2F7Q4wP4V5K-wcwdYp7LTCbjvstsJeO-y1wsMTONq9-B0AAP__FQvMtw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk91um0wQhs-_qxjNkf1lG8MCicTRJjFVXLl2iq3-qEUVNaMEjHfpLlSuLN97BU7j2A20Ppzdefw-hpcNmu85-hh8vBtfjSbQG45m89m7cR9mwTi4mcP_8DqcvoWMizT7miZrBpkNH26DMIBeCjXBGTj9PlxNhtDL-HkG4ktlWQ5BZp9nfZiGwyCE60_1uGSQ8fMlMpQqoUm8IoP-Z7QxYlhotSBjlK6PNs3CKFmjbzFMZVGV9XHEcKE0ob_BMi1zQh_n8becQooT0gMLGSZUxmne_Gxmi0Knq1j_RIY3Kq9W0vhQOyDDWRHX0yuMtgxVVe4TTBnfE_r2lv27xfs4r8gM7EMBF66hx2HxUMml6bcmWa1J-4BKKp2QpuQgIarJv628oHsbm4c3KpWkB_xQeVqVPgibCc6E02rMT3k2I_mDdEnJY6Bz9JJ-FwvZ02awLjSIi6ciiVryuZnLhNcq55wiV0s9tsf9Q2zfnrFSy6qATKUSlPRB1P9iOgFx-ZKkx8QFE5essW31dE_xnCldkh54h47CPWPCPmuN8E6JCMkUSho6blhLZyOGlNzTrqZGVXpBd1otmpjdOG245iAhU-5u-W4Yyeaq-ciew_YJMD-GeSfsHMDWMex0wm437HbCXjfsdcIXR3C0_e9XAAAA__87tdGD statement ok CREATE TABLE a1 ( @@ -195,4 +195,4 @@ vectorized: true └── • values size: 1 column, 2 rows · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk11v2jAUhu_3K47OFaweJE5CpVy5HZnKxKALaB_aoskjR20GtTM7mZgQ_31K6EphTVYubZ_H75PkzQbtzxWGGH26Hl-MJtAZjmbz2ftxF2bROHo9h5fwJp6-A8lFJr9l6ZqBdOHjVRRH0MmgIjgDr9uFi8kQOpL3JIivpeN4BNLtyS5M42EUw-XnarlkIHlviQyVTmki78hi-AVdTBjmRi_IWm2qrU09MErXGDoMM5WXRbWdMFxoQxhusMiKFWGIc_l9RTHJlEzfQYYpFTJb1ddKV-Qmu5PmNzKc5VLZEF5hsmWoy2J_oy3kDWHobtnzUz_IVUm27x4G-nAJHQ6L21ItbbcxyWlM2geUSpuUDKUHCUlF_m_kCd0raW_f6kyR6fND5WlZhCBcJjgTXqMxP-XdjNQvMgWl94He0Uf5WyRkD5PROjcgBg_FEZXkYzOfiaBRzjtFrpK6b4v_j9i-LWOtl2UOP3SmQKsQRPUU0wmI86ckAyYGTJyz2rbR0z_Fc6ZNQaYfHDoK_4wJ96wxIjglIiaba2XpuGENnU0YUnpDu5paXZoFXRu9qGN2y2nN1Rsp2WJ3yneLkaqP6p_sMeyeAPNjmLfC3gHsHMNeK-y3w34rHLTDQSs8OIKT7Ys_AQAA___oWMxC +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUk11v2jAUhu_3K47OFaxeSZyklXLlfmQqE4MuoH1oiyaPHLUZwc7sZGJC_PcpoSuFNdm4PPZ5eB-SN2u0P3IMMfp4O7oYjqF3PZzOpu9GfZhGo-hqBi_hdTx5C5KLTH7N0hUD6cKHmyiOoJdBTXAGXr8PF-Nr6El-KkF8qRzHI5DuqezDJL6OYrj8VI8LBpKfLpCh0imN5ZIshp_RxYRhYfScrNWmPlo3C8N0haHDMFNFVdbHCcO5NoThGsuszAlDnMlvOcUkUzIDBxmmVMosb35WuqIw2VKaX8jwSufVUtkQagdkOC1kPb3CZMNQV-UuwZbyjjB0N-z_Ld7LvCI7cPcFfLiEHof5faUWtt-a5LQm7QIqpU1KhtK9hKQm_7XyjO6NtPdvdKbIDPi-8qQqQxAuE5wJr9WYH_NshuonmZLSh0Dv4CX9KRayx81oVRgQZ49FErXkUzOfiaBVzjtGrpZ6aI__l9iuPSOtF1UB33WmQKsQRP0vJmMQ589JBkycMXHOGttWT_8Yz6k2JZlBsO8o_BMm3JPWiOCYiJhsoZWlw4a1dDZhSOkdbWtqdWXmdGv0vInZjpOGaw5SsuX2lm-HoWqumo_sKeweAfNDmHfC3h7sHMJeJ-x3w34nHHTDQSd8dgAnmxe_AwAA___eotEF diff --git a/pkg/sql/opt/exec/execbuilder/testdata/lookup_join b/pkg/sql/opt/exec/execbuilder/testdata/lookup_join index 45057ee9ea6c..31b233318fc7 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/lookup_join +++ b/pkg/sql/opt/exec/execbuilder/testdata/lookup_join @@ -236,7 +236,7 @@ vectorized: true table: data@data_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElV-P0kwYxe_fT_Hkudp9M007_bMLk5iUKBvZYFkBo4lyUelkrXY7ddomGsJ3N22VpQRmKhC8nOmcnvPM7ySzwvx7ggyHHx7Gg1EAV69Gs_ns7fgaZsPx8OUc_oe76eQNXLWXUViE8P71cDqEJbwAeg2DGSQQDObvpoMx3E-qXykkn0rLcjhYtU4iwVREPAifeI7sI1IkaCNBBwm6SNDDBcFMiiXPcyGrI6taMIp-ILMIxmlWFtX2guBSSI5shUVcJBwZzsPPCZ_yMOLStJBgxIswTmqbKpGfyfgplD-R4CwL05yBYVII0wgoiOILl7hYExRl8eyQF-EjR0bXpHuKuzgpuOTS9NoRmn0GvlPdImNsFMx7By3tv7G8F3H6e26qHnwsxLcyg68iTkGkDHxKfJv4DvGry58E4N9ugP2JSHBSFu2jh1I7B1M_hy1TISMuedQKuljvmSsQhshM6u2c3O_ttrxp96rQLlUxqWHaR5RFk2NTlpvzlUVjuV0W9egXLYvdHZjdCZhtmM4RwDQ5NsBuzwdMY7kNTD36RYE53YE5nYA5hukeAUyTYwOsdz5gGsttYOrRLwrM7Q7M7QTMNUzvCGCaHBtg_fMB01huA1OP_s_ezz2ppzzPRJrzTq-jVb2vPHrkzWOci1Iu-YMUy9qmWU5qXb0R8bxovtJmMUqbT1XAbTFVim212FaKnZaY7ooddewbtbWrVHtqsacUa5xvThn6VinuqZ17SnFfLe6fEptqOqYrmbplVFMzelLPqKZorsZc3TSqqRpVd203-2L9368AAAD__3AfaVA= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElV9vmzwYxe_fT_HouWpfGYH506aWJhF1qZYqI12SaZO2XFCwOjaKmQFpU5XvPgFbGqrWZiHKLm18OMfP70h-wOJ7igwnH29m42kAJ6-ny9Xy3ewUlpPZ5HIF_8PVYv4WTrrLOCxD-PBmsphABK-AnsJ4CSkE49X7xXgG1_P6VwrJ58qyHA5Wo5NIMBMxD8J7XiD7hBQJ2kjQQYIuEvRwTTCXIuJFIWR95KERTOMfyCyCSZZXZb29JhgJyZE9YJmUKUeGq_A25QsexlyaFhKMeRkmaWNTJ_JzmdyH8icSvBRpdZ8VDEICtwQiAjESXOZhvWeYFMIsBgqi_MIlrjcERVU--hZleMeR0Q3pn-0qSUsuuTS9brB2n4Hv1LNljE2D1ehFS_tvLK9Fkv2eBlWPYybEtyqHryLJQGQMfEp8m_gO8Wsk8wD88y3GPxEJzquye_Sl1M6LqR_DVpmQMZc87gRdb565VyAMkZvUe3LyeW-34037F4juXyCTGqa9R4U06bYVOjtchTSWuxVSD-SoFbL7Y7QHYLQN09kDoybdFuP54TBqLHcxqgdyVIxOf4zOAIyOYbp7YNSk22IcHQ6jxnIXo3ogR8Xo9sfoDsDoGqa3B0ZNui3Gi8Nh1FjuYlQP5J-9y8-kXvAiF1nBe726Vv1u8_iOt498ISoZ8RsposamXc4bXbMR86Jsv9J2Mc3aT3XAXTFVim212FaKnY6YPhU76thnamtXqfbUYk8p1jifDbn0uVI8UjuPlOILtfhiSGyq6ZiuZOqWUU3N6KCeUU3RXI25umlUUzWq7trT7OvNf78CAAD__-FRh80= statement ok CREATE TABLE books (title STRING, edition INT, shelf INT, PRIMARY KEY (title, edition)) @@ -383,7 +383,7 @@ vectorized: true table: authors@authors_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyck1Fv2jAQx9_3KW73lEheIU7opEiVggpTmRh0gLRJEw8JuULWYGe2I21CfPcpDl0bBOnoW86-3__-d77sUP_KMcTh9_txfzQBZzCaL-Zfxy7Mh-Ph7QKqeDS5XUBcmo1U-krEW4JPs-kXSKR81NCfQ-KxOuA24uwpGb7dDWdDcJzEuzKZyQluIOH1pwv9yQCcJ9mKr24Pie7hOvGu9IbyB3hvSfvtIkMhU5rEW9IY_kAPlwwLJVektVTV0c4mjNLfGHYZZqIoTXW8ZLiSijDcoa2CIS7iJKcZxSmpThcZpmTiLLeytqWoUNk2Vn-Q4byIhQ7hAzKcliaEyGORj8s9Q1ma5wraxGvC0Nuzt7nwmi4OA3rFBz_rg5_18Vy-FFKlpChtlF5W5GspJ5q5i_Xms8wEqQ5v9pLTg3Eiz71R2XpjnIi7jR5Y5LMoONuJf8lEKwOHgfonnpW_mOdYyseygJ8yEyBFCFFQuZpAxKutiz7-83j-sYNLrA0ybTKxMp2gaSzyzur33qTf-2_960v0Z6QLKTQdL8tJ5W61IZSuqd44LUu1onslV7ZMHU4tZw9S0qa-5XUwEvbK_k0vYe8CmB_DvBX2G3D3GPZb4aAdDlrhXjvca4Wvj-Dl_t3fAAAA___-ZuVx +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyck99v2jAQx9_3V9zuKUheS5zQSZEqBQFTmRh0gLRJEw8JuULWYGe2I21C_O-THboWBFnpW-7H5_y9H9mi_lVghIPv96PucAxefzibz76OWjAbjAa9OVh7OO7NIanMWip9JZINwafp5AukUj5q6M4g9VltcGdx9pQM3-4G0wF4XupfmdwUBLeQ8vqzBd1xH7ynspa30X1iax9O_Su9puIB3jvSfbeQoZAZjZMNaYx-oI8LhqWSS9JaKuvauoRh9hujNsNclJWx7gXDpVSE0RbdKxjhPEkLmlKSkbpuI8OMTJIXrqxrKS5VvknUH2TYk0W1EToCxzJwYpDhrEys9wMudgxlZZ4f0yZZEUb-jr1NkH8oaD-rU5LsVuolvEYQPyvoWUclpMpIUXagYWHJ_6Wc6Oou0evPMhekrvlhUwU9GC_2W7cqX62NF3O73kllIoh9FnMWBywOz3YSXDJaK2A_2eDEqvmLwY6kfKxK-ClzAVJEEIdW1Rhibi8x_vhPY3BWWniJtH6uTS6W5jo8FBb7Z-t33lS_8-r6N5fUn5IupdB0fCwnK7fthVC2ovritKzUku6VXLpnanPiOOfISJs6ymtjKFzI_VYvYf8CmB_DvBEODuD2MRw0wmEzHDbCnWa40wjfHMGL3bu_AQAA__-GCO68 query T EXPLAIN (VERBOSE) SELECT a.name FROM authors AS a JOIN books2 AS b2 ON a.book = b2.title ORDER BY a.name @@ -457,7 +457,7 @@ vectorized: true table: authors@authors_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUkVFr1EAQx9_9FMM8qUzbS05FFgorGjHlTGruQEHysL0d6trrTtzdgHLcd5ckPWyFHr23zH_y-8-PZIvx1wYVFt8uF-_KCp5_KJer5ZfFC1gWi-L9Cl7Cx6b-DKZPPyREKKuqaOCiLiu4ErmJOdT7p1O2LjnxcA4ZfP1UNMV-kVzaMJzvS06HGAm9WK7MLUdU3zHDlrALsuYYJQzRdnyhtL9RzQid7_o0xC3hWgKj2uLYiwpX5mrDDRvL4WyGhJaTcZux9u6k7oK7NeEPEi4746OCEyRs2FsOCjKlVFmt3hLojEDn2O4IpU__LsZkrhlVtqOnW12I83dS2UOp6bPcc1qI3PQd_BTnQbwCPSc9MHWfFOichvkV6dek3zzqlh_jVsmJdGf5A63HiufHFDccO_GRn9Q827WEbK95-t1R-rDmyyDr8cw01iM3BpZjmrbZNJR-Wg2C9-HsIJwfhvOD8Pw_uN09-xsAAP__HEsNaA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUklFr1EAQx9_9FMM8qUzbS05FFgqRGjHlTGruQEHysL0d6trcTtzdgHLcd5ckd9gWerRvmf_k958fIVsMv1tUmH-_WnwoSnj5sViull8Xr2CZL_KLFbyGT3X1BXQff4oPUJRlXsNlVZRwLXIbUqgOT6dsbLTi4BwS-PY5r_PDItrYMpwfSk6HGAmdGC71hgOqH5hgQ9h5WXMI4odoO75QmD-oZoTWdX0c4oZwLZ5RbXHsRYUrfd1yzdqwP5shoeGobTvW7k9mnbcb7f8i4YW0_cYFBU5vmGDvsuz0kJ0gYc3OsFeQKKWKcvWeIEsIshSbHaH08b9HiPqGUSU7errrpVi3V03uq04f647pQuS27-CXWAfiFGRzygam6qOCLKVhfkPZW8rePeqWPsetlBPpztJ7Wo8Vz59TXHPoxAV-UvNs1xCyueHpJwjS-zVfeVmPZ6axGrkxMBzitE2moXDTahC8CydH4fQ4nB6F5w_gZvfiXwAAAP__9_0Uqw== #################################### # LOOKUP JOIN ON SECONDARY INDEX # @@ -623,7 +623,7 @@ vectorized: true table: small@small_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlVFr2z4Uxd__n-Jy4Q8JU-rIdtJUUEi3uuCS2Z3jwcbIgxqLzptrebICKyXffVguq1MW2-CXvMVSjs45vyvQM5a_MmTofblbXfkBjK79dbz-tBrD2lt5H2LQ9IwT0PbZPdxE4UcoH3mWwdUaNIWVdxPDbegHkHH1IMyqDWEAo0oFl5WMj-EquIbRyBzxP8zHcAnTMYTRtRfB-6_GAAnmMhEBfxQlsm9IkaCNBB0k6CLBGW4IFkpuRVlKVf3l2Qj85DeyKcE0L3a6Wt4Q3EolkD2jTnUmkGHM7zMRCZ4IZU2RYCI0TzNjY7osC5U-cvWEBNcFz0sGE4sCzxOgIPV3oZBguNMMlhQ3e4Jyp1_NSs0fBDK6J_0D3co0f8kzO8wTPxWC1VTDz7EXGbZI0NBt5FxJ-XNXwA-Z5iBzk4xghX3pVIQZY34QLwzol9-vHcjSJkvnaBP7aJPXAlIlQonkMPuSvsPN_h91AzmRhUXfoP-b5ngU5yAK7T9l2mvKFp1Y9qA5d0RqzHl-4nO2-8O1-8G1J5YzCG5HpAbc8xOH6_SH6_SD60wsdxDcjkgNuIsTh-v2h-v2g-tOrNkguB2RGnAvThxux0MWibKQeSkOWhw7eVq9DSJ5EPVbUsqd2oo7JbfGpv4Mjc4sJKLU9S6tP_y83qoCNsW0VWwfiOlbsd3u3GHttKrddrE7JPesVTxvd54PcT5vFS_anRdDnC_aZzXtuCbtl-yt92b_358AAAD__1JDeNY= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlV9r2zwUxu_fT3E48ELClDqynTQVFNK1KaRkTpd4sDFyocai8-ZYnizDSsl3H5LL6pTFzpyb3Onfo-c5vyPQM-Y_E2Q4-Xw_u5oG0LmZLsPlx1kXlpPZ5DoETc84Ae2ePcDtYv4B8g1PErhagqYwm9yGcDefBpBw9SjsqgvzADpGBZdGxrtwFdxAp2Ov-B-GXbiEfhfmi5vJAt5_sQZIMJWRCPhG5Mi-IkWCLhL0kKCPBAe4IpgpuRZ5LpU58mwF0-gXsj7BOM0KbZZXBNdSCWTPqGOdCGQY8odELASPhHL6SDASmseJtbG1jDMVb7h6QoLXMik2ac7ABFpm3Ax7DgWeRkBB6m9C4WpLUBb61S_X_FEgo1tyeKY7GacvkQa7kcKnTLAS7PxTOFlYvEjQAq5EnUn5o8jgu4xTkCmDsUFmyI89A5kxNg3CkWX9Mjb7hTYnydglY29vJe7eSl4LkCoSSkS72cf0Ha62fyk3kD2ZOfQN_T9p9kfxdqLQwxtN_73RDu05botWN6SqtHp44q12D-frtuDr9hyvBd-GVBW-5yfO1zucr9eCr9dz_BZ8G1JV-I5OnK9_OF-_BV-_5wxa8G1IVeF7ceJ8Gz61hcgzmeZip4p9N_fNPyGiR1H-K7ks1FrcK7m2NuV0bnV2IRK5LndpOZmm5ZYJWBXTWrG7I6ZvxW69c4O1V6v268X-MbkHteJhvfPwGOfzWvGo3nl0jPNFfa_6Dc-k_pG99V5t__sdAAD__3h7gNM= # Left join against covering secondary index query T @@ -1128,7 +1128,7 @@ vectorized: true table: small@small_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlFFvmzwUhu-_X3F0rlp9psRA0hRpUraValRp0pFI6zTlwg1Wx0Ywsx1pVZT_PgGdSqrWWOIiu8ScV-_Dc5B3qH7lGGJ0dzt9H8_g5DJeLBefp6ewiKbRxyUwAvdwlcxvQG1YnsOXT1ESQXRXjcHJ36FmImWaPQ3Uw2cM3tWHZ-wU5slllMCHr8CQYCFSPmMbrjD8hhQJekjQR4IBEhziimApxZorJWQ1sqsDcfobwwHBrCi3ujpeEVwLyTHcoc50zjHEJbvPecJZyqU7QIIp1yzL65oaaVLKbMPkIxJclKxQITguBVakQEHo71wiwflWhzChZOLhak9QbPVzn9LsgWNI98Se6VpkxRPS8BBp-VjyEKbR1RIW0U0M1_N4Vk0wzVqgUyF-bkv4IbICRFGh2UF6b0I-swmZcsnTQ6wJ_R9X-1e-ZCYcUbr0UOxb9f5BPbXfG7Xam0sd1-u7uQ6q1uZGx9ucZ6_Os1PnOa7fV10HVUvd-fHU-fbqfDt1vuMGfdV1ULXUjY-nLrBXF9ipCxx32FddB1VL3cW_cdW-AplwVYpCcatbdFDdwzx94M29rcRWrvmtFOu6pnmc17n6IOVKN29p8xAXzasKsB2mxrB3EKYvw565uaPaN6YDczjowz00hkfm5lGf5nNjeGxuHvdpvjDvatDxm5h_spfdq_1_fwIAAP__leZNdA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMlFFvmzAUhd_3K67uU6uZEgNJU6RJ2VqqUaVJRyKt05QHN1gdG8HMNtKqKP99AjoVqgYQecjesDlH5_BddLeofsfoond_N_3oz-Dkyl8sF1-mp7Dwpt7lEhiBB7gO5regNiyO4etnL_DAu89lcPJPVCpCptmzoBCfMfhQXJ6xU5gHV14An74BQ4KJCPmMbbhC9ztSJGghQRsJOkhwiCuCqRRrrpSQuWRbGPzwD7oDglGSZjq_XhFcC8nR3aKOdMzRxSV7iHnAWcilOUCCIdcsiouYotIkldGGySckeCnibJMot_hEJLhIWX4yTAosCYGC0D-4xNWOoMj0S6TS7JGjS3eke60bESXPrYb1VsunlLsw9a6XsPBufbiZ-7NcwTSrdJ0K8StL4aeIEhCJC5Oc2TzT-ROZWHtLWntLvnQTMuSSh_VaE_oeV7s3vmQmDJGatM52X7xdi6fdR0d7jc6khmn1GF5LscrwRscbntWdntWPnmWYdg96LcUq9M6PR8_uTs_uR882TKcHvZZiFXrj49FzutNz-tFzDHPYg15LsQq9i_9j7b5RMuAqFYninTbqIN_JPHzk5Q5XIpNrfifFuogpj_PCV1yEXOnyLS0PflK-ygtWzbTRbNXM9LXZak5uibYb3U6z2Tmk97DRPGpOHh2SfN5oHjcnjw9Jvmie1aDlN2n-yV5nr3bv_gYAAP__N5hVwQ== query T EXPLAIN (DISTSQL) @@ -1152,7 +1152,7 @@ vectorized: true table: small@small_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll9vmzAUxd_3Ka7uE1GcEvOnTZEm0a1Uo0pJl0Rapy0PTrA6NooZEGlVle8-AW1KqsVmQpHymAuHc3x_R4qfMP8do4Pe3e34wg9Au_Rn89nncQ9m3tj7OAdGYAlX08kN5A8sjuHLJ2_qgaYx6MOyB9_Xw6G5AmPYg4vgEry7Ug7ai7hWhqxgL8LqKycM3lfTE1brtOf5Evr1fPX8aQ7U7vVgMr30pvDhKzAkmIiQB-yB5-h8Q4oEDSRoIkELCdq4IJhmYsXzXGTlK0-VwA__oDMkGCXpuijHC4IrkXF0nrCIipijg3O2jPmUs5Bn-hAJhrxgUVzZVPHcNIseWPaIBGcpS3IHBjoFloRAQRQ_eIYEJ-vCAZcS18DFhqBYF69-ecHuOTp0Q9pnuorigmc80-3dQPXcAc2l0AfXaKBwHMcP5qO9_sb_-F-LKHleCX2zk_ljyh0Ye1dzmHk3PlxP_KB8gxWssamxEL_WKfwUUQIiKXdTbikAzTXK4HYD9EvwVls0957iNbzIQp7xcDe2S_u42PzjqIEYiFSnu4veZ2_t2NP2xaKtiqXTgW50rZYi1bZapweqlsK_WS16vNUy2rM12rE1BrrZla0i1Zbt2YHYKvybbI3jZWu2Z2u2Y2sOdKsrW0WqLdvRgdgq_JtszeNla7Vna7Vjaw10uytbRaot2_MDsVX4N9lax8tWcWmZ8jwVSc5b_ZMPy7sAD-95fXfIxTpb8dtMrCqb-uek0lWDkOdF_ZTWP_ykflQGbIqpVGzIxYZUbO6I6VuxKY99Kre2pGpbLralYoXzaZdDn0nFI7nzSCo-l4vPu8Smio6pSiZvGVXUjHbqGVUUzVKYy5tGFVWj8q69zb7YvPsbAAD__4PTrR8= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzMll1v2j4Yxe__n-LRcwXCNDgvLY30l9K1qZaKhg6Q1mnjwhCryxbiLC_SqorvPiVpaaiGzVIhcekHn5xj_46EnzD7FaGN7v3d6MLzoXPlTWfTT6MuTN2RezkDRmAB15PxLWQrFkXw-aM7caHTYdCDRRe-FYOBsQR90IUL_wrc-1IOnRdxrQxYzl6E1VdOGPxfTU9Yres8zxfQq-fL509zoFa3C-PJlTuBD1-AIcFYBNxnK56h_RUpEtSRoIEETSRo4ZxgkoolzzKRllueKoEX_EZ7QDCMkyIvx3OCS5FytJ8wD_OIo40ztoj4hLOAp9oACQY8Z2FU2VTxnCQNVyx9RIKXIipWcWZX94MEpwkrV32NAosDoCDy7zzF-ZqgKPJXyyxnDxxtuib7x7oOo5ynPNWs7Uz13IaOQ6EHjt6gYdu258-GO_31f_G_EWH8fCv0zbXMHhNuw8i9nsHUvfXgZuz55Q6Ws8ZljYT4WSTwQ4QxiNgGp4Q29qHj6GVwq8H6JTjBcZGXO4mj7zyFsfMUr-FFGvCUB9uxHdrD-fovR_VFXyQa3b7oXfbmlj3dv1u0Vbc02tf0Fu1SBNu06_RA7VL4N9tFj7dd-v549XZ49b5mtMCrCLbBe3YgvAr_Jl79ePEa--M12uE1-prZAq8i2Abv8EB4Ff5NvMbx4jX3x2u2w2v2NasFXkWwDd7zA-FV-DfxmseLV_GAmfAsEXHG9_pXH5TvAh488PodkYkiXfK7VCwrm3o5rnTVIOBZXv9K64UX1z-VAZtiKhXrcrEuFRtbYvpWbMhjn8qtTanakostqVjhfPqeQ59JxUO581AqPpeLz98Tmyo6piqZvGVUUTP6rp5RRdFMhbm8aVRRNSrv2tvs8_V_fwIAAP__RQG1bA== # Regression test for #40562. diff --git a/pkg/sql/opt/exec/execbuilder/testdata/merge_join_dist_vec b/pkg/sql/opt/exec/execbuilder/testdata/merge_join_dist_vec index d945f4227765..2bc515e49ebe 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/merge_join_dist_vec +++ b/pkg/sql/opt/exec/execbuilder/testdata/merge_join_dist_vec @@ -63,7 +63,7 @@ vectorized: true table: r@r_pkey spans: [/2 - /2] · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEk9GPk0AQxt_9Kybz1OoaWIovJJdglFMuPTiBiyaGh70ytiQci7tLYtP0fzeASQV7tY1R39jd-X0z3zdhh_prhR4Gn-6Wr8MIZm_DNEs_LOeQBsvgTQbP4TqJb6GCZXCdwU0cRqDgPg2jdzATc_j4PkgCEHAFDjKsZUGReCSN3mfkyNDBnGGj5Iq0lqq73vVFYfENPZthWTet6a5zhiupCL0dmtJUhB5m4qGihERByuq0CjKirHpp5TeqfBRqiwzTRtTaA8uxbMz3DGVrfmgepB62sBF6MxbxOeb7nKE2Yk3oOXv2xGwHnbaWqiBFxUgp78jflRwxeEtqTTeyrElZi_Fs2bYhb4g8vs-CpA8eGVb0xcx8_mJ-pcr1ZvhEhnFrPPA58x3mu5MUDg4Xf-DwyPiRfCkby51GcbS1O2rNz1-8Pc6l-guL50_O9i8W7_zXxR8ZLiHdyFrTWXu1O3tUrGmIS8tWrehOyVXfZjjGPdcnW5A2w6s7HMK6f-r_vfNhfhrmU9j-GXZGMJ_Czkn41Qi2p_DiAs-_dD4N89Owe5HnfP_sewAAAP__ZsHuOw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzEk1GLm0AQx9_7KYZ5StotcY19EQ4sV6_1yOlVPVooPmziNBGMa3dXaAj57kUtpNpcmqNw9-bs7u8_858Z96h_lOii__V-8T4IYfIhSNLk82IKib_wr1N4DTdxdAclLPybFG6jIAQFD0kQfoSJmMKXT37sg4ArsJFhJXMKxZY0ut-QI0MbM4a1kivSWqr2eN89CvKf6FoMi6puTHucMVxJReju0RSmJHQxFcuSYhI5qVmrlZMRRdlJK69WxVaoHTK8lmWzrbQLgsESGSa1aKOZPbMwOzCUjfmd4yi93MFG6M1Q1OOYHTKG2og1oWsf2CO1HnWaSqqcFOUDpawl__XkhOE7Umu6lUVFajYf1pbuanL7EUQPqR93g0CGJX03E4-_mV6pYr3pP5Fh1BgXPM48m3nOqAtHh_P_cHii_FC-lfXMGbfiZGpnkJpfvgjWsC_lMywCf7TW51gE-0UX4URxMelaVpoumrPV2qN8TX27tGzUiu6VXHVp-jDquK6zOWnT3zp9EFTdVfcvXg7z8zAfw9afsD2A-Ri2z8LvBrA1hudP8PxX5vMwPw87T_KcHV79CgAA__9mp_ev # Test that we can handle merge joins with equality columns of integers with # different widths. diff --git a/pkg/sql/opt/exec/execbuilder/testdata/select_index b/pkg/sql/opt/exec/execbuilder/testdata/select_index index 7764cfaa8626..9b66e76e8c90 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/select_index +++ b/pkg/sql/opt/exec/execbuilder/testdata/select_index @@ -1318,7 +1318,7 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /noncover/b/?/1 -> +fetched: /noncover/b/2/1 -> fetched: /noncover/noncover_pkey/1 -> fetched: /noncover/noncover_pkey/1/b -> 2 fetched: /noncover/noncover_pkey/1/c -> 3 @@ -1355,7 +1355,7 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /noncover/c/? -> /5 +fetched: /noncover/c/7 -> /5 fetched: /noncover/noncover_pkey/5 -> fetched: /noncover/noncover_pkey/5/b -> 6 fetched: /noncover/noncover_pkey/5/c -> 7 @@ -1635,8 +1635,8 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /t2/bc/?/?/4 -> -fetched: /t2/bc/?/?/6 -> +fetched: /t2/bc/2/1/4 -> +fetched: /t2/bc/2/3/6 -> fetched: /t2/t2_pkey/4 -> fetched: /t2/t2_pkey/4/b -> 2 fetched: /t2/t2_pkey/4/c -> 1 @@ -1657,8 +1657,8 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /t2/bc/?/?/4 -> -fetched: /t2/bc/?/?/6 -> +fetched: /t2/bc/2/1/4 -> +fetched: /t2/bc/2/3/6 -> fetched: /t2/t2_pkey/4 -> fetched: /t2/t2_pkey/4/b -> 2 fetched: /t2/t2_pkey/4/c -> 1 @@ -1806,8 +1806,8 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /t4/t4_pkey/?/? -> -fetched: /t4/t4_pkey/?/?/c -> 30 +fetched: /t4/t4_pkey/10/20 -> +fetched: /t4/t4_pkey/10/20/c -> 30 output row: [30] # Point lookup on d does not touch the c or e families. @@ -1830,8 +1830,8 @@ SELECT message FROM [SHOW KV TRACE FOR SESSION] WITH ORDINALITY WHERE message LIKE 'fetched:%' OR message LIKE 'output row%' ORDER BY message LIKE 'fetched:%' DESC, ordinality ASC ---- -fetched: /t4/t4_pkey/?/? -> -fetched: /t4/t4_pkey/?/?/d -> 40 +fetched: /t4/t4_pkey/10/20 -> +fetched: /t4/t4_pkey/10/20/d -> 40 output row: [40] # Point lookup on both d and e uses a single span for the two adjacent column diff --git a/pkg/sql/opt/exec/execbuilder/testdata/select_index_vectorize_off b/pkg/sql/opt/exec/execbuilder/testdata/select_index_vectorize_off index e5899ccc5b5d..c7a626d4feed 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/select_index_vectorize_off +++ b/pkg/sql/opt/exec/execbuilder/testdata/select_index_vectorize_off @@ -35,26 +35,26 @@ SELECT regexp_replace(message, '\d\d\d\d\d+', '...PK...') FROM [SHOW KV TRACE FOR SESSION] WHERE message LIKE 'fetched:%' ---- -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... -fetched: /test2/test2_k_key/? -> /...PK... +fetched: /test2/test2_k_key/'030' -> /...PK... +fetched: /test2/test2_k_key/'029' -> /...PK... +fetched: /test2/test2_k_key/'028' -> /...PK... +fetched: /test2/test2_k_key/'027' -> /...PK... +fetched: /test2/test2_k_key/'026' -> /...PK... +fetched: /test2/test2_k_key/'025' -> /...PK... +fetched: /test2/test2_k_key/'024' -> /...PK... +fetched: /test2/test2_k_key/'023' -> /...PK... +fetched: /test2/test2_k_key/'022' -> /...PK... +fetched: /test2/test2_k_key/'021' -> /...PK... +fetched: /test2/test2_k_key/'020' -> /...PK... +fetched: /test2/test2_k_key/'019' -> /...PK... +fetched: /test2/test2_k_key/'018' -> /...PK... +fetched: /test2/test2_k_key/'017' -> /...PK... +fetched: /test2/test2_k_key/'016' -> /...PK... +fetched: /test2/test2_k_key/'015' -> /...PK... +fetched: /test2/test2_k_key/'014' -> /...PK... +fetched: /test2/test2_k_key/'013' -> /...PK... +fetched: /test2/test2_k_key/'012' -> /...PK... +fetched: /test2/test2_k_key/'011' -> /...PK... fetched: /test2/test2_pkey/...PK.../k/v -> /'030'/42 fetched: /test2/test2_pkey/...PK.../k/v -> /'029'/42 fetched: /test2/test2_pkey/...PK.../k/v -> /'028'/42 diff --git a/pkg/sql/opt/exec/execbuilder/testdata/union b/pkg/sql/opt/exec/execbuilder/testdata/union index 0226c6fd5d62..07a4cc3e1170 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/union +++ b/pkg/sql/opt/exec/execbuilder/testdata/union @@ -230,7 +230,7 @@ vectorized: true table: xy@xy_x_y_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkVFruzAUxd__nyLcp_9YRtW-5cl2dSB02mk3NoZINJciOOOSCErxu48qpXOsg26P99ycc35J9qDfS2DgPW_WCz8g_1d-vI0f1pQ8edEyjL0rEntr73ZLOLmLwnvCM_IY-GFwlFuyiI-7tiNhtPIisnwhHChUUmDA31ADewUbEgq1kjlqLdVB2g8HfNECsygUVd2Yg5xQyKVCYHswhSkRGGx5VmKEXKCaWUBBoOFFOcS2ndt2aZt2aSFaoBDXvNKM3ACFsDGMuDYkPQXZmFO8NnyHwOye_g7BniLwzOVZytPscgTnLMKpWSqBCsW007WvIem_4VwV2hRVbmbOV8NZiPkl7xChrmWlcZJ-Ltk6EKLY4XgjLRuV40bJfKgZx3DwDYJAbcatMw5-NayGj_pstv9idn40zydmq0_6fx8BAAD__07uAmE= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkV9rgzAUxd_3KcJ92lhG1b751H8OhE477cbGEInmUgRrXBJBKX73oVI6yzr25817ruecX5IDqPccbHBeNuu565HrlRtuw8c1Jc9OsPBD54aEztpZbgkj94H_QFhCnjzX945yTebhcVc3xA9WTkAWr4QBhUJw9NgeFdhvYEJEoZQiRaWE7KRD_4PLa7ANCllRVrqTIwqpkAj2AXSmcwQbtizJMUDGUU4MoMBRsyzvY-tmVjdxHTdxxmugsBR5tS-UTbohLFn3eQdRS0FU-tSgNNsh2GZL_0ZhjilYMmNJzOLknIL9hMK6SHEqF5KjRD6unZm3ELVfoK4ypbMi1RPr3HARYvqbqwhQlaJQOEq_lGx0hMh3OJxIiUqmuJEi7WuG0e99vcBR6WFrDYNb9Kv-rT6bzf-YrW_N05HZaKP26iMAAP__HJAFqg== query T EXPLAIN (DISTSQL,VERBOSE) SELECT a, b FROM ab UNION SELECT x AS a, y AS b FROM xy ORDER BY a @@ -257,7 +257,7 @@ vectorized: true table: xy@xy_x_y_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkdFro0AQxt_vr1jm6Y7sETVv-2Ry8UDIaU5zR0sRWd0hCNa1uysowf-9qC2ppQk0fVpmvvnm--3uCfRTCQy8u_1u7Qfk-9aPD_HfHSX_vWgTxt4PEns779eBcEoy8jsK_xCekX-BHwavSkvW8SB3w_ky03YkjLZeRDb3hAOFSgoM-CNqYA9gQ0KhVjJHraUaWqdxwBctMItCUdWNGdoJhVwqBHYCU5gSgcGBZyVGyAWqpQUUBBpelOPatnPbLm3TLi1ECxTimleakZ9AIWwMI65NXQeSnoJszDlBG35EYHZPb6Ow5xQ8c3mW8jS7icK5SHEOl0qgQjGPde0FdZ0FJP0HuNtCm6LKzdJ5b7rGsvrMi0Soa1lpnAVc2mwNkCiOOF1My0bluFcyH2OmMhx9Y0OgNpPqTIVfjdL4ZW_N9lfMzlXzama2-qT_9hwAAP__ZggHrQ== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkV-rm0AQxd_7KZZ5asmWqHnzyfyxIKSaalpaisjqDkEwrt1dYSX43Yt6L7mGm8v98yQzZ86cn7MXUP8qcMH_fdivg5B83gXJMfmxp-SXH2-ixP9CEn_vb4-EUZKTb3H0nbCc_AyDKHxUDFkng9wN34cZ05Eo3vkx2fwhDCjUgmPIzqjA_Qs2pBQaKQpUSsihdRkHAm7AtSiUddPqoZ1SKIREcC-gS10huHBkeYUxMo5yaQEFjpqV1bjWdJ7pMpN1WckNUNiKqj3XyiWGkg4oJA0bqq-Q9hREq68hSrMTgmv39H0g9hyE5R7LM5bltyDDDV8D4twFueYLyVEinyd79oJ6zgLS_hniXal0WRd66dyaqOfcZVm95SgxqkbUCmcB9zZbAyTyE04_pkQrCzxIUYwxUxmNvrHBUelJdaYiqEdpfLWnZvsjZudF82pmtvq0__Q_AAD__9-WCy0= query T EXPLAIN (DISTSQL,VERBOSE) SELECT a, b FROM ab UNION ALL SELECT x AS a, y AS b FROM xy ORDER BY a @@ -284,7 +284,7 @@ vectorized: true table: xy@xy_x_y_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykUV1rpDAUfd9fEe7TLpth1H3LkzM7LgiuzupsaSki0VwGwRqbRFAG_3tRW6ZCp7TTp3DPxz0nyQn0YwUMvNt9sPFD8n3nJ4fkX0DJjRdvo8T7QRIv8H4fCKckJ3_i6C_hOfkf-lFINkHwwnZkk4ySfjyfdV1PonjnxWR7RzhQqKXAkD-gBnYPNqQUGiUL1FqqETpNAl90wCwKZd20ZoRTCoVUCOwEpjQVAoMDzyuMkQtUawsoCDS8rKa1Xe92fdZlfVaKDigkDa81IyugELWGEdemrgPpQEG25pygDT8iMHug17Wwly147vI841l-VQvnYotzuFQCFYplrGv_hHR4o2ooV7JZOwv1pXTrM28Qo25krfGDm1MKKI44X0XLVhW4V7KYYuYxmnwTIFCbmXXmwa8navqk12b7K2bnXfOvhdka0uHbUwAAAP__lnwFDg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkV9rq0AQxd_vp1jm6V7uhqh98yn_LAhWU01LSxFZ3SEIxrW7CivB717UltTSlLR9kpk5Z87P2SOo5wJscB623tL1yd-NG-2iW4-SeydcBZHzj0SO56x3hFGSkuswuCEsJXe-G_hk6XlvU02WUS9p---rTrckCDdOSFaPhAGFUnD02QEV2E9gQkyhkiJDpYTsW8dB4HINtkEhL6um7tsxhUxIBPsIdV4XCDbsWFpgiIyjnBtAgWPN8mJYq9uFbhOdtEnONVBYi6I5lMommpIWKEQV66sZxB0F0dSnEFWzPYJtdvRnIOYUhKULliYsST-C9He8BMQ6C3LKF5KjRD5NXpj_Ie4-ofXFTFRza6I-l2585wwhqkqUCi_cHFNAvsfxV5RoZIZbKbIhZiyDwTc0OKp6nFpj4ZbDaHin92bzN2brS_PVxGx0cffnJQAA___k4AiO # TODO(yuzefovich): The synchronizers in the below DistSQL plans are all # unordered. This is not a problem, but we shouldn't need an input synchronizer @@ -315,7 +315,7 @@ vectorized: true table: xy@xy_y_x_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykktGLm0AQxt_7VyzzdMdtSTS5l4WCucaC4MWrSmkpIqs7TQXr2t0VlJD_vagHOcOdbdInmZnvN9-36x5A_y6Bgfv1yd94O3Kz9aI4-uxT8sUNH4LIvSWR67sfY8IpycinMHgkPCPeLnbDqG8_T1uyiXpJ13-fdW1HgnDrhuThG8ko4UChkgJ3_BdqYN_BgoRCrWSOWkvVtw6DwBMtsCWFoqob07cTCrlUCOwApjAlAoOYZyWGyAWqxRIoCDS8KIe1bee0XdqlbVqIFihENa80I--BQtAYRhyLOjYkRwqyMScHbfgegVlHel0Ka5qCZw7P0izlV6WwL0mxLbQpqtws7GmE0YJCoAQqFIw4NnWsNz1XV3mu_stz_abnyaqp5Lhs4pT05N8krwR_RLXHCE1QL9bT6HFXI3vxsje-DxRK_GFuHPuOOtbd7QdV7H-eyn_7l_eX3GuIupaVxvOzvrp52R8QxR7HC9OyUTk-KZkPNmMZDNzQEKjNOF2NhVeNoz7gS9iahe152J6F1xPYOodXF8D2Obyehe_PYifHd38CAAD__xYClq8= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykktFrnEAQxt_7VyzzlJAtOb3Ly0LBS86CYM5UpbQUkVWnV8G4dncF5bj_vawGLkru2kufZGbnN9_3De5B_a6AgfvtyV97W3K18aI4-uJT8tUN74PIvSaR67sPMeGUZORzGDwSnhFvG7thZNovrx1ZR2akN9-Xua4nQbhxQ3L_nWSUcKBQiwK3_BkVsB9gQUKhkSJHpYQ0rf0w4BUdsAWFsm5abdoJhVxIBLYHXeoKgUHMswpD5AXK2wVQKFDzshrWdr3T9WmfdmlZdEDhQVTtc60Y6SjpgULUcFN9hORAQbT6KKI03yEw60DfZ8SaGuGZw7M0S_nciDnlvxixLzGyKZUu61zf2lMXjkUd0wpkgRILRhybOtZJzeW7NJf_pbk6qXmUamsxLpsoJYb828gbxh9R7jBCHTS3q6n1uG-Qvfq_174PFCr8qa8c-4Y61s31J1nufh1Lk7PVjIyhT2W8u-SuIapG1ArnWd_cvDABsdjheDAlWpnjkxT5IDOWwcANjQKVHl-XY-HV45Mx-Bq2zsL2edg-C68msDWHlxfA9hxenYXvZraTw4c_AQAA__-l7pov query T EXPLAIN (DISTSQL,VERBOSE) SELECT b FROM ab INTERSECT ALL SELECT x AS b FROM xy ORDER BY b @@ -342,7 +342,7 @@ vectorized: true table: xy@xy_x_y_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUWGLnDAQ_d5fEebTHU059b4FCu71LAjeejVSWopINFMrWGOTCMrify8qx9Zlt-3et8ybeTPvvRzA_GqAQfDlOdqFe3LzGPKUf4oo-RwkDzEPbgkPouBDSgryMYmfiChIuE-DhM_YLope2gPZ8ZeZYSRx8hgk5OErKYBCqyTuxU80wL6BCxmFTqsSjVF6hg7LQCgHYA6Fuu16O8MZhVJpBHYAW9sGgUEqigYTFBL1nQMUJFpRN8vaYfSHMR_yMa_lABR4J1rDyDugEPeWEd-FbKKgentcb6yoEJg70ddJcLcSROGLIi9ycUmCd1GCd1HC8XLfKi1Ro9xczWbmv0bO-HhCXSFHG3d33tZGOnbItp8MFBr8bm989-3te11XP9bnf2R7f022CZpOtQZPDZ7d7MyuUFa4pmRUr0t81qpczqxlvPAWQKKxa9dbi7BdWkvyf5LdK8juKdn7K_l-Q3ambHrzOwAA__8EXx8z +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUWFrnTAU_b5fEe6nlmX0ab8FBr62DgT77IyMjSGSmDsnWOOSCMrD_z5USuej3fb6Lffce-455-YI9lcDDMKvD_E-OpCLu4hn_HNMyZcwvUl4eEl4GIe3GZHkU5rcEyFJdMjClM_YPo6f2gPZ86eZYSRJehem5OYbkUCh1QoP4hEtsO_gQU6hM7pEa7WZoeMyEKkB2I5C3Xa9m-GcQqkNAjuCq12DwCATssEUhUJztQMKCp2om2XtMAbDWAzFWNRqAAq3uukfW8vIXPBOzM8PkE8UdO-eFawTFQLzJvo2F97WhZCBkIUsxKkL-T8u_FddPIv3rTYKDaqNcD4z_zXyQpR7NBVydEl35W-TZGOHbPvVQKHBH-4i8N5ffjR19XN9AoWkd4wE3qvBrs85b4q2063F04Avbt7NqVBVuF7J6t6U-GB0ucisZbLwFkChdWvXX4uoXVrL5f8ke2eQvVOy_1fy9Ya8m_Lp3e8AAAD___LYInw= query T EXPLAIN (DISTSQL,VERBOSE) SELECT b, a FROM ab INTERSECT ALL SELECT y AS b, x AS a FROM xy ORDER BY b @@ -369,7 +369,7 @@ vectorized: true table: xy@xy_y_x_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUVFrnTAYfd-vCN9TSzN6Y98CA29XB4K9dkbGxhCJ5psTnHFJBOXifx_qtjtLu9L7FL6Tc3LOyXcE-7MBDsHnh2gfHsjFXShS8TGi5FOQ3MYiuCQiiIL3KSkokeRDEt8TWZDwkAaJmOF9FP1hjGQvZtown7-5w0ji5C5IyO0XUgCFVis8yB9ogX8FBhmFzugSrdVmho4LIVQD8B2Fuu16N8MZhVIbBH4EV7sGgUMqiwYTlArN9Q4oKHSybpZnh9EfxnzMh7xWA1AQnWwtJ2-BQtw7TnyP-gyyiYLu3cnBOlkhcDbR81KwbQpZ-LLIi1yelcJ7NsXJvG-1UWhQbYyzWfkS5Ykq92gqFOji7trbNknHDvl25UChwW_uwmdX1PeuLt-Zuvp-Gv92ZNT3nu1485qfTtB2urX4uOuTL-_mgqgqXD_M6t6U-GB0udisY7zoFkChdeuttw5hu1wtS_hXzF4hZo_F3n_FNxvxbsqmN78CAAD__zutJUU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUmFrnEAU_N5fsbxPCXklp_m2UPCSWBDMmaqUliKy3r5eBePa3RWU4_57cW179ci1XD_JzM7sm3nuHsz3BjiEn57jdbRhV49RlmcfYmQfw_Q-ycJrloVx-JCzCplg79PkiYmKRZs8TLOJXsfxL8XI1tkkG6bvT-0wsiR9DFN2_5lVgNAqSRvxQgb4F_CgQOi02pIxSk_U3gkiOQBfIdRt19uJLhC2ShPwPdjaNgQcclE1lJKQpG9XgCDJirpx1w5jMIzlWA5lLQdAeFBN_9IazgZkIyBknZjQW0BIestZ4GPgQXFAUL09TjRW7Ai4d8D_S-UtU4kqEFVZleI0lUC3mctS-WdTHcP0rdKSNMlFkGJy_kvySrUn0jvKyCbdrb9slo8d8eWTAISGvtqrwLvBwL-5fqfr3bcj_N3Rw8A_2_Huks2nZDrVGjrt-urNq6kgyR3NCzOq11t61mrrxswwcT5HSDJ2PvVnELXuyP2EP83eBWbv1Oz_1Xy3MK8OxeHNjwAAAP__2Vku5w== query T EXPLAIN (DISTSQL,VERBOSE) SELECT b, a FROM ab EXCEPT SELECT y AS b, x AS a FROM xy ORDER BY b @@ -396,7 +396,7 @@ vectorized: true table: xy@xy_y_x_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykktGLm0AQxt_7VyzzdMdtSTS5l4WCuYuFgHemKuVKEVndaSpY1-6uoIT870XtNTVcLEmfwnwzv_m-2bgH_bMABu7L1lttnsnNehNG4SePks9u8OCH7i0JXc99jEhKCScfA_-J8JS4L4_uNnpttWQVdv2m-_091LTED9ZuQB6-kBQolFLgM_-BGthXsCCmUCmZodZSddK-H9iIBticQl5WtenkmEImFQLbg8lNgcAg4mmBAXKBajYHCgINz4t-LU8dniZpwpNcNEAhrHipGXkPFPzaMOLY1LEgPlCQtTk6aMN3CMw60OtSWOMUTes0bdImzVUp7EtSrHNt8jIzM3scwbGo00m-EqhQMDII5zwXV3ku_stzedbzaFWXclg2coo78l8jbwR_QrXDEI1fzZbj6FFbIXv9pleeBxQK_GZuHOuOOvbd7QeV774fyz9_5OSB95c8aoC6kqXG00Pf3DzvrkOxw-G1tKxVhlsls95mKP2e6wWB2gxdeyg25dDqAv4NW5PwYhq2J-HlCLZO4cUFsH0KLyfh-5PY8eHdrwAAAP__SsSUMg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykklGLm0AQx9_7KZZ5uuO2JJrcy0LBXGIhkDtTlXKliKw6TQXPtbsrKCHfvaz2mip3ltw9hZnZ3_5_s_EI6lcBDNzH_W61fSBXm20QBl92lHx1_TsvcK9J4O7cdUgSSjj57Hv3hCfEfVy7-_B51JJVYOaN-f1zqGmJ529cn9x9IwlQKEWGD_wJFbDvYEFEoZIiRaWENK1jd2CbNcDmFPKyqrVpRxRSIRHYEXSuCwQGIU8K9JFnKGdzoJCh5nnRXcsThydxEvM4zxqgsBZF_VQqRjjtHIKKm-ojUPBqzYhjU8eC6ERB1PqcqDQ_IDDrRN9mZQ2tmtZp2riNm7FVQ0l7sZV9idUmVzovUz2zh0qORR3T8mSGEjNG-sZrmYs3ZS7elbl8NfMcVZeiv2yQFBnyf0deEL9HecAAtVfNlkP1sK2QPX_zq90OKBT4Q1851g117JvrTzI__DyXf__IyQVvL3lUH1UlSoXjRV-8eW62w-yA_WspUcsU91KkXUxfeh3XNTJUup_afbEt-5ER_Be2JuHFNGxPwssBbI3hxQWwPYaXk_DtSDs6ffgdAAD__76dndQ= query T EXPLAIN (DISTSQL,VERBOSE) SELECT a, b FROM ab EXCEPT ALL SELECT x AS a, y AS b FROM xy ORDER BY b, a @@ -423,7 +423,7 @@ vectorized: true table: xy@xy_y_x_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUmFrnEAQ_d5fMcynhGzJab4tFLwkWzgw8apSUorIeju1gnXt7grK4X8vasvFkLZJPsnMvDfvvXGPaH_WyFE87MPt7h7ObndJmnwKGXwW8XWUiHNIRChuUpAMCvgYR3cgCxAPN2KfwjYM_4x72CYTZpi-v4H9AFF8K2K4_gIFA4kMG63oXv4gi_wrepgxbI0-kLXaTK3jDNipHvmGYdW0nZvaGcODNoT8iK5yNSHHVBY1xSQVmcsNMlTkZFXPa2URyCIvcplXqkeGSSsby-E9Mow6xyHwWOBjNjLUnTspWCdLQu6N7G0uvLWLfgj6IR_y_k0u_L-6OIl3jTaKDKmVcDYx_wd5JsodmZISclF76a-TpENL_NEvR4Y1fXNngX_BAu_i_IOpyu-n8mUBr15z5phsqxtLT4M-u3kzpSNV0nItqztzoL3Rh1lmKaOZNzcUWbdM_aXYNfNofgePyd4ryP5Tsv9P8tWKvBmz8d2vAAAA___aYCQi +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUmFrnEAQ_d5fMcynhEzJab4tFLxcLByYeFUpKUVkvZ1eBePa3RWU4_570Wu5eCRt00_yZt7b9966e7Q_ahQYPm6i5foBLu7WaZZ-igg-h8ltnIaXkIZRuMpAEpTwMYnvQZYQPq7CTQbLKPq97mGZjpxh_P4i9gPEyV2YwO0XKAkkEjZa8YN8YoviK3qYE7ZGb9labcbRfiKsVY9iQVg1befGcU641YZR7NFVrmYUmMmy5oSlYnO9QELFTlb1dKwsA1kWZSGLSvVIuNJ199RYMVVAwrSVI3qP-YFQd-5kYp3cMQrvQP8XxJsH6YegH4qh6M-D9ATDvwTxXw1y8u8abRQbVjPvfFT-jfJCm3s2O07Zxe21Py-TDS2LZz8eCWv-5i4C_4oC7-ryg6l2308QCePOCQg8CvxXC9685aYTtq1uLJ8XffHkxdiO1Y6Pt2V1Z7a8MXo72RxhPOmmgWLrjlv_CNbNtJqewnOx9waxfy72_yi-mYkXh_zw7mcAAAD__266J6I= statement ok CREATE TABLE abcde (a INT PRIMARY KEY, b INT, c INT, d INT, e INT, INDEX (b, c, d, e)) @@ -469,7 +469,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: /1-/2 · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykku-L2k4Qxt9__4phXunXOWJ-HWVB2LuaowGbXBP7iyISs8MR8BK7WeGK-L8XE8HTalrbN4GdmWc-T57dDdbflygw-PI4uQsj6I3DdJp-mBB8CpL7OA36kAaT4O0U_oeHJH4Pvf0xI1gQ5ASKgNtWtsgVw8cojCM4TOXN4MlUHz6_C5IAejmMwO7DXTSGnoIRcB_iZBwkcP8VMiQsK8VR9sw1im9o44xwpauc67rSu9KmGQjVC4ohYVGu1mZXnhHmlWYUGzSFWTIKnGaLJSecKdbWEAkVm6xYNmsbR7L5zhfzfK7mPC_UCxKmq6ysBVj2jeXgbEtYrc0BUZvsiVHYW_pzGw_F0rBmbdnHHtq6AOnBCKR_EeZcA0srbVhbzjFK2gMkjNdGgLRJuiQdkh51QN1roK-Dds8FvdLFc6Z_HOK9uQj2_ipa73y0PenuHpsQIoymb_Zvbp93_6IF_6KFA7nSijWrX2Im6QxIugOS3oCkP8DZ9ozvcVGbosyN5Z8uaG7G_c3l3F6TUcL1qiprPiJd2jzcuWX1xO3f1tVa5_yoq7zBtMe40TUFxbVpu3Z7CMu2tTP4Wmx3ip1usdMp9o_E9qnY7RR73WTvX8h-p_j2hDzb_vczAAD__6qVwrQ= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkltr20wQhu-_XzHMlf15gqJTKAuBTWKFClIpldwTxRhZOwSBIrmrNaQE__ciKeDYtdW4vRHM4Z3n1cw-Y_OjRIHB1_u7qzCC0TRMZ-nHO4LPQXIdp8EY0uAuuJnB_3CbxB9g9BJmBEuCnEARcF_Klrli-BSFcQTbrrxr3Osaw5f3QRLAKIdLsMdwFU1hpOASeAxxMg0SuP4GGRJWteIoe-QGxXe0cU640nXOTVPrNvXcNYTqCcU5YVGt1qZNzwnzWjOKZzSFKRkFzrJlyQlnirV1joSKTVaU3djOkey-i-UiX6gFLwr1hIQ3dbl-rBqx-7dImK6yNm3ZZ5aD8w1hvTZbdmOyB0Zhb-jt_m6L0rBmbdm75vq8AOnBJUj_KMw5BZbW2rC2nF2UtCdIGK-NAGmTdEk6JD0agLqnQF9fwD10gZUuHjP98w17PzvqyPurnXuHdz6Sbvs8hRBhNHv38kpfDjE-asE_amFLrrVizeq3_ZN0JiTdCUlvQtKf4HxzwPe0aExR5cby9wd0J3P_cLWLU3aUcLOqq4Z3SMcmn7duWT1w_7dNvdY53-s67zB9GHe6LqG4MX3V7oOw6kutwddie1DsDIudQbG_I7b3xe6g2Bsme_9C9gfFF3vk-ea_XwEAAP__pRHQSA== query T EXPLAIN (DISTSQL,VERBOSE) SELECT * FROM (SELECT a, b, c, d, e FROM abcde UNION SELECT a, c, b, d, e FROM abcde) WHERE c = 1 AND d = e ORDER BY b, c, d, e, a @@ -508,7 +508,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: /1-/2 · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkm-L2kAQxt_3UwzzSuscukmEsiDsXc3RgE2u0f6jiMTscARsYndXOBC_ezER_MPF1vZNYGfmmeeXZ3eL9tcKJYbfnib3UQydcTSdTT9NCL6E6UMyDbswDSfh-xm8hcc0-QidwzEjWBLkBJqAm1a2zDXD5zhKYjhO5fXgxVQXvn4I0xA6OYxAdOE-HkNHwwi4C0k6DlN4-H6ynyBDwrLSHGc_2aL8gQLnhGtT5WxtZfalbT0Q6ReUA8KiXG_cvjwnzCvDKLfoCrdilDjLlitOOdNs-gMk1OyyYlWvrelU_V0sF_lCL3hR6BcknK6z0kroi7u-h_MdYbVxRwvrsmdGKXb09xiPxcqxYdMX5wxNXYIKYARqiITJxklQgpRPyiMVkBq2Ini3IJwm4d2YxF0rgv9PKfivp9BR_v6NSCmjePbu8FQO0XRbEYJWhKNzZTQb1ue2yuuR8nukgh4p0SM17OF89wr3uLCuKHPXDy4WiPqO_D9c0_CWjFK266q0fObUtnmwp2X9zM3f2mpjcn4yVV7bNMek1tUFzdY1XdEcorJp7QFPxeKqODgTi0uxd1XsX3f2_8c5uCoeXjjPd29-BwAA__-0e5X_ +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskl1r20wQhe_fXzHMlf16gr2SDGXBsEmsUIErpbL7RTFG1g5BoEiudg0B4_9eJBn8QeQ2bW8EOzNnzqOzu0PzI0eJ_tfH2W0QQm8azBfzjzOCz358F839Psz9mX-_gP_hIY4-QO9wTAjWBCmBJuC2laxTzfApDKIQjlNpM3gx1Ycv7_3Yh14KExB9uA2n0NMwAe5DFE_9GO6-newnSJCwKDWHyTMblN9R4JJwU5UpG1NWdWnXDAT6BeWIMCs2W1uXl4RpWTHKHdrM5owSF8k655gTzdVwhISabZLlzdqGTjXf1XqVrvSKV5l-QcL7Mt8-F0ae_zkSzjdJXR6Km6GDyz1hubVHb2OTJ0Yp9vT7fA9ZbrniaijO4dq6BOXBBNQYCaOtlaAEKZeUQ8ojNe5EcN6CcBqR868iuulkc_8oHvf1eHrKrV-VlDIIF-8Oj-uQWb8TwetEODqXleaK9bmtcgak3AEpb0BKDEiNB7jcv8I9zYzNitQOvYsFork89xf3N35LRjGbTVkYPnPq2jyqaVk_cfu3ptxWKT9WZdrYtMeo0TUFzca2XdEegqJt1YCnYnFV7J2JxaXYuSp2rzu7f-PsXRWPL5yX-_9-BgAA__8eXKOT query T EXPLAIN (DISTSQL,VERBOSE) SELECT * FROM (SELECT * FROM abcde UNION ALL SELECT * FROM abcde) WHERE c = 1 AND d = e ORDER BY a @@ -547,7 +547,7 @@ vectorized: true table: abcde@abcde_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskN1q20AQhe_7FMNcSe0GW5YCZcEgp95QgSqlkvtH0cVGOwSBolV319Bi_O7FUiFRiE3S5HJ-znznzA7trxY5iu9X6SrJwFsn5ab8nDL4KoqLvBQ-lCIVHzbwFi6L_BN401Je14rgS5bkGazSFB6Z-vDtoygEeDUsIfBhla3BU7AE8iEv1qKAix8gkWGnFWXylizynxhgxbA3uiZrtTm0dsNCon4jnzNsun7rDu2KYa0NId-ha1xLyHEjr1sqSCoyszkyVORk0w5nB0dxb5pbaf4gw7KXneVwhtWeod66u6PWyRtCHuzZ08GXTevIkJkFU-rY5-DF4eEHnPMk27z_94o4giXE5_5RC4vnWLifffHC7OF_ZQ9fM3t01MIdWRtFhtQUGwfvsNo_4jPTZ7qfRZPtY_T5cx5QkO11Z-mJlyuGpG5ojGL11tR0ZXQ9YMYyH3RDQ5F14zQYi6QbRweD98XBSXE0EQcPxYuT4vA0OXwJOTopPn9ArvZv_gYAAP__aIR-OA== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0kN1q20AQhe_7FMNcSe0GW5YCZcEgJ1aoQJVSyf2j6GKtHYJA1qq7a2gxfvciqZAoxCbpz-Wc2TPn23NA871BjtGX22QVp-Cs42JTfEgYfIryq6yIXCiiJLrewGu4ybP34ExHsa0kwcc0zlJYJQk8sXXh87soj8CpYAmeC6t0DY6EJZALWb6Ocrj6CgIZtkpSKnZkkH9DD0uGnVYVGaN0Lx2GB7H8gXzOsG67ve3lkmGlNCE_oK1tQ8hxI7YN5SQk6dkcGUqyom6GswNR2Ol6J_RPZHitmv2uNRwEgy2DioFkQMiw6EQvX2B5ZKj29j7NWHFHyL0jez7RTd1Y0qRn3hRn1Dk4od-XwzmP083b3x2FASwhvHRPIixegvCwlMX_KsX_o1L8f1lKcBLhPllpSZrkNDb03mB5fIIzVReqmwWT16fS5y8pICfTqdbQMy-XDEne0fgVo_a6olutqiFmHLPBNwiSjB233jjE7bjqAR-avbPmYGL2HpsXZ83--WT_b5KDs-bLR8nl8dWvAAAA___vr4vM query T EXPLAIN (DISTSQL,VERBOSE) SELECT * FROM (SELECT * FROM abcde UNION ALL SELECT * FROM abcde) WHERE c = 1 AND d = e ORDER BY b, c, d, e, a @@ -586,7 +586,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskG9rm1AUxt_vUxzOq7ickhgtjAsB08UywWmn2T-GiPEeiuC87l4DhZDvPqKD1tKEdu0b4TzH5zy_--zR_KlRoP_jJlwFEUzWQbpJv4QE3_zkKk59C1I_9D9u4D1cJ_FnmIzHYltKhq9REEewCkN4YmvB909-4sOkhCXYFqyiNUwkLIEtiJO1n8DVT9gSlASSgAkKJGyU5Kj4zQbFL7QxI2y1KtkYpY_Svv8hkHco5oRV0-66o5wRlkozij12VVczCtwU25oTLiTr2RwJJXdFVfdnezqv_-bbvMxlznkl75AwbYvGCLjA7ECodt39edMVt4zCPtDzEa6rumPNemaP8wddwMRzjs0IIYJo8-FfQZ4LS_AurZMIi5cgPGxh8WYtOP_VgvOWLbgnEe6TlZasWY5jvcWUPGdKnjslz55idniCOVIXqp25I-cpkvlLykjYtKox_MzLGSHLWx6eZdROl3yjVdnHDGPc-3pBsumGrT0MQTOsjoAPzfZZszsy24_Ni7Nm53yy85pk96z58lFydnj3NwAA__-m3oqG +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0kG9rm1AUxt_vUxzOq2Q5JTFaGBcCpo1lQqadZv8YIsZ7KIL1unsNFEK--1AHjaUJ7ba-Ec5zfM7zu88eza8SBXrfb9dLP4DRyo838ec1wVcvugpjbwyxt_auN_AebqLwE4yGY7bNJcOXwA8DWK7X8Mx2DN8-epEHoxwWYI1hGaxgJGEBPIYwWnkRXP2ALUFOIAmYIEPCSkkOsns2KH6ihQlhrVXOxijdSvvuB18-oJgRFlW9a1o5IcyVZhR7bIqmZBS4ybYlR5xJ1tMZEkpusqLsznZ0bvdNt2meypTTQj4g4bUqd_eVEZDRERkSxnXWyheYHAjVrnnMNU12xyisA72c7aYoG9asp9YQrNcFjFy7rUwI4QebD3-acx1YgHs5Pokwfw3CcT3zt6_H_qt67P9Zj3MS4TFZacma5TDWnU_ItSfkOhNyrQkmh2eYA3Wh6qkzcJ4imb2mjIhNrSrDL7ycELK84_5ZRu10zrda5V1MP4adrxMkm6bfWv3gV_2qBTw2W2fNzsBsPTXPz5rt88n2vyQ7Z82XT5KTw7vfAQAA__-r-Zga query T EXPLAIN (DISTSQL,VERBOSE) SELECT b, c, d, e FROM (SELECT b, c, d, e FROM abcde INTERSECT SELECT b, c, d, e FROM abcde) WHERE c = 1 AND d = e ORDER BY b @@ -625,7 +625,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF-L2kAUxd_7KS73KcEpbv7olgFhdmuWBlyzTUL_UERi5tYG0iSdjLBF_O4lSdtVu6Z12b4Ic2Z-95x7kGyx_pYjR-_D3ezKn4Mx9aM4ejtj8M4Lr4PIMyHyZt7rGFYMUgaSAcFNGNyCcUJPVqkk8OexF0bNfd8zE96_8UIPjBQmYJlwNZ-CIWECZEIQTr0Qrj_CChkWpaR58pVq5J_QwgXDSpUp1XWpGmnbPvDlPfILhllRbXQjLximpSLkW9SZzgk5xskqp5ASSWp4gQwl6STL27FtItH-LlfLdCmXtMzkPTKMqqSoObxEhsFGcxA2Ew4TLhMjXOwYlhv94FjrZE3IrR3791Q3Wa5JkRpah5E6nYMh7KYgzrk_j1_97Ek4MAHhmicj2OdE2C_G_p_FOE8qxnnOYtxzIkyzWmdFqofuYQRhsV_rNusrSYokh0Z2TjqPnuQ8egbn8UnnB8NNUXbDDvwWDfm3J4_EvyW1poh0UA3HhwvE3yvie5-Iq9kMGeb0WRvCGjDhDJiwB0y4A3OisvWXP-Xff7i9Kk5tfnlO5yHVVVnUdNzAo5MvmrVJrqmrsS43KqU7VaatTXcMWq4VJNW6u7W6g190V03AfdjqhUf9sN0LO_2w0wu7_bDbC48PYOsYHp0B28fwuBe-PIq92L34EQAA___LAyzi +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lF1r20wQhe_fXzHMlYT3xdGHnbJg2CRWqMCxUkn0g2KMrJ26AkVSVytICfnvRVJLbDdW65DeCPbMPnvOnAs9YP0tR47ex9vFhb8EY-5HcfRuweC9F14GkWdC5C28qxg2DFIGkgHBdRjcgHFETzapJPCXsRdG7Xzomgkf3nqhB0YKM7BMuFjOwZAwAzIhCOdeCJefYIMMi1LSMrmjGvlntHDFsFJlSnVdqlZ66C748h75GcOsqBrdyiuGaakI-QPqTOeEHONkk1NIiSQ1PkOGknSS5d2zXSLRfdebdbqWa1pn8h4ZXpV5c1fUfGcJZBhVSav9j6tHhmWjn0xrnWwJufXI_j7YdZZrUqTG1n6qXudgCLvtiHPuL-M3P6sSDsxAuObRCPYpEXa7sf9xN86LunFesxv3lAjzrNZZkeqxux9BWEzYTDhMtINASVIkObSyc9R58iLnySs4T486Pxk2Rdk_tue3ask_XXkm_g2pLUWkg2o83V8g_l4R3_lRXCwWyDCnL9oQ1ogJZ8SEPWLCHZkzlW2__i63eze63_lXFcc2Pz-l85DqqixqOmzg2ZfP2rVJbqmvsS4bldKtKtPOpj8GHdcJkmrdT63-4Bf9qA24C1uD8GQYtgdhZxh2BmF3GHYH4ekebB3CkxNg-xCeDsLnB7FXj__9CAAA__-QiTB0 query T EXPLAIN (DISTSQL,VERBOSE) SELECT b, c, d, e FROM (SELECT b, c, d, e FROM abcde EXCEPT SELECT b, c, d, e FROM abcde) WHERE c = 1 AND d = e ORDER BY b, c, d, e @@ -664,7 +664,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lN9q20wQxe-_pxjmSsL74eiPnbJg2CRWqMGxUkm0KcUYWTt1BaqkrtaQEvzuRVLT2G6k1iG9MezZ_c05czB6wOpbhhy9u9v5xWwBxnQWRuG7OYP3XnDph54JoTf3riJYM0gYSAYE14F_A0aHHq8TSeDdXXm3URfbvDHhw1sv8MBIYAKWCReLKRgSJkAm-MHUC-Dy4x6JDPNC0iL-ShXyT2jhkmGpioSqqlC19NA8mMl75GcM07zc6lpeMkwKRcgfUKc6I-QYxeuMAoolqeEZMpSk4zRrxjbRRPO7Wq-SlVzRKpX3yDAs47zi8D8y9Leag7CZcJhwmRjhcsew2Oonx0rHG0Ju7djfp7pOM02K1NA6jNTqHAxh101xzmeL6M3PwoQDExCu2RnBPiXCfjH2vyzGeVExzmsW454SYZpWOs0TPXQPIwiLPa5br68kKZIcatnpdB69yHn0Cs7jTucnw21etMMO_JY1-acnz8S_IbWhkLRfDseHC0TfS-KPH4qL-RwZZvRZG8IaMOEMmLAHTLgDc6LSzZff5V__tr0eutY-P6XwgKqyyCs6Xv_ZyWf1ziQ31HZYFVuV0K0qksamPfoN1wiSKt3eWu1hlrdXdcB92OqF3X7Y7oWdftjphUf9sNsLjw9g6xgenQDbx_C4Fz4_ir3c_fcjAAD__7UjLSI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0lN9q20wQxe-_pxjmysL74eiPnbJg2CRWqMGxUkm0KcUYWTt1BYqkrlaQEvLuRVJDIjdS65DeCPbs_uacORe6x_J7ihzdm-vV2XINo8UyCIMPKwYfXf_cC1wDAnflXoSwYxAzkAwILn3vCkY9erSLJYF7c-Feh31s88aAT-9d34VRDHMwDThbL2AkYQ5kgOcvXB_OPz8jkWGWS1pHt1Qi_4ImbhgWKo-pLHNVS_fNg6W8Q37CMMmKStfyhmGcK0J-jzrRKSHHMNql5FMkSU1OkKEkHSVpM7aJJprvdreNt3JL20TeIcOLPK1us5J3MwVFVGv_4-aBYV7pJ9NSR3tCbj6wvw92maSaFKmJ2U3V6hxGwqrL4pwv1-G7X50JG-YgHKM3gnVMhOfdWP-4G_tV3dhv2Y1zTIRFUuoki_XE6UYQJhMWEzYT9YWnJCmSHGrZ7nWevsp5-gbOs17nJ8Mqy9thHb9NTf7pyQvxr0jtKSDtFZNZd4HwR0H88Xdxtlohw5S-6pEwx0zYYyasMRPO2JirZP_td7leutLtwo899K19ekzhPpVFnpV0uP6Lk0_qnUnuqe2wzCsV07XK48amPXoN1wiSSt3emu1hmbVXdcDnsDkIO8OwNQjbw7A9CE-HYWcQnnVg8xCeHgFbh_BsED49iL15-O9nAAAA__924zC0 query T EXPLAIN (DISTSQL,VERBOSE) SELECT * FROM (SELECT * FROM abcde EXCEPT ALL SELECT * FROM abcde) WHERE c = 1 AND d = e ORDER BY a @@ -703,7 +703,7 @@ vectorized: true table: abcde@abcde_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyskm-L2kAQxt_3UwzzKqlbNH-EsiCsd-ao4BmbhPZK8UUuO7WBXJLurtBD_O4lSeGMqK3tvZyZ_c0zz5PsUP8okGPwsFpM50uwZvM4iT8uGHwKopswDmyIg0Vwm8BbuIvCe7D6ZfqYSYLg4TZYJTBdLODE2IbPH4IoACuDCTg2TJczsCRMgGwIo1kQwc0XSJFhWUlapk-kkX9FB9cMa1VlpHWlmtaufTCXP5GPGOZlvTVNe80wqxQh36HJTUHIMUkfC4oolaSGI2QoyaR50a5tLxK1yp9S9YwM4zotNYd3uN4zrLbmZak26YaQO3v298J3eWFIkRo6fdWuz8ESXpMB53y-TN7_jkL4MAExts-e4F5zwqF39z-9e__k3XtN7_7ZE16Ut2WlJCmSPeF1Q_7pyQkf96Q2FJMJ66Hfd5I818QPfnZkWNA3YwlnwIQ7YMIbMOEPmBgP7InKN99Pj5BhuDUchMOEy4THhM_E-GwC42s-QkS6rkpNx0mc3Dxq7JPcUBenrrYqo5WqslamK8OWaxuStOmmTlfMy27UHHgIOxdhvwc7x7B7EfYuK3tXKLvHsH8RHh8pr_dvfgUAAP__ApejQg== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k9-L2k4Uxd-_f8XlPiVfb9nND6EMCONqlgqusUlotxQfYnJrAzFJJxPoIv7vJUlhVdTW0j7OuXPmnPsJ2WH9LUeB3vNyPp4twJjOwih8Pyf44AUPfuiZEHpzbxLB__AY-E9gHB_jdZIyeM8TbxnBeD6HM2MTPr7zAg-MBEZgmTBeTMFIYQRsgh9MvQAePkGMhEWZ8iLeco3iM1q4IqxUmXBdl6qVdt2FWfodxT1hVlSNbuUVYVIqRrFDnemcUWAUr3MOOE5Z3d0jYco6zvLu2a6RrFS2jdULEk7KvNkWtYCYYE2QEKQEjIRhFbfyG1ztCctGv6bVOt4wCmtPv9_oMcs1K1Z31nGdXhdgSKeFI4SYLaK3PxlJF0Ygh-bFCvYtFQ6h2P8KivNHUJy_CcW9WOE1uSlKlbLi9Ch41Tp_deXMHk-sNhyy9qs793iT6KVicfB7IGHOX7QhrQFJe0DSGZB0BySHA3Okss3X8yMk9BstQFokbZIOSZfk8CKB4S0fIeC6KouaT0mcffm-XZ_TDfc467JRCS9VmXQx_dHvfJ2Qcq37qdUfZkU_agsemq2rZvfIbJ2a7atm53qyc0OyfWp2r5qHJ8mr_X8_AgAA__-W-7DW query T EXPLAIN (DISTSQL,VERBOSE) SELECT * FROM (SELECT * FROM abcde INTERSECT ALL SELECT * FROM abcde) WHERE c = 1 AND d = e ORDER BY b, c, d, e, a @@ -742,7 +742,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk9uLm1AQxt_7VwzzpM2UjZdAORA42calQjZuVXqhhGA801Swao8GtoT870Ut7BqStCn7EpjLN993fsE91j9zFOh9fljM_CUYcz-Kow8Lgo9eeBtEngmRt_DexfAa7sLgHoxhmWxSxeAvYy-M2vZssYATGyZ8eu-FHhgpTMEyYbacg6FgCmxCEM69EG6_wIYgJVAETJAgYVEqXiY_uEbxFS1cEVa6TLmuS9229t2Crx5RjAmzoto1bXtFmJaaUeyxyZqcUWCcbHIOOVGsb8ZIqLhJsrw726WT3e96s07Xas3rTD0iYVQlRS3gDa4OhOWueTpfN8mWUVgH-vcId1nesGZ9Yw39-74AQzotGSGEv4zf_gEkXZiCnJhnI9jXRHhOwX4xCs5_UXBekoJ7NsKT864otWLNamC8apV_WznxjnvWW464Caobd_iS-FfFYvg9IGHO3xpD2iOS7oikNSLpjEhORuZUZ9vvp0dIGOwaAdIiaZN0SLokJ2chTK75H0Kuq7Ko-RjGycvjlgCrLfdE63KnU37QZdrZ9GXQ6bqG4rrpp1Zf-EU_agM-F1sXxe5AbB-L7Yti57Kzc4WzdSx2L4onR86rw6vfAQAA___SLa8C +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0k92Lm0AUxd_7V1zukza37PoRKAOB2Q-XCtm4VekHJQTj3KaCq3ZU2LLkfy9qYWNI0qa0L4E59545Z37BZ6y_5yjQ-_Qwv_IXYNz6URy9nxN88MLrIPJMiLy5dxPDa7gLg3swxsdknSoGfxF7YdTJV_M5HNgw4eM7L_TASGEGlglXi1swFMyATQjCWy-E68-wJkgJFAETJEhYlIoXySPXKL6ghUvCSpcp13WpO-m5X_DVE4pLwqyo2qaTl4RpqRnFMzZZkzMKjJN1ziEnivXFJRIqbpIs76_t28n-d7VepSu14lWmnpDwpszbx6IWkNBOMySMqqST3-ByS1i2zUtu3SQbRmFt6c-73WV5w5r1hTUuNugCDOl0yIQQ_iJ--4ucdGEGcmoerWCfU2EXj_3_8Th_hcf5l3jcoxVektui1Io1q1HwsnP-buXAO-5ZbzjiJqgu3PFL4h8Vi_EXhIQ5f20MaU9IuhOS1oSkMyE5nZgznW2-HR4hYdA2AqRF0ibpkHRJTo9CmJ7zP4RcV2VR8z6MgzdfdgRYbXggWpetTvlBl2kfMxyD3tcLiutmmFrDwS-GUVdw12ydNLsjs71vtk-andPJzhnJ1r7ZPWme7iUvt69-BgAA__-XnbyW # Regression test for #64181. Ensure that a projection on top of an ordered # UNION ALL correctly projects away ordering columns. @@ -824,7 +824,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkU-r1DAUxfd-inBXylx5_eMqq6qvQmFsn-0ogpSSJpeh0GlqksLI0O8uTZGZkRlF36Zwz-m555fkBPZ7DxzSr0_bt1nOXj5m1a76tEX2JS3fFVX6ilXpNn2_YwJZi0yyD2XxkYlWKmKf86zIf_mLiUxd-IAwaEW5OJAF_g1CqBFGoyVZq80infwPmToCDxC6YZzcItcIUhsCfgLXuZ6Aw060PZUkFJmHABAUOdH1fq3vSvy3aRvZqIaaTh0BoRrFYDl7DQjF5DhLIkxiTN5APSPoyZ3rrBN7Ah7O-H9I4S2k0XQHYX7cAgnRs9wFie6CnPu1UWRIXTcn4QaTaINJvIF6vkH92FnXDdI9RL8H_4IU_8vdlGRHPVi66ri3OVg4Se1pPZ_Vk5H0ZLT0NetY-JwXFFm3utE6ZIO3_ONdhsPnhKM_huOrcDDX84ufAQAA__8HzgwQ +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkV-rm0AQxd_7KZZ5asmU6583n2xvLAipppqWQhFZd4cgGNfurpAS_O7FtSFJSUrb-yLMOZ45P8cTmO8dRJB83W7epRl7vU7LXflpg-xLUrzPy-QNK5NN8rxjHFmDTLAPRf6R8UZIYp-zNM_O_mwik1c-IPRKUsYPZCD6Bj5UCINWgoxRepZO7oVUHiHyENp-GO0sVwhCaYLoBLa1HUEEO950VBCXpJ88QJBkedu5ta4rds-6qUUta6pbeQSEZ9WNh95EZzZAKAc-C2-hmhDUaC-NxvI9QeRP-H9U_j2qQbcHrn9cs_y649-wBA9ZLghKS9Ikb8tjf4VxsMI4XEE13QFft8a2vbBPwe9BjAOMw4dI4b-cpyAzqN7QTcejzd7MSXJPy_cZNWpBW62Eq1nG3OWcIMnYxQ2WIe2d5f7fddh_STj4Yzi8CXtTNb36GQAA__-F4Q-C # Use a streaming set operation even though the ordering is not required. query T @@ -851,7 +851,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUWFrnTAU_b5fEe6nlndHn759CgzsNgeCfXYqYzBEorlzgjUuidDy8L8P46DPYre1XwI595ycc3JPYH51wCH8dhtfR0d28SnK8uxLjOxrmH5IsvCSZWEcfsyZQFYhq9nnNLlhoqolseiYh2k2D_9wZgIyecYBhF5JOoo7MsC_gwcFwqBVTcYoPUMnR4jkPfA9QtsPo53hAqFWmoCfwLa2I-CQi6qjlIQkfbUHBElWtJ171nkF7iyrsi5lSWUr7wEhG0RvOHsLCMloOQt8DA4YvINiQlCjfbQzVjQE3JvwdZG8rUiDbu-EftgK4qHL8mwQ_9kgj_5jr7QkTXLlXczKf1E22tyQbigjmwxX_rpM_jAQP9v3dRwDQkc_7EXg7TDwdxgcdpfvddv8XEP_Xffwkn9PyQyqN_S09ubL-7kryYaWvzNq1DXdalU7m-WaOJ0DJBm7TP3lEvVu5PZxLvZeIPaeiv2_ig8r8X4qpje_AwAA__8uVSl4 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUWFrnEAU_N5fsbxPCfdKTu_bQsE0tSCYM1UphSKy575awXPt7goJh_-9uKZEw6Vt8mVh583szLw9gfnVAofw2118He3Zxacoy7MvMbKvYfoxycJLloVxeJMzgeyArGKf0-SWiUMliUX7PEyzafjImQjI5IIDCJ2StBdHMsC_gwcFQq9VRcYoPUEnR4jkPfAtQtP1g53gAqFSmoCfwDa2JeCQi0NLKQlJ-moLCJKsaFr3rPMK3FkeyqqUJZWNvAeEG9UOx87wP9kAIevFBLyHYkRQg31yNFbUBNwb8W2pvHOpet0chX5YZnnc5f9k8V_M8hRh6JSWpEmu7ItJ-S_KmUK3pGvKyCb9lb_ukz_0xBe_fh3HgNDSD3sReBsM_A0Gu83lB93UP9cQICSD5SzwMPAx2L1Yd_ea1adketUZel777MvbqSvJmubdGTXoiu60qpzNfE2czgGSjJ2n_nyJOjdy_7EUe68Qe8_F_l_Fu5V4Oxbju98BAAD___BfLOo= # Use a streaming set operation even though the ordering is not required. query T @@ -878,7 +878,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0kU-LnEAQxe_5FE2ddpkK65-cGgJuEgOCO25UQiCIqF0xgrFNdwsTBr97sIVMHGYSJpCL0K_qVb2fdQT9vQcO4afn-DHas7t3UZZnH2JkH8P0TZKF9ywL4_BtzmpkDTLB3qfJE6vqRhCL9nmYZkvxMY6v9wHCIAXtq2-kgX8GFwqEUcmGtJZqkY62IRIH4A5CN4yTWeQCoZGKgB_BdKYn4JBXdU8pVYLUgwMIgkzV9Xas3RXYb1mXTSlKKjtxAIRsrAbN2UtASCbDWeBh4GPwCooZQU7mtE6bqiXg7oz_Fsn9b5G8q5FOSaZBKkGKxCZFsTj_1nKB64lUSxmZZHzwtlj5j5H49vqA0NMXcxe4Owy8HQb-7v616tqvW-kXrouW-Cquf8sFUtKjHDSdY1-c7CysJFpa_52Wk2roWcnGrlmfifVZQZA2a9VbH9FgS_Yev5vdG8zuudn7o9nfmJ25mF_8DAAA__94kS4Q +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy0km-LnDAQxt_3U4R5dcdOOf-8CxS8Xi0I3npVKYUiomZqBc_YJMKVxe9ejJSty27LFu6NkGfml3keJwfQP3rgEH55iu-jPbv5EGV59ilG9jlM3ydZeMuyMA4fclYja5AJ9jFNHllVN4JYtM_DNFuK93F8uQ8QBiloXz2TBv4VXCgQRiUb0lqqRTrYhki8AHcQumGczCIXCI1UBPwApjM9AYe8qntKqRKk7hxAEGSqrrfX2lmB_ZZ12ZSipLITL4DwIPvpedD8tzdAyMZqEd5CMSPIyRwnalO1BNyd8f9cua_pyrvo6mhmGqQSpEhsjBQL-a-WM9EeSbWUkUnGO2-bLP85Et--AUDo6Zu5CdwdBt4OA393-0517fetBAjJZDgLXAw8DPyLcf1rlpCSHuWg6TT22ZudJSuJltZ_p-WkGnpSsrFj1mNiOSsI0mateushGmzJ7uNP2L0Cdk9h76-wv4GduZjf_AoAAP__XLgxgg== # Use a streaming set operation even though the ordering is not required. query T @@ -905,7 +905,7 @@ vectorized: true table: abcde@abcde_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckt9r2zAQx9_3V4h7aumNxD_yYhioaz0IuHUWm1EYxijWLTO4lifJ0BLyvw_blMYh8Za-BHS6jz7fu3gH5k8FAYRPq-h2-ciu7pdJmnyPkP0I11_jJLxmSRiFdynbICuQSfZtHT8wsSkksfDpLlylbw0CmURGBw2AUCtJj-KZDAQ_wYEModGqIGOU7kq7vmEpXyCYI5R109qunCEUShMEO7ClrQgCSMWmojUJSXo2BwRJVpRV_2zv4v1vvsmLXOaUl_IFEJJG1CZgnwEhbm3AuIvcQ-5DtkdQrX3XGSu2BIGzx49Fck5FanT5LPTrqSAOch_54mwQ95Ig96WxZV3YmTtO0Vm6iTurlqRJDua-ds7sfcjs_Y_5rNM_63xXtbUaXhqZso78V8uJ4A-kt5SQjZuZP46evjYUvH3at1EECBX9slfcuUHu3iD3bq6_6HL7e1w6_Gcn97u4ZL9rMo2qDR3PfPLleTcoyS0NizOq1QWttCp6zXCMe64vSDJ2uHWHw7IerrqAh7AzCXvTsDsJ-yPYOYa9C2D3GPYn4cVR7Gz_6W8AAAD__751mqU= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycklFr2zAQx9_3KcQ9teRGYjt9EQzcpR4E0jqLzSgMYxTrlhkcy5NkaAn57sP2ssYhSZO-GHS6n_6_O7wB86cADsHzfHY_fWI3D9Mojr7PkP0IFl_DKLhlUTALJjFbIsuQSfZtET4yscwkseB5EszjXYNAJpHRXgMglErSk1iTAf4THEgQKq0yMkbpprRpG6byBfgIIS-r2jblBCFTmoBvwOa2IOAQi2VBCxKS9HAECJKsyIv22TbLb7_pMs1SmVKayxdAmKiiXpeG7-QBIapEU_gMyRZB1fYt0VixIuDOFj9m5RyzqnS-Fvp13-Xfni5xca9xeciNzcvMDt2-iO-g76LvAUKoJWmSnP2vnUr2PpTsXZJ8MnN8MvMtqi5V91IvKWnI91qOiD-SXlFENqyG4756_FoR3_3g97MZIBT0y974zgB9d4C-N7j9ovPV736pmbS2F-z37pr9LshUqjR0OPPRl0fNoCRX1C3OqFpnNNcqa2O6Y9hybUGSsd2t2x2mZXfVCO7DzlnYOw-7Z-FxD3YOYe8K2D2Ex2fhuwPtZPvpbwAAAP__SaeeFw== # Use a streaming set operation even though the ordering is not required. query T @@ -932,7 +932,7 @@ vectorized: true table: abcde@abcde_b_c_d_e_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFrnEAQxt_7VyzzlHBTcnp9Wihsmlo4MPF6SgkUkT13agXj2t0VEg7_9-JKyRlM28uLsLPfN_P7xj2C_dUAh-h-F19v79jF522apV9jZN-i_ackjS5ZGsXRTcYksgOykn3ZJ7dMHkpFLLq_iXYZu47jP6JRgUydiACh1Yru5ANZ4N8hgByhM7oka7UZS0cv2KpH4GuEuu16N5ZzhFIbAn4EV7uGgEMmDw3tSSoyV2tAUORk3fi2fpboTP0gzRMgpJ1sLWfvASHpHWciQBGi2EA-IOjePQ-xTlYEPBjwbSDBEoj_FoeiLFRBRa0el5BGHhQfXkUKX0V6JulbbRQZUjOKfHT-S7KQ65ZMRSm5pLsK57Gyp474yQ8HhIZ-uAsRrFCEKxSb1eVHU1c_56X_Xv_mnPXvyXa6tfQy82Ln9RiUVEXT4qzuTUk7o0s_Zjom3ucLiqybbsPpsG39lX8fp-bgDHP40hz-1byZmddDPrz7HQAA___VKCih +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycklGLnDAUhd_7K8J92mVu2dF5CxTcTi0MuOt0lLJQRKK5tYJjbBJhl8H_XoxdVpfZttMXISfn5H4n8QTmZwMcwod9dLu7Z1efdkmafImQfQ0PH-MkvGZJGIXblAlkBbKSfT7Ed0wUpSQWPmzDfcpuo-jZNDqQyZkJEFol6V4cyQD_Bh5kCJ1WJRmj9CidnGEnH4GvEeq26-0oZwil0gT8BLa2DQGHVBQNHUhI0jdrQJBkRd24Y92soNP1UegnQNiqpj-2hj9jA0LSiVF4D9mAoHr7MsdYURFwb8D_Y_HOsbhvXuRlLnPKa_k4p_p9T_9C5b9J9QLTt0pL0iQXINmY_JvlTLU70hUlZOPuxl82S5864rNnB4SGvturwFth4K8w2KyuP-i6-rGUACHuLWeBh4GPwebNrptLXuBAplOtodedz568HouSrGi6OKN6XdJeq9KNmZaxyzlBkrHTrj8tdq3bcr_IPOxdEPZfh_0_hjeL8HrIhne_AgAA__-TtywT # Do not use a streaming set operation for UNION ALL. query T @@ -957,7 +957,7 @@ vectorized: true table: abcde@abcde_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkUFrq0AUhffvVwx39R7cEDVvNSvT1oJgNdW0FIqLiXMJgnHszAgtwf9eMlKSlKQ07fKee849n84WzEsDHKKnRTKPU_b3Ji6WxX2C7DHKr7Ii-seKKImul0wgWyGr2G2e3TGxqiSxhzTOUjZPkg_PzoBMHngAoVWSUrEhA_wZfCgROq0qMkbpnbR1hli-AvcQ6rbr7U4uESqlCfgWbG0bAg5LsWooJyFJTz1AkGRF3bizrivsdL0R-g0Qik60hrMJIGS95SwMMJxh-B_KAUH1dl9irFgTcH_An4H4F4L46FjOggRnQfb9hnQtGta3SkvSJI8QyuEEcaomqpsGn4ynCbxLfkVOplOtoW9eLhFIrmn8HKN6XdFCq8rVjGPmck6QZOy4DcYhbt3KvdVh2P9NOPgyPDsKe0M5_HkPAAD__-GfBxI= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJykkUFL-0AQxe__T7HM6S9MaRJve7LWCIGY1KSKIDlss0MJpNm4uwGl5LtLNpa2UqXqcd68N_Pb2S2Ylxo4hE-LeBYl7P9NlC_z-xjZY5hdp3l4wfIwDudLJpCtkJXsNkvvmFiVkthDEqUJm8XxzjMYkMkDDyA0SlIiNmSAP4MPBUKrVUnGKD1IW2eI5CtwD6Fq2s4OcoFQKk3At2ArWxNwWIpVTRkJSXrqAYIkK6rajXW7rlpdbYR-A4S5qrtNY_iOCBDyVgzCBIoeQXV2v8dYsSbgfo-_Y_HPZPm44DkswZcsewRDuhI16xqlJWmSRxRFfwI6URPVToNPxtME3k-ukZFpVWPozMkFAsk1jc8xqtMlLbQq3ZqxTF3OCZKMHbvBWESNa7nvOgz7fwkH34Yvj8JeX_T_3gMAAP__FW8KhA== # Regression test for #69497. Ensure the merge ordering for streaming set ops # matches the input ordering. @@ -991,7 +991,7 @@ vectorized: true table: abc@abc_a_b_c_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckl9r2zAUxd_3KcR9auktjZ03wcD9o0HArTPbjI5hgizdZAbX8iQZWkK--7BMaV3abdmjztHvnntk78H9aoGDuF-nl6s7dnKzKsria4rsm8ivskKcskKk4rpkGhkh27IveXbLNG2ZuL8W6_LZlshqZGqyZa1Ylt-InF19DyAgdEbTnXwgB_wHRFAh9NYocs7YUdqHCyv9CHyB0HT94Ee5QlDGEvA9-Ma3BBxKWbeUk9RkLxaAoMnLpg1jNW2T3jYP0j4BQtHLznF2DtUBwQz-ZaTzckfAowP-X2w0j5W1SmStNnJTb9Sm0Y-vwxGywXOWRJjEmCw_XCb-cJmXHYbOWE2W9Cy_Gsm_XXmn0S3ZHRXks_4inhcqn3rizx_4Mk0BoaWtP0miM0ziM0yW56efbbP7OZf-uevymIfPyfWmc_S287uTF2NR0juaHs6ZwSpaW6NCzHTMAhcETc5PbjwdVl2wwp_xGo6OgOO3cPxHeDmDF4fq8Ol3AAAA__8P8yLp +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycklFr2zAUhd_3K8R9auktjZ03wcBt6kHArTPbjI5hgizdZAbH8iQZWkL--7C80Lq029JHnaOj-51r78H-aoBD_LBKrpf37Ox2mRf51wTZtzi7SfP4nOVxEi8KppARsg37kqV3TNGGxQ-LeFUcbYGsQiZHW1SSpdltnLGb7z4ICK1WdC92ZIH_gABKhM5oSdZqM0h7f2GpHoHPEOq2690glwhSGwK-B1e7hoBDIaqGMhKKzNUMEBQ5UTf-WUWbqDP1TpgnQFjopt-1lh_RASHvxCBcQnlA0L17nmKd2BLw4IAfIwmmJKKSkajkWqyrtVzX6vElz59d_Q9P-C7PM0bfaqPIkJoglEPyX1feKHVHZks5ubS7CqediqeO-PGzXycJIDS0cWdRcIFReIHR_PL8s6m3P6cSIKS94ywKMAoxmr_bdX7K7jOynW4tve785suzoSipLY2Ls7o3klZGSz9mPKY-5wVF1o1uOB6Wrbf8z_EyHJwQDl-Hw7-G55Pw7FAePv0OAAD__y5zKhQ= # Example where the interesting orderings do not include all columns. statement ok @@ -1030,7 +1030,7 @@ vectorized: true table: abcd@abcd_a_b_c_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckm9r2zAQxt_vU4h71dIrie28EgzUPx4E0jqzw-gYJijWxTE4lifJ0BLy3YdtSmuv6cjeCHS6537Pc-gA9ncJHMKn5eJm_sgu7ufJKvm-QPYjjG-jJLxkSbgI71aMkG2R5ch27FscPTDa5jsWPt2Fy9Vri0S2QZYhU32L3GSKRfF9GLPbn90AQKi0oke5Jwv8F3iQItRGZ2StNm3p0DXM1TPwKUJR1Y1ryylCpg0BP4ArXEnAYSU3JcUkFZnJFBAUOVmU3djWm6hNsZfmBRCSWlaWs2tIjwi6cW8zrZM5AfeO-H9cb8htA4v2WMv1Zp2tC_X8Ho8QNY4z4aHwUQQoZicd-ec4SrRxZCb-0IzwrlD4VyiCaxSzK0DYS5ftWEkVZ8FJcnCS_AZsKm0UGVIDYtoq_9Xygf0HMjkl5KJ6EgwjrF5q4q-f7GaxAISStu5iFO3yqyny3d_lcxY-O2fhMdlaV5bG8T-cPG0zk8qp36HVjcloaXTWYfpr1Om6giLr-tegv8yr7qn7o-_F3qdifyCejsX-GWR_LA4-Fc9G5PT45U8AAAD__ySlYvg= +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycUl9r2z4Uff99CnGfWnJLYjtPgh-oTT0IpHVmh9ExQlCsG8fgWJ4kQ0vIdx92KIm9plv2ItDRPff8QXuwPwvgEL7MZ_fTZ3bzOE0WydcZsm9h_BAl4S1Lwlk4WTBCtkGWIduyL3H0xGiTbVn4Mgnni_cRiWyNLEWmjiNynSoWxY9hzB6-twsAodSKnuWOLPAf4MESoTI6JWu1aaB9OzBVr8BHCHlZ1a6BlwipNgR8Dy53BQGHhVwXFJNUZIYjQFDkZF60axtvojL5Tpo3QJjoot6Vlp9lAISkkg12B8sDgq7dSck6mRFw74D_5sbrumlqEM2xkqv1Kl3l6vXc1Km1vzHlX2Mq0caRGfpdP8IboPAHKII7FOMBIOykS7esoJKz4KJycFH5JFiX2igypDqKy4b5p5EP7D-RySghF1XDoBth8VYRf_9997MZIBS0cTe9aLf_mzzb_g4DQlQ7zoSHwkcRoBhfjD2-pvCYbKVLS_34H24eNZlJZXTs0OrapDQ3Om1ljteo5bWAIuuOr8HxMi3bp_abnpO9T8l-hzzqk_0rlP0-OfiUPO4pLw___QoAAP__nw9q6g== # Regression test for #68702. Ensure correct behavior when a column is projected # twice on the left side. @@ -1066,7 +1066,7 @@ vectorized: true row 0, expr 1: -1643624263 row 0, expr 2: CAST(NULL AS OID) · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUWFrnEAQ_d5fscyns5lwul5MWCh4TSwI5ryeJgSKH6xOr1Lj2t21NBz334vaJvHItQ34wX0zb957MzvQ32sQENyto2W4YrOrMEmTjxGy22DzPk4CiyVBFFymzOSfa5JVyZYJK2Tt4CHCkX37_euyD5v4mhnv4tzmLLi7DNYpW0bRn1lvx_rsdhndBAmbrW6iCBk_s89c7i3ObSFEHF4hm5063sL1-IJ7riWECFfphWUBQiNLWuX3pEF8AgcyhFbJgrSWqod2Q0NY_gRhI1RN25kezhAKqQjEDkxlagIBaZ9hQ3lJam4DQkkmr-ph7Ojeb1V1n6sHQEjavNGCnQJC3BnBfBf7z4FsjyA786SiTb4lEM4e_99JLYu8Zj_yuiPN7LkzNfMo6KDPjwryo4JPOl0jVUmKyolA1jP_1fKC62tSW0rIxO2cTx2nDy2JZ7cHhJq-mJnvnqDvnKDPT6x3qtp-nUKPy-2Dou8ezeq-Zrkb0q1sNB1mfnGy3Qelckvj4rTsVEFrJYtBZnzGA28AStJmrPLxETZDabj-c7LzCjI_JPO_kt0J2d5n-ze_AgAA__-pczGn +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyUUl1vmzAUfd-vsO5TstwqYNK0sjSJLGUSEg1ZoFWlKQ8M7jJUBzPbTKui_PcJ2JYmarZV4gGf63PPB-zAfJMgIHhYRrNwwQY3YZImHyNk98HqfZwEQ5YEUTBPmc0-S1JlwWYJy5V08RThyB5_vXrswyq-ZXZ6feVwFjzMg2XKZlH0e9fbfj64n0V3QcIGi7soQsYvnUuPTydXjhAiDm-QDS7c6cSb8gmfekMhRLhIr4dDQKhUQYtsSwbEJ3BhjVBrlZMxSrfQrrsQFj9AOAhlVTe2hdcIudIEYge2tJJAQNpmWFFWkB47gFCQzUrZre3d-7Uut5l-AoS5ks22MoI9HrIDQlJnLXgBCHFjBfM5to8L6z2CauxB3NhsQyDcPf6_QanyTLLvmWzIMGfsHnvsBT30XfT5WUF-VvCg01RKF6SpOBJYt8x_XXnB9S3pDSVk43rMjx2nTzWJZ78EIEj6Yge-N0LfHaHPR8N3utx8PYb-lOt25Xpns3qvKXdFplaVodPML2522qBUbKgvzqhG57TUKu9k-mPc8TqgIGP7Ke8PYdWNuq__nOy-gsxPyfyvZO-I7OzX-zc_AwAA__8-bTlL query T EXPLAIN (DISTSQL,VERBOSE) SELECT a, b AS b1, b AS b2 FROM abc EXCEPT SELECT a, b, c FROM abc ORDER by a, b1 @@ -1097,7 +1097,7 @@ vectorized: true table: abc@abc_a_b_c_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycklFro0AQx9_vUyzz1NIpiZq-CAemjQcBW3MqR49DwrrO5QTP9XZX6BHy3Q-VXmpobJK37Mz-5vefjVvQf0pwwX9eBfPlE7taLOMk_hog--ZH92HsX7PYD_yHhHFkGZvHLLNef9jsSxQ-Mp4J5j8_-Kvk7VVkYt8Oo4UfsfvvXccChErm9MR_kwb3B1iQItRKCtJaqra07S4s8xdwpwhFVTemLacIQioCdwumMCWBCwnPSoqI56QmU0DIyfCi7MbyTHg8E2u-ztZiXeQvgBDXvNIuuwWEsDEu8yz0bPRsSHcIsjF7kTZ8Q-BaO7wsjHVxGOdoGPucMItCm6ISZmIPk_y3IIQqJ0V5bz6udS7SOqdpRxeeHTXvhU0l-3kDX9qSH115J_4jqQ3FZMJ6MhsukPytyX390OdBAAgl_TRXnnWDnn2DnnN7_VkVm1_D0sl_7t05rxyRrmWl6XDndydP20Up31D_cFo2StBKSdFp-mPYcV0hJ236rt0fllXfagO-ha1R2BmH7VF4NoCtQ9g5A7YP4dkofHcQO919-hcAAP___aifEw== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyckt9r2zAQx9_3V4h7aumVxHL6Yhg4TTwIpHVmh9ExQpDlW2ZwLU-SoSPkfx-2VxKbxmv6pvvxue_3Du3B_M7Bg-BptZwuHtnVfBGv469LZN-C6D6Mg2sWB8tgtmYCWcKmMUuc1wdnX6LwgYlEsuBpFqzWp63I5LEcRvMgYvffm4oDCIVK6VE8kwHvBziwQSi1kmSM0nVq3zQs0hfwxghZUVa2Tm8QpNIE3h5sZnMCD9YiySkikZIejQEhJSuyvBkrEumLRG7FNtnKbZa-AMJM5dVzYbzGCCDEpaijW0AIK-sx30Gfo89hc0BQlT0KGyt2BJ5zwI-Zcy40h0ye-jvnh1_iZ54ZmxXSjnjXzL-t3foKOiVNaXsJ96ys-yFZ932yfEh5clb5KFgVqp3X0dvU5P9a3rD_QHpHMdmwHE26C6z_lOS9_v3pcgkIOf20V75zgz6_Qd-9vf6ss92vbqr32c7venfJlSMypSoM9Xd-c_K4XpTSHbWHM6rSklZayUamDcOGaxIpGdtWeRssirZUGzyFnUHYHYb5IDzpwE4fdi-AeR-eDMJ3Pdubw6e_AQAA__8n-aWG query T EXPLAIN (DISTSQL,VERBOSE) SELECT a, b AS b1, b AS b2 FROM abc INTERSECT SELECT a, c, b FROM abc ORDER by a, b2 @@ -1128,4 +1128,4 @@ vectorized: true table: abc@abc_a_b_c_idx spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJycktFvmzAQxt_3V1j31KquEkz6gjSJdGFSJBo6QNOmCUXGvmVIDDPbSJ2i_O8T0C0FNazJGz5_v_u-O7wH86sED4Ivj-FyvSFXq3WSJp9CSj4H8X2UBNckCcLgQ0o4JTlZJiR3_n4w8jGOHgjPBVlv0iBOWtlRLVrdP0UUr4KY3H_t-jCgUCmJG_4TDXjfwIGMQq2VQGOUbkv7TrCWT-DNKRRV3di2nFEQSiN4e7CFLRE8SHleYoxcop7NgYJEy4uya8tz4fNcbPk234ptIZ-AQlLzynjkFihEjfWI71DfpT6D7EBBNfZoZCzfIXjOgV4WxrksDJsKw84JsyqMLSphZ2yY5NnFbV21RI3yeQ0nbd2LbN032k4NvDjpfDRsKtX3G_hlLfk_ySvxH1DvMEEb1bPFcID0d43ei7e-DEOgUOJ3e-U7N9R3b6jPbq_f62L3Y1ga_d_Ti747Z9ExmlpVBsdjv9p53s6Kcof97oxqtMBHrURn0x-jjusKEo3tb93-sK76qzbgS9iZhNk0zCbhxQB2xrB7BszG8GISvhvFzg7v_gQAAP__Zfug5A== +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyck9Fr2zAQxt_3V4h7aqlKYjl9MQycNh4E3LizzdgYJsjyLTO4lifJ0BHyvw_Z3VKbxmv6Zp2-333fndEe9K8KPAi-PoTL9YZcrNZJmnwOKfkSxLdRElySJAiDu5RwSnKyTEju_P1g5FMc3ROeC7LepEGcWNlRLazunyKKV0FMbr91fRhQqGWBG_6IGrzv4EBGoVFSoNZS2dK-E6yLJ_DmFMq6aY0tZxSEVAjeHkxpKgQPUp5XGCMvUM3mQKFAw8uqa8tz4fNcbPk234ptWTwBhTtZtY-19roglAigkDTcFq6BQtQaj_gO9V3qM8gOFGRrjt7a8B2C5xzo-_I5Z-Y7EY5NhWPnhFuV2pS1MDM2TPbs4lpXVaDC4nktJ23dd9m6b7SdGnhx0vlo2Nay7zfwyyz5P8kr8e9R7TBBEzWzxXCA9HeD3ovnsAxDoFDhD3PhO1fUd6-oz64vP6py93NYGv3f04u-OWfRMepG1hrHY7_aeW5nxWKH_e60bJXAByVFZ9Mfo47rCgVq09-6_WFd91c24EvYmYTZNMwm4cUAdsawewbMxvBiEr4Zxc4OH_4EAAD__-kdqwc= diff --git a/pkg/sql/opt/exec/execbuilder/testdata/vectorize_local b/pkg/sql/opt/exec/execbuilder/testdata/vectorize_local index 06ca2f18538d..d6b29b763862 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/vectorize_local +++ b/pkg/sql/opt/exec/execbuilder/testdata/vectorize_local @@ -60,7 +60,7 @@ regions: table: a@a_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkcFqKjEUhvf3KQ5ndS_kYqaLLrKSigWx1qLipswiJgcbOpNMkzNUkXmsvkCfrMxEF6UIXZ7v_Pnz588J01uFCtfTh-lkAxruV8sFaBTog6VHXVNC9YwFlgKbGAylFGKPToNgZg-opEDnm5Z7XAo0IRKqE7LjilDhRu8qWpG2FEcSBVpi7arBVo-b6Godjyhw3WifFPxHgcuWFYwLFDjfAruaFMjPj5RnEzyTZxf8j1UM7wkiaavgRkh5NtgdmS64uIW5u0OBi-1kAompARNaz_CXDjxynv8pkEPKLCB6vSao9QFqqkM8gq6qYDSTVSChd99pNi-UILTc9G_p9UO4C8jxyk5gJufqEus9oSo68ft6V5Sa4BN9a_aas-xKgWT3lL8whTYaeorBDNfkcTmcG4ClxHlb5GHm86oruz9fAQAA__-9SrYw +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJyMkcFqGzEQhu99imFOLahY20MPOpUuLhjXdbGNL2EPsjQ4IrvSRpolNmYfKy-QJwsrxYcQDLntfPPvPz-_LpgeW1S4nf-d1zvQ8GezXoFGgT5Y-qc7SqjusMJGYB-DoZRCnNAlCxb2hEoKdL4feMKNQBMiobogO24JFe70oaUNaUtxJlGgJdauzbb6Vx9dp-MZBdahHTqfVD6-7fX0-R0FLvfAriMF8uU5ldkEz-TZBf9hFcNTgkjaKvghpKwKPZyZrrj6CUv3GwWu9nUNiakHEwbP8JVOPHOevymQOWgRED3cEnT6BB11IZ5Bt20wmskqkDC5HzSbe0oQBu4HVjDpc7grKPGaUWAhb-0l1kdCVY3i8w1vKPXBJ3pX7i1nOTYCyR6pvGIKQzT0PwaTz5Rxnf_LwFLisq3KsPBlNTbjl9cAAAD___Jpt8k= query T EXPLAIN ANALYZE (DISTSQL) SELECT c.a FROM c JOIN d ON d.b = c.b @@ -98,7 +98,7 @@ regions: table: c@sec spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk99q20wQxe-_pxjm6itsHckXpSwUTE0KThO7OCE3RRer3SFVI-2ouyNqY_xYfYE-WdGuAk1NSv9dztk5M6PfQQeMn1rUeH1-eb68ATsz8Ga7uQILF5vVGhxs1uBmNbwCO6tRoWdHa9NRRP0eS6wU9oEtxchhlA6pYeV2qAuFje8HGeVKoeVAqA8ojbSEGm9M3dKWjKNwVqBCR2KaNo21i0gWFV73xkcNz1HhZhANi1It5qjw7S1I05GG4uuXmGvLXshLw_7kKfDnCIGM0zCZ673Qg1S-gNeo8Op2uYQo1IPlwQv8Tzs5a7w801Ck83ID0f1TDZ3ZQUcdhz2YtmVrhJyGIk2vjdgPFIEH6ccPGfvTWQ_CHKujwlxNvKKYO0JdHtWvM73gxk9Iy8dI3aIPTWfCHhVeMt8PPXzkxgN7DYnpBBinBYlaBpbrKKZtT9j-WQzlaQwv_1EKtCM7nO7_iwDmvxPAlmLPPtIj-E9NLo6VQnJ3lH-cyEOw9C6wTWtyuUm-JDiKkl_LXKx8fhoP_N5c_tQ8_8FcHf_7FgAA__-oKkn2 +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJysk89qGzEQxu99imFOLajOrg-lCAqmJgWnibc4IZeyB600pNvsarbSLLUxfqy-QJ-srJRAU5PSPzl-n-Yfvw_tMX7pUOPl6fnp8grszMC7TXUBFs6q1RocVGtwswbegJ01qNCzo7XpKaL-iCXWCofAlmLkMFn7VLByW9SFwtYPo0x2rdByINR7lFY6Qo1XpuloQ8ZROClQoSMxbZfG2kUkiwqX3I29jxqMgmn35WAm9RIVvr8GaXvSUHz_FrO27IW8tOyPngJ_jRDIOA3z7DQ7oXurfAVvUeHF9XIJUWgAy6MXeE5bOWm9vNBQpAtzAdHtYwW92UJPPYcdmK5ja4SchiJNb4zYTxSBRxlG0TDVp7PujTnWB4VZ3SGLYm4IdXlQf471jFt_R7V8SNUthtD2JuxQ4Tnz7TjAZ249sNewmLBU0xmLqSstSNQysKyjmK47YvtvMZTHMbx-ohRoS3Y83v8fAcz_JoANxYF9pAfwH5tcHGqF5G4o_53IY7D0IbBNa7KsUl8yHEXJr2UWK5-fpgN_bi5_2zz_pbk-PPsRAAD__9oeS58= query T EXPLAIN (OPT, VERBOSE) SELECT c.a FROM c INNER MERGE JOIN d ON c.a = d.b @@ -196,7 +196,7 @@ regions: table: d@d_pkey spans: FULL SCAN · -Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkU8Fq20AQvfcrhjklZBtLcuhhIWAa3OK0tosdcik-rHenioi0q-yOqI3xZ_UH-mVFUkMjx3Fr6KHQm-bNe6OZN7MbDA85SpwPPw6vbkCfK3g3m45Bw2gyGc5gPJy9H8L1dDQBA9NJQ7gEc75EgdYZmqiCAsrPGONCYOmdphCcr6FNQxiZFcpIYGbLimt4IVA7Tyg3yBnnhBJv1DKnGSlDvhehQEOssrwpqweBNAqcl8oGCa9R4LRiCYMYBX64Bc4KkhB9_xbaWDvLZDlz9lnKu68BPCkjIWmR5ZrpEYrfwFsUOL69uoLAVIJ2lWU4oRX3MsunEqKmt5ZAdP8SoVArKKhwfg0qz51WTEZC1FRfKtZ3FMBVXNZT1PymrUcgwcVWYBv9NCuwSgllvBV_bujceSbfi7teDuIzFEgr0tVzgw61XefCQw5MRQkmC_dQBZXSX5gqOWaqp2eSdEczg9JnhfLrfaeS_Gen0n_R1F9eVtZ5Q55Mx8dFrfwdZc9mxuRTunaZJd_rdzeT0xc-GcRnp5c-S-_az84j_qfu8eKYe5xRKJ0NtGvh3spR7RuZlNo9BFd5TZ-8081v2nDa6BrAUOA2G7fByLapusGn4viguN8Rx7vi5AhxsivuHxRf7LS92L76EQAA__8gyhMy +Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzkUsFqGzEQvfcrhjklRI1316EHQcDUuMVpbRcn5FJ8kKWps2RX2kiz1Mb4s_oD_bKyq4baTuLW0EOhN82b90Yzb2aN4aFAideDj4P-DehzBe-mkxFoGI7HgymMBtP3A7iaDMdgYDJuCZdgzuco0DpDY1VSQPkZU5wJrLzTFILzDbRuCUOzRJkIzG1VcwPPBGrnCeUaOeeCUOKNmhc0JWXIdxIUaIhVXrRldS-QRoF9V9SlDRIUCryuVPN8jQI_3ALnJUlIvn8LMdbOMlnOnX2S8u5rAE_KSMgiMl8xPULpG3iLAke3_T4Epgq0qy3DCS25k1s-lZC07UUC0f1LhFItoaTS-RWoonBaMRkJSVt9rljfUQBXc1WzhIbftvUIZDjbCIzRT78CqwWhTDfizz29dp7Jd9JdO3vpGQqkJen6qUGH2m5y4aEAprICk4d7qINa0F-YKjtmqu1LyXZHM73K56Xyq-1rmf-_19J90ddfdtbWeUOezI6Vs0b5O8ozyxmRX9CVyy35Tnd3OQV94ZNeenZ66fPFXXyiwEkzQi_9107y4piTnFKonA20b-GzlZPGNzILinsIrvaaPnmn229iOGl1LWAocMymMRjamGoa3BanB8XdHXG6L86OEGf74u5B8cVe27PNqx8BAAD__1-LFmQ= statement ok RESET vectorize; RESET distsql diff --git a/pkg/sql/parser/sql.y b/pkg/sql/parser/sql.y index f9e676addd00..9878f8945f42 100644 --- a/pkg/sql/parser/sql.y +++ b/pkg/sql/parser/sql.y @@ -1332,7 +1332,7 @@ func (u *sqlSymUnion) setVar() *tree.SetVar { %type unrestricted_name type_function_name type_function_name_no_crdb_extra %type non_reserved_word %type non_reserved_word_or_sconst -%type role_spec +%type role_spec opt_owner_clause %type role_spec_list %type zone_value %type string_or_placeholder @@ -7437,7 +7437,7 @@ sequence_option_list: | sequence_option_list sequence_option_elem { $$.val = append($1.seqOpts(), $2.seqOpt()) } sequence_option_elem: - AS typename { + AS typename { // Valid option values must be integer types (ex. int2, bigint) parsedType := $2.colType() if parsedType.Family() != types.IntFamily { @@ -8792,7 +8792,7 @@ transaction_deferrable_mode: // %Text: CREATE DATABASE [IF NOT EXISTS] // %SeeAlso: WEBDOCS/create-database.html create_database_stmt: - CREATE DATABASE database_name opt_with opt_template_clause opt_encoding_clause opt_lc_collate_clause opt_lc_ctype_clause opt_connection_limit opt_primary_region_clause opt_regions_list opt_survival_goal_clause opt_placement_clause + CREATE DATABASE database_name opt_with opt_template_clause opt_encoding_clause opt_lc_collate_clause opt_lc_ctype_clause opt_connection_limit opt_primary_region_clause opt_regions_list opt_survival_goal_clause opt_placement_clause opt_owner_clause { $$.val = &tree.CreateDatabase{ Name: tree.Name($3), @@ -8805,6 +8805,7 @@ create_database_stmt: Regions: $11.nameList(), SurvivalGoal: $12.survivalGoal(), Placement: $13.dataPlacement(), + Owner: $14.roleSpec(), } } | CREATE DATABASE IF NOT EXISTS database_name opt_with opt_template_clause opt_encoding_clause opt_lc_collate_clause opt_lc_ctype_clause opt_connection_limit opt_primary_region_clause opt_regions_list opt_survival_goal_clause opt_placement_clause @@ -8950,6 +8951,18 @@ opt_connection_limit: $$.val = int32(-1) } +opt_owner_clause: + OWNER opt_equal role_spec + { + $$ = $3 + } +| /* EMPTY */ + { + $$.val = tree.RoleSpec{ + RoleSpecType: tree.CurrentUser, + } + } + opt_equal: '=' {} | /* EMPTY */ {} diff --git a/pkg/sql/physicalplan/BUILD.bazel b/pkg/sql/physicalplan/BUILD.bazel index d871ffaf503a..5caec83a2bc9 100644 --- a/pkg/sql/physicalplan/BUILD.bazel +++ b/pkg/sql/physicalplan/BUILD.bazel @@ -57,6 +57,7 @@ go_test( "//pkg/sql/catalog", "//pkg/sql/catalog/catalogkeys", "//pkg/sql/catalog/catalogkv", + "//pkg/sql/catalog/descpb", "//pkg/sql/distsql", "//pkg/sql/execinfra", "//pkg/sql/execinfrapb", diff --git a/pkg/sql/physicalplan/aggregator_funcs_test.go b/pkg/sql/physicalplan/aggregator_funcs_test.go index 1f083fa1a1ae..8757c3ee1d4c 100644 --- a/pkg/sql/physicalplan/aggregator_funcs_test.go +++ b/pkg/sql/physicalplan/aggregator_funcs_test.go @@ -23,6 +23,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkv" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/distsql" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" @@ -128,18 +129,20 @@ func checkDistAggregationInfo( info physicalplan.DistAggregationInfo, ) { colTypes := make([]*types.T, len(colIndexes)) - columns := make([]uint32, len(colIndexes)) + columnIDs := make([]descpb.ColumnID, len(colIndexes)) colIdx := make([]uint32, len(colIndexes)) for i, idx := range colIndexes { - colTypes[i] = tableDesc.PublicColumns()[idx].GetType() - columns[i] = uint32(idx) + col := tableDesc.PublicColumns()[idx] + columnIDs[i] = col.GetID() + colTypes[i] = col.GetType() colIdx[i] = uint32(i) } makeTableReader := func(startPK, endPK int, streamID int) execinfrapb.ProcessorSpec { tr := execinfrapb.TableReaderSpec{ - Table: *tableDesc.TableDesc(), - Spans: make([]roachpb.Span, 1), + Table: *tableDesc.TableDesc(), + Spans: make([]roachpb.Span, 1), + ColumnIDs: columnIDs, } var err error @@ -152,15 +155,8 @@ func checkDistAggregationInfo( t.Fatal(err) } - // Copy the original columns because output columns will be modified by - // pkg/sql/colfetcher/cfetcher_setup.go#remapPostProcessSpec. - outputColumns := append([]uint32{}, columns...) return execinfrapb.ProcessorSpec{ Core: execinfrapb.ProcessorCoreUnion{TableReader: &tr}, - Post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: outputColumns, - }, Output: []execinfrapb.OutputRouterSpec{{ Type: execinfrapb.OutputRouterSpec_PASS_THROUGH, Streams: []execinfrapb.StreamEndpointSpec{ diff --git a/pkg/sql/row/BUILD.bazel b/pkg/sql/row/BUILD.bazel index cb7108e3ced5..ae6980ba6a9b 100644 --- a/pkg/sql/row/BUILD.bazel +++ b/pkg/sql/row/BUILD.bazel @@ -109,7 +109,6 @@ go_test( "//pkg/testutils", "//pkg/testutils/serverutils", "//pkg/testutils/sqlutils", - "//pkg/util", "//pkg/util/encoding", "//pkg/util/leaktest", "//pkg/util/log", diff --git a/pkg/sql/row/errors.go b/pkg/sql/row/errors.go index 73f8588b32cd..caacaf0b0cba 100644 --- a/pkg/sql/row/errors.go +++ b/pkg/sql/row/errors.go @@ -24,7 +24,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/pgwire/pgerror" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" - "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/errors" ) @@ -213,13 +212,8 @@ func DecodeRowInfo( colIDs = append(colIDs, index.GetStoredColumnID(i)) } } - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, len(colIDs)-1) - - var colIdxMap catalog.TableColMap cols := make([]catalog.Column, len(colIDs)) for i, colID := range colIDs { - colIdxMap.Set(colID, i) col, err := tableDesc.FindColumnWithID(colID) if err != nil { return nil, nil, nil, err @@ -230,10 +224,8 @@ func DecodeRowInfo( tableArgs := FetcherTableArgs{ Desc: tableDesc, Index: index, - ColIdxMap: colIdxMap, IsSecondaryIndex: indexID != tableDesc.GetPrimaryIndexID(), - Cols: cols, - ValNeededForCol: valNeededForCol, + Columns: cols, } rf.IgnoreUnexpectedNulls = true if err := rf.Init( diff --git a/pkg/sql/row/fetcher.go b/pkg/sql/row/fetcher.go index 9741792c5a2d..4a80fbfda83c 100644 --- a/pkg/sql/row/fetcher.go +++ b/pkg/sql/row/fetcher.go @@ -69,13 +69,10 @@ type tableInfo struct { isSecondaryIndex bool indexColumnDirs []descpb.IndexDescriptor_Direction - // The table columns to use for fetching, possibly including ones currently in - // schema changes. + // cols are the columns for which we produce values. The fetcher produces rows + // with one value for each of these columns. cols []catalog.Column - // The set of ColumnIDs that are required. - neededCols util.FastIntSet - // The set of indexes into the cols array that are required for columns // in the value part. neededValueColsByIdx util.FastIntSet @@ -132,34 +129,11 @@ type tableInfo struct { type FetcherTableArgs struct { Desc catalog.TableDescriptor Index catalog.Index - ColIdxMap catalog.TableColMap IsSecondaryIndex bool - Cols []catalog.Column - // The indexes (0 to # of columns - 1) of the columns to return. - ValNeededForCol util.FastIntSet -} -// InitCols initializes the columns in FetcherTableArgs. -func (fta *FetcherTableArgs) InitCols( - desc catalog.TableDescriptor, withSystemColumns bool, invertedColumn catalog.Column, -) { - cols := make([]catalog.Column, 0, len(desc.AllColumns())) - cols = append(cols, desc.ReadableColumns()...) - if invertedColumn != nil { - for i, col := range cols { - if col.GetID() == invertedColumn.GetID() { - cols[i] = invertedColumn - break - } - } - } - if withSystemColumns { - cols = append(cols, desc.SystemColumns()...) - } - fta.Cols = make([]catalog.Column, len(cols)) - for i, col := range cols { - fta.Cols[i] = col - } + // Columns that are being fetched. The resulting datums for each row map + // 1-to-1 to these columns. + Columns []catalog.Column } // Fetcher handles fetching kvs and forming table rows for a single table. @@ -291,15 +265,20 @@ func (rf *Fetcher) Init( rf.kvFetcherMemAcc = &memAcc } + var colIdxMap catalog.TableColMap + for i, c := range tableArgs.Columns { + colIdxMap.Set(c.GetID(), i) + } + table := &rf.table *table = tableInfo{ desc: tableArgs.Desc, - colIdxMap: tableArgs.ColIdxMap, + colIdxMap: colIdxMap, index: tableArgs.Index, isSecondaryIndex: tableArgs.IsSecondaryIndex, - cols: tableArgs.Cols, - row: make(rowenc.EncDatumRow, len(tableArgs.Cols)), - decodedRow: make(tree.Datums, len(tableArgs.Cols)), + cols: tableArgs.Columns, + row: make(rowenc.EncDatumRow, len(tableArgs.Columns)), + decodedRow: make(tree.Datums, len(tableArgs.Columns)), // These slice fields might get re-allocated below, so reslice them from // the old table here in case they've got enough capacity already. @@ -310,17 +289,9 @@ func (rf *Fetcher) Init( oidOutputIdx: noOutputColumn, } - var err error - - // Scan through the entire columns map to see which columns are - // required. - for _, col := range table.cols { - idx := table.colIdxMap.GetDefault(col.GetID()) - if tableArgs.ValNeededForCol.Contains(idx) { - // The idx-th column is required. - table.neededCols.Add(int(col.GetID())) - - // Set up any system column metadata, if this column is a system column. + for idx, col := range table.cols { + if col.IsSystemColumn() { + // Set up any system column metadata. switch colinfo.GetSystemColumnKindFromColumnID(col.GetID()) { case catpb.SystemColumnKind_MVCCTIMESTAMP: table.timestampOutputIdx = idx @@ -339,7 +310,10 @@ func (rf *Fetcher) Init( table.indexColumnDirs = table.desc.IndexFullColumnDirections(table.index) fullColumns := table.desc.IndexFullColumns(table.index) - table.neededValueColsByIdx = tableArgs.ValNeededForCol.Copy() + if len(table.cols) > 0 { + table.neededValueColsByIdx.AddRange(0, len(table.cols)-1) + } + neededIndexCols := 0 nIndexCols := len(fullColumns) if cap(table.indexColIdx) >= nIndexCols { @@ -356,27 +330,10 @@ func (rf *Fetcher) Init( colIdx, ok := table.colIdxMap.Get(id) if ok { table.indexColIdx[i] = colIdx - if table.neededCols.Contains(int(col.GetID())) { - neededIndexCols++ - table.neededValueColsByIdx.Remove(colIdx) - } + neededIndexCols++ + table.neededValueColsByIdx.Remove(colIdx) } else { table.indexColIdx[i] = -1 - if table.neededCols.Contains(int(col.GetID())) { - return errors.AssertionFailedf("needed column %d not in colIdxMap", id) - } - } - } - - // In order to track #40410 more effectively, check that the contents of - // table.neededValueColsByIdx are valid. - for idx, ok := table.neededValueColsByIdx.Next(0); ok; idx, ok = table.neededValueColsByIdx.Next(idx + 1) { - if idx >= len(table.row) || idx < 0 { - return errors.AssertionFailedf( - "neededValueColsByIdx contains an invalid index. column %d requested, but table has %d columns", - idx, - len(table.row), - ) } } @@ -387,20 +344,21 @@ func (rf *Fetcher) Init( // The number of columns we need to read from the value part of the key. // It's the total number of needed columns minus the ones we read from the // index key, except for composite columns. - table.neededValueCols = table.neededCols.Len() - neededIndexCols + table.index.NumCompositeColumns() + table.neededValueCols = len(table.cols) - neededIndexCols + table.index.NumCompositeColumns() if table.isSecondaryIndex { colIDs := table.index.CollectKeyColumnIDs() colIDs.UnionWith(table.index.CollectSecondaryStoredColumnIDs()) colIDs.UnionWith(table.index.CollectKeySuffixColumnIDs()) for i := range table.cols { - if table.neededCols.Contains(int(table.cols[i].GetID())) && !colIDs.Contains(table.cols[i].GetID()) { + if !colIDs.Contains(table.cols[i].GetID()) { return errors.Errorf("requested column %s not in index", table.cols[i].GetName()) } } } // Prepare our index key vals slice. + var err error table.keyValTypes, err = getColumnTypes(fullColumns, table.keyValTypes) if err != nil { return err @@ -867,7 +825,7 @@ func (rf *Fetcher) processKV( table.rowLastModified = kv.Value.Timestamp } - if table.neededCols.Empty() { + if len(table.cols) == 0 { // We don't need to decode any values. if rf.traceKV { prettyValue = "" @@ -944,8 +902,8 @@ func (rf *Fetcher) processKV( } for i := 0; i < table.index.NumKeySuffixColumns(); i++ { id := table.index.GetKeySuffixColumnID(i) - if table.neededCols.Contains(int(id)) { - table.row[table.colIdxMap.GetDefault(id)] = table.extraVals[i] + if idx, ok := table.colIdxMap.Get(id); ok { + table.row[idx] = table.extraVals[i] } } if rf.traceKV { @@ -1007,33 +965,31 @@ func (rf *Fetcher) processValueSingle( return "", "", errors.Errorf("single entry value with no default column id") } - if table.neededCols.Contains(int(colID)) { - if idx, ok := table.colIdxMap.Get(colID); ok { - if rf.traceKV { - prettyKey = fmt.Sprintf("%s/%s", prettyKey, table.desc.DeletableColumns()[idx].GetName()) - } - if len(kv.Value.RawBytes) == 0 { - return prettyKey, "", nil - } - typ := table.cols[idx].GetType() - // TODO(arjun): The value is a directly marshaled single value, so we - // unmarshal it eagerly here. This can potentially be optimized out, - // although that would require changing UnmarshalColumnValue to operate - // on bytes, and for Encode/DecodeTableValue to operate on marshaled - // single values. - value, err := valueside.UnmarshalLegacy(rf.alloc, typ, kv.Value) - if err != nil { - return "", "", err - } - if rf.traceKV { - prettyValue = value.String() - } - table.row[idx] = rowenc.DatumToEncDatum(typ, value) - if DebugRowFetch { - log.Infof(ctx, "Scan %s -> %v", kv.Key, value) - } - return prettyKey, prettyValue, nil + if idx, ok := table.colIdxMap.Get(colID); ok { + if rf.traceKV { + prettyKey = fmt.Sprintf("%s/%s", prettyKey, table.desc.DeletableColumns()[idx].GetName()) + } + if len(kv.Value.RawBytes) == 0 { + return prettyKey, "", nil + } + typ := table.cols[idx].GetType() + // TODO(arjun): The value is a directly marshaled single value, so we + // unmarshal it eagerly here. This can potentially be optimized out, + // although that would require changing UnmarshalColumnValue to operate + // on bytes, and for Encode/DecodeTableValue to operate on marshaled + // single values. + value, err := valueside.UnmarshalLegacy(rf.alloc, typ, kv.Value) + if err != nil { + return "", "", err + } + if rf.traceKV { + prettyValue = value.String() + } + table.row[idx] = rowenc.DatumToEncDatum(typ, value) + if DebugRowFetch { + log.Infof(ctx, "Scan %s -> %v", kv.Key, value) } + return prettyKey, prettyValue, nil } // No need to unmarshal the column value. Either the column was part of @@ -1070,19 +1026,19 @@ func (rf *Fetcher) processValueBytes( } colID := lastColID + descpb.ColumnID(colIDDiff) lastColID = colID - if !table.neededCols.Contains(int(colID)) { + idx, ok := table.colIdxMap.Get(colID) + if !ok { // This column wasn't requested, so read its length and skip it. - len, err := encoding.PeekValueLengthWithOffsetsAndType(valueBytes, dataOffset, typ) + numBytes, err := encoding.PeekValueLengthWithOffsetsAndType(valueBytes, dataOffset, typ) if err != nil { return "", "", err } - valueBytes = valueBytes[len:] + valueBytes = valueBytes[numBytes:] if DebugRowFetch { log.Infof(ctx, "Scan %s -> [%d] (skipped)", kv.Key, colID) } continue } - idx := table.colIdxMap.GetDefault(colID) if rf.traceKV { prettyKey = fmt.Sprintf("%s/%s", prettyKey, table.desc.DeletableColumns()[idx].GetName()) @@ -1114,9 +1070,10 @@ func (rf *Fetcher) processValueBytes( } // NextRow processes keys until we complete one row, which is returned as an -// EncDatumRow. The row contains one value per table column, regardless of the -// index used; values that are not needed (as per neededCols) are nil. The -// EncDatumRow should not be modified and is only valid until the next call. +// EncDatumRow. The row contains one value per FetcherTableArgs.Columns. +// +// The EncDatumRow should not be modified and is only valid until the next call. +// // When there are no more rows, the EncDatumRow is nil. func (rf *Fetcher) NextRow(ctx context.Context) (row rowenc.EncDatumRow, err error) { if rf.kvEnd { @@ -1149,13 +1106,38 @@ func (rf *Fetcher) NextRow(ctx context.Context) (row rowenc.EncDatumRow, err err } } +// NextRowInto calls NextRow and copies the results into the given EncDatumRow +// slice according to the given column map. +// +// Values for columns that are not in the map are ignored. EncDatums in +// destination that don't correspond to a fetcher column are not modified. +// +// If there are no more rows, returns ok=false. +func (rf *Fetcher) NextRowInto( + ctx context.Context, destination rowenc.EncDatumRow, colIdxMap catalog.TableColMap, +) (ok bool, err error) { + row, err := rf.NextRow(ctx) + if err != nil { + return false, err + } + if row == nil { + return false, nil + } + + for i, col := range rf.table.cols { + if ord, ok := colIdxMap.Get(col.GetID()); ok { + destination[ord] = row[i] + } + } + return true, nil +} + // NextRowDecoded calls NextRow and decodes the EncDatumRow into a Datums. // The Datums should not be modified and is only valid until the next call. // When there are no more rows, the Datums is nil. func (rf *Fetcher) NextRowDecoded(ctx context.Context) (datums tree.Datums, err error) { row, err := rf.NextRow(ctx) if err != nil { - err = scrub.UnwrapScrubError(err) return nil, err } if row == nil { @@ -1176,6 +1158,45 @@ func (rf *Fetcher) NextRowDecoded(ctx context.Context) (datums tree.Datums, err return rf.table.decodedRow, nil } +// NextRowDecodedInto calls NextRow and decodes the EncDatumRow into Datums, +// storing the results in the given destination slice according to the column +// mapping. +// +// Values for columns that are not in the map are ignored. Datums in +// destination that don't correspond to a fetcher column are not modified. +// +// If there are no more rows, returns ok=false. +func (rf *Fetcher) NextRowDecodedInto( + ctx context.Context, destination tree.Datums, colIdxMap catalog.TableColMap, +) (ok bool, err error) { + row, err := rf.NextRow(ctx) + if err != nil { + return false, err + } + if row == nil { + return false, nil + } + + for i, col := range rf.table.cols { + ord, ok := colIdxMap.Get(col.GetID()) + if !ok { + // Column not in map, ignore. + continue + } + encDatum := row[i] + if encDatum.IsUnset() { + destination[ord] = tree.DNull + continue + } + if err := encDatum.EnsureDecoded(col.GetType(), rf.alloc); err != nil { + return false, err + } + destination[ord] = encDatum.Datum + } + + return true, nil +} + // RowLastModified may only be called after NextRow has returned a non-nil row // and returns the timestamp of the last modification to that row. func (rf *Fetcher) RowLastModified() hlc.Timestamp { @@ -1211,7 +1232,7 @@ func (rf *Fetcher) finalizeRow() error { // Found all cols - done! return nil } - if table.neededCols.Contains(int(col.GetID())) && table.row[i].IsUnset() { + if table.row[i].IsUnset() { // If the row was deleted, we'll be missing any non-primary key // columns, including nullable ones, but this is expected. If the column // is not yet active, we can also expect NULLs. diff --git a/pkg/sql/row/fetcher_mvcc_test.go b/pkg/sql/row/fetcher_mvcc_test.go index 765a72e0490f..bd06c432e077 100644 --- a/pkg/sql/row/fetcher_mvcc_test.go +++ b/pkg/sql/row/fetcher_mvcc_test.go @@ -19,7 +19,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/keys" "github.com/cockroachdb/cockroach/pkg/kv/kvserver" "github.com/cockroachdb/cockroach/pkg/roachpb" - "github.com/cockroachdb/cockroach/pkg/sql/catalog" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkv" "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/row" @@ -28,7 +27,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/testutils" "github.com/cockroachdb/cockroach/pkg/testutils/serverutils" "github.com/cockroachdb/cockroach/pkg/testutils/sqlutils" - "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/cockroach/pkg/util/log" "github.com/cockroachdb/errors" @@ -82,19 +80,10 @@ func TestRowFetcherMVCCMetadata(t *testing.T) { FAMILY (a, b, c), FAMILY (d) )`) desc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, `d`, `parent`) - var colIdxMap catalog.TableColMap - var valNeededForCol util.FastIntSet - for i, col := range desc.PublicColumns() { - colIdxMap.Set(col.GetID(), i) - valNeededForCol.Add(i) - } table := row.FetcherTableArgs{ - Desc: desc, - Index: desc.GetPrimaryIndex(), - ColIdxMap: colIdxMap, - IsSecondaryIndex: false, - Cols: desc.PublicColumns(), - ValNeededForCol: valNeededForCol, + Desc: desc, + Index: desc.GetPrimaryIndex(), + Columns: desc.PublicColumns(), } var rf row.Fetcher if err := rf.Init( diff --git a/pkg/sql/row/fetcher_test.go b/pkg/sql/row/fetcher_test.go index 49fcffea9c37..3dd8e219d18f 100644 --- a/pkg/sql/row/fetcher_test.go +++ b/pkg/sql/row/fetcher_test.go @@ -30,7 +30,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" "github.com/cockroachdb/cockroach/pkg/testutils/serverutils" "github.com/cockroachdb/cockroach/pkg/testutils/sqlutils" - "github.com/cockroachdb/cockroach/pkg/util" "github.com/cockroachdb/cockroach/pkg/util/encoding" "github.com/cockroachdb/cockroach/pkg/util/leaktest" "github.com/cockroachdb/cockroach/pkg/util/mon" @@ -38,20 +37,26 @@ import ( ) type initFetcherArgs struct { - tableDesc catalog.TableDescriptor - indexIdx int - valNeededForCol util.FastIntSet + tableDesc catalog.TableDescriptor + indexIdx int + columns []int } func makeFetcherArgs(entry initFetcherArgs) FetcherTableArgs { index := entry.tableDesc.ActiveIndexes()[entry.indexIdx] + columns := entry.tableDesc.PublicColumns() + if entry.columns != nil { + columns = make([]catalog.Column, len(entry.columns)) + for i, ord := range entry.columns { + columns[i] = entry.tableDesc.PublicColumns()[ord] + } + } + return FetcherTableArgs{ Desc: entry.tableDesc, Index: index, - ColIdxMap: catalog.ColumnIDToOrdinalMap(entry.tableDesc.PublicColumns()), IsSecondaryIndex: !index.Primary(), - Cols: entry.tableDesc.PublicColumns(), - ValNeededForCol: entry.valNeededForCol, + Columns: columns, } } @@ -136,13 +141,9 @@ func TestNextRowSingle(t *testing.T) { t.Run(tableName, func(t *testing.T) { tableDesc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, sqlutils.TestDB, tableName) - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, table.nCols-1) - args := initFetcherArgs{ - tableDesc: tableDesc, - indexIdx: 0, - valNeededForCol: valNeededForCol, + tableDesc: tableDesc, + indexIdx: 0, } rf, err := initFetcher(args, false /*reverseScan*/, alloc, nil /* memMon */) @@ -247,13 +248,9 @@ func TestNextRowBatchLimiting(t *testing.T) { t.Run(tableName, func(t *testing.T) { tableDesc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, sqlutils.TestDB, tableName) - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, table.nCols-1) - args := initFetcherArgs{ - tableDesc: tableDesc, - indexIdx: 0, - valNeededForCol: valNeededForCol, + tableDesc: tableDesc, + indexIdx: 0, } rf, err := initFetcher(args, false /*reverseScan*/, alloc, nil /*memMon*/) @@ -337,13 +334,9 @@ func TestRowFetcherMemoryLimits(t *testing.T) { tableDesc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, sqlutils.TestDB, tableName) - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, 1) - args := initFetcherArgs{ - tableDesc: tableDesc, - indexIdx: 0, - valNeededForCol: valNeededForCol, + tableDesc: tableDesc, + indexIdx: 0, } alloc := &tree.DatumAlloc{} @@ -414,13 +407,9 @@ INDEX(c) tableDesc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, sqlutils.TestDB, tableName) - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, table.nCols-1) - args := initFetcherArgs{ - tableDesc: tableDesc, - indexIdx: 0, - valNeededForCol: valNeededForCol, + tableDesc: tableDesc, + indexIdx: 0, } rf, err := initFetcher(args, false /*reverseScan*/, alloc, nil /*memMon*/) @@ -592,14 +581,14 @@ func TestNextRowSecondaryIndex(t *testing.T) { t.Run(tableName, func(t *testing.T) { tableDesc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, sqlutils.TestDB, tableName) - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, table.nVals-1) - args := initFetcherArgs{ tableDesc: tableDesc, // We scan from the first secondary index. - indexIdx: 1, - valNeededForCol: valNeededForCol, + indexIdx: 1, + columns: []int{0, 1}, + } + if table.nVals == 4 { + args.columns = []int{0, 1, 2, 3} } rf, err := initFetcher(args, false /*reverseScan*/, alloc, nil /*memMon*/) @@ -633,8 +622,8 @@ func TestNextRowSecondaryIndex(t *testing.T) { count++ - if table.nCols != len(datums) { - t.Fatalf("expected %d columns, got %d columns", table.nCols, len(datums)) + if len(args.columns) != len(datums) { + t.Fatalf("expected %d columns, got %d columns", len(args.columns), len(datums)) } // Verify that the correct # of values are returned. @@ -711,12 +700,9 @@ func TestRowFetcherReset(t *testing.T) { sqlutils.ToRowFn(sqlutils.RowIdxFn, sqlutils.RowModuloFn(1)), ) tableDesc := catalogkv.TestingGetImmutableTableDescriptor(kvDB, keys.SystemSQLCodec, sqlutils.TestDB, "foo") - var valNeededForCol util.FastIntSet - valNeededForCol.AddRange(0, 1) args := initFetcherArgs{ - tableDesc: tableDesc, - indexIdx: 0, - valNeededForCol: valNeededForCol, + tableDesc: tableDesc, + indexIdx: 0, } da := tree.DatumAlloc{} fetcher, err := initFetcher(args, false, &da, nil /*memMon*/) diff --git a/pkg/sql/row/kv_fetcher.go b/pkg/sql/row/kv_fetcher.go index 7c0ed1b164f5..d774b3730688 100644 --- a/pkg/sql/row/kv_fetcher.go +++ b/pkg/sql/row/kv_fetcher.go @@ -131,6 +131,16 @@ func (f *KVFetcher) GetBytesRead() int64 { return atomic.LoadInt64(&f.atomics.bytesRead) } +// ResetBytesRead resets the number of bytes read by this fetcher and returns +// the number before the reset. It is safe for concurrent use and is able to +// handle a case of uninitialized fetcher. +func (f *KVFetcher) ResetBytesRead() int64 { + if f == nil { + return 0 + } + return atomic.SwapInt64(&f.atomics.bytesRead, 0) +} + // MVCCDecodingStrategy controls if and how the fetcher should decode MVCC // timestamps from returned KV's. type MVCCDecodingStrategy int diff --git a/pkg/sql/rowexec/inverted_joiner.go b/pkg/sql/rowexec/inverted_joiner.go index 31ac68a9633c..a39fdd3ea4a8 100644 --- a/pkg/sql/rowexec/inverted_joiner.go +++ b/pkg/sql/rowexec/inverted_joiner.go @@ -20,7 +20,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/opt/invertedexpr" "github.com/cockroachdb/cockroach/pkg/sql/opt/invertedidx" - "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowcontainer" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/rowinfra" @@ -85,6 +84,8 @@ type invertedJoiner struct { // fetcher wraps the row.Fetcher used to perform scans. This enables the // invertedJoiner to wrap the fetcher with a stat collector when necessary. fetcher rowFetcher + row rowenc.EncDatumRow + // rowsRead is the total number of rows that the fetcher read from disk. rowsRead int64 alloc tree.DatumAlloc @@ -303,7 +304,6 @@ func newInvertedJoiner( ij.batchedExprEval.filterer = ij.datumsToInvertedExpr } - var fetcher row.Fetcher // In general we need all the columns in the index to compute the set // expression. There may be InvertedJoinerSpec.InvertedExpr that are known // to generate only set union expressions, which together with LEFT_SEMI and @@ -318,10 +318,8 @@ func newInvertedJoiner( } allIndexCols.Add(ij.colIdxMap.GetDefault(col.GetID())) } - // We use ScanVisibilityPublic since inverted joins are not used for mutations, - // and so do not need to see in-progress schema changes. - _, _, err = initRowFetcher( - flowCtx, &fetcher, ij.desc, int(spec.IndexIdx), ij.colIdxMap, false, /* reverse */ + fetcher, err := makeRowFetcherLegacy( + flowCtx, ij.desc, int(spec.IndexIdx), false, /* reverse */ allIndexCols, flowCtx.EvalCtx.Mon, &ij.alloc, descpb.ScanLockingStrength_FOR_NONE, descpb.ScanLockingWaitPolicy_BLOCK, false /* withSystemColumns */, nil, /* virtualColumn */ @@ -329,13 +327,14 @@ func newInvertedJoiner( if err != nil { return nil, err } + ij.row = make(rowenc.EncDatumRow, len(ij.desc.PublicColumns())) if execinfra.ShouldCollectStats(flowCtx.EvalCtx.Ctx(), flowCtx) { ij.input = newInputStatCollector(ij.input) - ij.fetcher = newRowFetcherStatCollector(&fetcher) + ij.fetcher = newRowFetcherStatCollector(fetcher) ij.ExecStatsForTrace = ij.execStatsForTrace } else { - ij.fetcher = &fetcher + ij.fetcher = fetcher } ij.spanBuilder = span.MakeBuilder(flowCtx.EvalCtx, flowCtx.Codec(), ij.desc, ij.index) @@ -524,15 +523,16 @@ func (ij *invertedJoiner) performScan() (invertedJoinerState, *execinfrapb.Produ // Read the entire set of rows that are part of the scan. for { // Fetch the next row and copy it into the row container. - scannedRow, err := ij.fetcher.NextRow(ij.Ctx) + ok, err := ij.fetcher.NextRowInto(ij.Ctx, ij.row, ij.colIdxMap) if err != nil { ij.MoveToDraining(scrub.UnwrapScrubError(err)) return ijStateUnknown, ij.DrainHelper() } - if scannedRow == nil { + if !ok { // Done with this input batch. break } + scannedRow := ij.row ij.rowsRead++ // NB: Inverted columns are custom encoded in a manner that does not diff --git a/pkg/sql/rowexec/joinreader.go b/pkg/sql/rowexec/joinreader.go index 5cab6f19b8f2..80c79b410aa1 100644 --- a/pkg/sql/rowexec/joinreader.go +++ b/pkg/sql/rowexec/joinreader.go @@ -113,6 +113,7 @@ type joinReader struct { // fetcher wraps the row.Fetcher used to perform lookups. This enables the // joinReader to wrap the fetcher with a stat collector when necessary. fetcher rowFetcher + lookedUpRow rowenc.EncDatumRow alloc tree.DatumAlloc rowAlloc rowenc.EncDatumRowAlloc shouldLimitBatches bool @@ -319,7 +320,6 @@ func newJoinReader( if readerType != indexJoinReaderType { jr.groupingState = &inputBatchGroupingState{doGrouping: spec.LeftJoinWithPairedJoiner} } - var err error var isSecondary bool indexIdx := int(spec.IndexIdx) if indexIdx >= len(jr.desc.ActiveIndexes()) { @@ -403,24 +403,24 @@ func newJoinReader( } } - var fetcher row.Fetcher - _, _, err = initRowFetcher( - flowCtx, &fetcher, jr.desc, int(spec.IndexIdx), jr.colIdxMap, false, /* reverse */ + fetcher, err := makeRowFetcherLegacy( + flowCtx, jr.desc, int(spec.IndexIdx), false, /* reverse */ rightCols, jr.EvalCtx.Mon, &jr.alloc, spec.LockingStrength, spec.LockingWaitPolicy, spec.HasSystemColumns, nil, /* virtualColumn */ ) - if err != nil { return nil, err } if execinfra.ShouldCollectStats(flowCtx.EvalCtx.Ctx(), flowCtx) { jr.input = newInputStatCollector(jr.input) - jr.fetcher = newRowFetcherStatCollector(&fetcher) + jr.fetcher = newRowFetcherStatCollector(fetcher) jr.ExecStatsForTrace = jr.execStatsForTrace } else { - jr.fetcher = &fetcher + jr.fetcher = fetcher } + jr.lookedUpRow = make(rowenc.EncDatumRow, jr.colIdxMap.Len()) + if !spec.LookupExpr.Empty() { lookupExprTypes := make([]*types.T, 0, len(leftTypes)+len(columnTypes)) lookupExprTypes = append(lookupExprTypes, leftTypes...) @@ -938,19 +938,19 @@ func (jr *joinReader) performLookup() (joinReaderState, *execinfrapb.ProducerMet } // Fetch the next row and tell the strategy to process it. - lookedUpRow, err := jr.fetcher.NextRow(jr.Ctx) + ok, err := jr.fetcher.NextRowInto(jr.Ctx, jr.lookedUpRow, jr.colIdxMap) if err != nil { jr.MoveToDraining(scrub.UnwrapScrubError(err)) return jrStateUnknown, jr.DrainHelper() } - if lookedUpRow == nil { + if !ok { // Done with this input batch. break } jr.rowsRead++ jr.curBatchRowsRead++ - if nextState, err := jr.strategy.processLookedUpRow(jr.Ctx, lookedUpRow, key); err != nil { + if nextState, err := jr.strategy.processLookedUpRow(jr.Ctx, jr.lookedUpRow, key); err != nil { jr.MoveToDraining(err) return jrStateUnknown, jr.DrainHelper() } else if nextState != jrPerformingLookup { diff --git a/pkg/sql/rowexec/processors.go b/pkg/sql/rowexec/processors.go index b649964e85e8..37ea3fa18e4d 100644 --- a/pkg/sql/rowexec/processors.go +++ b/pkg/sql/rowexec/processors.go @@ -133,9 +133,6 @@ func NewProcessor( if err := checkNumInOut(inputs, outputs, 0, 1); err != nil { return nil, err } - if core.TableReader.DeprecatedIsCheck { - return nil, errors.New("scrubbing TableReader no longer implemented") - } return newTableReader(flowCtx, processorID, core.TableReader, post, outputs[0]) } if core.Filterer != nil { diff --git a/pkg/sql/rowexec/processors_test.go b/pkg/sql/rowexec/processors_test.go index d40ad17c104d..9a81cc8be8b5 100644 --- a/pkg/sql/rowexec/processors_test.go +++ b/pkg/sql/rowexec/processors_test.go @@ -746,17 +746,17 @@ func TestUncertaintyErrorIsReturned(t *testing.T) { }{ { query: "SELECT * FROM t AS t1 JOIN t AS t2 ON t1.x = t2.x", - expectedPlanURL: "Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lOFr4jAYxr_fXxFeOLYdcW1S52Zh0HHrse483engDkY_dDbTgmt6SQSH-L8fbQWvoolesd-MeX9vnifP2yxB_pmBCyO_5399Rkn6xtG34eAHevF_P_Xugj46vw9Gz6OfvQu0rvlSFih0N0KKoMdB0F8vKBr0kSKXC3SLFL1chOjXgz_0y6694LuPzu6TaCKid_fzGWBIecz60TuT4L4AAQwUMDgQYsgEHzMpuci3lkVhEC_AtTEkaTZX-d8hhjEXDNwlqETNGLjwHL3O2JBFMROWDRhipqJkVrRXXiaS90h8AIZRFqXSRS2L5EWDuXKRR7BHIVxh4HO1PmDT9_UDTSM5rXb0CISrEINU0YSBS1b4_4Q6DQule4Vu-sxTLmImWFzpFOakqWSH24dITh95kjJhdarSZuxNnXvk4lYkk2nxq-ITew722ltuN06cGk52yOzzFs-s7rblnUe3K0eTw9MmxrQtYrcserLJPEJru3mtdK_WBobz-nTDSQ-_dWq-dWq3TjUeRwi9algo3Su0gdm4aebh2iFiyGTGU8kOepfs3AaLJ6y8FsnnYsyeBB8Xx5TLQcEVX1fMpCp3abkI0nIrF3g43KkDd_UwOUI2PQ7u1IG7ephuw_a_sKP37GhhYldoe5tu1wlaDxuC1sOGoK_qBK2HDUHrYUPQnTpBX9eJSg8botLDhqhu6kSlhw1R6WFDVN2jogpXn_4GAAD__4WsRD0=", + expectedPlanURL: "Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJzElGFr4kwQx98_n2IZeGh7rE12Y20NFFLaHE3P054Kd1DyIjVbDcRsbncDFvG7H0kET9GNufS8d447v5n_7H-yS5A_Y7Bh5Pbc-zGKkjeOPg8HX9GL--O5d-f10fmDNxqPvvUu0DrnU5mg0N0IKYKeBl5_HVA06CNFLhfoFil6ufDR90d36JZVe94XF509RMFUBHP7_zPAkPCQ9YM5k2C_AAEMFDBY4GNIBZ8wKbnIj5ZFohcuwDYxREmaqfxvH8OECwb2ElSkYgY2jIPXmA1ZEDJhmIAhZCqI4qK8clIRzQPxDhjueZzNE2mjBUZ5PEqDPGoZxAR_hYFnat1jU_r1Hc0COdsu6hDwVz4GqYIpA5us8J9ptU6vlR7UuqmTJVyETLBwq5Kfk1UpewZ-DOTsiUcJE0ZnW1rM3tS5Qy5uRTSdFb8AwyBTNnIIdih2LOy0d6bdTGI1mGSPzD5v8dTo7o68t3V7qzU53nBS23CDmC2DfuR-1pDb_idy6UG5J1jR67-3ovT4i6f1L56arQ9ckhpar06vlR7UeoINuTnNI7ZHxJDJlCeSHfVGmfkYLJyy8lokz8SEPQs-KdqU4aDgim8sZFKVp7QMvKQ8ygUeD3eawF09TGrIpvXgThO4q4fpLmz-Dlv6mS0tTMwt2tyl202M1sMVRuvhCqOvmhithyuM1sMVRneaGH3dxCo9XGGVHq6w6qaJVXq4wio9XGFVt5ZV_uq_XwEAAP__aLpPRw==", }, { query: "SELECT * FROM t AS t1 INNER LOOKUP JOIN t AS t2 ON t1.x = t2.y", - expectedPlanURL: "Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lGGL2kAQhr_3VwwD5dqyntmNehoo5OilNHdpYtXSwhGO1GwlrWbTzQYU8b-XGOHU6pp64Mdk5vF93JnNEvM_U7Rw6HjOhxEk6U8BHwfBZ3h0vve9W9eHN3fucDT84r2FTc-7qkHB7RAUBdf3nQF4QfDwtQ_3getvKgwCHxS9nsN7UOx6EcK3T87AqSI898GBq7skmshoZr2-QoKpiLkfzXiO1iNSJMiQoIkhwUyKMc9zIcvSct3oxnO0DIJJmhWqfB0SHAvJ0VqiStSUo4Wj6MeUD3gUc9k0kGDMVZRM1z-v7Ewms0gukOAwi9LcgkaTlk1BoSywKbEZhiuColDPAbmKJhwtuiL1Je5Fkm4czH0H9bR4SuI5EvSE-F1k8EskKYi0FNhRIXaL2O2jQuxMoc7xQ_lHqLUn1Ca2eVTIPCr07FGkQsZc8nhHIlwdUPZFQ2TN3l7j4ejWTjStvyH05IY0qdFosrOW5ITH1kxal1mS-kI3l1kSVn9S7PSkmNE4Z0wnJLZOpX2ZMdUX6l7-Lh8QGvA8E2nOa11Vo7zrPJ7w6sOQi0KOeV-K8TqmegzW3PpFzHNVVWn14KZVqRTchqkWZnqYaWFzB6b7sKnXNvTRLS3d1sNtLdzRw52X_OkbLdzVJ3e1cE8P9_5LO1y9-hsAAP__cuHbAw==", + expectedPlanURL: "Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lOGK2kAQgP_3KYaBcm1Zz-xG7zRQyHGX0tyliVVLC0c4UrOVtJpNNxtQxHcvSYRTq3uxBf85O_M5nzuzrjD_PUMLR47n3I4hSX8I-DAMPsGj823g3bg-vLlzR-PRZ-8tbGre1QUKbkagKLi-7wzBC4KHLwO4D1x_k2EQ-KDo5QLeg2KXyxC-fnSGTt3Ccx8cuLhLoqmM5tbrCySYipj70ZznaD0iRYIMCZoYEsykmPA8F7JMrapCN16gZRBM0qxQ5XFIcCIkR2uFKlEzjhaOo-8zPuRRzGXbQIIxV1Eyq75e2ZlM5pFcIsFbMSvmaW7BgkAZj7KojFptamC4JigK9dwjV9GUo0XXpLnHvUjSjYa5r6Gelk9JvECCnhC_igx-iiQFkVpgl1cQFKr8RGxG7A6xu0eF2D8KXR2_l7-EOntCXWKbR4XMo0LPHkUqZMwlj3ckwvUBZV-0RNbu7xUebt3ZaU2bLwk9eUna1Gi1WdM9eUFlayyd8-xJc6Hr8-wJaz4sdvqwmNFqOKkXPLYupnueSTUX6p3_RR8QGvI8E2nOGz1Yo3zxPJ7y-u8hF4Wc8IEUk6pNHQYVVx3EPFd1ltaBm9apUnAbplqY6WGmhc0dmO7Dpl7b0LfuaOmuHu5q4Ss9fPU_P_paC_f0nXtauK-H-ydph-tXfwIAAP__lFXgiA==", }, { // This test reproduces 51458 and should be enabled once that issue is // fixed. query: "SELECT * FROM t JOIN onerow ON t.x = onerow.x", - expectedPlanURL: "Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lOFr2kAYxr_vrzheGG3H2eROW0egkLFmNJ3TToUNSj5czVsNaC67O5lF_N9HEsFF0kQJ-s3z3t97z_O8uVuD_jMHB0Zez_s6JlH8Ksm34eAHefZ-P_W--H1yee-PxqOfvSuyrfmUFxjyOPD7RMao5F8y6BNzvSJ32_X1KiC_Hryhl3fs-d89cnEfiakSC-fjBVCIZYh9sUANzjMwoMCBQhsCComSE9RaqnRrnRX64Qocm0IUJ0uT_h1QmEiF4KzBRGaO4MBYvMxxiCJEZdlAIUQjonnW3riJihZCvQGFUSJi7ZCWxdKiwdI4xGXU5RBsKMil2R6w6_vyRmZCz4odXQbBJqCgjZgiOGxD3xG667OMpQpRYVjoFKRkXUmJ2wehZ48yilFZnaK0Ob6aS5dd3aloOst-FXxSt71ndWej3cBGica-bMnE6u77LT26UziaHT5qVjtqi9kti59s2uy807450bT54ZHz-si53TpV3kcIbRfb5k9TyVuwk9pIJ39X5xm-i9szvAIlCoaoExlrPOiS26kHDKeYZ6LlUk3wSclJdky-HGRcdq1C1Cbf3S78ON9KBR4Od5rA3WqY7cP2_zCvhnkl_LkA2_twu0lg1XBNYNVwTWCdJoHdNPFcDdd4roZrPN8eIZsfB3eawN1quHvUqILNh38BAAD___TFXIc=", + expectedPlanURL: "Diagram: https://cockroachdb.github.io/distsqlplan/decode.html#eJy8lFFr2z4Uxd__n0Jc-NN2KLXlpM0wFDxaj7rLki4JbFD8oMa3icGxPElmKSHffdgOpA6pHeMub7mRflfnnGtpDep3BDZM3IF7OyVh_CLI1_HoO3lyfz0OvnhDcn7nTaaTH4MLst3zqdigycPIGxIRoxR_yGhI9OWK3Gzry5VPft67Y7foOPC-ueTsLuRzyZf2_2dAIRYBDvkSFdhPwICCBRS64FNIpJihUkJmS-t8oxeswDYphHGS6uxvn8JMSAR7DTrUEYINU_4c4Rh5gNIwgUKAmodR3l47iQyXXL4ChVsRpctY2WRFSVZPEp5VHYOZ4G8oiFRvz9i1fn4lC64W5aYOA3_jU1CazxFstqHvaN31SWMhA5QYlDr5GVm35YDhe64WDyKMURq9srQIX_S5wy5uZDhf5L-AwijVNnEYdSzqdPes7mx0W9g4oHEoOiIx-vt-Dx7dKx3Njp82azxtg5kdw_rIgbPTDvzqHw3cOj51q3nqltn5wMgbaO2W2xZv1EHBb16EVlKtd6We4Ou4PsFzcEDBGFUiYoVH3XYz84DBHItMlEjlDB-lmOXHFOUo5_LLFaDSxeq28OJiKRN4PNxrA_erYbYPm29hqxq2KuHPJdjch7ttAquGawKrhmsC67UJ7KqN52q4xnM1XOP5uoFsqxncawP3q-F-o1H5m__-BgAA__9XFGO8", overrideErrorOrigin: []errorOriginSpec{ { nodeIdx: 0, diff --git a/pkg/sql/rowexec/rowfetcher.go b/pkg/sql/rowexec/rowfetcher.go index 29c27a6a2ca8..a51403f68ed4 100644 --- a/pkg/sql/rowexec/rowfetcher.go +++ b/pkg/sql/rowexec/rowfetcher.go @@ -50,45 +50,43 @@ type rowFetcher interface { ) error NextRow(ctx context.Context) (rowenc.EncDatumRow, error) + NextRowInto( + ctx context.Context, destination rowenc.EncDatumRow, colIdxMap catalog.TableColMap, + ) (ok bool, err error) // PartialKey is not stat-related but needs to be supported. - PartialKey(int) (roachpb.Key, error) + PartialKey(nCols int) (roachpb.Key, error) Reset() GetBytesRead() int64 // Close releases any resources held by this fetcher. Close(ctx context.Context) } -// initRowFetcher initializes the fetcher. -func initRowFetcher( +// makeRowFetcher creates and initializes a fetcher. +func makeRowFetcher( flowCtx *execinfra.FlowCtx, - fetcher *row.Fetcher, desc catalog.TableDescriptor, indexIdx int, - colIdxMap catalog.TableColMap, + columns []catalog.Column, reverseScan bool, - valNeededForCol util.FastIntSet, mon *mon.BytesMonitor, alloc *tree.DatumAlloc, lockStrength descpb.ScanLockingStrength, lockWaitPolicy descpb.ScanLockingWaitPolicy, - withSystemColumns bool, - virtualColumn catalog.Column, -) (index catalog.Index, isSecondaryIndex bool, err error) { +) (*row.Fetcher, error) { + fetcher := &row.Fetcher{} if indexIdx >= len(desc.ActiveIndexes()) { - return nil, false, errors.Errorf("invalid indexIdx %d", indexIdx) + return nil, errors.Errorf("invalid indexIdx %d", indexIdx) } - index = desc.ActiveIndexes()[indexIdx] - isSecondaryIndex = !index.Primary() + index := desc.ActiveIndexes()[indexIdx] + isSecondaryIndex := !index.Primary() tableArgs := row.FetcherTableArgs{ Desc: desc, Index: index, - ColIdxMap: colIdxMap, IsSecondaryIndex: isSecondaryIndex, - ValNeededForCol: valNeededForCol, + Columns: columns, } - tableArgs.InitCols(desc, withSystemColumns, virtualColumn) if err := fetcher.Init( flowCtx.EvalCtx.Context, @@ -101,8 +99,52 @@ func initRowFetcher( mon, tableArgs, ); err != nil { - return nil, false, err + return nil, err } + return fetcher, nil +} - return index, isSecondaryIndex, nil +// makeRowFetcherLegacy is a legacy version of the row fetcher which uses +// the valNeededForCol ordinal set to determine the fetcher columns. +func makeRowFetcherLegacy( + flowCtx *execinfra.FlowCtx, + desc catalog.TableDescriptor, + indexIdx int, + reverseScan bool, + valNeededForCol util.FastIntSet, + mon *mon.BytesMonitor, + alloc *tree.DatumAlloc, + lockStrength descpb.ScanLockingStrength, + lockWaitPolicy descpb.ScanLockingWaitPolicy, + withSystemColumns bool, + invertedColumn catalog.Column, +) (*row.Fetcher, error) { + cols := make([]catalog.Column, 0, len(desc.AllColumns())) + for i, col := range desc.ReadableColumns() { + if valNeededForCol.Contains(i) { + if invertedColumn != nil && col.GetID() == invertedColumn.GetID() { + col = invertedColumn + } + cols = append(cols, col) + } + } + if withSystemColumns { + start := len(desc.ReadableColumns()) + for i, col := range desc.SystemColumns() { + if valNeededForCol.Contains(start + i) { + cols = append(cols, col) + } + } + } + return makeRowFetcher( + flowCtx, + desc, + indexIdx, + cols, + reverseScan, + mon, + alloc, + lockStrength, + lockWaitPolicy, + ) } diff --git a/pkg/sql/rowexec/stats.go b/pkg/sql/rowexec/stats.go index e8f1d79ebc47..6f48e734d670 100644 --- a/pkg/sql/rowexec/stats.go +++ b/pkg/sql/rowexec/stats.go @@ -16,6 +16,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/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/row" @@ -72,10 +73,8 @@ func (isc *inputStatCollector) Next() (rowenc.EncDatumRow, *execinfrapb.Producer } // rowFetcherStatCollector is a wrapper on top of a row.Fetcher that collects stats. -// -// Only row.Fetcher methods that collect stats are overridden. type rowFetcherStatCollector struct { - *row.Fetcher + fetcher *row.Fetcher // stats contains the collected stats. stats execinfrapb.InputStats startScanStallTime time.Duration @@ -85,22 +84,11 @@ var _ rowFetcher = &rowFetcherStatCollector{} // newRowFetcherStatCollector returns a new rowFetcherStatCollector. func newRowFetcherStatCollector(f *row.Fetcher) *rowFetcherStatCollector { - res := &rowFetcherStatCollector{Fetcher: f} + res := &rowFetcherStatCollector{fetcher: f} res.stats.NumTuples.Set(0) return res } -// NextRow is part of the rowFetcher interface. -func (c *rowFetcherStatCollector) NextRow(ctx context.Context) (rowenc.EncDatumRow, error) { - start := timeutil.Now() - row, err := c.Fetcher.NextRow(ctx) - if row != nil { - c.stats.NumTuples.Add(1) - } - c.stats.WaitTime.Add(timeutil.Since(start)) - return row, err -} - // StartScan is part of the rowFetcher interface. func (c *rowFetcherStatCollector) StartScan( ctx context.Context, @@ -112,7 +100,7 @@ func (c *rowFetcherStatCollector) StartScan( forceProductionKVBatchSize bool, ) error { start := timeutil.Now() - err := c.Fetcher.StartScan(ctx, txn, spans, batchBytesLimit, limitHint, traceKV, forceProductionKVBatchSize) + err := c.fetcher.StartScan(ctx, txn, spans, batchBytesLimit, limitHint, traceKV, forceProductionKVBatchSize) c.startScanStallTime += timeutil.Since(start) return err } @@ -122,7 +110,7 @@ func (c *rowFetcherStatCollector) StartScanFrom( ctx context.Context, f row.KVBatchFetcher, traceKV bool, ) error { start := timeutil.Now() - err := c.Fetcher.StartScanFrom(ctx, f, traceKV) + err := c.fetcher.StartScanFrom(ctx, f, traceKV) c.startScanStallTime += timeutil.Since(start) return err } @@ -140,13 +128,56 @@ func (c *rowFetcherStatCollector) StartInconsistentScan( forceProductionKVBatchSize bool, ) error { start := timeutil.Now() - err := c.Fetcher.StartInconsistentScan( + err := c.fetcher.StartInconsistentScan( ctx, db, initialTimestamp, maxTimestampAge, spans, batchBytesLimit, limitHint, traceKV, forceProductionKVBatchSize, ) c.startScanStallTime += timeutil.Since(start) return err } +// NextRow is part of the rowFetcher interface. +func (c *rowFetcherStatCollector) NextRow(ctx context.Context) (rowenc.EncDatumRow, error) { + start := timeutil.Now() + row, err := c.fetcher.NextRow(ctx) + if row != nil { + c.stats.NumTuples.Add(1) + } + c.stats.WaitTime.Add(timeutil.Since(start)) + return row, err +} + +// NextRowInto is part of the rowFetcher interface. +func (c *rowFetcherStatCollector) NextRowInto( + ctx context.Context, destination rowenc.EncDatumRow, colIdxMap catalog.TableColMap, +) (ok bool, err error) { + start := timeutil.Now() + ok, err = c.fetcher.NextRowInto(ctx, destination, colIdxMap) + if ok { + c.stats.NumTuples.Add(1) + } + c.stats.WaitTime.Add(timeutil.Since(start)) + return ok, err +} + +// PartialKey is part of the rowFetcher interface. +func (c *rowFetcherStatCollector) PartialKey(nCols int) (roachpb.Key, error) { + return c.fetcher.PartialKey(nCols) +} + +func (c *rowFetcherStatCollector) Reset() { + c.fetcher.Reset() +} + +// GetBytesRead is part of the rowFetcher interface. +func (c *rowFetcherStatCollector) GetBytesRead() int64 { + return c.fetcher.GetBytesRead() +} + +// Close is part of the rowFetcher interface. +func (c *rowFetcherStatCollector) Close(ctx context.Context) { + c.fetcher.Close(ctx) +} + // getInputStats is a utility function to check whether the given input is // collecting stats, returning true and the stats if so. If false is returned, // the input is not collecting stats. diff --git a/pkg/sql/rowexec/tablereader.go b/pkg/sql/rowexec/tablereader.go index 88e165902bce..87568bb90955 100644 --- a/pkg/sql/rowexec/tablereader.go +++ b/pkg/sql/rowexec/tablereader.go @@ -19,7 +19,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/tabledesc" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" - "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/rowinfra" "github.com/cockroachdb/cockroach/pkg/sql/sem/tree" @@ -105,19 +104,22 @@ func newTableReader( tr.maxTimestampAge = time.Duration(spec.MaxTimestampAgeNanos) tableDesc := flowCtx.TableDescriptor(&spec.Table) - invertedColumn := tabledesc.FindInvertedColumn(tableDesc, spec.InvertedColumn) - cols := tableDesc.DeletableColumns() - columnIdxMap := catalog.ColumnIDToOrdinalMap(cols) - resultTypes := catalog.ColumnTypesWithInvertedCol(cols, invertedColumn) - - // Add all requested system columns to the output. - if spec.HasSystemColumns { - for _, sysCol := range tableDesc.SystemColumns() { - resultTypes = append(resultTypes, sysCol.GetType()) - columnIdxMap.Set(sysCol.GetID(), columnIdxMap.Len()) + + cols := make([]catalog.Column, len(spec.ColumnIDs)) + for i, colID := range spec.ColumnIDs { + if spec.InvertedColumn != nil && colID == spec.InvertedColumn.ID { + cols[i] = tabledesc.FindInvertedColumn(tableDesc, spec.InvertedColumn) + } else { + var err error + cols[i], err = tableDesc.FindColumnWithID(colID) + if err != nil { + return nil, err + } } } + resultTypes := catalog.ColumnTypes(cols) + tr.ignoreMisplannedRanges = flowCtx.Local if err := tr.Init( tr, @@ -139,24 +141,18 @@ func newTableReader( return nil, err } - neededColumns := tr.OutputHelper.NeededColumns() - - var fetcher row.Fetcher - if _, _, err := initRowFetcher( + fetcher, err := makeRowFetcher( flowCtx, - &fetcher, tableDesc, int(spec.IndexIdx), - columnIdxMap, + cols, spec.Reverse, - neededColumns, flowCtx.EvalCtx.Mon, &tr.alloc, spec.LockingStrength, spec.LockingWaitPolicy, - spec.HasSystemColumns, - invertedColumn, - ); err != nil { + ) + if err != nil { return nil, err } @@ -168,10 +164,10 @@ func newTableReader( } if execinfra.ShouldCollectStats(flowCtx.EvalCtx.Ctx(), flowCtx) { - tr.fetcher = newRowFetcherStatCollector(&fetcher) + tr.fetcher = newRowFetcherStatCollector(fetcher) tr.ExecStatsForTrace = tr.execStatsForTrace } else { - tr.fetcher = &fetcher + tr.fetcher = fetcher } return tr, nil diff --git a/pkg/sql/rowexec/tablereader_test.go b/pkg/sql/rowexec/tablereader_test.go index d368c69d8dfe..a46958ca2086 100644 --- a/pkg/sql/rowexec/tablereader_test.go +++ b/pkg/sql/rowexec/tablereader_test.go @@ -25,6 +25,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/kv/kvclient/rangecache" "github.com/cockroachdb/cockroach/pkg/roachpb" "github.com/cockroachdb/cockroach/pkg/sql/catalog/catalogkv" + "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" @@ -70,6 +71,7 @@ func TestTableReader(t *testing.T) { sqlutils.ToRowFn(aFn, bFn, sumFn, sqlutils.RowEnglishFn)) td := catalogkv.TestingGetTableDescriptor(kvDB, keys.SystemSQLCodec, "test", "t") + cols := td.PublicColumns() makeIndexSpan := func(start, end int) roachpb.Span { var span roachpb.Span @@ -87,22 +89,18 @@ func TestTableReader(t *testing.T) { }{ { spec: execinfrapb.TableReaderSpec{ - Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, - }, - post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, + ColumnIDs: []descpb.ColumnID{cols[0].GetID(), cols[1].GetID()}, + Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, }, expected: "[[0 1] [0 2] [0 3] [0 4] [0 5] [0 6] [0 7] [0 8] [0 9] [1 0] [1 1] [1 2] [1 3] [1 4] [1 5] [1 6] [1 7] [1 8] [1 9]]", }, { spec: execinfrapb.TableReaderSpec{ - Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, + ColumnIDs: []descpb.ColumnID{cols[3].GetID()}, + Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, }, post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{3}, // s - Limit: 4, + Limit: 4, }, expected: "[['one'] ['two'] ['three'] ['four']]", }, @@ -110,13 +108,10 @@ func TestTableReader(t *testing.T) { spec: execinfrapb.TableReaderSpec{ IndexIdx: 1, Reverse: true, + ColumnIDs: []descpb.ColumnID{cols[0].GetID(), cols[1].GetID()}, Spans: []roachpb.Span{makeIndexSpan(4, 6)}, LimitHint: 1, }, - post: execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0, 1}, - }, expected: "[[1 5] [0 5] [1 4] [0 4]]", }, } @@ -238,15 +233,13 @@ ALTER TABLE t EXPERIMENTAL_RELOCATE VALUES (ARRAY[2], 1), (ARRAY[1], 2), (ARRAY[ Txn: kv.NewTxn(ctx, tc.Server(0).DB(), tc.Server(0).NodeID()), NodeID: evalCtx.NodeID, } - post := execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0}, - } + post := execinfrapb.PostProcessSpec{} testutils.RunTrueAndFalse(t, "row-source", func(t *testing.T, rowSource bool) { spec := execinfrapb.TableReaderSpec{ - Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, - Table: *td.TableDesc(), + Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, + Table: *td.TableDesc(), + ColumnIDs: []descpb.ColumnID{td.PublicColumns()[0].GetID()}, } var out execinfra.RowReceiver var buf *distsqlutils.RowBuffer @@ -347,13 +340,11 @@ func TestTableReaderDrain(t *testing.T) { NodeID: evalCtx.NodeID, } spec := execinfrapb.TableReaderSpec{ - Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, - Table: *td.TableDesc(), - } - post := execinfrapb.PostProcessSpec{ - Projection: true, - OutputColumns: []uint32{0}, + Spans: []roachpb.Span{td.PrimaryIndexSpan(keys.SystemSQLCodec)}, + Table: *td.TableDesc(), + ColumnIDs: []descpb.ColumnID{td.PublicColumns()[0].GetID()}, } + post := execinfrapb.PostProcessSpec{} testReaderProcessorDrain(ctx, t, func(out execinfra.RowReceiver) (execinfra.Processor, error) { return newTableReader(&flowCtx, 0 /* processorID */, &spec, &post, out) @@ -516,6 +507,10 @@ func BenchmarkTableReader(b *testing.B) { span := tableDesc.PrimaryIndexSpan(keys.SystemSQLCodec) spec := execinfrapb.TableReaderSpec{ Table: *tableDesc.TableDesc(), + ColumnIDs: []descpb.ColumnID{ + tableDesc.PublicColumns()[0].GetID(), + tableDesc.PublicColumns()[1].GetID(), + }, // Spans will be set below. } post := execinfrapb.PostProcessSpec{} diff --git a/pkg/sql/rowexec/zigzagjoiner.go b/pkg/sql/rowexec/zigzagjoiner.go index d5381e060e1d..6681167b3fb8 100644 --- a/pkg/sql/rowexec/zigzagjoiner.go +++ b/pkg/sql/rowexec/zigzagjoiner.go @@ -20,7 +20,6 @@ import ( "github.com/cockroachdb/cockroach/pkg/sql/catalog/descpb" "github.com/cockroachdb/cockroach/pkg/sql/execinfra" "github.com/cockroachdb/cockroach/pkg/sql/execinfrapb" - "github.com/cockroachdb/cockroach/pkg/sql/row" "github.com/cockroachdb/cockroach/pkg/sql/rowenc" "github.com/cockroachdb/cockroach/pkg/sql/rowinfra" "github.com/cockroachdb/cockroach/pkg/sql/scrub" @@ -382,7 +381,10 @@ func (z *zigzagJoiner) Start(ctx context.Context) { // zigzagJoinerInfo contains all the information that needs to be // stored for each side of the join. type zigzagJoinerInfo struct { - fetcher rowFetcher + fetcher rowFetcher + row rowenc.EncDatumRow + rowColIdxMap catalog.TableColMap + // rowsRead is the total number of rows that this fetcher read from disk. rowsRead int64 alloc *tree.DatumAlloc @@ -480,13 +482,10 @@ func (z *zigzagJoiner) setupInfo( info.spanBuilder = span.MakeBuilder(flowCtx.EvalCtx, flowCtx.Codec(), info.table, info.index) // Setup the Fetcher. - var fetcher row.Fetcher - _, _, err := initRowFetcher( + fetcher, err := makeRowFetcherLegacy( flowCtx, - &fetcher, info.table, int(indexOrdinal), - catalog.ColumnIDToOrdinalMap(info.table.PublicColumns()), false, /* reverse */ neededCols, flowCtx.EvalCtx.Mon, @@ -501,11 +500,13 @@ func (z *zigzagJoiner) setupInfo( if err != nil { return err } + info.row = make(rowenc.EncDatumRow, len(info.table.PublicColumns())) + info.rowColIdxMap = catalog.ColumnIDToOrdinalMap(info.table.PublicColumns()) if collectingStats { - info.fetcher = newRowFetcherStatCollector(&fetcher) + info.fetcher = newRowFetcherStatCollector(fetcher) } else { - info.fetcher = &fetcher + info.fetcher = fetcher } info.prefix = rowenc.MakeIndexKeyPrefix(flowCtx.Codec(), info.table.GetID(), info.index.GetID()) @@ -549,22 +550,24 @@ func (z *zigzagJoiner) fetchRow(ctx context.Context) (rowenc.EncDatumRow, error) func (z *zigzagJoiner) fetchRowFromSide( ctx context.Context, side int, ) (fetchedRow rowenc.EncDatumRow, err error) { + info := z.infos[side] // Keep fetching until a row is found that does not have null in an equality // column. hasNull := func(row rowenc.EncDatumRow) bool { - for _, c := range z.infos[side].eqColumns { + for _, c := range info.eqColumns { if row[c].IsNull() { return true } } return false } + fetchedRow = info.row for { - fetchedRow, err = z.infos[side].fetcher.NextRow(ctx) - if fetchedRow == nil || err != nil { - return fetchedRow, err + ok, err := info.fetcher.NextRowInto(ctx, fetchedRow, info.rowColIdxMap) + if !ok || err != nil { + return nil, err } - z.infos[side].rowsRead++ + info.rowsRead++ if !hasNull(fetchedRow) { break } diff --git a/pkg/sql/schema_changer_test.go b/pkg/sql/schema_changer_test.go index 16eba544a6e7..39ccf62627cb 100644 --- a/pkg/sql/schema_changer_test.go +++ b/pkg/sql/schema_changer_test.go @@ -1785,14 +1785,14 @@ CREATE TABLE t.test (k INT PRIMARY KEY, v INT8); _, err := sqlDB.Exec(tc.sql) if tc.errString == "" { if err != nil { - t.Fatal(err) + t.Fatalf("%s: %v", tc.sql, err) } } else { if err == nil { - t.Fatal("expected error") + t.Fatalf("%s: expected error", tc.sql) } if !strings.Contains(err.Error(), tc.errString) { - t.Fatal(err) + t.Fatalf("%s: %v", tc.sql, err) } } } diff --git a/pkg/sql/sem/tree/create.go b/pkg/sql/sem/tree/create.go index 53640a553510..7d732a745765 100644 --- a/pkg/sql/sem/tree/create.go +++ b/pkg/sql/sem/tree/create.go @@ -49,6 +49,7 @@ type CreateDatabase struct { Regions NameList SurvivalGoal SurvivalGoal Placement DataPlacement + Owner RoleSpec } // Format implements the NodeFormatter interface. @@ -115,6 +116,11 @@ func (node *CreateDatabase) Format(ctx *FmtCtx) { ctx.WriteString(" ") ctx.FormatNode(&node.Placement) } + + if node.Owner.Name != "" { + ctx.WriteString(" OWNER = ") + ctx.FormatNode(&node.Owner) + } } // IndexElem represents a column with a direction in a CREATE INDEX statement. diff --git a/pkg/sql/txn_state.go b/pkg/sql/txn_state.go index 2b0ea7f5172d..a83bc8c924a9 100644 --- a/pkg/sql/txn_state.go +++ b/pkg/sql/txn_state.go @@ -204,6 +204,7 @@ func (ts *txnState) resetForNewSQLTxn( } ts.mu.txn = txn } + sp.SetTag("txn", attribute.StringValue(ts.mu.txn.ID().String())) ts.mu.txnStart = timeutil.Now() ts.mu.Unlock() if historicalTimestamp != nil { diff --git a/pkg/ui/.gitignore b/pkg/ui/.gitignore index 0d5500eded18..5900689c9692 100644 --- a/pkg/ui/.gitignore +++ b/pkg/ui/.gitignore @@ -14,6 +14,8 @@ assets.oss.installed # Generated intermediates .cache-loader dist*/** +dist_vendor/** +!dist_vendor/.gitkeep !dist*/_empty_assets/assets/index.html !distccl/assets/.gitkeep !distccl/distccl.go diff --git a/pkg/ui/BUILD.bazel b/pkg/ui/BUILD.bazel index 862ffdf0aed6..fb5de323c399 100644 --- a/pkg/ui/BUILD.bazel +++ b/pkg/ui/BUILD.bazel @@ -1,8 +1,17 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary") go_library( name = "ui", - srcs = ["ui.go"], + srcs = [ + "tracing_ui.go", + "ui.go", + ], + embedsrcs = [ + "dist_vendor/list.min.js", + "templates/tracing/html_template.html", + "dist_vendor/.gitkeep", + ], importpath = "github.com/cockroachdb/cockroach/pkg/ui", visibility = ["//visibility:public"], deps = [ @@ -35,3 +44,11 @@ EOF """, visibility = ["//pkg/ui:__subpackages__"], ) + +genrule( + name = "listjs", + srcs = ["@npm//:node_modules/list.js/dist/list.min.js"], + outs = ["dist_vendor/list.min.js"], + cmd = "cp ./$(location @npm//:node_modules/list.js/dist/list.min.js) $@", + tools = ["@npm//list.js"], +) diff --git a/pkg/ui/dist_vendor/.gitkeep b/pkg/ui/dist_vendor/.gitkeep new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/pkg/ui/templates/tracing/html_template.html b/pkg/ui/templates/tracing/html_template.html new file mode 100644 index 000000000000..f66b7a4d6ad0 --- /dev/null +++ b/pkg/ui/templates/tracing/html_template.html @@ -0,0 +1,140 @@ + + + + + + + + + +Take a snapshot of current operations +
+Stored snapshots (ID: capture time): +{{$id := .SnapshotID}} +{{range $i, $s := .AllSnapshots}} + + {{if eq $s.ID $id}} + [current] {{$s.ID}}: {{formatTimeNoMillis .CapturedAt}} + {{else}} + {{$s.ID}}: {{formatTimeNoMillis .CapturedAt}} + {{end}} + +{{end}} +
+ +

Spans currently open: {{len .SpansList.Spans}}. Snapshot captured at: {{formatTime .CapturedAt}} UTC. Page generated at: {{formatTime .Now}} UTC.

+{{if ne .Err nil}} +

There was an error producing this snapshot; it might be incomplete: {{.Err}}

+{{end}} + +
+ + + + + + + + + + + + +
+ + + + + +
+
+ + + diff --git a/pkg/ui/tracing_ui.go b/pkg/ui/tracing_ui.go new file mode 100644 index 000000000000..57a912dac5b8 --- /dev/null +++ b/pkg/ui/tracing_ui.go @@ -0,0 +1,36 @@ +// Copyright 2021 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package ui + +import ( + "embed" + "io/fs" +) + +// This file deals with embedding assets used by /debug/tracez. + +//go:embed dist_vendor/* +var vendorFiles embed.FS + +// VendorFS exposes the list.js package. +var VendorFS fs.FS + +//go:embed templates/tracing/html_template.html +// SpansTableTemplateSrc contains a template used by /debug/tracez +var SpansTableTemplateSrc string + +func init() { + var err error + VendorFS, err = fs.Sub(vendorFiles, "dist_vendor") + if err != nil { + panic(err) + } +} diff --git a/pkg/ui/workspaces/db-console/BUILD.bazel b/pkg/ui/workspaces/db-console/BUILD.bazel index 75b99f44106d..494064a475c6 100644 --- a/pkg/ui/workspaces/db-console/BUILD.bazel +++ b/pkg/ui/workspaces/db-console/BUILD.bazel @@ -130,6 +130,7 @@ DEPENDENCIES = [ "@npm//highlight.js", "@npm//lodash", "@npm//long", + "@npm//list.js", "@npm//mini-create-react-context", "@npm//moment", "@npm//nvd3", diff --git a/pkg/ui/workspaces/db-console/package.json b/pkg/ui/workspaces/db-console/package.json index 1d1f0d06e2af..600d687f10b7 100644 --- a/pkg/ui/workspaces/db-console/package.json +++ b/pkg/ui/workspaces/db-console/package.json @@ -29,6 +29,7 @@ "connected-react-router": "^6.9.1", "create-react-context": "^0.3.0", "highlight.js": "^10.6.0", + "list.js": "^2.3.1", "lodash": "^4.17.21", "long": "^4.0.0", "mini-create-react-context": "^0.3.2", diff --git a/pkg/ui/workspaces/db-console/src/views/reports/containers/debug/index.tsx b/pkg/ui/workspaces/db-console/src/views/reports/containers/debug/index.tsx index 4b827609d132..6bcd38d4dc89 100644 --- a/pkg/ui/workspaces/db-console/src/views/reports/containers/debug/index.tsx +++ b/pkg/ui/workspaces/db-console/src/views/reports/containers/debug/index.tsx @@ -330,6 +330,7 @@ export default function Debug() { + { new RemoveBrokenDependenciesPlugin(), new CopyWebpackPlugin([ { from: path.resolve(__dirname, "favicon.ico"), to: "favicon.ico" }, + { + from: path.resolve( + !isBazelBuild ? __dirname : "", + !isBazelBuild ? "../.." : "", + "node_modules/list.js/dist/list.min.js", + ), + to: path.resolve(__dirname, "../../dist_vendor/list.min.js"), + }, ]), // use WebpackBar instead of webpack dashboard to fit multiple webpack dev server outputs (db-console and cluster-ui) new WebpackBar({ diff --git a/pkg/ui/yarn-vendor b/pkg/ui/yarn-vendor index b7cef07d6748..dfceabccc717 160000 --- a/pkg/ui/yarn-vendor +++ b/pkg/ui/yarn-vendor @@ -1 +1 @@ -Subproject commit b7cef07d6748b5af824fb1c1af90cc17f3009c56 +Subproject commit dfceabccc717aff312f17423089652e9e697355b diff --git a/pkg/ui/yarn.lock b/pkg/ui/yarn.lock index 0295930e2b57..c0198cdf4cb7 100644 --- a/pkg/ui/yarn.lock +++ b/pkg/ui/yarn.lock @@ -11461,6 +11461,13 @@ linkify-it@^2.0.0: dependencies: uc.micro "^1.0.1" +list.js@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/list.js/-/list.js-2.3.1.tgz#48961989ffe52b0505e352f7a521f819f51df7e7" + integrity sha512-jnmm7DYpKtH3DxtO1E2VNCC9Gp7Wrp/FWA2JxQrZUhVJ2RCQBd57pCN6W5w6jpsfWZV0PCAbTX2NOPgyFeeZZg== + dependencies: + string-natural-compare "^2.0.2" + listr-silent-renderer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" @@ -16399,6 +16406,11 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" +string-natural-compare@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-2.0.3.tgz#9dbe1dd65490a5fe14f7a5c9bc686fc67cb9c6e4" + integrity sha512-4Kcl12rNjc+6EKhY8QyDVuQTAlMWwRiNbsxnVwBUKFr7dYPQuXVrtNU4sEkjF9LHY0AY6uVbB3ktbkIH4LC+BQ== + string-replace-webpack-plugin@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/string-replace-webpack-plugin/-/string-replace-webpack-plugin-0.1.3.tgz#73c657e759d66cfe80ae1e0cf091aa256d0e715c" diff --git a/pkg/util/stop/stopper.go b/pkg/util/stop/stopper.go index ab30e9308d2f..bc0a7ae660b1 100644 --- a/pkg/util/stop/stopper.go +++ b/pkg/util/stop/stopper.go @@ -461,6 +461,11 @@ func (s *Stopper) RunAsyncTaskEx(ctx context.Context, opt TaskOpts, f func(conte } // If the caller has a span, the task gets a child span. + // + // Note that we have to create the child in this parent goroutine; we can't + // defer the creation to the spawned async goroutine since the parent span + // might get Finish()ed by then. However, we'll update the child'd goroutine + // ID. var sp *tracing.Span switch opt.SpanOpt { case FollowsFromSpan: @@ -480,6 +485,7 @@ func (s *Stopper) RunAsyncTaskEx(ctx context.Context, opt TaskOpts, f func(conte defer s.runPostlude() if sp != nil { defer sp.Finish() + sp.UpdateGoroutineIDToCurrent() } if alloc != nil { defer alloc.Release() diff --git a/pkg/util/tracing/BUILD.bazel b/pkg/util/tracing/BUILD.bazel index fa4c8a23bc83..3210ab249ec2 100644 --- a/pkg/util/tracing/BUILD.bazel +++ b/pkg/util/tracing/BUILD.bazel @@ -14,6 +14,7 @@ go_library( "tags.go", "test_utils.go", "tracer.go", + "tracer_snapshots.go", "utils.go", ], importpath = "github.com/cockroachdb/cockroach/pkg/util/tracing", diff --git a/pkg/util/tracing/crdbspan.go b/pkg/util/tracing/crdbspan.go index e246967f907c..9cdea40b8ef8 100644 --- a/pkg/util/tracing/crdbspan.go +++ b/pkg/util/tracing/crdbspan.go @@ -35,7 +35,6 @@ type crdbSpan struct { traceID tracingpb.TraceID // probabilistically unique spanID tracingpb.SpanID // probabilistically unique parentSpanID tracingpb.SpanID - goroutineID uint64 operation string // name of operation associated with the span startTime time.Time @@ -66,6 +65,10 @@ type childRef struct { type crdbSpanMu struct { syncutil.Mutex + // goroutineID is the ID of the goroutine that created this span, or the goroutine that + // subsequently adopted it through Span.UpdateGoroutineIDToCurrent()). + goroutineID uint64 + // parent is the span's local parent, if any. parent is not set if the span is // a root or the parent span is remote. // @@ -531,7 +534,7 @@ func (s *crdbSpan) getRecordingNoChildrenLocked( TraceID: s.traceID, SpanID: s.spanID, ParentSpanID: s.parentSpanID, - GoroutineID: s.goroutineID, + GoroutineID: s.mu.goroutineID, Operation: s.operation, StartTime: s.startTime, Duration: s.mu.duration, @@ -731,6 +734,13 @@ func (s *crdbSpan) withLock(f func()) { f() } +// setGoroutineID updates the span's goroutine ID. +func (s *crdbSpan) setGoroutineID(gid int64) { + s.mu.Lock() + defer s.mu.Unlock() + s.mu.goroutineID = uint64(gid) +} + var sortPool = sync.Pool{ New: func() interface{} { return &Recording{} diff --git a/pkg/util/tracing/span.go b/pkg/util/tracing/span.go index c2c738274f92..70578a035207 100644 --- a/pkg/util/tracing/span.go +++ b/pkg/util/tracing/span.go @@ -18,6 +18,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/util/protoutil" "github.com/cockroachdb/cockroach/pkg/util/tracing/tracingpb" + "github.com/petermattis/goid" "go.opentelemetry.io/otel/attribute" oteltrace "go.opentelemetry.io/otel/trace" ) @@ -288,6 +289,16 @@ func (sp *Span) IsSterile() bool { return sp.i.sterile } +// UpdateGoroutineIDToCurrent updates the span's goroutine ID to the current +// goroutine. This should be called when a different goroutine takes ownership +// of a span. +func (sp *Span) UpdateGoroutineIDToCurrent() { + if sp.detectUseAfterFinish() { + return + } + sp.i.crdb.setGoroutineID(goid.Get()) +} + // SpanMeta is information about a Span that is not local to this // process. Typically, SpanMeta is populated from information // about a Span on the other end of an RPC, and is used to derive diff --git a/pkg/util/tracing/tracer.go b/pkg/util/tracing/tracer.go index 1bc4d6aec6ff..91021a7ad676 100644 --- a/pkg/util/tracing/tracer.go +++ b/pkg/util/tracing/tracer.go @@ -28,6 +28,7 @@ import ( "github.com/cockroachdb/cockroach/pkg/util/iterutil" "github.com/cockroachdb/cockroach/pkg/util/netutil/addr" "github.com/cockroachdb/cockroach/pkg/util/randutil" + "github.com/cockroachdb/cockroach/pkg/util/ring" "github.com/cockroachdb/cockroach/pkg/util/syncutil" "github.com/cockroachdb/cockroach/pkg/util/timeutil" "github.com/cockroachdb/cockroach/pkg/util/tracing/tracingpb" @@ -59,6 +60,9 @@ const ( // maxLogsPerSpanExternal limits the number of logs in a Span for external // tracers (net/trace, OpenTelemetry); use a comfortable limit. maxLogsPerSpanExternal = 1000 + // maxSnapshots limits the number of snapshots that a Tracer will hold in + // memory. Beyond this limit, each new snapshot evicts the oldest one. + maxSnapshots = 10 ) // These constants are used to form keys to represent tracing context @@ -239,7 +243,14 @@ type Tracer struct { // activeSpans is a map that references all non-Finish'ed local root spans, // i.e. those for which no WithParent() option was supplied. - activeSpansRegistry *spanRegistry + activeSpansRegistry *SpanRegistry + snapshotsMu struct { + syncutil.Mutex + // snapshots stores the activeSpansRegistry snapshots taken during the + // Tracer's lifetime. The ring buffer will contain snapshots with contiguous + // IDs, from the oldest one to + maxSnapshots - 1. + snapshots ring.Buffer // snapshotWithID + } testingMu syncutil.Mutex // protects testingRecordAsyncSpans testingRecordAsyncSpans bool // see TestingRecordAsyncSpans @@ -263,7 +274,7 @@ type Tracer struct { stack string } -// spanRegistry is a map that references all non-Finish'ed local root spans, +// SpanRegistry is a map that references all non-Finish'ed local root spans, // i.e. those for which no WithLocalParent() option was supplied. The // map is keyed on the span ID, which is deterministically unique. // @@ -272,30 +283,30 @@ type Tracer struct { // // The map can be introspected by `Tracer.VisitSpans`. A Span can also be // retrieved from its ID by `Tracer.GetActiveSpanByID`. -type spanRegistry struct { +type SpanRegistry struct { mu struct { syncutil.Mutex m map[tracingpb.SpanID]*crdbSpan } } -func makeSpanRegistry() *spanRegistry { - r := &spanRegistry{} +func makeSpanRegistry() *SpanRegistry { + r := &SpanRegistry{} r.mu.m = make(map[tracingpb.SpanID]*crdbSpan) return r } -func (r *spanRegistry) removeSpanLocked(id tracingpb.SpanID) { +func (r *SpanRegistry) removeSpanLocked(id tracingpb.SpanID) { delete(r.mu.m, id) } -func (r *spanRegistry) addSpan(s *crdbSpan) { +func (r *SpanRegistry) addSpan(s *crdbSpan) { r.mu.Lock() defer r.mu.Unlock() r.addSpanLocked(s) } -func (r *spanRegistry) addSpanLocked(s *crdbSpan) { +func (r *SpanRegistry) addSpanLocked(s *crdbSpan) { // Ensure that the registry does not grow unboundedly in case there is a leak. // When the registry reaches max size, each new span added kicks out an // arbitrary existing span. We rely on map iteration order here to make this @@ -310,7 +321,7 @@ func (r *spanRegistry) addSpanLocked(s *crdbSpan) { } // getSpanByID looks up a span in the registry. Returns nil if not found. -func (r *spanRegistry) getSpanByID(id tracingpb.SpanID) RegistrySpan { +func (r *SpanRegistry) getSpanByID(id tracingpb.SpanID) RegistrySpan { r.mu.Lock() defer r.mu.Unlock() crdbSpan, ok := r.mu.m[id] @@ -321,7 +332,10 @@ func (r *spanRegistry) getSpanByID(id tracingpb.SpanID) RegistrySpan { return crdbSpan } -func (r *spanRegistry) visitSpans(visitor func(span RegistrySpan) error) error { +// VisitSpans calls the visitor callback for every local root span in the +// registry. Iterations stops when the visitor returns an error. If that error +// is iterutils.StopIteration(), then VisitSpans() returns nil. +func (r *SpanRegistry) VisitSpans(visitor func(span RegistrySpan) error) error { r.mu.Lock() sl := make([]*crdbSpan, 0, len(r.mu.m)) for _, sp := range r.mu.m { @@ -343,7 +357,7 @@ func (r *spanRegistry) visitSpans(visitor func(span RegistrySpan) error) error { // testingAll returns (pointers to) all the spans in the registry, in an // arbitrary order. Since spans can generally finish at any point and use of a // finished span is not permitted, this method is only suitable for tests. -func (r *spanRegistry) testingAll() []*crdbSpan { +func (r *SpanRegistry) testingAll() []*crdbSpan { r.mu.Lock() defer r.mu.Unlock() res := make([]*crdbSpan, 0, len(r.mu.m)) @@ -358,7 +372,7 @@ func (r *spanRegistry) testingAll() []*crdbSpan { // removing the parent from the registry, the children are accessible in the // registry through that parent; if we didn't do this swap when the parent is // removed, the children would not be part of the registry anymore. -func (r *spanRegistry) swap(parentID tracingpb.SpanID, children []*crdbSpan) { +func (r *SpanRegistry) swap(parentID tracingpb.SpanID, children []*crdbSpan) { r.mu.Lock() defer r.mu.Unlock() r.removeSpanLocked(parentID) @@ -857,7 +871,6 @@ child operation: %s, tracer created at: traceID = tracingpb.TraceID(randutil.FastInt63()) } spanID := tracingpb.SpanID(randutil.FastInt63()) - goroutineID := uint64(goid.Get()) // Now allocate the main *Span and contained crdbSpan. // Allocate these together to save on individual allocs. @@ -876,15 +889,15 @@ child operation: %s, tracer created at: }{} helper.crdbSpan = crdbSpan{ - tracer: t, - traceID: traceID, - spanID: spanID, - goroutineID: goroutineID, - startTime: startTime, - logTags: opts.LogTags, + tracer: t, + traceID: traceID, + spanID: spanID, + startTime: startTime, + logTags: opts.LogTags, mu: crdbSpanMu{ - duration: -1, // unfinished - tags: helper.tagsAlloc[:0], + duration: -1, // unfinished + tags: helper.tagsAlloc[:0], + goroutineID: uint64(goid.Get()), }, } helper.crdbSpan.operation = opName @@ -1139,7 +1152,7 @@ func (t *Tracer) GetActiveSpanByID(spanID tracingpb.SpanID) RegistrySpan { // VisitSpans invokes the visitor with all active Spans. The function will // gracefully exit if the visitor returns iterutil.StopIteration(). func (t *Tracer) VisitSpans(visitor func(span RegistrySpan) error) error { - return t.activeSpansRegistry.visitSpans(visitor) + return t.activeSpansRegistry.VisitSpans(visitor) } // TestingRecordAsyncSpans is a test-only helper that configures @@ -1180,6 +1193,11 @@ func (t *Tracer) PanicOnUseAfterFinish() bool { return t.panicOnUseAfterFinish } +// SpanRegistry exports the registry containing all currently-open spans. +func (t *Tracer) SpanRegistry() *SpanRegistry { + return t.activeSpansRegistry +} + // ForkSpan forks the current span, if any[1]. Forked spans "follow from" the // original, and are typically used to trace operations that may outlive the // parent (think async tasks). See the package-level documentation for more diff --git a/pkg/util/tracing/tracer_snapshots.go b/pkg/util/tracing/tracer_snapshots.go new file mode 100644 index 000000000000..8f4ce784202f --- /dev/null +++ b/pkg/util/tracing/tracer_snapshots.go @@ -0,0 +1,195 @@ +// Copyright 2021 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package tracing + +import ( + "bufio" + "runtime" + "strconv" + "strings" + "time" + + "github.com/cockroachdb/cockroach/pkg/util/timeutil" + "github.com/cockroachdb/errors" +) + +// SpansSnapshot represents a snapshot of all the open spans at a certain point +// in time. +type SpansSnapshot struct { + // CapturedAt is the time when the snapshot was collected. + CapturedAt time.Time + // Traces contains the collected traces. Each "local route" corresponds to one + // trace. "Detached recording" spans are included in the parent's trace. + Traces []Recording + // Stacks is a map from groutine ID to the goroutine's stack trace. All + // goroutines running at the time when this snapshot is produced are + // represented here. A goroutine referenced by a span's GoroutineID field will + // not be present if it has finished since the respective span was started. + Stacks map[int]string + // Err is set if an error was encountered when producing the snapshot. The + // snapshot will be incomplete in this case. + Err error +} + +// SnapshotID identifies a spans snapshot. The ID can be used to retrieve a +// specific snapshot from the Tracer. +type SnapshotID int +type snapshotWithID struct { + ID SnapshotID + SpansSnapshot +} + +// SaveSnapshot collects a snapshot of the currently open spans (i.e. the +// contents of the Tracer's active spans registry) saves it in-memory in the +// Tracer. The snapshot's ID is returned; the snapshot can be retrieved +// subsequently through t.GetSnapshot(id). +// +// Snapshots also include a dump of all the goroutine stack traces. +func (t *Tracer) SaveSnapshot() SnapshotID { + snap := t.generateSnapshot() + t.snapshotsMu.Lock() + defer t.snapshotsMu.Unlock() + + snapshots := &t.snapshotsMu.snapshots + + if snapshots.Len() == maxSnapshots { + snapshots.RemoveFirst() + } + var id SnapshotID + if snapshots.Len() == 0 { + id = 1 + } else { + id = snapshots.GetLast().(snapshotWithID).ID + 1 + } + snapshots.AddLast(snapshotWithID{ + ID: id, + SpansSnapshot: snap, + }) + return id +} + +var errSnapshotTooOld = errors.Newf( + "the requested snapshot is too old and has been deleted. "+ + "Only the last %d snapshots are stored.", maxSnapshots) + +var errSnapshotDoesntExist = errors.New("the requested snapshot doesn't exist") + +// GetSnapshot returns the snapshot with the given ID. If the ID is below the +// minimum stored snapshot, then the requested snapshot must have been +// garbage-collected and errSnapshotTooOld is returned. If the snapshot id is +// beyond the maximum stored ID, errSnapshotDoesntExist is returned. +// +// Note that SpansSpanshot has an Err field through which errors are returned. +// In these error cases, the snapshot will be incomplete. +func (t *Tracer) GetSnapshot(id SnapshotID) (SpansSnapshot, error) { + t.snapshotsMu.Lock() + defer t.snapshotsMu.Unlock() + snapshots := &t.snapshotsMu.snapshots + + if snapshots.Len() == 0 { + return SpansSnapshot{}, errSnapshotDoesntExist + } + minID := snapshots.GetFirst().(snapshotWithID).ID + if id < minID { + return SpansSnapshot{}, errSnapshotTooOld + } + maxID := snapshots.GetLast().(snapshotWithID).ID + if id > maxID { + return SpansSnapshot{}, errSnapshotDoesntExist + } + + return snapshots.Get(int(id - minID)).(snapshotWithID).SpansSnapshot, nil +} + +// SnapshotInfo represents minimal info about a stored snapshot, as returned by +// Tracer.GetSnapshots(). +type SnapshotInfo struct { + ID SnapshotID + CapturedAt time.Time +} + +// GetSnapshots returns info on all stored span snapshots. +func (t *Tracer) GetSnapshots() []SnapshotInfo { + t.snapshotsMu.Lock() + defer t.snapshotsMu.Unlock() + snapshots := &t.snapshotsMu.snapshots + + res := make([]SnapshotInfo, snapshots.Len()) + for i := 0; i < snapshots.Len(); i++ { + s := snapshots.Get(i).(snapshotWithID) + res[i] = SnapshotInfo{ + ID: s.ID, + CapturedAt: s.CapturedAt, + } + } + return res +} + +// generateSnapshot produces a snapshot of all the currently open spans and +// all the current goroutine stacktraces. +// +// Note that SpansSpanshot has an Err field through which errors are returned. +// In these error cases, the snapshot will be incomplete. +func (t *Tracer) generateSnapshot() SpansSnapshot { + capturedAt := timeutil.Now() + // Collect the traces. + traces := make([]Recording, 0, 1000) + _ = t.SpanRegistry().VisitSpans(func(sp RegistrySpan) error { + rec := sp.GetFullRecording(RecordingVerbose) + traces = append(traces, rec) + return nil + }) + + // Collect and parse the goroutine stack traces. + + // We don't know how big the traces are, so grow a few times if they don't + // fit. Start large, though. + var stacks []byte + for n := 1 << 20; /* 1mb */ n <= (1 << 29); /* 512mb */ n *= 2 { + stacks = make([]byte, n) + nbytes := runtime.Stack(stacks, true /* all */) + if nbytes < len(stacks) { + break + } + } + + splits := strings.Split(string(stacks), "\n\n") + stackMap := make(map[int]string, len(splits)) + var parseErr error + for _, s := range splits { + // Parse the goroutine ID. The first line of each stack is expected to look like: + // goroutine 115 [chan receive]: + scanner := bufio.NewScanner(strings.NewReader(s)) + scanner.Split(bufio.ScanWords) + // Skip the word "goroutine". + if !scanner.Scan() { + parseErr = errors.Errorf("unexpected end of string") + break + } + // Scan the goroutine ID. + if !scanner.Scan() { + parseErr = errors.Errorf("unexpected end of string") + break + } + goroutineID, err := strconv.Atoi(scanner.Text()) + if err != nil { + panic(err) + } + stackMap[goroutineID] = s + } + + return SpansSnapshot{ + CapturedAt: capturedAt, + Traces: traces, + Stacks: stackMap, + Err: parseErr, + } +} diff --git a/pkg/util/tracing/tracingpb/recorded_span.go b/pkg/util/tracing/tracingpb/recorded_span.go index b398962c941d..2bb4862a5104 100644 --- a/pkg/util/tracing/tracingpb/recorded_span.go +++ b/pkg/util/tracing/tracingpb/recorded_span.go @@ -25,6 +25,25 @@ type TraceID uint64 // SpanID is a probabilistically-unique span id. type SpanID uint64 +// Recording represents a group of RecordedSpans rooted at a fixed root span, as +// returned by GetRecording. Spans are sorted by StartTime. +type Recording []RecordedSpan + +// Less implements sort.Interface. +func (r Recording) Less(i, j int) bool { + return r[i].StartTime.Before(r[j].StartTime) +} + +// Swap implements sort.Interface. +func (r Recording) Swap(i, j int) { + r[i], r[j] = r[j], r[i] +} + +// Len implements sort.Interface. +func (r Recording) Len() int { + return len(r) +} + // LogMessageField is the field name used for the log message in a LogRecord. const LogMessageField = "event" diff --git a/pkg/util/tracing/tracingui/BUILD.bazel b/pkg/util/tracing/tracingui/BUILD.bazel new file mode 100644 index 000000000000..b225899b887e --- /dev/null +++ b/pkg/util/tracing/tracingui/BUILD.bazel @@ -0,0 +1,17 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "tracingui", + srcs = ["span_registry_ui.go"], + importpath = "github.com/cockroachdb/cockroach/pkg/util/tracing/tracingui", + visibility = ["//visibility:public"], + deps = [ + "//pkg/ui", + "//pkg/util/log", + "//pkg/util/sysutil", + "//pkg/util/timeutil", + "//pkg/util/tracing", + "//pkg/util/tracing/tracingpb", + "@com_github_cockroachdb_errors//:errors", + ], +) diff --git a/pkg/util/tracing/tracingui/span_registry_ui.go b/pkg/util/tracing/tracingui/span_registry_ui.go new file mode 100644 index 000000000000..95e1298533ce --- /dev/null +++ b/pkg/util/tracing/tracingui/span_registry_ui.go @@ -0,0 +1,277 @@ +// Copyright 2021 The Cockroach Authors. +// +// Use of this software is governed by the Business Source License +// included in the file licenses/BSL.txt. +// +// As of the Change Date specified in that file, in accordance with +// the Business Source License, use of this software will be governed +// by the Apache License, Version 2.0, included in the file +// licenses/APL.txt. + +package tracingui + +import ( + "context" + "fmt" + "html/template" + "net/http" + "net/url" + "strconv" + "time" + + "github.com/cockroachdb/cockroach/pkg/ui" + "github.com/cockroachdb/cockroach/pkg/util/log" + "github.com/cockroachdb/cockroach/pkg/util/sysutil" + "github.com/cockroachdb/cockroach/pkg/util/timeutil" + "github.com/cockroachdb/cockroach/pkg/util/tracing" + "github.com/cockroachdb/cockroach/pkg/util/tracing/tracingpb" + "github.com/cockroachdb/errors" +) + +// This file deals with producing the /debug/tracez page, which lists +// a snapshot of the spans in the Tracer's active spans registry. + +const dateAndtimeFormat = "2006-01-02 15:04:05.000" +const timeFormat = "15:04:05.000" + +// RegisterHTTPHandlers registers the /debug/tracez handlers, and helpers. +func RegisterHTTPHandlers(ambientCtx log.AmbientContext, mux *http.ServeMux, tr *tracing.Tracer) { + fileServer := http.StripPrefix("/debug/assets/", http.FileServer(http.FS(ui.VendorFS))) + mux.HandleFunc("/debug/tracez", + func(w http.ResponseWriter, req *http.Request) { + serveHTTP(ambientCtx.AnnotateCtx(context.Background()), w, req, tr) + }) + mux.HandleFunc("/debug/show-trace", + func(w http.ResponseWriter, req *http.Request) { + serveHTTPTrace(ambientCtx.AnnotateCtx(req.Context()), w, req, tr) + }) + mux.HandleFunc("/debug/assets/list.min.js", fileServer.ServeHTTP) +} + +type pageData struct { + SnapshotID tracing.SnapshotID + Now time.Time + CapturedAt time.Time + Err error + AllSnapshots []tracing.SnapshotInfo + SpansList spansList +} + +type spansList struct { + Spans []tracingpb.RecordedSpan + // Stacks contains stack traces for the goroutines referenced by the Spans + // through their GoroutineID field. + Stacks map[int]string // GoroutineID to stack trace +} + +var spansTableTemplate *template.Template + +func init() { + spansTableTemplate = template.Must(template.New("spans-list").Funcs( + template.FuncMap{ + "formatTime": formatTime, + "formatTimeNoMillis": formatTimeNoMillis, + "since": func(t time.Time, capturedAt time.Time) string { + return fmt.Sprintf("(%s ago)", formatDuration(capturedAt.Sub(t))) + }, + "timeRaw": func(t time.Time) int64 { return t.UnixMicro() }, + }, + ).Parse(ui.SpansTableTemplateSrc)) +} + +func formatTime(t time.Time) string { + t = t.UTC() + if t.Truncate(24*time.Hour) == timeutil.Now().Truncate(24*time.Hour) { + return t.Format(timeFormat) + } + return t.Format(dateAndtimeFormat) +} + +func formatTimeNoMillis(t time.Time) string { + t = t.UTC() + if t.Truncate(24*time.Hour) == timeutil.Now().Truncate(24*time.Hour) { + const format = "15:04:05" + return t.Format(format) + } + const format = "2006-01-02 15:04:05" + return t.Format(format) +} + +// formatDuration formats a duration in one of the following formats, depending +// on its magnitude. +// 0.001s +// 1.000s +// 1m01s +// 1h05m01s +// 1d02h05m +func formatDuration(d time.Duration) string { + d = d.Round(time.Millisecond) + days := d / (24 * time.Hour) + d -= days * 24 * time.Hour + h := d / time.Hour + d -= h * time.Hour + m := d / time.Minute + d -= m * time.Minute + s := d / time.Second + d -= s * time.Second + millis := d / time.Millisecond + if days != 0 { + return fmt.Sprintf("%dd%02dh%02dm", days, h, m) + } + if h != 0 { + return fmt.Sprintf("%dh%02dm%02ds", h, m, s) + } + if m != 0 { + return fmt.Sprintf("%dm%02ds", m, s) + } + return fmt.Sprintf("%d.%03ds", s, millis) +} + +func serveHTTP(ctx context.Context, w http.ResponseWriter, r *http.Request, tr *tracing.Tracer) { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + var pageErr error + if err := r.ParseForm(); err != nil { + log.Warningf(ctx, "error parsing /tracez form: %s", err.Error()) + pageErr = err + } + + snapID := r.Form.Get("snap") + var snapshot tracing.SpansSnapshot + var snapshotID tracing.SnapshotID + switch snapID { + case "new": + // Capture a new snapshot and return a redirect to that snapshot's ID. + snapshotID = tr.SaveSnapshot() + newURL, err := r.URL.Parse(fmt.Sprintf("?snap=%d", snapshotID)) + if err != nil { + pageErr = err + break + } + http.Redirect(w, r, newURL.String(), http.StatusFound) + return + case "": + default: + id, err := strconv.Atoi(snapID) + if err != nil { + pageErr = errors.Errorf("invalid snapshot ID: %s", snapID) + break + } + snapshotID = tracing.SnapshotID(id) + snapshot, err = tr.GetSnapshot(snapshotID) + if err != nil { + pageErr = err + break + } + } + + // Flatten the recordings. + spans := make([]tracingpb.RecordedSpan, 0, len(snapshot.Traces)*3) + for _, r := range snapshot.Traces { + spans = append(spans, r...) + } + + // Copy the stack traces and augment the map. + stacks := make(map[int]string, len(snapshot.Stacks)) + for k, v := range snapshot.Stacks { + stacks[k] = v + } + // Fill in messages for the goroutines for which we don't have a stack trace. + for _, s := range spans { + gid := int(s.GoroutineID) + if _, ok := stacks[gid]; !ok { + stacks[gid] = "Goroutine not found. Goroutine must have finished since the span was created." + } + } + + if pageErr != nil { + snapshot.Err = pageErr + } + err := spansTableTemplate.ExecuteTemplate(w, "spans-list", pageData{ + Now: timeutil.Now(), + CapturedAt: snapshot.CapturedAt, + SnapshotID: snapshotID, + AllSnapshots: tr.GetSnapshots(), + Err: snapshot.Err, + SpansList: spansList{ + Spans: spans, + Stacks: stacks, + }, + }) + if err != nil { + // We can get a "connection reset by peer" error if the browser requesting + // the page has gone away. + if !sysutil.IsErrConnectionReset(err) { + log.Warningf(ctx, "error executing tracez template: %s", err) + http.Error(w, err.Error(), http.StatusInternalServerError) + } + } +} + +func serveHTTPTrace( + ctx context.Context, w http.ResponseWriter, r *http.Request, tr *tracing.Tracer, +) { + w.Header().Set("Content-Type", "text/html; charset=utf-8") + var err error + if err = r.ParseForm(); err != nil { + goto Error + } + + { + var traceID tracingpb.TraceID + tid := r.Form.Get("trace") + if tid == "" { + err = errors.Errorf("trace ID missing; use ?trace=") + goto Error + } + var id int + id, err = strconv.Atoi(tid) + if err != nil { + err = errors.Errorf("invalid trace ID: %s", tid) + goto Error + } + traceID = tracingpb.TraceID(id) + + var snapshotID tracing.SnapshotID + var snapshot tracing.SpansSnapshot + snapID := r.Form.Get("snap") + if snapID != "" { + var id int + id, err = strconv.Atoi(snapID) + if err != nil { + err = errors.Errorf("invalid snapshot ID: %s", snapID) + goto Error + } + snapshotID = tracing.SnapshotID(id) + snapshot, err = tr.GetSnapshot(snapshotID) + if err != nil { + goto Error + } + } else { + // If no snapshot is specified, we'll take a new one now and redirect to + // it. + snapshotID = tr.SaveSnapshot() + var newURL *url.URL + newURL, err = r.URL.Parse(fmt.Sprintf("?trace=%d&snap=%d", traceID, snapshotID)) + if err != nil { + goto Error + } + http.Redirect(w, r, newURL.String(), http.StatusFound) + return + } + + for _, r := range snapshot.Traces { + if r[0].TraceID == traceID { + _, err = w.Write([]byte("
" + r.String() + "\n
")) + if err != nil { + goto Error + } + return + } + } + err = errors.Errorf("trace %d not found in snapshot", traceID) + goto Error + } + +Error: + http.Error(w, err.Error(), http.StatusInternalServerError) +} diff --git a/scripts/bump-pebble.sh b/scripts/bump-pebble.sh index aa518ac641a3..13e6149bc6e7 100755 --- a/scripts/bump-pebble.sh +++ b/scripts/bump-pebble.sh @@ -22,6 +22,9 @@ set -euo pipefail +_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +_root_dir="$_dir"/.. + echoerr() { printf "%s\n" "$*" >&2; } pushd() { builtin pushd "$@" > /dev/null; } popd() { builtin popd "$@" > /dev/null; } @@ -110,6 +113,9 @@ $COMMITS" git push -u --force origin "$VENDORED_BRANCH" popd +# Mirror the dependency changes to cloud storage. +"$_root_dir/dev" generate bazel --mirror + # Create the branch and commit on the CockroachDB repository. pushd "$COCKROACH_DIR" make bazel-generate