Skip to content

Commit 8d8db98

Browse files
author
Thomas Hardy
committed
cluster-ui: fix replicas and regions query for the database details API
A change in cockroachdb#105582 caused the regions/replicas query to return incorrect, unexpected results causing the endpoint to never resolve properly, which in turn, caused an infinite loading state. This change fixes the regions/replicas query for the database details API. Release note (ui change): fix a broken query for the database details page that was causing an infinite loading state.
1 parent e57e974 commit 8d8db98

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

pkg/ui/workspaces/cluster-ui/src/api/databaseDetailsApi.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -344,19 +344,19 @@ const getDatabaseReplicasAndRegions: DatabaseDetailsQuery<DatabaseReplicasRegion
344344
createStmt: dbName => {
345345
return {
346346
sql: Format(
347-
`WITH
348-
replicasAndRegions AS (
349-
SELECT
350-
r.replicas,
351-
ARRAY(SELECT DISTINCT split_part(split_part(unnest(replica_localities),',',1),'=',2)) AS regions
352-
FROM crdb_internal.tables AS t
353-
JOIN %1.crdb_internal.table_spans AS s ON s.descriptor_id = t.table_id
354-
JOIN crdb_internal.ranges_no_leases AS r ON s.start_key < r.end_key AND s.end_key > r.start_key
355-
WHERE t.database_name = $1
356-
),
357-
unique_replicas AS (SELECT (SELECT array_agg(distinct unnested) FROM unnest(replicas) AS unnested) AS regions FROM replicasAndRegions),
358-
unique_regions AS (SELECT (SELECT array_agg(distinct unnested) FROM unnest(regions) AS unnested) AS replicas FROM replicasAndRegions)
359-
SELECT replicas, regions FROM unique_replicas CROSS JOIN unique_regions`,
347+
`WITH replicasAndRegionsPerDbRange AS (
348+
SELECT
349+
r.replicas,
350+
ARRAY(SELECT DISTINCT split_part(split_part(unnest(replica_localities), ',', 1), '=', 2)) AS regions
351+
FROM crdb_internal.tables AS t
352+
JOIN %1.crdb_internal.table_spans AS s ON s.descriptor_id = t.table_id
353+
JOIN crdb_internal.ranges_no_leases AS r ON s.start_key < r.end_key AND s.end_key > r.start_key
354+
WHERE t.database_name = $1
355+
)
356+
SELECT
357+
array_agg(DISTINCT replica_val) AS replicas,
358+
array_agg(DISTINCT region_val) AS regions
359+
FROM replicasAndRegionsPerDbRange, unnest(replicas) AS replica_val, unnest(regions) AS region_val`,
360360
[new Identifier(dbName)],
361361
),
362362
arguments: [dbName],

0 commit comments

Comments
 (0)