Skip to content

Commit cf18948

Browse files
authored
Only update FDW when removing namespace table if table is in FDW instance tables (supabase#40331)
Only update FDW when removing namespace table if table is in FDW instance
1 parent 0263606 commit cf18948

File tree

1 file changed

+38
-33
lines changed
  • apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/NamespaceWithTables

1 file changed

+38
-33
lines changed

apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/NamespaceWithTables/TableRowComponent.tsx

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -147,40 +147,45 @@ export const TableRowComponent = ({
147147
try {
148148
setIsRemovingTable(true)
149149

150-
const serverName = getAnalyticsBucketFDWServerName(bucketId)
151-
const serverOptions = await getDecryptedParameters({
152-
ref: project?.ref,
153-
connectionString: project?.connectionString ?? undefined,
154-
wrapper: wrapperInstance,
155-
})
156-
const formValues: Record<string, string> = {
157-
wrapper_name: wrapperInstance.name,
158-
server_name: wrapperInstance.server_name,
159-
...serverOptions,
160-
}
161-
const targetSchemas = (formValues['supabase_target_schema'] || '')
162-
.split(',')
163-
.map((s) => s.trim())
164-
const wrapperTables = formatWrapperTables(wrapperInstance, wrapperMeta).filter(
165-
(x) => x.table_name !== table.name
166-
)
150+
// [Joshen] Update FDW instance only if table is in FDW instance's tables
151+
// e.g for a namespace table that was added outside of the dashboard, it wouldn't be
152+
const isTableInWrapperInstance = wrapperInstance.tables.some((x) => x.name === table.name)
153+
if (isTableInWrapperInstance) {
154+
const serverName = getAnalyticsBucketFDWServerName(bucketId)
155+
const serverOptions = await getDecryptedParameters({
156+
ref: project?.ref,
157+
connectionString: project?.connectionString ?? undefined,
158+
wrapper: wrapperInstance,
159+
})
160+
const formValues: Record<string, string> = {
161+
wrapper_name: wrapperInstance.name,
162+
server_name: wrapperInstance.server_name,
163+
...serverOptions,
164+
}
165+
const targetSchemas = (formValues['supabase_target_schema'] || '')
166+
.split(',')
167+
.map((s) => s.trim())
168+
const wrapperTables = formatWrapperTables(wrapperInstance, wrapperMeta).filter(
169+
(x) => x.table_name !== table.name
170+
)
167171

168-
// [Joshen] Once Ivan's PR goes through, swap these out to just use useFDWDropForeignTableMutation
169-
// https://github.com/supabase/supabase/pull/40206
170-
await updateFDW({
171-
projectRef: project?.ref,
172-
connectionString: project?.connectionString,
173-
wrapper: wrapperInstance,
174-
wrapperMeta,
175-
formState: {
176-
...formValues,
177-
server_name: serverName,
178-
supabase_target_schema: uniq([...targetSchemas])
179-
.filter(Boolean)
180-
.join(','),
181-
},
182-
tables: wrapperTables,
183-
})
172+
// [Joshen] Once Ivan's PR goes through, swap these out to just use useFDWDropForeignTableMutation
173+
// https://github.com/supabase/supabase/pull/40206
174+
await updateFDW({
175+
projectRef: project?.ref,
176+
connectionString: project?.connectionString,
177+
wrapper: wrapperInstance,
178+
wrapperMeta,
179+
formState: {
180+
...formValues,
181+
server_name: serverName,
182+
supabase_target_schema: uniq([...targetSchemas])
183+
.filter(Boolean)
184+
.join(','),
185+
},
186+
tables: wrapperTables,
187+
})
188+
}
184189

185190
const wrapperValues = convertKVStringArrayToJson(wrapperInstance?.server_options ?? [])
186191
await deleteNamespaceTable({

0 commit comments

Comments
 (0)