IndexAdvisorDisabledState() — supabase Function Reference
Architecture documentation for the IndexAdvisorDisabledState() function in IndexAdvisorDisabledState.tsx from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 37430ed3_5a88_d265_3bd1_abb3f70a61da["IndexAdvisorDisabledState()"] fa397570_a2a8_abec_6e48_9a1e12bb2bd1["getIndexAdvisorExtensions()"] 37430ed3_5a88_d265_3bd1_abb3f70a61da -->|calls| fa397570_a2a8_abec_6e48_9a1e12bb2bd1 style 37430ed3_5a88_d265_3bd1_abb3f70a61da fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/QueryPerformance/IndexAdvisor/IndexAdvisorDisabledState.tsx lines 14–97
export const IndexAdvisorDisabledState = () => {
const { ref } = useParams()
const { data: project } = useSelectedProjectQuery()
const { data: extensions } = useDatabaseExtensionsQuery({
projectRef: project?.ref,
connectionString: project?.connectionString,
})
const { hypopg, indexAdvisor } = getIndexAdvisorExtensions(extensions)
const { mutateAsync: enableExtension, isPending: isEnablingExtension } =
useDatabaseExtensionEnableMutation()
const onEnableIndexAdvisor = async () => {
if (project === undefined) return console.error('Project is required')
try {
if (hypopg?.installed_version === null) {
await enableExtension({
projectRef: project?.ref,
connectionString: project?.connectionString,
name: hypopg.name,
schema: hypopg?.schema ?? 'extensions',
version: hypopg.default_version,
})
}
if (indexAdvisor?.installed_version === null) {
await enableExtension({
projectRef: project?.ref,
connectionString: project?.connectionString,
name: indexAdvisor.name,
schema: indexAdvisor?.schema ?? 'extensions',
version: indexAdvisor.default_version,
})
}
toast.success('Successfully enabled index advisor!')
} catch (error: any) {
toast.error(`Failed to enable index advisor: ${error.message}`)
}
}
return (
<Alert_Shadcn_ className="mb-6">
<AlertTitle_Shadcn_>
<Markdown
className="text-foreground"
content={
indexAdvisor === undefined
? 'Newer version of Postgres required'
: 'Postgres extensions `index_advisor` and `hypopg` required'
}
/>
</AlertTitle_Shadcn_>
<AlertDescription_Shadcn_>
<Markdown
content={
indexAdvisor === undefined
? 'Upgrade to the latest version of Postgres to get recommendations on indexes for your queries'
: 'These extensions can help in recommending database indexes to reduce the costs of your query.'
}
/>
</AlertDescription_Shadcn_>
<AlertDescription_Shadcn_ className="mt-3">
<div className="flex items-center gap-x-2">
{indexAdvisor === undefined ? (
<Button asChild type="default">
<Link href={`/project/${ref}/settings/infrastructure`}>Upgrade Postgres version</Link>
</Button>
) : (
<Button
type="default"
disabled={isEnablingExtension}
loading={isEnablingExtension}
onClick={() => onEnableIndexAdvisor()}
>
Enable extensions
</Button>
)}
<DocsButton href={`${DOCS_URL}/guides/database/extensions/index_advisor`} />
</div>
</AlertDescription_Shadcn_>
</Alert_Shadcn_>
)
}
Domain
Subdomains
Source
Frequently Asked Questions
What does IndexAdvisorDisabledState() do?
IndexAdvisorDisabledState() is a function in the supabase codebase.
What does IndexAdvisorDisabledState() call?
IndexAdvisorDisabledState() calls 1 function(s): getIndexAdvisorExtensions.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free