-
Notifications
You must be signed in to change notification settings - Fork 487
[design] better column names #31802
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[design] better column names #31802
Conversation
| 2. Keep track of column names on `usize` column references in | ||
| `*RelationExpr`. | ||
|
|
||
| In both cases, we will work with `Option<Rc<String>>`, being careful |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason to prefer Option<Rc<String>> over Option<Rc<str>>? It doesn't seem we'll ever modify the name. As an alternative, we could use https://crates.io/crates/compact_str to avoid the allocation in most cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ParkMyCar Another instance where an immutable compact_str might be interesting!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've already started making some progress on that, maybe I can wrap it up soon 👀
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nope, str (or immutable compact_str) would be better choices. Will revise.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a small problem with this plan I didn't anticipate: Rc<str> isn't Send, and we put HirScalarExprs into the catalog. 🙃
Is the right fix just changing things to Arc<str>, or are there alternatives I should consider?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Arc<str> is the right approach!
|
|
||
| The `Project` is the most critical, as projections appear at the top | ||
| of nearly every `SELECT` query---the missing `succ_x` in the example | ||
| above appears in a `Project`, for example. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These Projects often go through MapFilterProject (e.g., CanonicalizeMfp eats up all the Maps, Filters, Projects, creates a MapFilterProject, then optimizes it, and and then converts it back to Map,Filter,Project), so we'll have to augment that also with column names.
| `Analysis` bottom-up framework. But `Analysis` is only defined for | ||
| MIR. We should build simple, direct versions of these analyses for | ||
| LIR---and we can generalize it to a lower-level `Analysis` framework | ||
| if we later need it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is the /home/gabor/materialize/src/compute-types/src/plan/interpret framework for LIR. (Alex and Marcos worked on this.) Could that be used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Likely! The abstract domain of names should work just fine. I'll probably break PRs into two HIR/MIR and LIR.
…31877) #31802 introduces the concept of a `NAMESCORE` metric: the percentage of column references in `EXPLAIN` output which have associated names. This PR introduces a python script, `namescore`, that implements that metric. <details> <summary>Output on old SLT files (without `WITH (humanized expressions)`)</summary> ``` group_size_hints.slt: 0.00% (0 / 107) timezone.slt: 0.00% (0 / 1) freshmart.slt: 0.00% (0 / 271) cte.slt: 0.00% (0 / 2) not-null-propagation.slt: 0.00% (0 / 329) github-7892.slt: 0.00% (0 / 1) numeric.slt: 0.00% (0 / 3) type-promotion.slt: 0.00% (0 / 3) mz_recent_storage_usage.slt: 0.00% (0 / 2) github-7688.slt: 0.00% (0 / 1) github-16036.slt: 0.00% (0 / 88) privilege_checks.slt: 0.00% (0 / 1) vars.slt: 0.00% (0 / 1) subquery.slt: 0.00% (0 / 93) github-5474.slt: 0.00% (0 / 1) aggregates.slt: 0.00% (0 / 50) outer_join.slt: 0.00% (0 / 128) github-57.slt: 0.00% (0 / 1) github-5717.slt: 0.00% (0 / 4) tpch_select.slt: 62.82% (735 / 1170) jsonb.slt: 0.00% (0 / 4) github-8261-8463.slt: 0.00% (0 / 4) github-7467.slt: 0.00% (0 / 2) system-cluster.slt: 0.00% (0 / 134) uniqueness_propagation_filter.slt: 0.00% (0 / 149) limit_expr.slt: 90.68% (107 / 118) github-2746.slt: 0.00% (0 / 63) github-8257.slt: 0.00% (0 / 1) tpch_create_materialized_view.slt: 64.27% (707 / 1100) cte_lowering.slt: 0.00% (0 / 188) timedomain.slt: 0.00% (0 / 33) scalar_subqueries_select_list.slt: 0.00% (0 / 341) regtype.slt: 0.00% (0 / 1) outer_join_simplification.slt: 0.00% (0 / 343) github-17808.slt: 0.00% (0 / 1) joins.slt: 0.00% (0 / 207) regclass.slt: 0.00% (0 / 1) github-8867.slt: 0.00% (0 / 1) distinct_on.slt: 0.00% (0 / 9) alter-table.slt: 0.00% (0 / 27) persist-fast-path.slt: 0.00% (0 / 12) types.slt: 0.00% (0 / 19) char.slt: 0.00% (0 / 3) updates.slt: 0.00% (0 / 2) github-7821.slt: 0.00% (0 / 1) order_by.slt: 0.00% (0 / 30) cluster_features.slt: 0.00% (0 / 280) parse_ident.slt: 0.00% (0 / 8) github-2799.slt: 0.00% (0 / 11) github-2969.slt: 0.00% (0 / 42) cardinality.slt: 0.00% (0 / 330) ldbc_bi.slt: 57.26% (1569 / 2740) timestamptz.slt: 0.00% (0 / 2) regex.slt: 0.00% (0 / 62) extract.slt: 0.00% (0 / 1) transactions.slt: 0.00% (0 / 34) timestamp.slt: 0.00% (0 / 2) github-6935.slt: 0.00% (0 / 1) github-14116.slt: 0.00% (0 / 12) regressions.slt: 0.00% (0 / 1) window_funcs.slt: 0.00% (0 / 703) github-6464.slt: 0.00% (0 / 21) managed_cluster.slt: 0.00% (0 / 1) filter-pushdown.slt: 55.04% (71 / 129) boolean.slt: 0.00% (0 / 42) record.slt: 0.00% (0 / 10) temporal.slt: 0.00% (0 / 1) list.slt: 0.00% (0 / 64) like.slt: 0.00% (0 / 22) outer_join_lowering.slt: 95.00% (589 / 620) funcs.slt: 0.00% (0 / 20) recursive_type_unioning.slt: 0.00% (0 / 7) chbench.slt: 0.00% (0 / 1562) tpch_create_index.slt: 66.49% (742 / 1116) dates-times.slt: 0.00% (0 / 1) scoping.slt: 0.00% (0 / 2) topk.slt: 0.00% (0 / 24) regproc.slt: 0.00% (0 / 1) github-5723.slt: 0.00% (0 / 13) table_func.slt: 0.00% (0 / 74) github-5536.slt: 0.00% (0 / 17) arrays.slt: 0.00% (0 / 2) github-5126.slt: 0.00% (0 / 47) ldbc_bi_eager.slt: 57.26% (1569 / 2740) reduce_mfp.slt: 0.00% (0 / 26) arithmetic.slt: 0.00% (0 / 58) explain/broken_statements.slt: 0.00% (0 / 1) explain/aggregates.slt: 0.00% (0 / 205) explain/physical_plan_aggregates.slt: 0.00% (0 / 321) explain/materialized_view.slt: 0.00% (0 / 47) explain/physical_plan_as_text.slt: 0.00% (0 / 979) explain/pushdown.slt: 0.00% (0 / 2) explain/optimized_plan_as_text_redacted.slt: 69.47% (273 / 393) explain/replan_catalog_items.slt: 0.00% (0 / 57) explain/decorrelated_plan_as_text.slt: 0.00% (0 / 347) explain/enable_eager_delta_joins.slt: 0.00% (0 / 143) explain/raw_plan_as_text.slt: 0.00% (0 / 186) explain/physical_plan_as_text_redacted.slt: 0.00% (0 / 947) explain/locally_optimized_plan.slt: 0.00% (0 / 80) explain/optimized_plan_as_text.slt: 62.67% (361 / 576) introspection/unstable.slt: 0.00% (0 / 1) attributes/mir_unique_keys.slt: 0.00% (0 / 39) attributes/mir_column_types.slt: 0.00% (0 / 56) attributes/mir_arity.slt: 0.00% (0 / 65) postgres/rowtypes.slt: 0.00% (0 / 3) postgres/subselect.slt: 0.00% (0 / 6) cockroach/create_as.slt: 0.00% (0 / 4) cockroach/builtin_function.slt: 0.00% (0 / 8) cockroach/srfs.slt: 0.00% (0 / 15) cockroach/drop_view.slt: 0.00% (0 / 1) cockroach/subquery.slt: 0.00% (0 / 10) cockroach/select_index.slt: 0.00% (0 / 6) cockroach/window.slt: 0.00% (0 / 9) cockroach/orms.slt: 0.00% (0 / 2) cockroach/decimal.slt: 0.00% (0 / 2) cockroach/upsert.slt: 0.00% (0 / 10) cockroach/aggregate.slt: 0.00% (0 / 12) cockroach/alter_table.slt: 0.00% (0 / 4) cockroach/table.slt: 0.00% (0 / 3) cockroach/collatedstring.slt: 0.00% (0 / 1) cockroach/json_builtins.slt: 0.00% (0 / 1) cockroach/distinct_on.slt: 0.00% (0 / 2) cockroach/subquery-opt.slt: 0.00% (0 / 2) cockroach/select.slt: 0.00% (0 / 3) cockroach/computed.slt: 0.00% (0 / 4) cockroach/order_by.slt: 0.00% (0 / 1) cockroach/ordinality.slt: 0.00% (0 / 1) cockroach/rename_column.slt: 0.00% (0 / 4) cockroach/json.slt: 0.00% (0 / 2) cockroach/alter_column_type.slt: 0.00% (0 / 2) cockroach/typing.slt: 0.00% (0 / 4) cockroach/drop_database.slt: 0.00% (0 / 1) cockroach/rename_database.slt: 0.00% (0 / 1) cockroach/pgoidtype.slt: 0.00% (0 / 3) cockroach/apply_join.slt: 0.00% (0 / 2) cockroach/update.slt: 0.00% (0 / 5) cockroach/sqlsmith.slt: 0.00% (0 / 5) cockroach/join.slt: 0.00% (0 / 8) cockroach/timestamp.slt: 0.00% (0 / 1) cockroach/rows_from.slt: 0.00% (0 / 1) cockroach/insert.slt: 0.00% (0 / 3) cockroach/datetime.slt: 0.00% (0 / 1) cockroach/statement_source.slt: 0.00% (0 / 1) cockroach/subquery_correlated.slt: 0.00% (0 / 3) cockroach/lookup_join.slt: 0.00% (0 / 1) cockroach/zero.slt: 0.00% (0 / 1) cockroach/returning.slt: 0.00% (0 / 1) cockroach/prepare.slt: 0.00% (0 / 6) cockroach/pg_catalog.slt: 0.00% (0 / 5) cockroach/tuple.slt: 0.00% (0 / 4) cockroach/with.slt: 0.00% (0 / 5) cockroach/array.slt: 0.00% (0 / 9) cockroach/rename_table.slt: 0.00% (0 / 1) cockroach/where.slt: 0.00% (0 / 1) cockroach/views.slt: 0.00% (0 / 5) advent-of-code/2023/aoc_1215.slt: 10.30% (24 / 233) advent-of-code/2023/aoc_1201.slt: 8.82% (3 / 34) advent-of-code/2023/aoc_1214.slt: 3.45% (6 / 174) advent-of-code/2023/aoc_1202.slt: 30.19% (32 / 106) advent-of-code/2023/aoc_1216.slt: 15.60% (22 / 141) advent-of-code/2023/aoc_1217.slt: 6.57% (14 / 213) advent-of-code/2023/aoc_1203.slt: 1.67% (4 / 240) advent-of-code/2023/aoc_1207.slt: 11.53% (55 / 477) advent-of-code/2023/aoc_1213.slt: 7.95% (12 / 151) advent-of-code/2023/aoc_1212.slt: 3.20% (4 / 125) advent-of-code/2023/aoc_1206.slt: 90.00% (18 / 20) advent-of-code/2023/aoc_1210.slt: 1.70% (6 / 352) advent-of-code/2023/aoc_1204.slt: 8.70% (18 / 207) advent-of-code/2023/aoc_1205.slt: 3.81% (20 / 525) advent-of-code/2023/aoc_1211.slt: 10.42% (10 / 96) advent-of-code/2023/aoc_1220.slt: 2.45% (8 / 327) advent-of-code/2023/aoc_1208.slt: 35.29% (12 / 34) advent-of-code/2023/aoc_1209.slt: 2.16% (3 / 139) advent-of-code/2023/aoc_1223.slt: 2.28% (9 / 395) advent-of-code/2023/aoc_1222.slt: 5.67% (11 / 194) advent-of-code/2023/aoc_1219.slt: 0.86% (2 / 233) advent-of-code/2023/aoc_1225.slt: 35.94% (23 / 64) advent-of-code/2023/aoc_1224.slt: 6.06% (4 / 66) advent-of-code/2023/aoc_1218.slt: 5.31% (6 / 113) transform/predicate_reduction.slt: 0.00% (0 / 33) transform/join_fusion.slt: 0.00% (0 / 128) transform/literal_lifting.slt: 0.00% (0 / 135) transform/reduction_pushdown.slt: 0.00% (0 / 44) transform/relation_cse.slt: 0.00% (0 / 234) transform/threshold_elision.slt: 0.00% (0 / 84) transform/scalability.slt: 0.00% (0 / 1) transform/redundant_join.slt: 0.00% (0 / 29) transform/join_index.slt: 0.00% (0 / 318) transform/predicate_pushdown.slt: 0.00% (0 / 405) transform/reduce_fusion.slt: 0.00% (0 / 10) transform/aggregation_nullability.slt: 0.00% (0 / 645) transform/demand.slt: 0.00% (0 / 28) transform/filter_index.slt: 0.00% (0 / 29) transform/projection_lifting.slt: 0.00% (0 / 39) transform/union.slt: 0.00% (0 / 23) transform/union_cancel.slt: 0.00% (0 / 12) transform/non_null_requirements.slt: 0.00% (0 / 2) transform/is_null_propagation.slt: 0.00% (0 / 27) transform/reduce_elision.slt: 0.00% (0 / 39) transform/literal_constraints.slt: 0.00% (0 / 174) transform/column_knowledge.slt: 0.00% (0 / 127) transform/dataflow.slt: 0.00% (0 / 6) transform/relax_must_consolidate.slt: 0.00% (0 / 216) transform/normalize_lets.slt: 0.00% (0 / 86) transform/monotonic.slt: 0.00% (0 / 30) transform/scalar_cse.slt: 0.00% (0 / 68) transform/topk.slt: 0.00% (0 / 35) transform/fold_constants.slt: 0.00% (0 / 6) transform/fold_vs_dataflow/5_repeat_row_dataflow.slt: 0.00% (0 / 1) transform/fold_vs_dataflow/6_bytea_dataflow.slt: 0.00% (0 / 4) transform/fold_vs_dataflow/3_number_aggfns_dataflow.slt: 0.00% (0 / 85) transform/fold_vs_dataflow/4_text_folding.slt: 0.00% (0 / 2) transform/fold_vs_dataflow/2_number_fns_dataflow.slt: 0.00% (0 / 64) transform/fold_vs_dataflow/4_text_dataflow.slt: 0.00% (0 / 31) transform/fold_vs_dataflow/7_window_agg_dataflow.slt: 0.00% (0 / 28) transform/notice/index_too_wide_for_literal_constraints.slt: 77.14% (27 / 35) transform/notice/index_already_exists.slt: 100.00% (4 / 4) autogenerated/all_parts_essential.slt: 0.00% (0 / 453) Overall namescore: 24.48% (7080 / 28920); 238 files with no column references / 456 total files ``` </details> <details> <summary>Output on SLT files (adding `WITH (humanized expressions)` explicitly)</summary> ``` group_size_hints.slt: 100.00% (107 / 107) timezone.slt: 0.00% (0 / 1) freshmart.slt: 80.44% (218 / 271) cte.slt: 0.00% (0 / 2) not-null-propagation.slt: 75.68% (249 / 329) github-7892.slt: 0.00% (0 / 1) numeric.slt: 0.00% (0 / 3) type-promotion.slt: 0.00% (0 / 3) mz_recent_storage_usage.slt: 100.00% (2 / 2) github-7688.slt: 0.00% (0 / 1) github-16036.slt: 0.00% (0 / 88) privilege_checks.slt: 100.00% (1 / 1) vars.slt: 0.00% (0 / 1) subquery.slt: 64.52% (60 / 93) github-5474.slt: 0.00% (0 / 1) aggregates.slt: 50.00% (25 / 50) outer_join.slt: 0.00% (0 / 128) github-57.slt: 0.00% (0 / 1) github-5717.slt: 0.00% (0 / 4) tpch_select.slt: 62.83% (737 / 1173) jsonb.slt: 0.00% (0 / 4) github-8261-8463.slt: 0.00% (0 / 4) github-7467.slt: 0.00% (0 / 2) system-cluster.slt: 94.03% (126 / 134) uniqueness_propagation_filter.slt: 100.00% (149 / 149) limit_expr.slt: 90.68% (107 / 118) github-2746.slt: 0.00% (0 / 63) github-8257.slt: 0.00% (0 / 1) tpch_create_materialized_view.slt: 64.28% (709 / 1103) cte_lowering.slt: 0.00% (0 / 188) timedomain.slt: 96.97% (32 / 33) scalar_subqueries_select_list.slt: 78.01% (266 / 341) regtype.slt: 0.00% (0 / 1) outer_join_simplification.slt: 71.43% (245 / 343) github-17808.slt: 0.00% (0 / 1) joins.slt: 71.01% (147 / 207) regclass.slt: 0.00% (0 / 1) github-8867.slt: 0.00% (0 / 1) distinct_on.slt: 88.89% (8 / 9) alter-table.slt: 100.00% (27 / 27) persist-fast-path.slt: 33.33% (4 / 12) types.slt: 68.42% (13 / 19) char.slt: 0.00% (0 / 3) updates.slt: 0.00% (0 / 2) github-7821.slt: 0.00% (0 / 1) order_by.slt: 33.33% (10 / 30) cluster_features.slt: 85.00% (238 / 280) parse_ident.slt: 75.00% (6 / 8) github-2799.slt: 81.82% (9 / 11) github-2969.slt: 90.48% (38 / 42) cardinality.slt: 25.76% (85 / 330) ldbc_bi.slt: 57.26% (1569 / 2740) timestamptz.slt: 50.00% (1 / 2) regex.slt: 64.52% (40 / 62) extract.slt: 0.00% (0 / 1) transactions.slt: 94.12% (32 / 34) timestamp.slt: 50.00% (1 / 2) github-6935.slt: 0.00% (0 / 1) github-14116.slt: 100.00% (12 / 12) regressions.slt: 0.00% (0 / 1) window_funcs.slt: 11.24% (79 / 703) github-6464.slt: 42.86% (9 / 21) managed_cluster.slt: 0.00% (0 / 1) filter-pushdown.slt: 86.82% (112 / 129) boolean.slt: 78.57% (33 / 42) record.slt: 90.00% (9 / 10) temporal.slt: 0.00% (0 / 1) list.slt: 70.31% (45 / 64) like.slt: 100.00% (22 / 22) outer_join_lowering.slt: 95.00% (589 / 620) funcs.slt: 40.00% (8 / 20) recursive_type_unioning.slt: 57.14% (4 / 7) chbench.slt: 59.08% (924 / 1564) tpch_create_index.slt: 66.49% (744 / 1119) dates-times.slt: 0.00% (0 / 1) scoping.slt: 0.00% (0 / 2) topk.slt: 95.83% (23 / 24) regproc.slt: 0.00% (0 / 1) github-5723.slt: 0.00% (0 / 13) table_func.slt: 52.70% (39 / 74) github-5536.slt: 82.35% (14 / 17) arrays.slt: 0.00% (0 / 2) github-5126.slt: 0.00% (0 / 47) ldbc_bi_eager.slt: 57.26% (1569 / 2740) reduce_mfp.slt: 0.00% (0 / 26) arithmetic.slt: 82.76% (48 / 58) explain/broken_statements.slt: 0.00% (0 / 1) explain/aggregates.slt: 96.10% (197 / 205) explain/physical_plan_aggregates.slt: 0.00% (0 / 321) explain/materialized_view.slt: 21.28% (10 / 47) explain/physical_plan_as_text.slt: 7.66% (75 / 979) explain/pushdown.slt: 100.00% (2 / 2) explain/optimized_plan_as_text_redacted.slt: 91.09% (358 / 393) explain/replan_catalog_items.slt: 100.00% (57 / 57) explain/decorrelated_plan_as_text.slt: 21.61% (75 / 347) explain/enable_eager_delta_joins.slt: 83.22% (119 / 143) explain/raw_plan_as_text.slt: 40.32% (75 / 186) explain/physical_plan_as_text_redacted.slt: 7.92% (75 / 947) explain/locally_optimized_plan.slt: 0.00% (0 / 80) explain/optimized_plan_as_text.slt: 89.58% (516 / 576) introspection/unstable.slt: 0.00% (0 / 1) attributes/mir_unique_keys.slt: 89.74% (35 / 39) attributes/mir_column_types.slt: 94.64% (53 / 56) attributes/mir_arity.slt: 78.46% (51 / 65) postgres/rowtypes.slt: 0.00% (0 / 3) postgres/subselect.slt: 0.00% (0 / 6) cockroach/create_as.slt: 0.00% (0 / 4) cockroach/builtin_function.slt: 0.00% (0 / 8) cockroach/srfs.slt: 0.00% (0 / 15) cockroach/drop_view.slt: 0.00% (0 / 1) cockroach/subquery.slt: 0.00% (0 / 10) cockroach/select_index.slt: 0.00% (0 / 6) cockroach/window.slt: 0.00% (0 / 9) cockroach/orms.slt: 0.00% (0 / 2) cockroach/decimal.slt: 0.00% (0 / 2) cockroach/upsert.slt: 0.00% (0 / 10) cockroach/aggregate.slt: 0.00% (0 / 12) cockroach/alter_table.slt: 0.00% (0 / 4) cockroach/table.slt: 0.00% (0 / 3) cockroach/collatedstring.slt: 0.00% (0 / 1) cockroach/json_builtins.slt: 0.00% (0 / 1) cockroach/distinct_on.slt: 0.00% (0 / 2) cockroach/subquery-opt.slt: 0.00% (0 / 2) cockroach/select.slt: 0.00% (0 / 3) cockroach/computed.slt: 0.00% (0 / 4) cockroach/order_by.slt: 0.00% (0 / 1) cockroach/ordinality.slt: 0.00% (0 / 1) cockroach/rename_column.slt: 0.00% (0 / 4) cockroach/json.slt: 0.00% (0 / 2) cockroach/alter_column_type.slt: 0.00% (0 / 2) cockroach/typing.slt: 0.00% (0 / 4) cockroach/drop_database.slt: 0.00% (0 / 1) cockroach/rename_database.slt: 0.00% (0 / 1) cockroach/pgoidtype.slt: 0.00% (0 / 3) cockroach/apply_join.slt: 0.00% (0 / 2) cockroach/update.slt: 0.00% (0 / 5) cockroach/sqlsmith.slt: 0.00% (0 / 5) cockroach/join.slt: 0.00% (0 / 8) cockroach/timestamp.slt: 0.00% (0 / 1) cockroach/rows_from.slt: 0.00% (0 / 1) cockroach/insert.slt: 0.00% (0 / 3) cockroach/datetime.slt: 0.00% (0 / 1) cockroach/statement_source.slt: 0.00% (0 / 1) cockroach/subquery_correlated.slt: 0.00% (0 / 3) cockroach/lookup_join.slt: 0.00% (0 / 1) cockroach/zero.slt: 0.00% (0 / 1) cockroach/returning.slt: 0.00% (0 / 1) cockroach/prepare.slt: 0.00% (0 / 6) cockroach/pg_catalog.slt: 0.00% (0 / 5) cockroach/tuple.slt: 0.00% (0 / 4) cockroach/with.slt: 0.00% (0 / 5) cockroach/array.slt: 0.00% (0 / 9) cockroach/rename_table.slt: 0.00% (0 / 1) cockroach/where.slt: 0.00% (0 / 1) cockroach/views.slt: 0.00% (0 / 5) advent-of-code/2023/aoc_1215.slt: 10.30% (24 / 233) advent-of-code/2023/aoc_1201.slt: 8.82% (3 / 34) advent-of-code/2023/aoc_1214.slt: 3.45% (6 / 174) advent-of-code/2023/aoc_1202.slt: 30.19% (32 / 106) advent-of-code/2023/aoc_1216.slt: 15.60% (22 / 141) advent-of-code/2023/aoc_1217.slt: 6.57% (14 / 213) advent-of-code/2023/aoc_1203.slt: 1.67% (4 / 240) advent-of-code/2023/aoc_1207.slt: 11.53% (55 / 477) advent-of-code/2023/aoc_1213.slt: 7.95% (12 / 151) advent-of-code/2023/aoc_1212.slt: 3.20% (4 / 125) advent-of-code/2023/aoc_1206.slt: 90.00% (18 / 20) advent-of-code/2023/aoc_1210.slt: 1.67% (6 / 360) advent-of-code/2023/aoc_1204.slt: 8.70% (18 / 207) advent-of-code/2023/aoc_1205.slt: 3.81% (20 / 525) advent-of-code/2023/aoc_1211.slt: 10.42% (10 / 96) advent-of-code/2023/aoc_1220.slt: 2.43% (8 / 329) advent-of-code/2023/aoc_1208.slt: 35.29% (12 / 34) advent-of-code/2023/aoc_1209.slt: 2.16% (3 / 139) advent-of-code/2023/aoc_1223.slt: 2.28% (9 / 395) advent-of-code/2023/aoc_1222.slt: 5.67% (11 / 194) advent-of-code/2023/aoc_1219.slt: 0.86% (2 / 233) advent-of-code/2023/aoc_1225.slt: 35.94% (23 / 64) advent-of-code/2023/aoc_1224.slt: 6.06% (4 / 66) advent-of-code/2023/aoc_1218.slt: 5.31% (6 / 113) transform/predicate_reduction.slt: 66.67% (22 / 33) transform/join_fusion.slt: 76.56% (98 / 128) transform/literal_lifting.slt: 66.67% (90 / 135) transform/reduction_pushdown.slt: 80.95% (51 / 63) transform/relation_cse.slt: 68.38% (160 / 234) transform/threshold_elision.slt: 76.19% (64 / 84) transform/scalability.slt: 0.00% (0 / 1) transform/redundant_join.slt: 51.72% (15 / 29) transform/join_index.slt: 53.77% (171 / 318) transform/predicate_pushdown.slt: 45.68% (185 / 405) transform/reduce_fusion.slt: 100.00% (10 / 10) transform/aggregation_nullability.slt: 84.65% (546 / 645) transform/demand.slt: 46.43% (13 / 28) transform/filter_index.slt: 93.10% (27 / 29) transform/projection_lifting.slt: 100.00% (39 / 39) transform/union.slt: 78.26% (18 / 23) transform/union_cancel.slt: 91.67% (11 / 12) transform/non_null_requirements.slt: 0.00% (0 / 2) transform/is_null_propagation.slt: 88.89% (24 / 27) transform/reduce_elision.slt: 84.62% (33 / 39) transform/literal_constraints.slt: 73.56% (128 / 174) transform/column_knowledge.slt: 94.49% (120 / 127) transform/dataflow.slt: 100.00% (6 / 6) transform/relax_must_consolidate.slt: 0.00% (0 / 216) transform/normalize_lets.slt: 37.21% (32 / 86) transform/monotonic.slt: 20.00% (6 / 30) transform/scalar_cse.slt: 35.29% (24 / 68) transform/topk.slt: 65.71% (23 / 35) transform/fold_constants.slt: 33.33% (2 / 6) transform/fold_vs_dataflow/5_repeat_row_dataflow.slt: 0.00% (0 / 1) transform/fold_vs_dataflow/6_bytea_dataflow.slt: 0.00% (0 / 4) transform/fold_vs_dataflow/3_number_aggfns_dataflow.slt: 0.00% (0 / 85) transform/fold_vs_dataflow/4_text_folding.slt: 0.00% (0 / 2) transform/fold_vs_dataflow/2_number_fns_dataflow.slt: 0.00% (0 / 64) transform/fold_vs_dataflow/4_text_dataflow.slt: 0.00% (0 / 31) transform/fold_vs_dataflow/7_window_agg_dataflow.slt: 0.00% (0 / 28) transform/notice/index_too_wide_for_literal_constraints.slt: 77.14% (27 / 35) transform/notice/index_already_exists.slt: 100.00% (4 / 4) autogenerated/all_parts_essential.slt: 52.10% (236 / 453) Overall namescore: 47.49% (13753 / 28960); 238 files with no column references / 456 total files ``` </details> ### Motivation * This PR adds a known-desirable feature. #31802 MaterializeInc/database-issues#8960 ### Checklist - [ ] This PR has adequate test coverage / QA involvement has been duly considered. ([trigger-ci for additional test/nightly runs](https://trigger-ci.dev.materialize.com/)) - [ ] This PR has an associated up-to-date [design doc](https://github.com/MaterializeInc/materialize/blob/main/doc/developer/design/README.md), is a design doc ([template](https://github.com/MaterializeInc/materialize/blob/main/doc/developer/design/00000000_template.md)), or is sufficiently small to not require a design. <!-- Reference the design in the description. --> - [ ] If this PR evolves [an existing `$T ⇔ Proto$T` mapping](https://github.com/MaterializeInc/materialize/blob/main/doc/developer/command-and-response-binary-encoding.md) (possibly in a backwards-incompatible way), then it is tagged with a `T-proto` label. - [ ] If this PR will require changes to cloud orchestration or tests, there is a companion cloud PR to account for those changes that is tagged with the release-blocker label ([example](MaterializeInc/cloud#5021)). <!-- Ask in #team-cloud on Slack if you need help preparing the cloud PR. --> - [ ] If this PR includes major [user-facing behavior changes](https://github.com/MaterializeInc/materialize/blob/main/doc/developer/guide-changes.md#what-changes-require-a-release-note), I have pinged the relevant PM to schedule a changelog post.
Design doc for improving column names in
EXPLAINoutput.Rendered text.
Motivation
https://github.com/MaterializeInc/database-issues/issues/8960
Tips for reviewer
Checklist
$T ⇔ Proto$Tmapping (possibly in a backwards-incompatible way), then it is tagged with aT-protolabel.