From cfad512318c503a3a2375707463a974cba9dc506 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 26 Mar 2025 11:23:48 +0800 Subject: [PATCH] Fix Connect UI not showing the right connection string for poolers when a read replica is selected (#34409) Fix connect ui not updating connection string when a read replica is selected --- .../interfaces/Connect/DatabaseConnectionString.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx b/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx index ff884ebfd46..0ffd746f09c 100644 --- a/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx +++ b/apps/studio/components/interfaces/Connect/DatabaseConnectionString.tsx @@ -117,6 +117,7 @@ export const DatabaseConnectionString = () => { const selectedDatabase = (databases ?? []).find( (db) => db.identifier === state.selectedDatabaseId ) + const isReplicaSelected = selectedDatabase?.identifier !== projectRef const { data: addons } = useProjectAddonsQuery({ projectRef }) const { ipv4: ipv4Addon } = getAddons(addons?.selected_addons ?? []) @@ -145,7 +146,7 @@ export const DatabaseConnectionString = () => { connectionInfo, poolingInfo: { connectionString: sharedPoolerConfig?.connection_string ?? '', - db_host: sharedPoolerConfig?.db_host ?? '', + db_host: isReplicaSelected ? connectionInfo.db_host : sharedPoolerConfig?.db_host ?? '', db_name: sharedPoolerConfig?.db_name ?? '', db_port: sharedPoolerConfig?.db_port ?? 0, db_user: sharedPoolerConfig?.db_user ?? '', @@ -158,8 +159,13 @@ export const DatabaseConnectionString = () => { ? getConnectionStrings({ connectionInfo, poolingInfo: { - connectionString: poolingConfiguration.connection_string, - db_host: poolingConfiguration.db_host, + connectionString: isReplicaSelected + ? poolingConfiguration.connection_string.replace( + poolingConfiguration.db_host, + connectionInfo.db_host + ) + : poolingConfiguration.connection_string, + db_host: isReplicaSelected ? connectionInfo.db_host : poolingConfiguration.db_host, db_name: poolingConfiguration.db_name, db_port: poolingConfiguration.db_port, db_user: poolingConfiguration.db_user,