diff --git a/apps/docs/content/guides/database/extensions/postgis.mdx b/apps/docs/content/guides/database/extensions/postgis.mdx
index c5588a1b93fac..c338c1ac912b4 100644
--- a/apps/docs/content/guides/database/extensions/postgis.mdx
+++ b/apps/docs/content/guides/database/extensions/postgis.mdx
@@ -436,12 +436,6 @@ val data = supabase.postgrest.rpc(
## Troubleshooting
-
-
-The [official PostGIS documentation](https://postgis.net/documentation/tips/tip-move-postgis-schema/) for relocating the schema will cause issues for Supabase projects. These issues might not be apparent immediately but will eventually surface. To relocate your schema, use the following steps instead.
-
-
-
As of PostGIS 2.3 or newer, the PostGIS extension is no longer relocatable from one schema to another. If you need to move it from one schema to another for any reason (e.g. from the public schema to the extensions schema for security reasons), you would normally run a ALTER EXTENSION to relocate the schema. However, you will now to do the following steps:
1. Backup your Database to prevent data loss - You can do this through the [CLI](https://supabase.com/docs/reference/cli/supabase-db-dump) or Postgres backup tools such as [pg_dumpall](https://www.postgresql.org/docs/current/backup-dump.html#BACKUP-DUMP-ALL)
@@ -452,6 +446,28 @@ As of PostGIS 2.3 or newer, the PostGIS extension is no longer relocatable from
4. Restore dropped data via the Backup if necessary from step 1 with your tool of choice.
+Alternatively, you can contact the [Supabase Support Team](https://supabase.com/dashboard/support/new) and ask them to run the following SQL on your instance:
+
+```sql
+BEGIN;
+ UPDATE pg_extension
+ SET extrelocatable = true
+ WHERE extname = 'postgis';
+
+ ALTER EXTENSION postgis
+ SET SCHEMA extensions;
+
+ ALTER EXTENSION postgis
+ UPDATE TO "next";
+
+ ALTER EXTENSION postgis UPDATE;
+
+ UPDATE pg_extension
+ SET extrelocatable = false
+ WHERE extname = 'postgis';
+COMMIT;
+```
+
## Resources
- [Official PostGIS documentation](https://postgis.net/documentation/)
diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationRow.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationRow.tsx
index 04386674eeb7f..5e693553554be 100644
--- a/apps/studio/components/interfaces/Database/Replication/DestinationRow.tsx
+++ b/apps/studio/components/interfaces/Database/Replication/DestinationRow.tsx
@@ -1,3 +1,4 @@
+import Link from 'next/link'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -6,24 +7,22 @@ import Table from 'components/to-be-cleaned/Table'
import AlertError from 'components/ui/AlertError'
import { useDeleteDestinationMutation } from 'data/replication/delete-destination-mutation'
import { useReplicationPipelineStatusQuery } from 'data/replication/pipeline-status-query'
-import { ReplicationPipelinesData } from 'data/replication/pipelines-query'
+import { Pipeline } from 'data/replication/pipelines-query'
import { useStopPipelineMutation } from 'data/replication/stop-pipeline-mutation'
import {
PipelineStatusRequestStatus,
usePipelineRequestStatus,
} from 'state/replication-pipeline-request-status'
import { ResponseError } from 'types'
+import { Button } from 'ui'
import ShimmeringLoader from 'ui-patterns/ShimmeringLoader'
import DeleteDestination from './DeleteDestination'
import DestinationPanel from './DestinationPanel'
import { getStatusName, PIPELINE_ERROR_MESSAGES } from './Pipeline.utils'
import { PipelineStatus, PipelineStatusName } from './PipelineStatus'
+import { STATUS_REFRESH_FREQUENCY_MS } from './Replication.constants'
import { RowMenu } from './RowMenu'
-export type Pipeline = ReplicationPipelinesData['pipelines'][0]
-
-const refreshFrequencyMs: number = 2000
-
interface DestinationRowProps {
sourceId: number | undefined
destinationId: number
@@ -34,7 +33,6 @@ interface DestinationRowProps {
isLoading: boolean
isError: boolean
isSuccess: boolean
- onSelectPipeline?: (pipelineId: number, destinationName: string) => void
}
export const DestinationRow = ({
@@ -47,7 +45,6 @@ export const DestinationRow = ({
isLoading: isPipelineLoading,
isError: isPipelineError,
isSuccess: isPipelineSuccess,
- onSelectPipeline,
}: DestinationRowProps) => {
const { ref: projectRef } = useParams()
const [showDeleteDestinationForm, setShowDeleteDestinationForm] = useState(false)
@@ -64,7 +61,7 @@ export const DestinationRow = ({
projectRef,
pipelineId: pipeline?.id,
},
- { refetchInterval: refreshFrequencyMs }
+ { refetchInterval: STATUS_REFRESH_FREQUENCY_MS }
)
const { getRequestStatus, updatePipelineStatus } = usePipelineRequestStatus()
const requestStatus = pipeline?.id
@@ -107,12 +104,7 @@ export const DestinationRow = ({
)}
{isPipelineSuccess && (
- {
- if (pipeline) onSelectPipeline?.(pipeline.id, destinationName)
- }}
- >
+ {isPipelineLoading ? : destinationName}{isPipelineLoading ? : type}
@@ -138,6 +130,11 @@ export const DestinationRow = ({