diff --git a/pkg/ccl/logictestccl/testdata/logic_test/partitioning_hash_sharded_index_query_plan b/pkg/ccl/logictestccl/testdata/logic_test/partitioning_hash_sharded_index_query_plan index b5711db69f8f..ab0bea807a04 100644 --- a/pkg/ccl/logictestccl/testdata/logic_test/partitioning_hash_sharded_index_query_plan +++ b/pkg/ccl/logictestccl/testdata/logic_test/partitioning_hash_sharded_index_query_plan @@ -184,19 +184,19 @@ vectorized: true │ auto commit │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, user_id_default, val_cast, column2, check1, check2) + │ columns: (crdb_internal_user_id_shard_16_comp, user_id_default, val_cast, column2, check1, check2) │ estimated row count: 1 │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_user_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_user_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column2: column2 │ render val_cast: val_cast │ render user_id_default: user_id_default - │ render crdb_internal_user_id_shard_16_cast: crdb_internal_user_id_shard_16_cast + │ render crdb_internal_user_id_shard_16_comp: crdb_internal_user_id_shard_16_comp │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 1 - │ render crdb_internal_user_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16), NULL::INT4) + │ render crdb_internal_user_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16) │ render column2: column2 │ render val_cast: val_cast │ render user_id_default: user_id_default @@ -228,45 +228,45 @@ vectorized: true │ arbiter constraints: t_gen_random_uuid_pkey │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, user_id_default, val_cast, column2, check1, check2) + │ columns: (crdb_internal_user_id_shard_16_comp, user_id_default, val_cast, column2, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_user_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_user_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column2: column2 │ render val_cast: val_cast │ render user_id_default: user_id_default - │ render crdb_internal_user_id_shard_16_cast: crdb_internal_user_id_shard_16_cast + │ render crdb_internal_user_id_shard_16_comp: crdb_internal_user_id_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) │ distinct on: user_id_default │ nulls are distinct │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_user_id_shard_16_cast, user_id_default + │ distinct on: crdb_internal_user_id_shard_16_comp, user_id_default │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey │ equality cols are key │ lookup condition: ((user_id_default = user_id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_user_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey - │ equality: (column2, crdb_internal_user_id_shard_16_cast, user_id_default) = (part,crdb_internal_user_id_shard_16,user_id) + │ equality: (column2, crdb_internal_user_id_shard_16_comp, user_id_default) = (part,crdb_internal_user_id_shard_16,user_id) │ equality cols are key │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 1 - │ render crdb_internal_user_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16), NULL::INT4) + │ render crdb_internal_user_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16) │ render column2: column2 │ render val_cast: val_cast │ render user_id_default: user_id_default @@ -298,45 +298,45 @@ vectorized: true │ arbiter constraints: t_gen_random_uuid_pkey │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, user_id_default, val_cast, column2, check1, check2) + │ columns: (crdb_internal_user_id_shard_16_comp, user_id_default, val_cast, column2, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_user_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_user_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column2: column2 │ render val_cast: val_cast │ render user_id_default: user_id_default - │ render crdb_internal_user_id_shard_16_cast: crdb_internal_user_id_shard_16_cast + │ render crdb_internal_user_id_shard_16_comp: crdb_internal_user_id_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) │ distinct on: user_id_default │ nulls are distinct │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_user_id_shard_16_cast, column2, user_id_default + │ distinct on: crdb_internal_user_id_shard_16_comp, column2, user_id_default │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey │ equality cols are key │ lookup condition: ((user_id_default = user_id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_user_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey - │ equality: (column2, crdb_internal_user_id_shard_16_cast, user_id_default) = (part,crdb_internal_user_id_shard_16,user_id) + │ equality: (column2, crdb_internal_user_id_shard_16_comp, user_id_default) = (part,crdb_internal_user_id_shard_16,user_id) │ equality cols are key │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, column2, val_cast, user_id_default) + │ columns: (crdb_internal_user_id_shard_16_comp, column2, val_cast, user_id_default) │ estimated row count: 2 - │ render crdb_internal_user_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16), NULL::INT4) + │ render crdb_internal_user_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16) │ render column2: column2 │ render val_cast: val_cast │ render user_id_default: user_id_default @@ -386,11 +386,11 @@ vectorized: true │ │ into: t_unique_hash_pk(crdb_internal_id_shard_16, id, part) │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) │ │ label: buffer 1 │ │ │ └── • values -│ columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) +│ columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) │ size: 5 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'seattle' @@ -408,18 +408,18 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((column1 = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (column2 != part) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (column2 != part) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 1 │ └── • scan buffer - columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) + columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) label: buffer 1 # TODO (issue #75498): we're using unique without index on (a) as an arbiter and @@ -442,27 +442,27 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_internal_id_shard_16_cast) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • cross join (anti) - │ columns: (column1, column2, crdb_internal_id_shard_16_cast) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_id_shard_16_cast) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'seattle' @@ -494,38 +494,38 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_id_shard_16_cast, column1, column2 + │ distinct on: crdb_internal_id_shard_16_comp, column1, column2 │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey - │ equality: (column2, crdb_internal_id_shard_16_cast, column1) = (part,crdb_internal_id_shard_16,id) + │ equality: (column2, crdb_internal_id_shard_16_comp, column1) = (part,crdb_internal_id_shard_16,id) │ equality cols are key │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 2 - │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) + │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ render column1: column1 │ render column2: column2 │ @@ -551,20 +551,20 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • cross join (anti) - │ columns: (column1, column2, crdb_internal_id_shard_16_cast) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_id_shard_16_cast) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'seattle' @@ -594,25 +594,25 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 2 - │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) + │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ render column1: column1 │ render column2: column2 │ @@ -643,42 +643,42 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_pk_pkey │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, column1, part, check1, check2, upsert_part) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, column1, part, check1, check2, upsert_part) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, column1, part, check1, check2, upsert_part) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, column1, part, check1, check2, upsert_part) │ │ │ └── • render -│ │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part, upsert_part) +│ │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part, upsert_part) │ │ estimated row count: 1 (missing stats) │ │ render check1: upsert_part IN ('new york', 'seattle') -│ │ render check2: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check2: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render column1: column1 │ │ render column2: column2 -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render part: part │ │ render upsert_part: upsert_part │ │ │ └── • render -│ │ columns: (upsert_part, column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part) +│ │ columns: (upsert_part, column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part) │ │ estimated row count: 1 (missing stats) │ │ render upsert_part: CASE WHEN part IS NULL THEN column2 ELSE part END │ │ render column1: column1 │ │ render column2: column2 -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render part: part │ │ │ └── • cross join (left outer) -│ │ columns: (column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part) +│ │ columns: (column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part) │ │ estimated row count: 1 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, crdb_internal_id_shard_16_cast) +│ │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ │ size: 3 columns, 1 row │ │ row 0, expr 0: 4321 │ │ row 0, expr 1: 'seattle' @@ -702,18 +702,18 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_part) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_part) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((column1 = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (upsert_part != part) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (upsert_part != part) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_part) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_part) │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, column1, part, check1, check2, upsert_part) + columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, column1, part, check1, check2, upsert_part) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -735,38 +735,38 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_pk_pkey │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, column1, part, check1, check2, upsert_part) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, column1, part, check1, check2, upsert_part) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, column1, part, check1, check2, upsert_part) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, column1, part, check1, check2, upsert_part) │ │ │ └── • render -│ │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part, upsert_part) +│ │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part, upsert_part) │ │ estimated row count: 2 (missing stats) │ │ render check1: upsert_part IN ('new york', 'seattle') -│ │ render check2: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check2: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render column1: column1 │ │ render column2: column2 -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render part: part │ │ render upsert_part: upsert_part │ │ │ └── • render -│ │ columns: (upsert_part, column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part) +│ │ columns: (upsert_part, column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part) │ │ estimated row count: 2 (missing stats) │ │ render upsert_part: CASE WHEN part IS NULL THEN column2 ELSE part END │ │ render column1: column1 │ │ render column2: column2 -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render part: part │ │ │ └── • lookup join (left outer) -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ │ equality cols are key @@ -774,9 +774,9 @@ vectorized: true │ │ locking strength: for update │ │ │ └── • render -│ │ columns: (crdb_internal_id_shard_16_cast, column1, column2) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ │ estimated row count: 2 -│ │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) +│ │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ │ render column1: column1 │ │ render column2: column2 │ │ @@ -798,18 +798,18 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_part) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_part) │ estimated row count: 1 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((column1 = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (upsert_part != part) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (upsert_part != part) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_part) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_part) │ estimated row count: 2 (missing stats) │ └── • scan buffer - columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, column1, part, check1, check2, upsert_part) + columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, column1, part, check1, check2, upsert_part) label: buffer 1 query T @@ -826,26 +826,26 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, column2, part, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, column2, part, check1, check2) │ └── • render - │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part) + │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part) │ estimated row count: 1 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: CASE WHEN part IS NULL THEN crdb_internal_id_shard_16_cast ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: CASE WHEN part IS NULL THEN crdb_internal_id_shard_16_comp ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ render id: id │ render part: part │ └── • cross join (left outer) - │ columns: (column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_id_shard_16_cast) + │ columns: (column1, column2, crdb_internal_id_shard_16_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'seattle' @@ -876,22 +876,22 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part, column2, part, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part, column2, part, check1, check2) │ └── • render - │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, part) + │ columns: (check1, check2, column1, column2, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, part) │ estimated row count: 2 (missing stats) │ render check1: column2 IN ('new york', 'seattle') - │ render check2: CASE WHEN part IS NULL THEN crdb_internal_id_shard_16_cast ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: CASE WHEN part IS NULL THEN crdb_internal_id_shard_16_comp ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ render id: id │ render part: part │ └── • lookup join (left outer) - │ columns: (crdb_internal_id_shard_16_cast, column1, column2, crdb_internal_id_shard_16, id, part) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2, crdb_internal_id_shard_16, id, part) │ estimated row count: 2 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key @@ -899,9 +899,9 @@ vectorized: true │ locking strength: for update │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, column2) + │ columns: (crdb_internal_id_shard_16_comp, column1, column2) │ estimated row count: 2 - │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) + │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ render column1: column1 │ render column2: column2 │ @@ -932,14 +932,14 @@ vectorized: true │ │ set: crdb_internal_id_shard_16, id │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, id_new, check2) +│ │ columns: (crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, id_new, check2) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, id_new, check2) +│ │ columns: (crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, id_new, check2) │ │ estimated row count: 1 (missing stats) │ │ render check2: true -│ │ render crdb_internal_id_shard_16_cast: 6 +│ │ render crdb_internal_id_shard_16_comp: 6 │ │ render id_new: 1234 │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id @@ -963,18 +963,18 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, id_new, part) + │ columns: (crdb_internal_id_shard_16_comp, id_new, part) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((id_new = id) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (part != part) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (part != part) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, id_new, part) + │ columns: (crdb_internal_id_shard_16_comp, id_new, part) │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_cast, id_new, check2) + columns: (crdb_internal_id_shard_16, id, part, crdb_internal_id_shard_16_comp, id_new, check2) label: buffer 1 subtest test_uniqueness_check_sec_key @@ -1011,11 +1011,11 @@ vectorized: true │ │ into: t_unique_hash_sec_key(id, email, part, crdb_internal_email_shard_16) │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ │ label: buffer 1 │ │ │ └── • values -│ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ size: 6 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'some_email' @@ -1045,7 +1045,7 @@ vectorized: true │ │ estimated row count: 1 │ │ │ └── • scan buffer -│ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ label: buffer 1 │ └── • constraint-check @@ -1069,7 +1069,7 @@ vectorized: true │ estimated row count: 1 │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) label: buffer 1 # TODO (issue #75498): we're using unique without index on (a) as an arbiter and @@ -1092,42 +1092,42 @@ vectorized: true │ arbiter constraints: t_unique_hash_sec_key_pkey, idx_uniq_hash_email │ └── • render - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column3 IN ('new york', 'seattle') - │ render check2: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 │ render column3: column3 - │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast + │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ └── • lookup join (anti) - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ equality cols are key │ lookup condition: ((column2 = email) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ equality cols are key │ lookup condition: (column1 = id) AND (part IN ('new york', 'seattle')) │ └── • lookup join (anti) - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email - │ equality: (column3, crdb_internal_email_shard_16_cast, column2) = (part,crdb_internal_email_shard_16,email) + │ equality: (column3, crdb_internal_email_shard_16_comp, column2) = (part,crdb_internal_email_shard_16,email) │ equality cols are key │ └── • cross join (anti) - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ size: 4 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'some_email' @@ -1164,53 +1164,53 @@ vectorized: true │ arbiter constraints: t_unique_hash_sec_key_pkey, idx_uniq_hash_email │ └── • render - │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) + │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ estimated row count: 0 (missing stats) │ render check1: column3 IN ('new york', 'seattle') - │ render check2: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check2: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render column1: column1 │ render column2: column2 │ render column3: column3 - │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast + │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) + │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_email_shard_16_cast, column2, column3 + │ distinct on: crdb_internal_email_shard_16_comp, column2, column3 │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) + │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ equality cols are key │ lookup condition: ((column2 = email) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) + │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ equality cols are key │ lookup condition: (column1 = id) AND (part IN ('new york', 'seattle')) │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) + │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ equality: (column3, column1) = (part,id) │ equality cols are key │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) + │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email - │ equality: (column3, crdb_internal_email_shard_16_cast, column2) = (part,crdb_internal_email_shard_16,email) + │ equality: (column3, crdb_internal_email_shard_16_comp, column2) = (part,crdb_internal_email_shard_16,email) │ equality cols are key │ └── • render - │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) + │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ estimated row count: 2 - │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) + │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ render column1: column1 │ render column2: column2 │ render column3: column3 @@ -1241,25 +1241,25 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ │ estimated row count: 0 (missing stats) │ │ render check1: column3 IN ('new york', 'seattle') -│ │ render check2: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check2: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ │ └── • cross join (anti) -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ │ estimated row count: 0 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ │ size: 4 columns, 1 row │ │ row 0, expr 0: 4321 │ │ row 0, expr 1: 'some_email' @@ -1298,7 +1298,7 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1320,30 +1320,30 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) │ │ estimated row count: 0 (missing stats) │ │ render check1: column3 IN ('new york', 'seattle') -│ │ render check2: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check2: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ │ └── • lookup join (anti) -│ │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) +│ │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ │ estimated row count: 0 (missing stats) │ │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ │ equality cols are key │ │ lookup condition: ((column2 = email) AND (part IN ('new york', 'seattle'))) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) +│ │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ │ estimated row count: 2 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) +│ │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 @@ -1379,7 +1379,7 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, check1, check2) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, check1, check2) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1401,21 +1401,21 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) │ │ │ └── • render -│ │ columns: (check1, check2, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16) +│ │ columns: (check1, check2, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16) │ │ estimated row count: 1 (missing stats) │ │ render check1: upsert_part IN ('new york', 'seattle') │ │ render check2: upsert_crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part @@ -1426,27 +1426,27 @@ vectorized: true │ │ render upsert_crdb_internal_email_shard_16: upsert_crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16) +│ │ columns: (upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16) │ │ estimated row count: 1 (missing stats) │ │ render upsert_id: CASE WHEN part IS NULL THEN column1 ELSE id END │ │ render upsert_email: CASE WHEN part IS NULL THEN column2 ELSE 'bad_email' END │ │ render upsert_part: CASE WHEN part IS NULL THEN column3 ELSE part END -│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN part IS NULL THEN crdb_internal_email_shard_16_cast ELSE 6 END +│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN part IS NULL THEN crdb_internal_email_shard_16_comp ELSE 6 END │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • cross join (left outer) -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, crdb_internal_email_shard_16, id, email, part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, crdb_internal_email_shard_16, id, email, part) │ │ estimated row count: 1 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ │ size: 4 columns, 1 row │ │ row 0, expr 0: 4321 │ │ row 0, expr 1: 'some_email' @@ -1489,7 +1489,7 @@ vectorized: true │ │ estimated row count: 1 (missing stats) │ │ │ └── • scan buffer -│ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) +│ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) │ label: buffer 1 │ └── • constraint-check @@ -1513,7 +1513,7 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1535,21 +1535,21 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) │ │ │ └── • render -│ │ columns: (check1, check2, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16) +│ │ columns: (check1, check2, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ render check1: upsert_part IN ('new york', 'seattle') │ │ render check2: upsert_crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part @@ -1560,39 +1560,39 @@ vectorized: true │ │ render upsert_crdb_internal_email_shard_16: upsert_crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16) +│ │ columns: (upsert_id, upsert_email, upsert_part, upsert_crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ render upsert_id: CASE WHEN part IS NULL THEN column1 ELSE id END │ │ render upsert_email: CASE WHEN part IS NULL THEN column2 ELSE 'bad_email' END │ │ render upsert_part: CASE WHEN part IS NULL THEN column3 ELSE part END -│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN part IS NULL THEN crdb_internal_email_shard_16_cast ELSE 6 END +│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN part IS NULL THEN crdb_internal_email_shard_16_comp ELSE 6 END │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part) +│ │ columns: (crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part) │ │ estimated row count: 2 (missing stats) │ │ render crdb_internal_email_shard_16: CASE id IS NULL WHEN true THEN CAST(NULL AS INT8) ELSE mod(fnv32(crdb_internal.datums_to_bytes(email)), 16) END │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part │ │ │ └── • project -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part) │ │ estimated row count: 2 (missing stats) │ │ │ └── • lookup join (left outer) -│ │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3, id, email, part, crdb_internal_email_shard_16) +│ │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3, id, email, part, crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ │ equality cols are key @@ -1600,9 +1600,9 @@ vectorized: true │ │ locking strength: for update │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) +│ │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ │ estimated row count: 2 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) +│ │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 @@ -1638,7 +1638,7 @@ vectorized: true │ │ estimated row count: 2 (missing stats) │ │ │ └── • scan buffer -│ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) +│ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) │ label: buffer 1 │ └── • constraint-check @@ -1662,7 +1662,7 @@ vectorized: true │ estimated row count: 2 (missing stats) │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, part, check1, check2, upsert_id, upsert_part) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1684,33 +1684,33 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_sec_key_pkey │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_cast, part, check1, check2, upsert_id) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_comp, part, check1, check2, upsert_id) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_cast, part, check1, check2, upsert_id) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_comp, part, check1, check2, upsert_id) │ │ │ └── • render -│ │ columns: (check1, check2, upsert_id, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16) +│ │ columns: (check1, check2, upsert_id, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16) │ │ estimated row count: 1 (missing stats) │ │ render check1: column3 IN ('new york', 'seattle') -│ │ render check2: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check2: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render upsert_id: CASE WHEN part IS NULL THEN column1 ELSE id END │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • cross join (left outer) -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, crdb_internal_email_shard_16, id, email, part) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, crdb_internal_email_shard_16, id, email, part) │ │ estimated row count: 1 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp) │ │ size: 4 columns, 1 row │ │ row 0, expr 0: 1 │ │ row 0, expr 1: 'email1' @@ -1753,7 +1753,7 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_cast, part, check1, check2, upsert_id) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_comp, part, check1, check2, upsert_id) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1775,41 +1775,41 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_sec_key_pkey │ │ │ └── • buffer -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_cast, part, check1, check2, upsert_id) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_comp, part, check1, check2, upsert_id) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_cast, part, check1, check2, upsert_id) +│ │ columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_comp, part, check1, check2, upsert_id) │ │ │ └── • render -│ │ columns: (check1, check2, upsert_id, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16) +│ │ columns: (check1, check2, upsert_id, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ render check1: column3 IN ('new york', 'seattle') -│ │ render check2: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check2: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render upsert_id: CASE WHEN part IS NULL THEN column1 ELSE id END │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part) +│ │ columns: (crdb_internal_email_shard_16, column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part) │ │ estimated row count: 2 (missing stats) │ │ render crdb_internal_email_shard_16: CASE id IS NULL WHEN true THEN CAST(NULL AS INT8) ELSE mod(fnv32(crdb_internal.datums_to_bytes(email)), 16) END │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render part: part │ │ │ └── • lookup join (left outer) -│ │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3, id, email, part) +│ │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3, id, email, part) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ │ equality cols are key @@ -1817,9 +1817,9 @@ vectorized: true │ │ locking strength: for update │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16_cast, column1, column2, column3) +│ │ columns: (crdb_internal_email_shard_16_comp, column1, column2, column3) │ │ estimated row count: 2 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) +│ │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ │ render column1: column1 │ │ render column2: column2 │ │ render column3: column3 @@ -1855,7 +1855,7 @@ vectorized: true │ estimated row count: 2 (missing stats) │ └── • scan buffer - columns: (column1, column2, column3, crdb_internal_email_shard_16_cast, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_cast, part, check1, check2, upsert_id) + columns: (column1, column2, column3, crdb_internal_email_shard_16_comp, id, email, part, crdb_internal_email_shard_16, column2, column3, crdb_internal_email_shard_16_comp, part, check1, check2, upsert_id) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1877,14 +1877,14 @@ vectorized: true │ │ set: email, crdb_internal_email_shard_16 │ │ │ └── • buffer -│ │ columns: (id, email, part, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_cast, check2) +│ │ columns: (id, email, part, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_comp, check2) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (id, email, part, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_cast, check2) +│ │ columns: (id, email, part, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_comp, check2) │ │ estimated row count: 1 (missing stats) │ │ render check2: true -│ │ render crdb_internal_email_shard_16_cast: 5 +│ │ render crdb_internal_email_shard_16_comp: 5 │ │ render email_new: 'email1' │ │ render crdb_internal_email_shard_16: mod(fnv32(crdb_internal.datums_to_bytes(email)), 16) │ │ render id: id @@ -1920,5 +1920,5 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (id, email, part, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_cast, check2) + columns: (id, email, part, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_comp, check2) label: buffer 1 diff --git a/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_hash_sharded_index_query_plan b/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_hash_sharded_index_query_plan index e3dd6340d2b8..6b2708872ce5 100644 --- a/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_hash_sharded_index_query_plan +++ b/pkg/ccl/logictestccl/testdata/logic_test/regional_by_row_hash_sharded_index_query_plan @@ -193,19 +193,19 @@ vectorized: true │ auto commit │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, user_id_default, val_cast, crdb_region_default, check1, check2) + │ columns: (crdb_internal_user_id_shard_16_comp, user_id_default, val_cast, crdb_region_default, check1, check2) │ estimated row count: 1 - │ render check1: crdb_internal_user_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_user_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render val_cast: val_cast │ render user_id_default: user_id_default │ render crdb_region_default: crdb_region_default - │ render crdb_internal_user_id_shard_16_cast: crdb_internal_user_id_shard_16_cast + │ render crdb_internal_user_id_shard_16_comp: crdb_internal_user_id_shard_16_comp │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 1 - │ render crdb_internal_user_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16), NULL::INT4) + │ render crdb_internal_user_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16) │ render val_cast: val_cast │ render user_id_default: user_id_default │ render crdb_region_default: crdb_region_default @@ -237,52 +237,52 @@ vectorized: true │ arbiter constraints: t_gen_random_uuid_pkey │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, user_id_default, val_cast, crdb_region_default, check1, check2) + │ columns: (crdb_internal_user_id_shard_16_comp, user_id_default, val_cast, crdb_region_default, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_user_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_user_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render val_cast: val_cast │ render user_id_default: user_id_default │ render crdb_region_default: crdb_region_default - │ render crdb_internal_user_id_shard_16_cast: crdb_internal_user_id_shard_16_cast + │ render crdb_internal_user_id_shard_16_comp: crdb_internal_user_id_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) │ distinct on: user_id_default │ nulls are distinct │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_user_id_shard_16_cast, user_id_default + │ distinct on: crdb_internal_user_id_shard_16_comp, user_id_default │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey - │ equality: (crdb_region_default, crdb_internal_user_id_shard_16_cast, user_id_default) = (crdb_region,crdb_internal_user_id_shard_16,user_id) + │ equality: (crdb_region_default, crdb_internal_user_id_shard_16_comp, user_id_default) = (crdb_region,crdb_internal_user_id_shard_16,user_id) │ equality cols are key │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey │ equality cols are key │ lookup condition: ((user_id_default = user_id) AND (crdb_region IN ('ca-central-1', 'us-east-1'))) AND (crdb_internal_user_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 1 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey │ equality cols are key │ lookup condition: ((user_id_default = user_id) AND (crdb_region = 'ap-southeast-2')) AND (crdb_internal_user_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 1 - │ render crdb_internal_user_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16), NULL::INT4) + │ render crdb_internal_user_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16) │ render val_cast: val_cast │ render user_id_default: user_id_default │ render crdb_region_default: crdb_region_default @@ -314,52 +314,52 @@ vectorized: true │ arbiter constraints: t_gen_random_uuid_pkey │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, user_id_default, val_cast, crdb_region_default, check1, check2) + │ columns: (crdb_internal_user_id_shard_16_comp, user_id_default, val_cast, crdb_region_default, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_user_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_user_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render val_cast: val_cast │ render user_id_default: user_id_default │ render crdb_region_default: crdb_region_default - │ render crdb_internal_user_id_shard_16_cast: crdb_internal_user_id_shard_16_cast + │ render crdb_internal_user_id_shard_16_comp: crdb_internal_user_id_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) │ distinct on: user_id_default │ nulls are distinct │ └── • distinct - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_user_id_shard_16_cast, user_id_default + │ distinct on: crdb_internal_user_id_shard_16_comp, user_id_default │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey - │ equality: (crdb_region_default, crdb_internal_user_id_shard_16_cast, user_id_default) = (crdb_region,crdb_internal_user_id_shard_16,user_id) + │ equality: (crdb_region_default, crdb_internal_user_id_shard_16_comp, user_id_default) = (crdb_region,crdb_internal_user_id_shard_16,user_id) │ equality cols are key │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 0 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey │ equality cols are key │ lookup condition: ((user_id_default = user_id) AND (crdb_region IN ('ca-central-1', 'us-east-1'))) AND (crdb_internal_user_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 2 (missing stats) │ table: t_gen_random_uuid@t_gen_random_uuid_pkey │ equality cols are key │ lookup condition: ((user_id_default = user_id) AND (crdb_region = 'ap-southeast-2')) AND (crdb_internal_user_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • render - │ columns: (crdb_internal_user_id_shard_16_cast, val_cast, user_id_default, crdb_region_default) + │ columns: (crdb_internal_user_id_shard_16_comp, val_cast, user_id_default, crdb_region_default) │ estimated row count: 2 - │ render crdb_internal_user_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16), NULL::INT4) + │ render crdb_internal_user_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(user_id_default)), 16) │ render val_cast: val_cast │ render user_id_default: user_id_default │ render crdb_region_default: crdb_region_default @@ -402,11 +402,11 @@ vectorized: true │ │ into: t_unique_hash_pk(crdb_internal_id_shard_16, id, crdb_region) │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) │ │ label: buffer 1 │ │ │ └── • values -│ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) +│ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) │ size: 5 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'ap-southeast-2' @@ -424,18 +424,18 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((column1 = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (crdb_region_default != crdb_region) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (crdb_region_default != crdb_region) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default) │ estimated row count: 1 │ └── • scan buffer - columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) + columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) label: buffer 1 # TODO (issue #75498): we're using unique without index on (a) as an arbiter and @@ -458,27 +458,27 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • lookup join (anti) - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • cross join (anti) - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'ap-southeast-2' @@ -510,56 +510,56 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • distinct - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) - │ distinct on: column1, crdb_internal_id_shard_16_cast + │ distinct on: column1, crdb_internal_id_shard_16_comp │ nulls are distinct │ └── • project - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ └── • lookup join (anti) - │ columns: ("lookup_join_const_col_@12", column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: ("lookup_join_const_col_@11", column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey - │ equality: (lookup_join_const_col_@12, crdb_internal_id_shard_16_cast, column1) = (crdb_region,crdb_internal_id_shard_16,id) + │ equality: (lookup_join_const_col_@11, crdb_internal_id_shard_16_comp, column1) = (crdb_region,crdb_internal_id_shard_16,id) │ equality cols are key │ └── • render - │ columns: ("lookup_join_const_col_@12", column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: ("lookup_join_const_col_@11", column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) - │ render lookup_join_const_col_@12: 'ap-southeast-2' + │ render lookup_join_const_col_@11: 'ap-southeast-2' │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (crdb_region IN ('ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 2 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (crdb_region = 'ap-southeast-2')) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 2 - │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) + │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ render crdb_region_default: 'ap-southeast-2' │ render column1: column1 │ @@ -583,20 +583,20 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • cross join (anti) - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'ap-southeast-2' @@ -637,32 +637,32 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (crdb_region IN ('ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 2 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key │ lookup condition: ((column1 = id) AND (crdb_region = 'ap-southeast-2')) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 2 - │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) + │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ render crdb_region_default: 'ap-southeast-2' │ render column1: column1 │ @@ -691,42 +691,42 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_pk_pkey │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, column1, crdb_region, check1, check2, upsert_crdb_region) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, column1, crdb_region, check1, check2, upsert_crdb_region) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, column1, crdb_region, check1, check2, upsert_crdb_region) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, column1, crdb_region, check1, check2, upsert_crdb_region) │ │ │ └── • render -│ │ columns: (check1, check2, column1, crdb_region_default, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, crdb_region, upsert_crdb_region) +│ │ columns: (check1, check2, column1, crdb_region_default, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, crdb_region, upsert_crdb_region) │ │ estimated row count: 1 (missing stats) -│ │ render check1: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check1: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: upsert_crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render column1: column1 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render crdb_region: crdb_region │ │ render upsert_crdb_region: upsert_crdb_region │ │ │ └── • render -│ │ columns: (upsert_crdb_region, column1, crdb_region_default, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, crdb_region) +│ │ columns: (upsert_crdb_region, column1, crdb_region_default, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, crdb_region) │ │ estimated row count: 1 (missing stats) │ │ render upsert_crdb_region: CASE WHEN crdb_region IS NULL THEN crdb_region_default ELSE crdb_region END │ │ render column1: column1 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render crdb_region: crdb_region │ │ │ └── • cross join (left outer) -│ │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, crdb_region) +│ │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, crdb_region) │ │ estimated row count: 1 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) +│ │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ │ size: 3 columns, 1 row │ │ row 0, expr 0: 4321 │ │ row 0, expr 1: 'ap-southeast-2' @@ -760,18 +760,18 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_crdb_region) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((column1 = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (upsert_crdb_region != crdb_region) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (upsert_crdb_region != crdb_region) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_crdb_region) │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, column1, crdb_region, check1, check2, upsert_crdb_region) + columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, column1, crdb_region, check1, check2, upsert_crdb_region) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -793,38 +793,38 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_pk_pkey │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, column1, crdb_region, check1, check2, upsert_crdb_region) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, column1, crdb_region, check1, check2, upsert_crdb_region) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, column1, crdb_region, check1, check2, upsert_crdb_region) +│ │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, column1, crdb_region, check1, check2, upsert_crdb_region) │ │ │ └── • render -│ │ columns: (check1, check2, column1, crdb_region_default, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, crdb_region, upsert_crdb_region) +│ │ columns: (check1, check2, column1, crdb_region_default, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, crdb_region, upsert_crdb_region) │ │ estimated row count: 2 (missing stats) -│ │ render check1: crdb_internal_id_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check1: crdb_internal_id_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: upsert_crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render column1: column1 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render crdb_region: crdb_region │ │ render upsert_crdb_region: upsert_crdb_region │ │ │ └── • render -│ │ columns: (upsert_crdb_region, column1, crdb_region_default, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, crdb_region) +│ │ columns: (upsert_crdb_region, column1, crdb_region_default, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, crdb_region) │ │ estimated row count: 2 (missing stats) │ │ render upsert_crdb_region: CASE WHEN crdb_region IS NULL THEN crdb_region_default ELSE crdb_region END │ │ render column1: column1 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast +│ │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id │ │ render crdb_region: crdb_region │ │ │ └── • lookup join (left outer) -│ │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1, crdb_internal_id_shard_16, id, crdb_region) +│ │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1, crdb_internal_id_shard_16, id, crdb_region) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ │ equality cols are key @@ -833,9 +833,9 @@ vectorized: true │ │ locking strength: for update │ │ │ └── • render -│ │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) +│ │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ │ estimated row count: 2 -│ │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) +│ │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ │ render crdb_region_default: 'ap-southeast-2' │ │ render column1: column1 │ │ @@ -855,18 +855,18 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_crdb_region) │ estimated row count: 1 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((column1 = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (upsert_crdb_region != crdb_region) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (upsert_crdb_region != crdb_region) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, column1, upsert_crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, column1, upsert_crdb_region) │ estimated row count: 2 (missing stats) │ └── • scan buffer - columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, column1, crdb_region, check1, check2, upsert_crdb_region) + columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, column1, crdb_region, check1, check2, upsert_crdb_region) label: buffer 1 query T @@ -883,21 +883,21 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_region, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_region, check1, check2) │ estimated row count: 1 (missing stats) - │ render check1: CASE WHEN crdb_region IS NULL THEN crdb_internal_id_shard_16_cast ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: CASE WHEN crdb_region IS NULL THEN crdb_internal_id_shard_16_comp ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: CASE WHEN crdb_region IS NULL THEN crdb_region_default ELSE crdb_region END IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ render crdb_region: crdb_region │ └── • cross join (left outer) - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast, crdb_internal_id_shard_16, id, crdb_region) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp, crdb_internal_id_shard_16, id, crdb_region) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_cast) + │ columns: (column1, crdb_region_default, crdb_internal_id_shard_16_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'ap-southeast-2' @@ -938,17 +938,17 @@ vectorized: true │ arbiter constraints: t_unique_hash_pk_pkey │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, column1, crdb_region_default, crdb_region, check1, check2) + │ columns: (crdb_internal_id_shard_16_comp, column1, crdb_region_default, crdb_region, check1, check2) │ estimated row count: 2 (missing stats) - │ render check1: CASE WHEN crdb_region IS NULL THEN crdb_internal_id_shard_16_cast ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: CASE WHEN crdb_region IS NULL THEN crdb_internal_id_shard_16_comp ELSE crdb_internal_id_shard_16 END IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: CASE WHEN crdb_region IS NULL THEN crdb_region_default ELSE crdb_region END IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_id_shard_16_cast: crdb_internal_id_shard_16_cast + │ render crdb_internal_id_shard_16_comp: crdb_internal_id_shard_16_comp │ render crdb_region: crdb_region │ └── • lookup join (left outer) - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1, crdb_internal_id_shard_16, id, crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1, crdb_internal_id_shard_16, id, crdb_region) │ estimated row count: 2 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ equality cols are key @@ -957,9 +957,9 @@ vectorized: true │ locking strength: for update │ └── • render - │ columns: (crdb_internal_id_shard_16_cast, crdb_region_default, column1) + │ columns: (crdb_internal_id_shard_16_comp, crdb_region_default, column1) │ estimated row count: 2 - │ render crdb_internal_id_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16), NULL::INT4) + │ render crdb_internal_id_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 16) │ render crdb_region_default: 'ap-southeast-2' │ render column1: column1 │ @@ -988,14 +988,14 @@ vectorized: true │ │ set: crdb_internal_id_shard_16, id │ │ │ └── • buffer -│ │ columns: (crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, id_new, check1) +│ │ columns: (crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, id_new, check1) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, id_new, check1) +│ │ columns: (crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, id_new, check1) │ │ estimated row count: 1 (missing stats) │ │ render check1: true -│ │ render crdb_internal_id_shard_16_cast: 6 +│ │ render crdb_internal_id_shard_16_comp: 6 │ │ render id_new: 1234 │ │ render crdb_internal_id_shard_16: crdb_internal_id_shard_16 │ │ render id: id @@ -1029,18 +1029,18 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • lookup join (semi) - │ columns: (crdb_internal_id_shard_16_cast, id_new, crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, id_new, crdb_region) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_pk@t_unique_hash_pk_pkey │ lookup condition: ((id_new = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_id_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) - │ pred: (crdb_internal_id_shard_16_cast != crdb_internal_id_shard_16) OR (crdb_region != crdb_region) + │ pred: (crdb_internal_id_shard_16_comp != crdb_internal_id_shard_16) OR (crdb_region != crdb_region) │ └── • project - │ columns: (crdb_internal_id_shard_16_cast, id_new, crdb_region) + │ columns: (crdb_internal_id_shard_16_comp, id_new, crdb_region) │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_cast, id_new, check1) + columns: (crdb_internal_id_shard_16, id, crdb_region, crdb_internal_id_shard_16_comp, id_new, check1) label: buffer 1 subtest test_uniqueness_check_sec_key @@ -1073,11 +1073,11 @@ vectorized: true │ │ into: t_unique_hash_sec_key(id, email, crdb_region, crdb_internal_email_shard_16) │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ │ label: buffer 1 │ │ │ └── • values -│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ size: 6 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'some_email' @@ -1107,7 +1107,7 @@ vectorized: true │ │ estimated row count: 1 │ │ │ └── • scan buffer -│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ label: buffer 1 │ └── • constraint-check @@ -1131,7 +1131,7 @@ vectorized: true │ estimated row count: 1 │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) label: buffer 1 # TODO (issue #75498): we're using unique without index on (a) as an arbiter and @@ -1154,42 +1154,42 @@ vectorized: true │ arbiter constraints: t_unique_hash_sec_key_pkey, idx_uniq_hash_email │ └── • render - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render column2: column2 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast + │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ equality cols are key │ lookup condition: ((column2 = email) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ equality cols are key │ lookup condition: (column1 = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1')) │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email - │ equality: (crdb_region_default, crdb_internal_email_shard_16_cast, column2) = (crdb_region,crdb_internal_email_shard_16,email) + │ equality: (crdb_region_default, crdb_internal_email_shard_16_comp, column2) = (crdb_region,crdb_internal_email_shard_16,email) │ equality cols are key │ └── • cross join (anti) - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ size: 4 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 'some_email' @@ -1226,44 +1226,44 @@ vectorized: true │ arbiter constraints: t_unique_hash_sec_key_pkey, idx_uniq_hash_email │ └── • render - │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) + │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) + │ render check1: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ render column1: column1 │ render column2: column2 │ render crdb_region_default: crdb_region_default - │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast + │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ └── • distinct - │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) + │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_email_shard_16_cast, column2 + │ distinct on: crdb_internal_email_shard_16_comp, column2 │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) + │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ equality cols are key │ lookup condition: ((column2 = email) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1'))) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) + │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ equality cols are key │ lookup condition: (column1 = id) AND (crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1')) │ └── • lookup join (anti) - │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) + │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_unique_hash_sec_key@idx_uniq_hash_email - │ equality: (crdb_region_default, crdb_internal_email_shard_16_cast, column2) = (crdb_region,crdb_internal_email_shard_16,email) + │ equality: (crdb_region_default, crdb_internal_email_shard_16_comp, column2) = (crdb_region,crdb_internal_email_shard_16,email) │ equality cols are key │ └── • hash join (right anti) - │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) + │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ estimated row count: 0 (missing stats) │ equality: (id) = (column1) │ left cols are key @@ -1279,9 +1279,9 @@ vectorized: true │ spans: /"@"-/"@"/PrefixEnd │ └── • render - │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) + │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ estimated row count: 2 - │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) + │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ render crdb_region_default: 'ap-southeast-2' │ render column1: column1 │ render column2: column2 @@ -1310,25 +1310,25 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ │ estimated row count: 0 (missing stats) -│ │ render check1: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check1: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ │ └── • cross join (anti) -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ │ estimated row count: 0 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ │ size: 4 columns, 1 row │ │ row 0, expr 0: 4321 │ │ row 0, expr 1: 'some_email' @@ -1378,7 +1378,7 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1400,37 +1400,37 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) │ │ estimated row count: 0 (missing stats) -│ │ render check1: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check1: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ │ └── • lookup join (anti) -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ │ estimated row count: 0 (missing stats) │ │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ │ equality cols are key │ │ lookup condition: ((column2 = email) AND (crdb_region IN ('ca-central-1', 'us-east-1'))) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ │ │ └── • lookup join (anti) -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ │ equality cols are key │ │ lookup condition: ((column2 = email) AND (crdb_region = 'ap-southeast-2')) AND (crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ │ estimated row count: 2 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) +│ │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ │ render crdb_region_default: 'ap-southeast-2' │ │ render column1: column1 │ │ render column2: column2 @@ -1464,7 +1464,7 @@ vectorized: true │ estimated row count: 0 (missing stats) │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, check1, check2) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, check1, check2) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1486,21 +1486,21 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) │ │ │ └── • render -│ │ columns: (check1, check2, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16) +│ │ columns: (check1, check2, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16) │ │ estimated row count: 1 (missing stats) │ │ render check1: upsert_crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: upsert_crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region @@ -1511,27 +1511,27 @@ vectorized: true │ │ render upsert_crdb_internal_email_shard_16: upsert_crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16) +│ │ columns: (upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16) │ │ estimated row count: 1 (missing stats) │ │ render upsert_id: CASE WHEN crdb_region IS NULL THEN column1 ELSE id END │ │ render upsert_email: CASE WHEN crdb_region IS NULL THEN column2 ELSE 'bad_email' END │ │ render upsert_crdb_region: CASE WHEN crdb_region IS NULL THEN crdb_region_default ELSE crdb_region END -│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN crdb_region IS NULL THEN crdb_internal_email_shard_16_cast ELSE 6 END +│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN crdb_region IS NULL THEN crdb_internal_email_shard_16_comp ELSE 6 END │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • cross join (left outer) -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_internal_email_shard_16, id, email, crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_internal_email_shard_16, id, email, crdb_region) │ │ estimated row count: 1 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ │ size: 4 columns, 1 row │ │ row 0, expr 0: 4321 │ │ row 0, expr 1: 'some_email' @@ -1585,7 +1585,7 @@ vectorized: true │ │ estimated row count: 1 (missing stats) │ │ │ └── • scan buffer -│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) +│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) │ label: buffer 1 │ └── • constraint-check @@ -1609,7 +1609,7 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1631,21 +1631,21 @@ vectorized: true │ │ arbiter constraints: idx_uniq_hash_email │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) │ │ │ └── • render -│ │ columns: (check1, check2, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16) +│ │ columns: (check1, check2, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ render check1: upsert_crdb_internal_email_shard_16 IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: upsert_crdb_region IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region @@ -1656,39 +1656,39 @@ vectorized: true │ │ render upsert_crdb_internal_email_shard_16: upsert_crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16) +│ │ columns: (upsert_id, upsert_email, upsert_crdb_region, upsert_crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ render upsert_id: CASE WHEN crdb_region IS NULL THEN column1 ELSE id END │ │ render upsert_email: CASE WHEN crdb_region IS NULL THEN column2 ELSE 'bad_email' END │ │ render upsert_crdb_region: CASE WHEN crdb_region IS NULL THEN crdb_region_default ELSE crdb_region END -│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN crdb_region IS NULL THEN crdb_internal_email_shard_16_cast ELSE 6 END +│ │ render upsert_crdb_internal_email_shard_16: CASE WHEN crdb_region IS NULL THEN crdb_internal_email_shard_16_comp ELSE 6 END │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region) +│ │ columns: (crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region) │ │ estimated row count: 2 (missing stats) │ │ render crdb_internal_email_shard_16: CASE id IS NULL WHEN true THEN CAST(NULL AS INT8) ELSE mod(fnv32(crdb_internal.datums_to_bytes(email)), 16) END │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region │ │ │ └── • project -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region) │ │ estimated row count: 2 (missing stats) │ │ │ └── • lookup join (left outer) -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2, id, email, crdb_region, crdb_internal_email_shard_16) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2, id, email, crdb_region, crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_sec_key@idx_uniq_hash_email │ │ equality cols are key @@ -1697,9 +1697,9 @@ vectorized: true │ │ locking strength: for update │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ │ estimated row count: 2 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) +│ │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ │ render crdb_region_default: 'ap-southeast-2' │ │ render column1: column1 │ │ render column2: column2 @@ -1733,7 +1733,7 @@ vectorized: true │ │ estimated row count: 2 (missing stats) │ │ │ └── • scan buffer -│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) +│ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) │ label: buffer 1 │ └── • constraint-check @@ -1757,7 +1757,7 @@ vectorized: true │ estimated row count: 2 (missing stats) │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, upsert_email, upsert_crdb_internal_email_shard_16, crdb_region, check1, check2, upsert_id, upsert_crdb_region) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1779,33 +1779,33 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_sec_key_pkey │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_region, check1, check2, upsert_id) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_region, check1, check2, upsert_id) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_region, check1, check2, upsert_id) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_region, check1, check2, upsert_id) │ │ │ └── • render -│ │ columns: (check1, check2, upsert_id, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16) +│ │ columns: (check1, check2, upsert_id, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16) │ │ estimated row count: 1 (missing stats) -│ │ render check1: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check1: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render upsert_id: CASE WHEN crdb_region IS NULL THEN column1 ELSE id END │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • cross join (left outer) -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_internal_email_shard_16, id, email, crdb_region) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_internal_email_shard_16, id, email, crdb_region) │ │ estimated row count: 1 (missing stats) │ │ │ ├── • values -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp) │ │ size: 4 columns, 1 row │ │ row 0, expr 0: 1 │ │ row 0, expr 1: 'email1' @@ -1859,7 +1859,7 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_region, check1, check2, upsert_id) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_region, check1, check2, upsert_id) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1881,41 +1881,41 @@ vectorized: true │ │ arbiter constraints: t_unique_hash_sec_key_pkey │ │ │ └── • buffer -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_region, check1, check2, upsert_id) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_region, check1, check2, upsert_id) │ │ label: buffer 1 │ │ │ └── • project -│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_region, check1, check2, upsert_id) +│ │ columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_region, check1, check2, upsert_id) │ │ │ └── • render -│ │ columns: (check1, check2, upsert_id, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16) +│ │ columns: (check1, check2, upsert_id, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16) │ │ estimated row count: 2 (missing stats) -│ │ render check1: crdb_internal_email_shard_16_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) +│ │ render check1: crdb_internal_email_shard_16_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) │ │ render check2: crdb_region_default IN ('ap-southeast-2', 'ca-central-1', 'us-east-1') │ │ render upsert_id: CASE WHEN crdb_region IS NULL THEN column1 ELSE id END │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region │ │ render crdb_internal_email_shard_16: crdb_internal_email_shard_16 │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region) +│ │ columns: (crdb_internal_email_shard_16, column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region) │ │ estimated row count: 2 (missing stats) │ │ render crdb_internal_email_shard_16: CASE id IS NULL WHEN true THEN CAST(NULL AS INT8) ELSE mod(fnv32(crdb_internal.datums_to_bytes(email)), 16) END │ │ render column1: column1 │ │ render column2: column2 │ │ render crdb_region_default: crdb_region_default -│ │ render crdb_internal_email_shard_16_cast: crdb_internal_email_shard_16_cast +│ │ render crdb_internal_email_shard_16_comp: crdb_internal_email_shard_16_comp │ │ render id: id │ │ render email: email │ │ render crdb_region: crdb_region │ │ │ └── • lookup join (left outer) -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2, id, email, crdb_region) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2, id, email, crdb_region) │ │ estimated row count: 2 (missing stats) │ │ table: t_unique_hash_sec_key@t_unique_hash_sec_key_pkey │ │ equality cols are key @@ -1924,9 +1924,9 @@ vectorized: true │ │ locking strength: for update │ │ │ └── • render -│ │ columns: (crdb_internal_email_shard_16_cast, crdb_region_default, column1, column2) +│ │ columns: (crdb_internal_email_shard_16_comp, crdb_region_default, column1, column2) │ │ estimated row count: 2 -│ │ render crdb_internal_email_shard_16_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16), NULL::INT4) +│ │ render crdb_internal_email_shard_16_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 16) │ │ render crdb_region_default: 'ap-southeast-2' │ │ render column1: column1 │ │ render column2: column2 @@ -1960,7 +1960,7 @@ vectorized: true │ estimated row count: 2 (missing stats) │ └── • scan buffer - columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_cast, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_cast, crdb_region, check1, check2, upsert_id) + columns: (column1, column2, crdb_region_default, crdb_internal_email_shard_16_comp, id, email, crdb_region, crdb_internal_email_shard_16, column2, crdb_region_default, crdb_internal_email_shard_16_comp, crdb_region, check1, check2, upsert_id) label: buffer 1 # TODO (mgartner): there is a lookup join with lookup condition checking every @@ -1982,14 +1982,14 @@ vectorized: true │ │ set: email, crdb_internal_email_shard_16 │ │ │ └── • buffer -│ │ columns: (id, email, crdb_region, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_cast, check1) +│ │ columns: (id, email, crdb_region, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_comp, check1) │ │ label: buffer 1 │ │ │ └── • render -│ │ columns: (id, email, crdb_region, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_cast, check1) +│ │ columns: (id, email, crdb_region, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_comp, check1) │ │ estimated row count: 1 (missing stats) │ │ render check1: true -│ │ render crdb_internal_email_shard_16_cast: 5 +│ │ render crdb_internal_email_shard_16_comp: 5 │ │ render email_new: 'email1' │ │ render crdb_internal_email_shard_16: mod(fnv32(crdb_internal.datums_to_bytes(email)), 16) │ │ render id: id @@ -2035,5 +2035,5 @@ vectorized: true │ estimated row count: 1 (missing stats) │ └── • scan buffer - columns: (id, email, crdb_region, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_cast, check1) + columns: (id, email, crdb_region, crdb_internal_email_shard_16, email_new, crdb_internal_email_shard_16_comp, check1) label: buffer 1 diff --git a/pkg/sql/create_table.go b/pkg/sql/create_table.go index 67b62fc0e201..0cb642f34ac5 100644 --- a/pkg/sql/create_table.go +++ b/pkg/sql/create_table.go @@ -2657,7 +2657,7 @@ func makeShardColumnDesc(colNames []string, buckets int) (*descpb.ColumnDescript col := &descpb.ColumnDescriptor{ Hidden: true, Nullable: false, - Type: types.Int4, + Type: types.Int, Virtual: true, } col.Name = tabledesc.GetShardColumnName(colNames, int32(buckets)) diff --git a/pkg/sql/opt/exec/execbuilder/testdata/hash_sharded_index b/pkg/sql/opt/exec/execbuilder/testdata/hash_sharded_index index ca540272f4f6..c05533370ea4 100644 --- a/pkg/sql/opt/exec/execbuilder/testdata/hash_sharded_index +++ b/pkg/sql/opt/exec/execbuilder/testdata/hash_sharded_index @@ -19,16 +19,16 @@ vectorized: true │ auto commit │ └── • render - │ columns: (crdb_internal_a_shard_11_cast, column1, check1) + │ columns: (crdb_internal_a_shard_11_comp, column1, check1) │ estimated row count: 2 - │ render check1: crdb_internal_a_shard_11_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + │ render check1: crdb_internal_a_shard_11_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) │ render column1: column1 - │ render crdb_internal_a_shard_11_cast: crdb_internal_a_shard_11_cast + │ render crdb_internal_a_shard_11_comp: crdb_internal_a_shard_11_comp │ └── • render - │ columns: (crdb_internal_a_shard_11_cast, column1) + │ columns: (crdb_internal_a_shard_11_comp, column1) │ estimated row count: 2 - │ render crdb_internal_a_shard_11_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 11), NULL::INT4) + │ render crdb_internal_a_shard_11_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 11) │ render column1: column1 │ └── • values @@ -53,17 +53,17 @@ vectorized: true │ auto commit │ └── • render - │ columns: (column1, crdb_internal_a_shard_12_cast, rowid_default, check1) + │ columns: (column1, crdb_internal_a_shard_12_comp, rowid_default, check1) │ estimated row count: 2 - │ render check1: crdb_internal_a_shard_12_cast IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) + │ render check1: crdb_internal_a_shard_12_comp IN (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) │ render column1: column1 │ render rowid_default: rowid_default - │ render crdb_internal_a_shard_12_cast: crdb_internal_a_shard_12_cast + │ render crdb_internal_a_shard_12_comp: crdb_internal_a_shard_12_comp │ └── • render - │ columns: (crdb_internal_a_shard_12_cast, rowid_default, column1) + │ columns: (crdb_internal_a_shard_12_comp, rowid_default, column1) │ estimated row count: 2 - │ render crdb_internal_a_shard_12_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column1)), 12), NULL::INT4) + │ render crdb_internal_a_shard_12_comp: mod(fnv32(crdb_internal.datums_to_bytes(column1)), 12) │ render rowid_default: unique_rowid() │ render column1: column1 │ @@ -136,13 +136,13 @@ query T EXPLAIN (OPT, CATALOG) SELECT * FROM t ---- TABLE t - ├── crdb_internal_a_shard_8 int4 not null as (mod(fnv32("crdb_internal.datums_to_bytes"(a)), 8:::INT8)) stored [hidden] + ├── crdb_internal_a_shard_8 int not null as (mod(fnv32("crdb_internal.datums_to_bytes"(a)), 8:::INT8)) stored [hidden] ├── a int not null ├── crdb_internal_mvcc_timestamp decimal [hidden] [system] ├── tableoid oid [hidden] [system] ├── CHECK (crdb_internal_a_shard_8 IN (0:::INT8, 1:::INT8, 2:::INT8, 3:::INT8, 4:::INT8, 5:::INT8, 6:::INT8, 7:::INT8)) ├── PRIMARY INDEX t_pkey - │ ├── crdb_internal_a_shard_8 int4 not null as (mod(fnv32("crdb_internal.datums_to_bytes"(a)), 8:::INT8)) stored [hidden] (implicit) + │ ├── crdb_internal_a_shard_8 int not null as (mod(fnv32("crdb_internal.datums_to_bytes"(a)), 8:::INT8)) stored [hidden] (implicit) │ └── a int not null └── UNIQUE WITHOUT INDEX (a) scan t @@ -165,7 +165,7 @@ query T SELECT @2 FROM [SHOW CREATE TABLE t] ---- CREATE TABLE public.t ( - crdb_internal_a_shard_8 INT4 NOT VISIBLE NOT NULL AS (mod(fnv32(crdb_internal.datums_to_bytes(a)), 8:::INT8)) VIRTUAL, + crdb_internal_a_shard_8 INT8 NOT VISIBLE NOT NULL AS (mod(fnv32(crdb_internal.datums_to_bytes(a)), 8:::INT8)) VIRTUAL, a INT8 NOT NULL, CONSTRAINT t_pkey PRIMARY KEY (a ASC) USING HASH WITH (bucket_count=8) ) @@ -174,13 +174,13 @@ query T EXPLAIN (OPT, CATALOG) SELECT * FROM t ---- TABLE t - ├── crdb_internal_a_shard_8 int4 not null as (mod(fnv32(crdb_internal.datums_to_bytes(a)), 8:::INT8)) stored [hidden] + ├── crdb_internal_a_shard_8 int not null as (mod(fnv32(crdb_internal.datums_to_bytes(a)), 8:::INT8)) stored [hidden] ├── a int not null ├── crdb_internal_mvcc_timestamp decimal [hidden] [system] ├── tableoid oid [hidden] [system] ├── CHECK (crdb_internal_a_shard_8 IN (0:::INT8, 1:::INT8, 2:::INT8, 3:::INT8, 4:::INT8, 5:::INT8, 6:::INT8, 7:::INT8)) ├── PRIMARY INDEX t_pkey - │ ├── crdb_internal_a_shard_8 int4 not null as (mod(fnv32(crdb_internal.datums_to_bytes(a)), 8:::INT8)) stored [hidden] (implicit) + │ ├── crdb_internal_a_shard_8 int not null as (mod(fnv32(crdb_internal.datums_to_bytes(a)), 8:::INT8)) stored [hidden] (implicit) │ └── a int not null └── UNIQUE WITHOUT INDEX (a) scan t @@ -233,10 +233,10 @@ vectorized: true │ auto commit │ └── • render - │ columns: (crdb_internal_a_shard_8, a, b, crdb_internal_a_shard_8_cast, a_new, check1) + │ columns: (crdb_internal_a_shard_8, a, b, crdb_internal_a_shard_8_comp, a_new, check1) │ estimated row count: 1 (missing stats) │ render check1: true - │ render crdb_internal_a_shard_8_cast: 1 + │ render crdb_internal_a_shard_8_comp: 1 │ render a_new: 4321 │ render crdb_internal_a_shard_8: crdb_internal_a_shard_8 │ render a: a @@ -264,25 +264,25 @@ vectorized: true │ arbiter constraints: t_hash_indexed_pkey │ └── • project - │ columns: (crdb_internal_a_shard_8_cast, column1, column2, crdb_internal_a_shard_8, a, b, crdb_internal_a_shard_8_cast, column2, crdb_internal_a_shard_8, check1) + │ columns: (crdb_internal_a_shard_8_comp, column1, column2, crdb_internal_a_shard_8, a, b, crdb_internal_a_shard_8_comp, column2, crdb_internal_a_shard_8, check1) │ └── • render - │ columns: (check1, column1, column2, crdb_internal_a_shard_8_cast, crdb_internal_a_shard_8, a, b) + │ columns: (check1, column1, column2, crdb_internal_a_shard_8_comp, crdb_internal_a_shard_8, a, b) │ estimated row count: 1 (missing stats) - │ render check1: crdb_internal_a_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_a_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_a_shard_8_cast: crdb_internal_a_shard_8_cast + │ render crdb_internal_a_shard_8_comp: crdb_internal_a_shard_8_comp │ render crdb_internal_a_shard_8: crdb_internal_a_shard_8 │ render a: a │ render b: b │ └── • cross join (left outer) - │ columns: (column1, column2, crdb_internal_a_shard_8_cast, crdb_internal_a_shard_8, a, b) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp, crdb_internal_a_shard_8, a, b) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -309,15 +309,15 @@ vectorized: true │ arbiter constraints: t_hash_indexed_pkey │ └── • project - │ columns: (crdb_internal_a_shard_8_cast, column1, column2, crdb_internal_a_shard_8, a, b, upsert_crdb_internal_a_shard_8, upsert_a, crdb_internal_a_shard_8, check1) + │ columns: (crdb_internal_a_shard_8_comp, column1, column2, crdb_internal_a_shard_8, a, b, upsert_crdb_internal_a_shard_8, upsert_a, crdb_internal_a_shard_8, check1) │ └── • render - │ columns: (check1, column1, column2, crdb_internal_a_shard_8_cast, crdb_internal_a_shard_8, a, b, upsert_crdb_internal_a_shard_8, upsert_a) + │ columns: (check1, column1, column2, crdb_internal_a_shard_8_comp, crdb_internal_a_shard_8, a, b, upsert_crdb_internal_a_shard_8, upsert_a) │ estimated row count: 1 (missing stats) │ render check1: upsert_crdb_internal_a_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_a_shard_8_cast: crdb_internal_a_shard_8_cast + │ render crdb_internal_a_shard_8_comp: crdb_internal_a_shard_8_comp │ render crdb_internal_a_shard_8: crdb_internal_a_shard_8 │ render a: a │ render b: b @@ -325,23 +325,23 @@ vectorized: true │ render upsert_a: upsert_a │ └── • render - │ columns: (upsert_crdb_internal_a_shard_8, upsert_a, column1, column2, crdb_internal_a_shard_8_cast, crdb_internal_a_shard_8, a, b) + │ columns: (upsert_crdb_internal_a_shard_8, upsert_a, column1, column2, crdb_internal_a_shard_8_comp, crdb_internal_a_shard_8, a, b) │ estimated row count: 1 (missing stats) - │ render upsert_crdb_internal_a_shard_8: CASE WHEN crdb_internal_a_shard_8 IS NULL THEN crdb_internal_a_shard_8_cast ELSE 1 END + │ render upsert_crdb_internal_a_shard_8: CASE WHEN crdb_internal_a_shard_8 IS NULL THEN crdb_internal_a_shard_8_comp ELSE 1 END │ render upsert_a: CASE WHEN crdb_internal_a_shard_8 IS NULL THEN column1 ELSE 4321 END │ render column1: column1 │ render column2: column2 - │ render crdb_internal_a_shard_8_cast: crdb_internal_a_shard_8_cast + │ render crdb_internal_a_shard_8_comp: crdb_internal_a_shard_8_comp │ render crdb_internal_a_shard_8: crdb_internal_a_shard_8 │ render a: a │ render b: b │ └── • cross join (left outer) - │ columns: (column1, column2, crdb_internal_a_shard_8_cast, crdb_internal_a_shard_8, a, b) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp, crdb_internal_a_shard_8, a, b) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -372,26 +372,26 @@ vectorized: true │ arbiter constraints: t_hash_indexed_pkey │ └── • render - │ columns: (crdb_internal_a_shard_8_cast, column1, column2, check1) + │ columns: (crdb_internal_a_shard_8_comp, column1, column2, check1) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_a_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_a_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_a_shard_8_cast: crdb_internal_a_shard_8_cast + │ render crdb_internal_a_shard_8_comp: crdb_internal_a_shard_8_comp │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@t_hash_indexed_pkey │ equality cols are key │ lookup condition: (column1 = a) AND (crdb_internal_a_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7)) │ └── • cross join (anti) - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -417,19 +417,19 @@ vectorized: true │ arbiter constraints: t_hash_indexed_pkey │ └── • render - │ columns: (crdb_internal_a_shard_8_cast, column1, column2, check1) + │ columns: (crdb_internal_a_shard_8_comp, column1, column2, check1) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_a_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_a_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_a_shard_8_cast: crdb_internal_a_shard_8_cast + │ render crdb_internal_a_shard_8_comp: crdb_internal_a_shard_8_comp │ └── • cross join (anti) - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_a_shard_8_cast) + │ columns: (column1, column2, crdb_internal_a_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -489,10 +489,10 @@ vectorized: true │ auto commit │ └── • render - │ columns: (a, b, crdb_internal_b_shard_8, b_new, crdb_internal_b_shard_8_cast, check1) + │ columns: (a, b, crdb_internal_b_shard_8, b_new, crdb_internal_b_shard_8_comp, check1) │ estimated row count: 1 (missing stats) │ render check1: true - │ render crdb_internal_b_shard_8_cast: 3 + │ render crdb_internal_b_shard_8_comp: 3 │ render b_new: 8765 │ render crdb_internal_b_shard_8: mod(fnv32(crdb_internal.datums_to_bytes(b)), 8) │ render a: a @@ -519,25 +519,25 @@ vectorized: true │ arbiter indexes: t_hash_indexed_pkey │ └── • project - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8, column2, crdb_internal_b_shard_8_cast, a, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8, column2, crdb_internal_b_shard_8_comp, a, check1) │ └── • render - │ columns: (check1, column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8) + │ columns: (check1, column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8) │ estimated row count: 1 (missing stats) - │ render check1: crdb_internal_b_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_b_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ render crdb_internal_b_shard_8: crdb_internal_b_shard_8 │ └── • cross join (left outer) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, crdb_internal_b_shard_8, a, b) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, crdb_internal_b_shard_8, a, b) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -570,15 +570,15 @@ vectorized: true │ arbiter indexes: t_hash_indexed_pkey │ └── • project - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8, a, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8, a, check1) │ └── • render - │ columns: (check1, column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8) + │ columns: (check1, column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8) │ estimated row count: 1 (missing stats) │ render check1: upsert_crdb_internal_b_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ render crdb_internal_b_shard_8: crdb_internal_b_shard_8 @@ -586,23 +586,23 @@ vectorized: true │ render upsert_crdb_internal_b_shard_8: upsert_crdb_internal_b_shard_8 │ └── • render - │ columns: (upsert_b, upsert_crdb_internal_b_shard_8, column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8) + │ columns: (upsert_b, upsert_crdb_internal_b_shard_8, column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8) │ estimated row count: 1 (missing stats) │ render upsert_b: CASE WHEN a IS NULL THEN column2 ELSE 8765 END - │ render upsert_crdb_internal_b_shard_8: CASE WHEN a IS NULL THEN crdb_internal_b_shard_8_cast ELSE 3 END + │ render upsert_crdb_internal_b_shard_8: CASE WHEN a IS NULL THEN crdb_internal_b_shard_8_comp ELSE 3 END │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ render crdb_internal_b_shard_8: crdb_internal_b_shard_8 │ └── • cross join (left outer) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, crdb_internal_b_shard_8, a, b) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, crdb_internal_b_shard_8, a, b) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -635,15 +635,15 @@ vectorized: true │ arbiter constraints: idx_t_hash_indexed │ └── • project - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8, a, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8, a, check1) │ └── • render - │ columns: (check1, column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8) + │ columns: (check1, column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8, upsert_b, upsert_crdb_internal_b_shard_8) │ estimated row count: 1 (missing stats) │ render check1: upsert_crdb_internal_b_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ render crdb_internal_b_shard_8: crdb_internal_b_shard_8 @@ -651,23 +651,23 @@ vectorized: true │ render upsert_crdb_internal_b_shard_8: upsert_crdb_internal_b_shard_8 │ └── • render - │ columns: (upsert_b, upsert_crdb_internal_b_shard_8, column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8) + │ columns: (upsert_b, upsert_crdb_internal_b_shard_8, column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8) │ estimated row count: 1 (missing stats) │ render upsert_b: CASE WHEN a IS NULL THEN column2 ELSE 8765 END - │ render upsert_crdb_internal_b_shard_8: CASE WHEN a IS NULL THEN crdb_internal_b_shard_8_cast ELSE 3 END + │ render upsert_crdb_internal_b_shard_8: CASE WHEN a IS NULL THEN crdb_internal_b_shard_8_comp ELSE 3 END │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ render crdb_internal_b_shard_8: crdb_internal_b_shard_8 │ └── • cross join (left outer) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, crdb_internal_b_shard_8, a, b) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, crdb_internal_b_shard_8, a, b) │ estimated row count: 1 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -704,35 +704,35 @@ vectorized: true │ arbiter constraints: idx_t_hash_indexed │ └── • project - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8, column2, crdb_internal_b_shard_8_cast, a, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8, column2, crdb_internal_b_shard_8_comp, a, check1) │ └── • render - │ columns: (check1, column1, column2, crdb_internal_b_shard_8_cast, a, b, crdb_internal_b_shard_8) + │ columns: (check1, column1, column2, crdb_internal_b_shard_8_comp, a, b, crdb_internal_b_shard_8) │ estimated row count: 2 (missing stats) - │ render check1: crdb_internal_b_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_b_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ render crdb_internal_b_shard_8: crdb_internal_b_shard_8 │ └── • render - │ columns: (crdb_internal_b_shard_8, column1, column2, crdb_internal_b_shard_8_cast, a, b) + │ columns: (crdb_internal_b_shard_8, column1, column2, crdb_internal_b_shard_8_comp, a, b) │ estimated row count: 2 (missing stats) │ render crdb_internal_b_shard_8: CASE a IS NULL WHEN true THEN CAST(NULL AS INT8) ELSE mod(fnv32(crdb_internal.datums_to_bytes(b)), 8) END │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ render a: a │ render b: b │ └── • project - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, a, b) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, a, b) │ estimated row count: 2 (missing stats) │ └── • lookup join (left outer) - │ columns: (crdb_internal_b_shard_8_cast, column1, column2, a, b, crdb_internal_b_shard_8) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2, a, b, crdb_internal_b_shard_8) │ estimated row count: 2 (missing stats) │ table: t_hash_indexed@idx_t_hash_indexed │ equality cols are key @@ -740,9 +740,9 @@ vectorized: true │ locking strength: for update │ └── • render - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 2 - │ render crdb_internal_b_shard_8_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 8), NULL::INT4) + │ render crdb_internal_b_shard_8_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 8) │ render column1: column1 │ render column2: column2 │ @@ -771,33 +771,33 @@ vectorized: true │ arbiter constraints: idx_t_hash_indexed │ └── • render - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, check1) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_b_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_b_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@idx_t_hash_indexed │ equality cols are key │ lookup condition: (column2 = b) AND (crdb_internal_b_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7)) │ └── • lookup join (anti) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@idx_t_hash_indexed - │ equality: (crdb_internal_b_shard_8_cast, column2) = (crdb_internal_b_shard_8,b) + │ equality: (crdb_internal_b_shard_8_comp, column2) = (crdb_internal_b_shard_8,b) │ equality cols are key │ └── • cross join (anti) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -830,44 +830,44 @@ vectorized: true │ arbiter constraints: idx_t_hash_indexed │ └── • render - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, check1) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_b_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_b_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ └── • distinct - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 0 (missing stats) - │ distinct on: crdb_internal_b_shard_8_cast, column2 + │ distinct on: crdb_internal_b_shard_8_comp, column2 │ nulls are distinct │ └── • lookup join (anti) - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@idx_t_hash_indexed │ equality cols are key │ lookup condition: (column2 = b) AND (crdb_internal_b_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7)) │ └── • lookup join (anti) - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@t_hash_indexed_pkey │ equality: (column1) = (a) │ equality cols are key │ └── • lookup join (anti) - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@idx_t_hash_indexed - │ equality: (crdb_internal_b_shard_8_cast, column2) = (crdb_internal_b_shard_8,b) + │ equality: (crdb_internal_b_shard_8_comp, column2) = (crdb_internal_b_shard_8,b) │ equality cols are key │ └── • render - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 2 - │ render crdb_internal_b_shard_8_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 8), NULL::INT4) + │ render crdb_internal_b_shard_8_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 8) │ render column1: column1 │ render column2: column2 │ @@ -893,19 +893,19 @@ vectorized: true │ arbiter constraints: idx_t_hash_indexed │ └── • render - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, check1) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_b_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_b_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ └── • cross join (anti) - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ estimated row count: 0 (missing stats) │ ├── • values - │ columns: (column1, column2, crdb_internal_b_shard_8_cast) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp) │ size: 3 columns, 1 row │ row 0, expr 0: 4321 │ row 0, expr 1: 8765 @@ -935,24 +935,24 @@ vectorized: true │ arbiter constraints: idx_t_hash_indexed │ └── • render - │ columns: (column1, column2, crdb_internal_b_shard_8_cast, check1) + │ columns: (column1, column2, crdb_internal_b_shard_8_comp, check1) │ estimated row count: 0 (missing stats) - │ render check1: crdb_internal_b_shard_8_cast IN (0, 1, 2, 3, 4, 5, 6, 7) + │ render check1: crdb_internal_b_shard_8_comp IN (0, 1, 2, 3, 4, 5, 6, 7) │ render column1: column1 │ render column2: column2 - │ render crdb_internal_b_shard_8_cast: crdb_internal_b_shard_8_cast + │ render crdb_internal_b_shard_8_comp: crdb_internal_b_shard_8_comp │ └── • lookup join (anti) - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 0 (missing stats) │ table: t_hash_indexed@idx_t_hash_indexed │ equality cols are key │ lookup condition: (column2 = b) AND (crdb_internal_b_shard_8 IN (0, 1, 2, 3, 4, 5, 6, 7)) │ └── • render - │ columns: (crdb_internal_b_shard_8_cast, column1, column2) + │ columns: (crdb_internal_b_shard_8_comp, column1, column2) │ estimated row count: 2 - │ render crdb_internal_b_shard_8_cast: crdb_internal.assignment_cast(mod(fnv32(crdb_internal.datums_to_bytes(column2)), 8), NULL::INT4) + │ render crdb_internal_b_shard_8_comp: mod(fnv32(crdb_internal.datums_to_bytes(column2)), 8) │ render column1: column1 │ render column2: column2 │