Skip to content

Commit

Permalink
Add mz_cluster_deployment_lineage
Browse files Browse the repository at this point in the history
We need this view+index to determine the logical identity of clusters between blue green deployments in the Console.
  • Loading branch information
SangJunBak committed Dec 6, 2024
1 parent b860beb commit fa6a1cb
Show file tree
Hide file tree
Showing 13 changed files with 224 additions and 19 deletions.
11 changes: 11 additions & 0 deletions doc/user/content/sql/system-catalog/mz_internal.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,17 @@ the most recent status for each AWS PrivateLink connection in the system.
| `last_status_change_at` | [`timestamp with time zone`] | Wall-clock timestamp of the connection status change.|
| `status` | [`text`] | | The status of the connection: one of `pending-service-discovery`, `creating-endpoint`, `recreating-endpoint`, `updating-endpoint`, `available`, `deleted`, `deleting`, `expired`, `failed`, `pending`, `pending-acceptance`, `rejected`, or `unknown`. |

## `mz_cluster_deployment_lineage`

The `mz_cluster_deployment_lineage` table shows the blue/green deployment lineage of all clusters in [`mz_clusters`](../mz_catalog/#mz_clusters). It determines all cluster IDs that are logically the same cluster.

<!-- RELATION_SPEC mz_internal.mz_cluster_deployment_lineage -->
| Field | Type | Meaning |
|-------------------------------------|--------------|----------------------------------------------------------------|
| `cluster_id` | [`text`] | The ID of the cluster. Corresponds to [`mz_clusters.id`](../mz_catalog/#mz_clusters) (though the cluster may no longer exist). |
| `current_deployment_cluster_id` | [`text`] | The cluster ID of the last cluster in `cluster_id`'s blue/green lineage (the cluster is guaranteed to exist). |
| `cluster_name` | [`text`] | The name of the cluster |

## `mz_cluster_schedules`

The `mz_cluster_schedules` table shows the `SCHEDULE` option specified for each cluster.
Expand Down
121 changes: 121 additions & 0 deletions src/catalog/src/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8248,6 +8248,116 @@ FROM max_memory
}
});

/**
* Traces the blue/green deployment lineage in the audit log to determine all cluster
* IDs that are logically the same cluster.
* cluster_id: The ID of a cluster.
* current_deployment_cluster_id: The cluster ID of the last cluster in
* cluster_id's blue/green lineage.
* cluster_name: The name of the cluster.
* The approach taken is as follows. First, find all extant clusters and add them
* to the result set. Per cluster, we do the following:
* 1. Find the most recent create or rename event. This moment represents when the
* cluster took on its final logical identity.
* 2. Look for a cluster that had the same name (or the same name with `_dbt_deploy`
* appended) that was dropped within one minute of that moment. That cluster is
* almost certainly the logical predecessor of the current cluster. Add the cluster
* to the result set.
* 3. Repeat the procedure until a cluster with no logical predecessor is discovered.
* Limiting the search for a dropped cluster to a window of one minute is a heuristic,
* but one that's likely to be pretty good one. If a name is reused after more
* than one minute, that's a good sign that it wasn't an automatic blue/green
* process, but someone turning on a new use case that happens to have the same
* name as a previous but logically distinct use case.
*/
pub static MZ_CLUSTER_DEPLOYMENT_LINEAGE: LazyLock<BuiltinView> = LazyLock::new(|| BuiltinView {
name: "mz_cluster_deployment_lineage",
schema: MZ_INTERNAL_SCHEMA,
oid: oid::VIEW_MZ_CLUSTER_DEPLOYMENT_LINEAGE_OID,
column_defs: Some(r#"cluster_id, current_deployment_cluster_id, cluster_name"#),
sql: r#"WITH MUTUALLY RECURSIVE cluster_events (
cluster_id text,
cluster_name text,
event_type text,
occurred_at timestamptz
) AS (
SELECT coalesce(details->>'id', details->>'cluster_id') AS cluster_id,
coalesce(details->>'name', details->>'new_name') AS cluster_name,
event_type,
occurred_at
FROM mz_audit_events
WHERE (
event_type IN ('create', 'drop')
OR (
event_type = 'alter'
AND details ? 'new_name'
)
)
AND object_type = 'cluster'
AND mz_now() < occurred_at + INTERVAL '30 days'
),
mz_cluster_deployment_lineage (
cluster_id text,
current_deployment_cluster_id text,
cluster_name text
) AS (
SELECT c.id,
c.id,
c.name
FROM mz_clusters c
WHERE c.id LIKE 'u%'
UNION
SELECT *
FROM dropped_clusters
),
-- Closest create or rename event based on the current clusters in the result set
most_recent_create_or_rename (
cluster_id text,
current_deployment_cluster_id text,
cluster_name text,
occurred_at timestamptz
) AS (
SELECT DISTINCT ON (e.cluster_id) e.cluster_id,
c.current_deployment_cluster_id,
e.cluster_name,
e.occurred_at
FROM mz_cluster_deployment_lineage c
JOIN cluster_events e ON c.cluster_id = e.cluster_id
AND c.cluster_name = e.cluster_name
WHERE e.event_type <> 'drop'
ORDER BY e.cluster_id,
e.occurred_at DESC
),
-- Clusters that were dropped most recently within 1 minute of most_recent_create_or_rename
dropped_clusters (
cluster_id text,
current_deployment_cluster_id text,
cluster_name text
) AS (
SELECT DISTINCT ON (cr.cluster_id) e.cluster_id,
cr.current_deployment_cluster_id,
cr.cluster_name
FROM most_recent_create_or_rename cr
JOIN cluster_events e ON e.occurred_at BETWEEN cr.occurred_at - interval '1 minute'
AND cr.occurred_at + interval '1 minute'
AND (
e.cluster_name = cr.cluster_name
OR e.cluster_name = cr.cluster_name || '_dbt_deploy'
)
WHERE e.event_type = 'drop'
ORDER BY cr.cluster_id,
abs(
extract(
epoch
FROM cr.occurred_at - e.occurred_at
)
)
)
SELECT *
FROM mz_cluster_deployment_lineage"#,
access: vec![PUBLIC_SELECT],
});

pub const MZ_SHOW_DATABASES_IND: BuiltinIndex = BuiltinIndex {
name: "mz_show_databases_ind",
schema: MZ_INTERNAL_SCHEMA,
Expand Down Expand Up @@ -8482,6 +8592,15 @@ ON mz_internal.mz_console_cluster_utilization_overview (cluster_id)",
is_retained_metrics_object: false,
};

pub const MZ_CLUSTER_DEPLOYMENT_LINEAGE_IND: BuiltinIndex = BuiltinIndex {
name: "mz_cluster_deployment_lineage_ind",
schema: MZ_INTERNAL_SCHEMA,
oid: oid::INDEX_MZ_CLUSTER_DEPLOYMENT_LINEAGE_IND_OID,
sql: "IN CLUSTER mz_catalog_server
ON mz_internal.mz_cluster_deployment_lineage (cluster_id)",
is_retained_metrics_object: false,
};

pub const MZ_CLUSTERS_IND: BuiltinIndex = BuiltinIndex {
name: "mz_clusters_ind",
schema: MZ_CATALOG_SCHEMA,
Expand Down Expand Up @@ -9420,6 +9539,7 @@ pub static BUILTINS_STATIC: LazyLock<Vec<Builtin<NameReference>>> = LazyLock::ne
Builtin::View(&MZ_HYDRATION_STATUSES),
Builtin::View(&MZ_SHOW_CLUSTER_REPLICAS),
Builtin::View(&MZ_SHOW_NETWORK_POLICIES),
Builtin::View(&MZ_CLUSTER_DEPLOYMENT_LINEAGE),
Builtin::Index(&MZ_SHOW_DATABASES_IND),
Builtin::Index(&MZ_SHOW_SCHEMAS_IND),
Builtin::Index(&MZ_SHOW_CONNECTIONS_IND),
Expand Down Expand Up @@ -9475,6 +9595,7 @@ pub static BUILTINS_STATIC: LazyLock<Vec<Builtin<NameReference>>> = LazyLock::ne
Builtin::Index(&MZ_SECRETS_IND),
Builtin::Index(&MZ_VIEWS_IND),
Builtin::Index(&MZ_CONSOLE_CLUSTER_UTILIZATION_OVERVIEW_IND),
Builtin::Index(&MZ_CLUSTER_DEPLOYMENT_LINEAGE_IND),
Builtin::View(&MZ_RECENT_STORAGE_USAGE),
Builtin::Index(&MZ_RECENT_STORAGE_USAGE_IND),
Builtin::Connection(&MZ_ANALYTICS),
Expand Down
4 changes: 2 additions & 2 deletions src/environmentd/tests/testdata/http/ws

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions src/pgrepr-consts/src/oid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -768,3 +768,5 @@ pub const LOG_MZ_COMPUTE_DATAFLOW_GLOBAL_IDS_PER_WORKER_OID: u32 = 17045;
pub const VIEW_MZ_LIR_MAPPING_OID: u32 = 17046;
pub const VIEW_MZ_DATAFLOW_GLOBAL_IDS_OID: u32 = 17047;
pub const NETWORK_POLICIES_DEFAULT_POLICY_OID: u32 = 17048;
pub const VIEW_MZ_CLUSTER_DEPLOYMENT_LINEAGE_OID: u32 = 17049;
pub const INDEX_MZ_CLUSTER_DEPLOYMENT_LINEAGE_IND_OID: u32 = 17050;
8 changes: 8 additions & 0 deletions test/sqllogictest/autogenerated/mz_internal.slt
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,13 @@ SELECT position, name, type FROM objects WHERE schema = 'mz_internal' AND object
3 last_status_change_at timestamp␠with␠time␠zone
4 status text

query ITT
SELECT position, name, type FROM objects WHERE schema = 'mz_internal' AND object = 'mz_cluster_deployment_lineage' ORDER BY position
----
1 cluster_id text
2 current_deployment_cluster_id text
3 cluster_name text

query ITT
SELECT position, name, type FROM objects WHERE schema = 'mz_internal' AND object = 'mz_cluster_schedules' ORDER BY position
----
Expand Down Expand Up @@ -651,6 +658,7 @@ mz_aggregates
mz_aws_connections
mz_aws_privatelink_connection_status_history
mz_aws_privatelink_connection_statuses
mz_cluster_deployment_lineage
mz_cluster_replica_history
mz_cluster_replica_metrics
mz_cluster_replica_metrics_history
Expand Down
4 changes: 2 additions & 2 deletions test/sqllogictest/cluster.slt
Original file line number Diff line number Diff line change
Expand Up @@ -425,15 +425,15 @@ CREATE CLUSTER test REPLICAS (foo (SIZE '1'));
query I
SELECT COUNT(name) FROM mz_indexes;
----
285
286

statement ok
DROP CLUSTER test CASCADE

query T
SELECT COUNT(name) FROM mz_indexes;
----
254
255

simple conn=mz_system,user=mz_system
ALTER CLUSTER quickstart OWNER TO materialize
Expand Down
51 changes: 51 additions & 0 deletions test/sqllogictest/cluster_deployment_lineage.slt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.

mode cockroach

# Start from a pristine server
reset-server

# Test: Create a cluster and verify blue/green lineage

# Create the clusters for blue/green deployment
statement ok
CREATE CLUSTER blue_green (SIZE = '1');

statement ok
CREATE CLUSTER blue_green_dbt_deploy (SIZE = '1');

# Create a cluster that is not part of the blue/green deployment
statement ok
CREATE CLUSTER non_blue_green (SIZE = '1');

query TT
SELECT id, name FROM mz_clusters WHERE id IN ('u2', 'u3', 'u4') ORDER BY id;
----
u2 blue_green
u3 blue_green_dbt_deploy
u4 non_blue_green

# Initiate the blue/green deployment
statement ok
ALTER CLUSTER blue_green_dbt_deploy SWAP WITH blue_green;

statement ok
DROP CLUSTER blue_green_dbt_deploy;

# Verify the blue/green lineage
query TTT
SELECT cluster_id, current_deployment_cluster_id, cluster_name
FROM mz_internal.mz_cluster_deployment_lineage
WHERE cluster_id IN ('u2', 'u3', 'u4')
ORDER BY cluster_id;
----
u2 u3 blue_green
u3 u3 blue_green
u4 u4 non_blue_green
24 changes: 12 additions & 12 deletions test/sqllogictest/distinct_arrangements.slt
Original file line number Diff line number Diff line change
Expand Up @@ -982,9 +982,9 @@ ORDER BY mdod.name;
----
AccumulableErrorCheck 9
Arrange␠ReduceMinsMaxes 3
Arrange␠export␠iterative 1
Arrange␠export␠iterative␠err 1
Arrange␠recursive␠err 1
Arrange␠export␠iterative 2
Arrange␠export␠iterative␠err 2
Arrange␠recursive␠err 4
ArrangeAccumulable␠[val:␠empty] 9
ArrangeBy[[CallBinary␠{␠func:␠JsonbGetString␠{␠stringify:␠true␠},␠expr1:␠Column(1),␠expr2:␠Literal(Ok(Row{[String("id")]}),␠ColumnType␠{␠scalar_type:␠String,␠nullable:␠false␠})␠}]] 2
ArrangeBy[[CallBinary␠{␠func:␠JsonbGetString␠{␠stringify:␠true␠},␠expr1:␠Column(2),␠expr2:␠Literal(Ok(Row{[String("id")]}),␠ColumnType␠{␠scalar_type:␠String,␠nullable:␠false␠})␠}]] 1
Expand All @@ -1001,13 +1001,13 @@ ArrangeBy[[Column(0),␠Column(1),␠Column(2),␠Column(3),␠Column(4),␠Colu
ArrangeBy[[Column(0),␠Column(1),␠Column(2),␠Column(3),␠Column(4)]] 1
ArrangeBy[[Column(0),␠Column(1),␠Column(2),␠Column(3),␠Column(4)]]-errors 1
ArrangeBy[[Column(0),␠Column(1)]] 2
ArrangeBy[[Column(0),␠Column(2)]] 3
ArrangeBy[[Column(0),␠Column(2)]] 4
ArrangeBy[[Column(0),␠Column(3)]] 4
ArrangeBy[[Column(0),␠Column(4)]] 1
ArrangeBy[[Column(0)]] 152
ArrangeBy[[Column(0)]]-errors 42
ArrangeBy[[Column(1),␠Column(0)]] 1
ArrangeBy[[Column(1),␠Column(2)]] 1
ArrangeBy[[Column(1),␠Column(2)]] 2
ArrangeBy[[Column(1),␠Column(3)]] 1
ArrangeBy[[Column(1)]] 25
ArrangeBy[[Column(1)]]-errors 7
Expand All @@ -1026,21 +1026,21 @@ ArrangeBy[[Column(5)]] 2
ArrangeBy[[Column(6)]] 3
ArrangeBy[[Column(6)]]-errors 2
ArrangeBy[[Column(9)]] 1
ArrangeBy[[]] 9
Arranged␠DistinctBy 46
ArrangeBy[[]] 11
Arranged␠DistinctBy 47
Arranged␠MinsMaxesHierarchical␠input 14
Arranged␠ReduceInaccumulable 3
Arranged␠TopK␠input 52
Distinct␠recursive␠err 1
DistinctBy 46
DistinctByErrorCheck 46
Arranged␠TopK␠input 68
Distinct␠recursive␠err 4
DistinctBy 47
DistinctByErrorCheck 47
ReduceAccumulable 9
ReduceInaccumulable 3
ReduceInaccumulable␠Error␠Check 3
ReduceMinsMaxes 3
ReduceMinsMaxes␠Error␠Check 1
Reduced␠Fallibly␠MinsMaxesHierarchical 14
Reduced␠TopK␠input 52
Reduced␠TopK␠input 68
Threshold␠local 10

statement ok
Expand Down
4 changes: 4 additions & 0 deletions test/sqllogictest/information_schema_tables.slt
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,10 @@ mz_aws_privatelink_connection_statuses
VIEW
materialize
mz_internal
mz_cluster_deployment_lineage
VIEW
materialize
mz_internal
mz_cluster_replica_history
VIEW
materialize
Expand Down
8 changes: 6 additions & 2 deletions test/sqllogictest/mz_catalog_server_index_accounting.slt
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ mz_arrangement_heap_capacity_raw_s2_primary_idx CREATE␠INDEX␠"mz_arrangemen
mz_arrangement_heap_size_raw_s2_primary_idx CREATE␠INDEX␠"mz_arrangement_heap_size_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_arrangement_heap_size_raw"␠("operator_id",␠"worker_id")
mz_arrangement_records_raw_s2_primary_idx CREATE␠INDEX␠"mz_arrangement_records_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_arrangement_records_raw"␠("operator_id",␠"worker_id")
mz_arrangement_sharing_raw_s2_primary_idx CREATE␠INDEX␠"mz_arrangement_sharing_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_arrangement_sharing_raw"␠("operator_id",␠"worker_id")
mz_cluster_deployment_lineage_ind CREATE␠INDEX␠"mz_cluster_deployment_lineage_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s717␠AS␠"mz_internal"."mz_cluster_deployment_lineage"]␠("cluster_id")
mz_cluster_replica_history_ind CREATE␠INDEX␠"mz_cluster_replica_history_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s579␠AS␠"mz_internal"."mz_cluster_replica_history"]␠("dropped_at")
mz_cluster_replica_metrics_history_ind CREATE␠INDEX␠"mz_cluster_replica_metrics_history_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s492␠AS␠"mz_internal"."mz_cluster_replica_metrics_history"]␠("replica_id")
mz_cluster_replica_metrics_ind CREATE␠INDEX␠"mz_cluster_replica_metrics_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s491␠AS␠"mz_internal"."mz_cluster_replica_metrics"]␠("replica_id")
Expand Down Expand Up @@ -74,7 +75,7 @@ mz_message_batch_counts_received_raw_s2_primary_idx CREATE␠INDEX␠"mz_messag
mz_message_batch_counts_sent_raw_s2_primary_idx CREATE␠INDEX␠"mz_message_batch_counts_sent_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_message_batch_counts_sent_raw"␠("channel_id",␠"from_worker_id",␠"to_worker_id")
mz_message_counts_received_raw_s2_primary_idx CREATE␠INDEX␠"mz_message_counts_received_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_message_counts_received_raw"␠("channel_id",␠"from_worker_id",␠"to_worker_id")
mz_message_counts_sent_raw_s2_primary_idx CREATE␠INDEX␠"mz_message_counts_sent_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_message_counts_sent_raw"␠("channel_id",␠"from_worker_id",␠"to_worker_id")
mz_notices_ind CREATE␠INDEX␠"mz_notices_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s780␠AS␠"mz_internal"."mz_notices"]␠("id")
mz_notices_ind CREATE␠INDEX␠"mz_notices_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s782␠AS␠"mz_internal"."mz_notices"]␠("id")
mz_object_dependencies_ind CREATE␠INDEX␠"mz_object_dependencies_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s454␠AS␠"mz_internal"."mz_object_dependencies"]␠("object_id")
mz_object_history_ind CREATE␠INDEX␠"mz_object_history_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s518␠AS␠"mz_internal"."mz_object_history"]␠("id")
mz_object_lifetimes_ind CREATE␠INDEX␠"mz_object_lifetimes_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s519␠AS␠"mz_internal"."mz_object_lifetimes"]␠("id")
Expand All @@ -83,7 +84,7 @@ mz_objects_ind CREATE␠INDEX␠"mz_objects_ind"␠IN␠CLUSTER␠[s2]␠ON␠[
mz_peek_durations_histogram_raw_s2_primary_idx CREATE␠INDEX␠"mz_peek_durations_histogram_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_peek_durations_histogram_raw"␠("worker_id",␠"type",␠"duration_ns")
mz_recent_activity_log_thinned_ind CREATE␠INDEX␠"mz_recent_activity_log_thinned_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s678␠AS␠"mz_internal"."mz_recent_activity_log_thinned"]␠("sql_hash")
mz_recent_sql_text_ind CREATE␠INDEX␠"mz_recent_sql_text_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s674␠AS␠"mz_internal"."mz_recent_sql_text"]␠("sql_hash")
mz_recent_storage_usage_ind CREATE␠INDEX␠"mz_recent_storage_usage_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s772␠AS␠"mz_catalog"."mz_recent_storage_usage"]␠("object_id")
mz_recent_storage_usage_ind CREATE␠INDEX␠"mz_recent_storage_usage_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s774␠AS␠"mz_catalog"."mz_recent_storage_usage"]␠("object_id")
mz_roles_ind CREATE␠INDEX␠"mz_roles_ind"␠IN␠CLUSTER␠[s2]␠ON␠[s477␠AS␠"mz_catalog"."mz_roles"]␠("id")
mz_scheduling_elapsed_raw_s2_primary_idx CREATE␠INDEX␠"mz_scheduling_elapsed_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_scheduling_elapsed_raw"␠("id",␠"worker_id")
mz_scheduling_parks_histogram_raw_s2_primary_idx CREATE␠INDEX␠"mz_scheduling_parks_histogram_raw_s2_primary_idx"␠IN␠CLUSTER␠[s2]␠ON␠"mz_introspection"."mz_scheduling_parks_histogram_raw"␠("worker_id",␠"slept_for_ns",␠"requested_ns")
Expand Down Expand Up @@ -203,6 +204,9 @@ mz_audit_events object_type
mz_audit_events occurred_at
mz_audit_events user
mz_base_types id
mz_cluster_deployment_lineage cluster_id
mz_cluster_deployment_lineage cluster_name
mz_cluster_deployment_lineage current_deployment_cluster_id
mz_cluster_replica_frontiers object_id
mz_cluster_replica_frontiers replica_id
mz_cluster_replica_frontiers write_frontier
Expand Down
2 changes: 2 additions & 0 deletions test/sqllogictest/oid.slt
Original file line number Diff line number Diff line change
Expand Up @@ -1153,3 +1153,5 @@ SELECT oid, name FROM mz_objects WHERE id LIKE 's%' AND oid < 20000 ORDER BY oid
17045 mz_compute_dataflow_global_ids_per_worker
17046 mz_lir_mapping
17047 mz_dataflow_global_ids
17049 mz_cluster_deployment_lineage
17050 mz_cluster_deployment_lineage_ind
3 changes: 2 additions & 1 deletion test/testdrive/catalog.td
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,7 @@ mz_webhook_sources ""
name comment
------------------------------------------------
mz_activity_log_thinned ""
mz_cluster_deployment_lineage ""
mz_cluster_replica_history ""
mz_cluster_replica_name_history ""
mz_cluster_replica_utilization ""
Expand Down Expand Up @@ -800,7 +801,7 @@ test_table ""

# There is one entry in mz_indexes for each field_number/expression of the index.
> SELECT COUNT(id) FROM mz_indexes WHERE id LIKE 's%'
254
255

# Create a second schema with the same table name as above
> CREATE SCHEMA tester2
Expand Down
Loading

0 comments on commit fa6a1cb

Please sign in to comment.