What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Choose managed PostgreSQL if the service supports every extension and version your workload needs, and its permissions, configuration, upgrade process, and operational limits fit your team. Choose self-managed PostgreSQL when a required extension needs server files, privileges, or system controls that your provider does not expose. The deciding factor is not whether PostgreSQL supports an extension in general; it is whether the specific service supports the required extension on your PostgreSQL major version and lets you operate it as needed.
First, separate the extension from the way PostgreSQL is hosted
PostgreSQL extensions add features to a database by creating database objects such as functions, data types, and operators. They are not a separate hosting model. You can use extensions with either managed PostgreSQL or a PostgreSQL installation you operate yourself, provided the server has the extension’s supporting files and you have the required permission to install it.
As an Amazon Associate I earn from qualifying purchases.
In PostgreSQL, CREATE EXTENSION loads an extension into the current database. The supporting files must already be installed on the server, and PostgreSQL runs the extension’s installation script and records the objects it creates. An extension is therefore installed in a database, not simply enabled for every database on a server. If an application uses more than one database, check each database that needs the extension rather than treating installation in one database as a server-wide installation. See the PostgreSQL 18 CREATE EXTENSION reference.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →That distinction explains the practical choice. With a self-managed server, the operator can generally control which compatible extension files are installed and how the server is configured. With a managed service, the provider operates the database infrastructure but determines which extensions, versions, permissions, and settings are available to customers. Providers differ, so “PostgreSQL supports it” does not establish that a particular managed service does.
#1 Best Overall
There are two layers to verify: the extension’s server-side support and its database-level installation. A command that creates an extension in a database does not install missing server files, grant a role it lacks, or satisfy a provider’s configuration requirements. Conversely, seeing an extension in a provider’s support matrix does not by itself confirm that your specific role or configuration can use it.
Use your extension requirements to make the decision
Start with a concrete list of extensions your application needs, including required versions and where each is used. Then check the exact managed service and PostgreSQL major version you plan to run. If all required extensions are available and the provider’s rules support your installation, configuration, upgrade, and operational needs, managed PostgreSQL is a reasonable fit. If a necessary capability is missing, self-management may be required.
Separate hard dependencies from optional features. For each extension, note the application behavior that relies on it and which databases need it. That makes it easier to judge the impact of a missing extension: an optional feature might have a workable fallback, while an extension required for normal application behavior can block a migration or deployment. Record version needs explicitly instead of writing only the extension name; support and versions can differ by PostgreSQL major version and provider.
Recommended Free Tools
Managed PostgreSQL is a fit when
- The service’s support matrix lists every required extension for your PostgreSQL major version.
- The listed extension versions meet your application’s requirements.
- Your database roles can create or administer the extension under the provider’s permission model.
- Any allow-list, server flag, or library configuration the extension needs is available to you.
- The provider’s extension upgrade process and service-operation restrictions work for your deployment.
Self-managed PostgreSQL is worth considering when
- A required extension is not in the selected service’s supported list.
- The extension requires server-side files, a library, or administrative privileges the service does not expose.
- You need control over extension binaries or PostgreSQL configuration that the provider does not offer.
- A provider-specific restriction conflicts with how the extension must operate, replicate, fail over, back up, or upgrade.
These are decision criteria, not a universal ranking. Self-management gives the operator more control over the server, but also makes the operator responsible for the host and extension lifecycle. A managed service delegates operation of the database service; it does not automatically remove the need to validate extension-specific requirements. The documentation cited here does not establish a general cost, performance, staffing, or uptime advantage for either model.
For a migration, make the decision against the destination as well as the current environment. An extension available on one PostgreSQL installation may not be available on the target provider, and provider-specific behavior may differ. Confirm support, role access, configuration, upgrade handling, and operational compatibility before treating the target as interchangeable. If those checks do not fit, compare a different managed service or a self-managed deployment rather than assuming that the application will work unchanged.
Compare the constraints that affect extension use
| Decision area | Managed PostgreSQL | Self-managed PostgreSQL |
|---|---|---|
| Availability | Limited to the provider’s supported extensions and its PostgreSQL-version matrix. Check the exact service and major version. | The operator can install supporting files when they are compatible with the chosen PostgreSQL build and operating system. |
| Permissions and configuration | Provider roles, allow-lists, approved libraries, and configuration flags apply. | The operator controls server packages, configuration, and administrative access, subject to how the host is operated. |
| Extension upgrades | The provider may publish newer extension binaries while requiring a separate database-level catalog update. Procedures vary by service. | The operator owns both the binary and database-catalog upgrade process. |
| Operational responsibility | The provider manages the database service, while the team must check extension requirements and service constraints. | The team or its infrastructure provider operates the database host and manages the extension lifecycle. |
| Portability | Reliance on provider-specific extension behavior can complicate migration; confirm the destination’s availability and behavior. | Broader installation control can accommodate unusual dependencies, but the operator assumes the related responsibilities. |
The portability and responsibility comparisons are operational implications of the installation model, not quantified outcomes. The documentation cited here does not provide a general migration-cost estimate or a workload-based comparison of operating effort. Do not infer that an extension’s presence on a support list guarantees identical behavior across providers, or that a self-managed setup is automatically portable: confirm the destination’s support and procedures.
Managed hosting can reduce the amount of database infrastructure the customer operates, but extension-specific work remains: the team still has to choose compatible versions, satisfy permissions and configuration requirements, and understand updates and limitations. With self-management, that work includes control of the server-side files and configuration, but also responsibility for the extension lifecycle. Which model is simpler depends on whether the provider’s boundaries fit the workload, not on a universal claim about staffing or cost.
Check what the provider actually allows
Provider support is specific to a service and engine version. A useful check has four parts: availability, version, permissions, and configuration. Then verify the extension’s lifecycle and service compatibility. Do not stop at a provider page saying that an extension is supported if your required version or role cannot use it as intended. The provider’s current documentation is the authority for its current matrix and rules; examples below illustrate why a provider-neutral assumption is unsafe, not an exhaustive survey of managed PostgreSQL services.
Amazon RDS for PostgreSQL
AWS publishes supported extension lists and versions by PostgreSQL version. For PostgreSQL 13 and later, a user with the database’s CREATE permission can install trusted extensions. Other extensions generally require the rds_superuser role. AWS also documents rds.allowed_extensions as a control for limiting which extensions can be installed. Check both the version-specific support list and the service’s extension instructions before choosing a design: supported PostgreSQL extension versions and using PostgreSQL extensions with Amazon RDS.
In practical terms, do not treat database-level CREATE permission as equivalent to unrestricted administrative access. First identify whether the needed extension is trusted, then check whether the applicable RDS role can install it and whether the allowed-extensions control permits it. If your design assumes a role can install any extension available in upstream PostgreSQL, confirm that assumption against the RDS rules for the engine version you intend to use.
Azure Database for PostgreSQL Flexible Server
Microsoft describes Flexible Server as supporting a subset of existing PostgreSQL extensions and says customers cannot bring their own extensions. The documented workflow includes allow-listing an extension. Some extensions also require the shared_load_libraries setting. For permissions, untrusted extensions require azure_pg_admin; a trusted extension listed in azure.extensions can be created by a user with CREATE permission. Consult Microsoft’s instructions for the relevant extension and configuration requirements: Create Extensions in Azure Database for PostgreSQL Flexible Server. The page was last updated July 13, 2026.
For Azure, confirm the sequence as well as the end state: whether the extension must be added to the allow-list, whether a server setting such as shared_load_libraries is required, and which role performs the database-level creation. An extension appearing in the service’s broader supported subset does not remove these prerequisites. If a necessary custom extension is not supported, Microsoft’s documented model does not let you supply your own extension files to Flexible Server.
Google Cloud SQL for PostgreSQL
Google Cloud SQL permits installation only for listed extensions and does not let users create their own extensions. Its documentation says extensions can be created by members of cloudsqlsuperuser. Create the extension on the primary instance; it replicates to read replicas. Google also documents restrictions involving service operations, so check the extension’s compatibility with the way you use the instance rather than treating installation as the only test.
Extension binaries and the extension’s database catalog have separate update steps in Cloud SQL. Google says maintenance installs current extension binaries, but does not automatically update the database catalog. Customers should check installed versions and use ALTER EXTENSION when an update is appropriate. This means an infrastructure maintenance event should not be mistaken for confirmation that each database’s extension catalog has been upgraded. Consult the live Cloud SQL PostgreSQL extensions documentation for support, version, operation, and update details.
Cloud SQL’s primary-instance instruction also belongs in the deployment plan: create an extension on the primary and account for its replication to read replicas. Check the current provider guidance for any service-operation incompatibilities that matter to your setup, including the way you use replication, failover, backups, and upgrades. The fact that an extension is installed is not, on its own, proof that every operational path is supported.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Why the PostgreSQL major version matters
Support can differ even within one provider. For example, Google’s extension table lists PostGIS 3.5.2 for PostgreSQL 13–17 and PostGIS 3.6.0 for PostgreSQL 18 at the time that documentation was accessed. Those values are an example of version-specific support, not a permanent guarantee or a statement about every provider. Check the live table for your intended PostgreSQL version before committing to an extension dependency: Google Cloud’s extension version table.
Use this kind of check when planning an engine upgrade, too. A provider’s current matrix for your existing major version does not answer whether the extension version will be available on the next one. Recheck the target major version and verify any version requirement your application has before scheduling a PostgreSQL upgrade or changing providers.
Run a pre-deployment extension check
Use this sequence before selecting a managed service or moving an existing database. The goal is to validate the full extension lifecycle, not just whether a command succeeds in a development database.
- Inventory the dependency. Record each extension, the version your application requires, the databases that need it, and the application feature that depends on it. Distinguish required extensions from optional ones. Since
CREATE EXTENSIONacts on the current database, list the databases individually rather than assuming one installation covers the whole server. - Match the engine version. Choose the PostgreSQL major version under consideration and find the provider’s extension matrix for that version. Confirm the listed extension version meets your requirement. If you are considering an engine upgrade, check the destination version rather than relying on the current instance’s support.
- Check the installation model. Determine whether the extension is trusted, whether its server-side files are available, and which database role can run
CREATE EXTENSION. For a managed service, follow its own role and allow-list rules rather than assuming PostgreSQL superuser access. - Check configuration prerequisites. Look for required allow-list entries, library settings, flags, or other provider-specific setup. Confirm that you can apply and retain those settings on the intended service and deployment. For example, Azure documents allow-listing and, for some extensions,
shared_load_libraries; Google documents flags for some extensions. - Validate operation, not only installation. Check provider limitations affecting replication, failover, backups, maintenance, and upgrades. Establish where the extension must be created and whether the provider documents service-operation incompatibilities. For Cloud SQL, the documented creation location is the primary instance, with replication to read replicas.
- Plan both upgrade layers. Ask how extension binaries are updated and whether the database catalog needs a separate update. Identify who performs each action and when it is safe for your application. Cloud SQL explicitly requires customers to check installed versions and use
ALTER EXTENSIONwhen appropriate after maintenance installs newer binaries. - Test in a representative environment. Create the extension using the intended role and settings, then exercise the application paths that rely on it. Test the relevant upgrade and operational procedures before production use. A test that only verifies
CREATE EXTENSIONmay not reveal a missing configuration prerequisite or an operational restriction. - Recheck before changing versions or providers. Repeat the matrix and behavior checks when moving to a different PostgreSQL major version, service, or destination environment. Support lists and extension versions are provider- and version-specific.
For an extension that is optional, keep a fallback plan if that feature is unavailable in the target service. For an extension that is a hard dependency, treat a missing version, privilege, configuration setting, or operational capability as a blocking compatibility issue rather than a detail to resolve after migration. If the provider’s documentation leaves a question unanswered, resolve it with the provider or through a representative test before the dependency becomes a production requirement.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsUnderstand the common failure points
“PostgreSQL supports it” but the service rejects it
PostgreSQL’s extension mechanism requires supporting files on the server, while a managed provider controls which files and extensions are available. Use the provider’s service-specific list for the exact PostgreSQL version. If the extension is absent and the provider does not allow customer-installed files, the practical options are to choose a compatible extension, select a different service that supports the dependency, or operate PostgreSQL yourself.
The extension is listed, but the role cannot create it
PostgreSQL distinguishes trusted extensions from extensions that need elevated privileges, and managed providers impose their own roles. Check the provider’s documented permissions and grant or use the required role where permitted. A database user with CREATE is not automatically equivalent to a PostgreSQL superuser. Check whether the extension is trusted and whether the role named in the service instructions has the necessary permissions before relying on an automated deployment process.
Installation succeeds, but setup is incomplete
An extension may require an allow-list entry, a server flag, or a library configuration in addition to creating its database objects. Azure documents allow-listing and, for some extensions, shared_load_libraries; Google Cloud documents flags for some extensions. Follow the provider’s instructions for the selected extension and verify its configuration before relying on it. A successful database-level creation command should not be taken as a substitute for checking all documented prerequisites.
The binary is updated, but the database extension version is not
Do not assume that a provider’s maintenance update automatically changes the extension catalog in each database. Cloud SQL explicitly distinguishes installing current binaries from updating the database catalog; customers should check versions and use ALTER EXTENSION when appropriate. For other services, confirm their documented update procedure rather than applying Cloud SQL’s behavior as a universal rule. Include the responsible person or team and the planned update step in your maintenance process.
The extension works on the primary but the operating model is incompatible
Confirm how extension creation and behavior interact with replicas and service operations. Cloud SQL specifies creation on the primary and replication to read replicas, and also documents service-operation incompatibilities. Verify the provider’s current instructions for failover, backups, maintenance, and upgrades that matter to your architecture. These checks are especially important when moving an existing workload: do not assume that installation behavior on the old server describes the destination service.
A familiar extension name hides a version mismatch
Checking only the extension name can miss a version requirement. A provider may list the extension but offer a version that does not meet the application’s needs, or list different versions for different PostgreSQL major releases. Compare the exact supported version with the one required by the workload and confirm the target matrix again when changing engine versions. Google’s PostGIS table illustrates the issue: at the time accessed, it listed 3.5.2 for PostgreSQL 13–17 and 3.6.0 for PostgreSQL 18.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Make the final choice against the workload, not the label
Managed PostgreSQL is the better fit for a workload when its extension matrix covers the required versions and its permissions, settings, lifecycle, and operational rules are acceptable. Self-managed PostgreSQL is the more viable choice when an essential extension depends on server files or system control the selected service withholds. Between those cases, test the exact service and extension combination before deciding: the hosting label alone does not establish compatibility.
Before committing, be able to answer four practical questions: Is the required extension version listed for the intended PostgreSQL major version? Can the intended database role install it under the provider’s rules? Can you configure any prerequisites and handle both binary and catalog updates? Does the extension work with the service operations your architecture depends on? If the answers are yes, managed PostgreSQL can meet the extension requirement. If a hard dependency fails one of those checks, choose a different compatible service or self-manage rather than postponing the problem until deployment.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteFrequently Asked Questions
Which PostgreSQL extensions does my managed database support?
Check the current extension list for the exact provider service and PostgreSQL major version you plan to use. Then confirm the listed version meets your application’s requirement, and review permissions, allow-lists, configuration prerequisites, update steps, and operational restrictions. A provider-wide or PostgreSQL-wide statement is not enough to establish that your specific database can use the extension.
Best Value
Can I install a custom PostgreSQL extension on RDS, Cloud SQL, or Azure Database for PostgreSQL?
The reviewed provider documentation describes restrictions rather than general customer-installed extension files. RDS provides supported extension lists and versions, role rules, and the rds.allowed_extensions control. Cloud SQL allows listed extensions and says users cannot create their own. Azure Flexible Server supports a subset and says customers cannot bring their own extensions. Check the current instructions for your service and engine version; do not assume upstream PostgreSQL support means a custom extension can be added.
When should I self-host PostgreSQL instead of using a managed database?
Consider self-management when a required extension is unavailable on the chosen managed service, or needs server files, privileges, configuration, or system control the provider does not expose. Self-management gives the operator more control, but also makes the team or infrastructure provider responsible for the host and extension lifecycle. It is not automatically cheaper or better-performing; the choice depends on the workload’s specific requirements.
Does CREATE EXTENSION install an extension for every database?
No. PostgreSQL runs CREATE EXTENSION in the current database, where it creates and records the extension’s objects. The supporting files must already be installed on the server. If multiple databases need the extension, account for each database and its permissions.
Does a managed database automatically update PostgreSQL extensions?
It depends on the provider and on what “update” means. Cloud SQL says maintenance installs current extension binaries but does not automatically update the database catalog; customers should check installed versions and use ALTER EXTENSION when appropriate. For another provider, follow its own documented procedure and distinguish server-side binaries from the extension version recorded in a database.
Does the PostgreSQL major version affect extension support?
Yes. Provider support lists and extension versions can vary by PostgreSQL major version. For example, Google’s Cloud SQL table listed PostGIS 3.5.2 for PostgreSQL 13–17 and 3.6.0 for PostgreSQL 18 at the time accessed. Check the current matrix for the precise engine version you intend to run, especially before an upgrade or migration.
The Bottom Line
Choose managed PostgreSQL only after confirming that the exact service and PostgreSQL major version support every required extension version, role, configuration step, update procedure, and operational need. If a hard dependency requires files or control the provider does not expose, select another compatible service or self-manage. There is no universal winner: the extension and workload determine the fit.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




