

# Working with Amazon Aurora PostgreSQL
<a name="Aurora.AuroraPostgreSQL"></a><a name="pgsql"></a>

Amazon Aurora PostgreSQL is a fully managed, PostgreSQL–compatible, and ACID–compliant relational database engine that combines the speed, reliability, and manageability of Amazon Aurora with the simplicity and cost-effectiveness of open-source databases. Aurora PostgreSQL is a drop-in replacement for PostgreSQL and makes it simple and cost-effective to set up, operate, and scale your new and existing PostgreSQL deployments, thus freeing you to focus on your business and applications. To learn more about Aurora in general, see [What is Amazon Aurora?](CHAP_AuroraOverview.md). 

In addition to the benefits of Aurora, Aurora PostgreSQL offers a convenient migration pathway from Amazon RDS into Aurora, with push-button migration tools that convert your existing RDS for PostgreSQL applications to Aurora PostgreSQL. Routine database tasks such as provisioning, patching, backup, recovery, failure detection, and repair are also easy to manage with Aurora PostgreSQL. 

Aurora PostgreSQL can work with many industry standards. For example, you can use Aurora PostgreSQL databases to build HIPAA-compliant applications and to store healthcare related information, including protected health information (PHI), under a completed Business Associate Agreement (BAA) with AWS.

Aurora PostgreSQL is FedRAMP HIGH eligible. For details about AWS and compliance efforts, see [AWS services in scope by compliance program](https://aws.amazon.com/compliance/services-in-scope/). 

**Important**  
If you encounter an issue with your Aurora PostgreSQL DB cluster, your AWS support agent might need more information about the health of your databases. The goal is to ensure that AWS Support gets as much of the required information as possible in the shortest possible time.  
You can use PG Collector to help gather valuable database information in a consolidated HTML file. For more information on PG Collector, how to run it, and how to download the HTML report, see [PG Collector](https://github.com/awslabs/pg-collector).  
Upon successful completion, and unless otherwise noted, the script returns output in a readable HTML format. The script is designed to exclude any data or security details from the HTML that might compromise your business. It also makes no modifications to your database or its environment. However, if you find any information in the HTML that you are uncomfortable sharing, feel free to remove the problematic information before uploading the HTML. When the HTML is acceptable, upload it using the attachments section in the case details of your support case.

**Topics**
+ [Working with the database preview environment](working-with-the-apg-database-preview-environment.md)
+ [Security with Amazon Aurora PostgreSQL](AuroraPostgreSQL.Security.md)
+ [Updating applications to connect to Aurora PostgreSQL DB clusters using new SSL/TLS certificates](ssl-certificate-rotation-aurora-postgresql.md)
+ [Using Kerberos authentication with Aurora PostgreSQL](postgresql-kerberos.md)
+ [Migrating data to Amazon Aurora with PostgreSQL compatibility](AuroraPostgreSQL.Migrating.md)
+ [Optimizing query performance in Aurora PostgreSQL](AuroraPostgreSQL.optimizing.queries.md)
+ [Working with unlogged tables in Aurora PostgreSQL](aurora-postgresql-unlogged-tables.md)
+ [Working with PostgreSQL autovacuum on Amazon Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.md)
+ [Managing TOAST OID contention in Amazon Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.md)
+ [Using Babelfish for Aurora PostgreSQL](babelfish.md)
+ [Performance and scaling for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Managing.md)
+ [Tuning with wait events for Aurora PostgreSQL](AuroraPostgreSQL.Tuning.md)
+ [Tuning Aurora PostgreSQL with Amazon DevOps Guru proactive insights](PostgreSQL.Tuning_proactive_insights.md)
+ [Best practices with Amazon Aurora PostgreSQL](AuroraPostgreSQL.BestPractices.md)
+ [Replication with Amazon Aurora PostgreSQL](AuroraPostgreSQL.Replication.md)
+ [Local write forwarding in Aurora PostgreSQL](aurora-postgresql-write-forwarding.md)
+ [Using Aurora PostgreSQL as a Knowledge Base for Amazon Bedrock](AuroraPostgreSQL.VectorDB.md)
+ [Integrating Amazon Aurora PostgreSQL with other AWS services](AuroraPostgreSQL.Integrating.md)
+ [Monitoring query execution plans and peak memory for Aurora PostgreSQL](AuroraPostgreSQL.Monitoring.Query.Plans.md)
+ [Managing query execution plans for Aurora PostgreSQL](AuroraPostgreSQL.Optimize.md)
+ [Working with extensions and foreign data wrappers](Appendix.PostgreSQL.CommonDBATasks.md)
+ [Working with Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension.md)
+ [Amazon Aurora PostgreSQL reference](AuroraPostgreSQL.Reference.md)
+ [Database engine updates for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Updates.md)

# Working with the database preview environment
<a name="working-with-the-apg-database-preview-environment"></a>

 The PostgreSQL community releases new major version of PostgreSQL annually. Similarly, Amazon Aurora makes PostgreSQL major versions available as Preview releases. This allows you to create DB cluster using the Preview version and test out its features in the Database Preview Environment. 

Aurora PostgreSQL DB clusters in the Database Preview Environment are functionally similar to other Aurora PostgreSQL DB clusters. However, you can't use a Preview version for production.

Keep in mind the following important limitations:
+ All DB instances and DB clusters are deleted 60 days after you create them, along with any backups and snapshots.
+ You can only create a DB instance in a virtual private cloud (VPC) based on the Amazon VPC service.
+ You can't copy a snapshot of a DB instance to a production environment.

The following options are supported by the Preview.
+ You can create DB instances using r5, r6g, r6i, r7g, r7i, r8g, x2g, t3 and t4g instance types only. For more information about instance classes, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md). 
+ You can use both single-AZ and multi-AZ deployments.
+ You can use standard PostgreSQL dump and load functions to export databases from or import databases to the Database Preview Environment.

## Supported DB instance class types
<a name="apg-preview-environment-supported"></a>

Amazon Aurora PostgreSQL supports the following DB instance classes in the preview region:

**Memory Optimized Classes**
+ db.r5 – memory-optimized instance classes
+ db.r6g – memory-optimized instance classes powered by AWS Graviton2 processors
+ db.r6i – memory-optimized instance classes
+ db.r7g – memory-optimized instance classes powered by AWS Graviton3 processors
+ db.r7i – memory-optimized instance classes
+ db.r8g – memory-optimized instance classes powered by AWS Graviton4 processors
+ db.x2g – memory-optimized instance classes powered by AWS Graviton2 processors

**Note**  
For more information on the list of instance classes, see [DB instance class types](Concepts.DBInstanceClass.Types.md).

**Burstable classes**
+ db.t3.medium
+ db.t3.large
+ db.t4g.medium
+ db.t4g.large

## Unsupported features in the preview environment
<a name="apg-preview-environment-exclusions"></a>

The following features aren't available in the preview environment:
+ Aurora Serverless v1 and v2
+ Major version upgrades (MVU)
+ No new minor versions will be released in preview region
+ RDS for PostgreSQL to Aurora PostgreSQL inbound replication
+ Amazon RDS Blue/Green deployment
+ Cross-Region snapshot copy 
+ Aurora global database
+ Database activity streams (DAS), RDS Proxy, and AWS DMS
+ Auto scaling read replicas
+ AWS Bedrock
+ RDS export
+ Performance Insights
+ Custom endpoints
+ Snapshot copy
+ Zero-ETL
+ Babelfish
+ All extensions

## Creating a new DB cluster in the preview environment
<a name="apg-create-db-instance-in-preview-environment"></a>

Use the following procedure to create a DB cluster in the preview environment.

**To create a DB cluster in the preview environment**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose **Dashboard** from the navigation pane.

1. In the Dashboard page, locate the **Database Preview Environment** section on the Dashboard page, as shown in the following image.  
![\[Preview environment section with link displayed in RDS Console, Dashboard\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/preview-environment-dashboard.png)

   You can navigate directly to the [Database preview environment](https://us-east-2.console.aws.amazon.com/rds-preview/home?region=us-east-2#). Before you can proceed, you must acknowledge and accept the limitations.   
![\[Preview environment limitations dialog\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/preview-environment-console.png)

1. To create the Aurora PostgreSQL DB cluster, follow the same process as that for creating any Aurora DB cluster. For more information, see [Creating an Amazon Aurora DB cluster](Aurora.CreateInstance.md).

To create an instance in the Database Preview Environment using the Aurora API or the AWS CLI, use the following endpoint.

```
rds-preview.us-east-2.amazonaws.com
```

## PostgreSQL version 17 in the Database Preview environment
<a name="PostgreSQL.Concepts.General.version17"></a>

****  
***This is preview documentation for Aurora PostgreSQL version 17. It is subject to change.***

PostgreSQL version 17.0 is now available in the Amazon RDS Database Preview environment. PostgreSQL version 17 contains several improvements that are described in the following PostgreSQL documentation:
+ [ PostgreSQL 17 Released](https://www.postgresql.org/about/news/postgresql-17-released-2936/)

For information on the Database Preview Environment, see [Working with the database preview environment](#working-with-the-apg-database-preview-environment). To access the Preview Environment from the console, select [https://console.aws.amazon.com/rds-preview/](https://console.aws.amazon.com/rds-preview/).

# Security with Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Security"></a>

For a general overview of Aurora security, see [Security in Amazon Aurora](UsingWithRDS.md). You can manage security for Amazon Aurora PostgreSQL at a few different levels:
+ To control who can perform Amazon RDS management actions on Aurora PostgreSQL DB clusters and DB instances, use AWS Identity and Access Management (IAM). IAM handles the authentication of user identity before the user can access the service. It also handles authorization, that is, whether the user is allowed to do what they're trying to do. IAM database authentication is an additional authentication method that you can choose when you create your Aurora PostgreSQL DB cluster. For more information, see [Identity and access management for Amazon Aurora](UsingWithRDS.IAM.md).

  If you do use IAM with your Aurora PostgreSQL DB cluster, sign in to the AWS Management Console with your IAM credentials first, before opening the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).
+ Make sure to create Aurora DB clusters in a virtual private cloud (VPC) based on the Amazon VPC service. To control which devices and Amazon EC2 instances can open connections to the endpoint and port of the DB instance for Aurora DB clusters in a VPC, use a VPC security group. You can make these endpoint and port connections by using Secure Sockets Layer (SSL). In addition, firewall rules at your company can control whether devices running at your company can open connections to a DB instance. For more information on VPCs, see [Amazon VPC and Amazon Aurora](USER_VPC.md).

  The supported VPC tenancy depends on the DB instance class used by your Aurora PostgreSQL DB clusters. With `default` VPC tenancy, the DB cluster runs on shared hardware. With `dedicated` VPC tenancy, the DB cluster runs on a dedicated hardware instance. The burstable performance DB instance classes support default VPC tenancy only. The burstable performance DB instance classes include the db.t3 and db.t4g DB instance classes. All other Aurora PostgreSQL DB instance classes support both default and dedicated VPC tenancy.

  For more information about instance classes, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md). For more information about `default` and `dedicated` VPC tenancy, see [Dedicated instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html) in the *Amazon Elastic Compute Cloud User Guide*.
+ To grant permissions to the PostgreSQL databases running on your Amazon Aurora DB cluster, you can take the same general approach as with stand-alone instances of PostgreSQL. Commands such as `CREATE ROLE`, `ALTER ROLE`, `GRANT`, and `REVOKE` work just as they do in on-premises databases, as does directly modifying databases, schemas, and tables.

  PostgreSQL manages privileges by using *roles*. The `rds_superuser` role is the most privileged role on an Aurora PostgreSQL DB cluster. This role is created automatically, and it's granted to the user that creates the DB cluster (the master user account, `postgres` by default). To learn more, see [Understanding PostgreSQL roles and permissions](Appendix.PostgreSQL.CommonDBATasks.Roles.md). 

All available Aurora PostgreSQL versions, including versions 10, 11, 12, 13, 14, and higher releases support the Salted Challenge Response Authentication Mechanism (SCRAM) for passwords as an alternative to message digest (MD5). We recommend that you use SCRAM because it's more secure than MD5. For more information, including how to migrate database user passwords from MD5 to SCRAM, see [Using SCRAM for PostgreSQL password encryption](PostgreSQL_Password_Encryption_configuration.md).

# Understanding PostgreSQL roles and permissions
<a name="Appendix.PostgreSQL.CommonDBATasks.Roles"></a>

When you create an Aurora PostgreSQL DB cluster using the AWS Management Console, an administrator account is created at the same time. By default, its name is `postgres`, as shown in the following screenshot:

![\[The default login identity for Credentials in the Create database page is postgres.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/default-login-identity-apg-rpg.png)


You can choose another name rather than accept the default (`postgres`). If you do, the name you choose must start with a letter and be between 1 and 16 alphanumeric characters. For simplicity's sake, we refer to this main user account by its default value (`postgres`) throughout this guide.

 If you use the `create-db-cluster` AWS CLI rather than the AWS Management Console, you create the user name by passing it with the `master-username` parameter. For more information, see [Step 2: Create an Aurora PostgreSQL DB cluster](CHAP_GettingStartedAurora.AuroraPostgreSQL.FullConfig.md#CHAP_GettingStarted.AuroraPostgreSQL.CreateDBCluster).

Whether you use the AWS Management Console, the AWS CLI, or the Amazon RDS API, and whether you use the default `postgres` name or choose a different name, this first database user account is a member of the `rds_superuser` group and has `rds_superuser` privileges.

**Topics**
+ [Understanding the rds\$1superuser role](Appendix.PostgreSQL.CommonDBATasks.Roles.rds_superuser.md)
+ [Controlling user access to the PostgreSQL database](Appendix.PostgreSQL.CommonDBATasks.Access.md)
+ [Delegating and controlling user password management](Appendix.PostgreSQL.CommonDBATasks.RestrictPasswordMgmt.md)
+ [Using SCRAM for PostgreSQL password encryption](PostgreSQL_Password_Encryption_configuration.md)

# Understanding the rds\$1superuser role
<a name="Appendix.PostgreSQL.CommonDBATasks.Roles.rds_superuser"></a>

In PostgreSQL, a *role* can define a user, a group, or a set of specific permissions granted to a group or user for various objects in the database. PostgreSQL commands to `CREATE USER` and `CREATE GROUP` have been replaced by the more general, `CREATE ROLE` with specific properties to distinguish database users. A database user can be thought of as a role with the LOGIN privilege. 

**Note**  
The `CREATE USER` and `CREATE GROUP` commands can still be used. For more information, see [Database Roles](https://www.postgresql.org/docs/current/user-manag.html) in the PostgreSQL documentation.

The `postgres` user is the most highly privileged database user on your Aurora PostgreSQL DB cluster. It has the characteristics defined by the following `CREATE ROLE` statement. 

```
CREATE ROLE postgres WITH LOGIN NOSUPERUSER INHERIT CREATEDB CREATEROLE NOREPLICATION VALID UNTIL 'infinity'
```

The properties `NOSUPERUSER`, `NOREPLICATION`, `INHERIT`, and `VALID UNTIL 'infinity'` are the default options for CREATE ROLE, unless otherwise specified. 

By default, `postgres` has privileges granted to the `rds_superuser` role, and permissions to create roles and databases. The `rds_superuser` role allows the `postgres` user to do the following: 
+ Add extensions that are available for use with Aurora PostgreSQL. For more information, see [Working with extensions and foreign data wrappers](Appendix.PostgreSQL.CommonDBATasks.md). 
+ Create roles for users and grant privileges to users. For more information, see [CREATE ROLE](https://www.postgresql.org/docs/current/sql-createrole.html) and [GRANT](https://www.postgresql.org/docs/14/sql-grant.html) in the PostgreSQL documentation. 
+ Create databases. For more information, see [CREATE DATABASE](https://www.postgresql.org/docs/14/sql-createdatabase.html) in the PostgreSQL documentation.
+ Grant `rds_superuser` privileges to user roles that don't have these privileges, and revoke privileges as needed. We recommend that you grant this role only to those users who perform superuser tasks. In other words, you can grant this role to database administrators (DBAs) or system administrators.
+ Grant (and revoke) the `rds_replication` role to database users that don't have the `rds_superuser` role. 
+ Grant (and revoke) the `rds_password` role to database users that don't have the `rds_superuser` role. 
+ Obtain status information about all database connections by using the `pg_stat_activity` view. When needed, `rds_superuser` can stop any connections by using `pg_terminate_backend` or `pg_cancel_backend`. 

In the `CREATE ROLE postgres...` statement, you can see that the `postgres` user role specifically disallows PostgreSQL `superuser` permissions. Aurora PostgreSQL is a managed service, so you can't access the host OS, and you can't connect using the PostgreSQL `superuser` account. Many of the tasks that require `superuser` access on a stand-alone PostgreSQL are managed automatically by Aurora. 

For more information about granting privileges, see [GRANT](http://www.postgresql.org/docs/current/sql-grant.html) in the PostgreSQL documentation.

The `rds_superuser` role is one of several *predefined* roles in an Aurora PostgreSQL DB cluster. 

**Note**  
In PostgreSQL 13 and earlier releases, *predefined* roles are known as *default* roles.

In the following list, you find some of the other predefined roles that are created automatically for a new Aurora PostgreSQL DB cluster. Predefined roles and their privileges can't be changed. You can't drop, rename, or modify privileges for these predefined roles. Attempting to do so results in an error. 
+ **rds\$1password** – A role that can change passwords and set up password constraints for database users. The `rds_superuser` role is granted with this role by default, and can grant the role to database users. For more information, see [Controlling user access to the PostgreSQL databaseControlling user access to PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Access.md).
  + For RDS for PostgreSQL versions older than 14, `rds_password` role can change passwords and set up password constraints for database users and users with `rds_superuser` role. From RDS for PostgreSQL version 14 and later, `rds_password` role can change passwords and set up password constraints only for database users. Only users with `rds_superuser` role can perform these actions on other users with `rds_superuser` role. 
+ **rdsadmin** – A role that's created to handle many of the management tasks that the administrator with `superuser` privileges would perform on a standalone PostgreSQL database. This role is used internally by Aurora PostgreSQL for many management tasks. 

# Viewing roles and their privileges
<a name="Appendix.PostgreSQL.CommonDBATasks.Roles.View"></a>

You can view predefined roles and their privileges in your RDS for PostgreSQL DB instance using different commands depending on your PostgreSQL version. To see all predefined roles, you can connect to your RDS for PostgreSQL DB instance and run following commands using the `psql`.

**For `psql` 15 and earlier versions**

Connect to your RDS for PostgreSQL DB instance and use the `\du` command in psql:

```
postgres=> \du
                                                               List of roles
    Role name    |                         Attributes                         |                          Member of
-----------------+------------------------------------------------------------+------------------------------------------------------
 postgres        | Create role, Create DB                                    +| {rds_superuser}
                 | Password valid until infinity                              |
 rds_ad          | Cannot login                                               | {}
 rds_iam         | Cannot login                                               | {}
 rds_password    | Cannot login                                               | {}
 rds_replication | Cannot login                                               | {}
 rds_superuser   | Cannot login                                               | {pg_monitor,pg_signal_backend,rds_password,rds_replication}
 rdsadmin        | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}
                 | Password valid until infinity                              |
```

**For `psql` 16 and later versions**

```
postgres=> \drg+
                             List of role grants
   Role name   |          Member of          |       Options       | Grantor
---------------+-----------------------------+---------------------+----------
 postgres      | rds_superuser               | INHERIT, SET        | rdsadmin
 rds_superuser | pg_checkpoint               | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | pg_monitor                  | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | pg_signal_backend           | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | pg_use_reserved_connections | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | rds_password                | ADMIN, INHERIT, SET | rdsadmin
 rds_superuser | rds_replication             | ADMIN, INHERIT, SET | rdsadmin
```

To check role membership without version dependency, you can use the following SQL query:

```
SELECT m.rolname AS "Role name", r.rolname AS "Member of"
FROM pg_catalog.pg_roles m
JOIN pg_catalog.pg_auth_members pam ON (pam.member = m.oid)
LEFT JOIN pg_catalog.pg_roles r ON (pam.roleid = r.oid)
LEFT JOIN pg_catalog.pg_roles g ON (pam.grantor = g.oid)
WHERE m.rolname !~ '^pg_'
ORDER BY 1, 2;
```

In the output, you can see that `rds_superuser` isn't a database user role (it can't login), but it has the privileges of many other roles. You can also see that database user `postgres` is a member of the `rds_superuser` role. As mentioned previously, `postgres` is the default value in the Amazon RDS console's **Create database** page. If you chose another name, that name is shown in the list of roles instead. 

**Note**  
 Aurora PostgreSQL versions 15.2 and 14.7 introduced restrictive behavior of the `rds_superuser` role. An Aurora PostgreSQL user needs to be granted the `CONNECT` privilege on the corresponding database to connect even if the user is granted the `rds_superuser` role. Prior to Aurora PostgreSQL versions 14.7 and 15.2, a user was able to connect to any database and system table if the user was granted the `rds_superuser` role. This restrictive behavior aligns with the AWS and Amazon Aurora commitments to the continuous improvement of security.  
Please update the respective logic in your applications if the above enhancement has an impact.

# Controlling user access to the PostgreSQL database
<a name="Appendix.PostgreSQL.CommonDBATasks.Access"></a>

New databases in PostgreSQL are always created with a default set of privileges in the database's `public` schema that allow all database users and roles to create objects. These privileges allow database users to connect to the database, for example, and create temporary tables while connected.

To better control user access to the databases instances that you create on your Aurora PostgreSQL DB cluster primary node , we recommend that you revoke these default `public` privileges. After doing so, you then grant specific privileges for database users on a more granular basis, as shown in the following procedure. 

**To set up roles and privileges for a new database instance**

Suppose you're setting up a database on a newly created Aurora PostgreSQL DB cluster for use by several researchers, all of whom need read-write access to the database. 

1. Use `psql` (or pgAdmin) to connect to the primary DB instance on your Aurora PostgreSQL DB cluster: 

   ```
   psql --host=your-cluster-instance-1.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

   When prompted, enter your password. The `psql` client connects and displays the default administrative connection database, `postgres=>`, as the prompt.

1. To prevent database users from creating objects in the `public` schema, do the following:

   ```
   postgres=> REVOKE CREATE ON SCHEMA public FROM PUBLIC;
   REVOKE
   ```

1. Next, you create a new database instance:

   ```
   postgres=> CREATE DATABASE lab_db;
   CREATE DATABASE
   ```

1. Revoke all privileges from the `PUBLIC` schema on this new database.

   ```
   postgres=> REVOKE ALL ON DATABASE lab_db FROM public;
   REVOKE
   ```

1. Create a role for database users.

   ```
   postgres=> CREATE ROLE lab_tech;
   CREATE ROLE
   ```

1. Give database users that have this role the ability to connect to the database.

   ```
   postgres=> GRANT CONNECT ON DATABASE lab_db TO lab_tech;
   GRANT
   ```

1. Grant all users with the `lab_tech` role all privileges on this database.

   ```
   postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_db TO lab_tech;
   GRANT
   ```

1. Create database users, as follows:

   ```
   postgres=> CREATE ROLE lab_user1 LOGIN PASSWORD 'change_me';
   CREATE ROLE
   postgres=> CREATE ROLE lab_user2 LOGIN PASSWORD 'change_me';
   CREATE ROLE
   ```

1. Grant these two users the privileges associated with the lab\$1tech role:

   ```
   postgres=> GRANT lab_tech TO lab_user1;
   GRANT ROLE
   postgres=> GRANT lab_tech TO lab_user2;
   GRANT ROLE
   ```

At this point, `lab_user1` and `lab_user2` can connect to the `lab_db` database. This example doesn't follow best practices for enterprise usage, which might include creating multiple database instances, different schemas, and granting limited permissions. For more complete information and additional scenarios, see [Managing PostgreSQL Users and Roles](https://aws.amazon.com/blogs//database/managing-postgresql-users-and-roles/). 

For more information about privileges in PostgreSQL databases, see the [GRANT](https://www.postgresql.org/docs/current/static/sql-grant.html) command in the PostgreSQL documentation.

# Delegating and controlling user password management
<a name="Appendix.PostgreSQL.CommonDBATasks.RestrictPasswordMgmt"></a>

As a DBA, you might want to delegate the management of user passwords. Or, you might want to prevent database users from changing their passwords or reconfiguring password constraints, such as password lifetime. To ensure that only the database users that you choose can change password settings, you can turn on the restricted password management feature. When you activate this feature, only those database users that have been granted the `rds_password` role can manage passwords. 

**Note**  
To use restricted password management, your Aurora PostgreSQL DB cluster must be running Amazon Aurora PostgreSQL 10.6 or higher.

By default, this feature is `off`, as shown in the following:

```
postgres=> SHOW rds.restrict_password_commands;
  rds.restrict_password_commands
--------------------------------
 off
(1 row)
```

To turn on this feature, you use a custom parameter group and change the setting for `rds.restrict_password_commands` to 1. Be sure to reboot your Aurora PostgreSQL's primary DB instance so that the setting takes effect. 

With this feature active, `rds_password` privileges are needed for the following SQL commands:

```
CREATE ROLE myrole WITH PASSWORD 'mypassword';
CREATE ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01';
ALTER ROLE myrole WITH PASSWORD 'mypassword' VALID UNTIL '2023-01-01';
ALTER ROLE myrole WITH PASSWORD 'mypassword';
ALTER ROLE myrole VALID UNTIL '2023-01-01';
ALTER ROLE myrole RENAME TO myrole2;
```

Renaming a role (`ALTER ROLE myrole RENAME TO newname`) is also restricted if the password uses the MD5 hashing algorithm. 

With this feature active, attempting any of these SQL commands without the `rds_password` role permissions generates the following error: 

```
ERROR: must be a member of rds_password to alter passwords
```

We recommend that you grant the `rds_password` to only a few roles that you use solely for password management. If you grant `rds_password` privileges to database users that don't have `rds_superuser` privileges, you need to also grant them the `CREATEROLE` attribute.

Make sure that you verify password requirements such as expiration and needed complexity on the client side. If you use your own client-side utility for password related changes, the utility needs to be a member of `rds_password` and have `CREATE ROLE` privileges. 

# Using SCRAM for PostgreSQL password encryption
<a name="PostgreSQL_Password_Encryption_configuration"></a>

The *Salted Challenge Response Authentication Mechanism (SCRAM)* is an alternative to PostgreSQL's default message digest (MD5) algorithm for encrypting passwords. The SCRAM authentication mechanism is considered more secure than MD5. To learn more about these two different approaches to securing passwords, see [Password Authentication](https://www.postgresql.org/docs/14/auth-password.html) in the PostgreSQL documentation.

We recommend that you use SCRAM rather than MD5 as the password encryption scheme for your Aurora PostgreSQL DB cluster. SCRAM is supported in Aurora PostgreSQL version 10 and all higher major and minor versions. It's a cryptographic challenge-response mechanism that uses the scram-sha-256 algorithm for password authentication and encryption. 

You might need to update libraries for your client applications to support SCRAM. For example, JDBC versions before 42.2.0 don't support SCRAM. For more information, see [PostgreSQL JDBC Driver](https://jdbc.postgresql.org/changelogs/2018-01-17-42.2.0-release/) in the PostgreSQL JDBC Driver documentation. For a list of other PostgreSQL drivers and SCRAM support, see [List of drivers](https://wiki.postgresql.org/wiki/List_of_drivers) in the PostgreSQL documentation.

Aurora PostgreSQL version 14 and higher support scram-sha-256 for password encryption by default for new DB clusters. For these versions, the default DB cluster parameter group (`default.aurora-postgresql14`) has its `password_encryption` value set to scram-sha-256. SCRAM isn't supported for Aurora Serverless v1.

## Setting up Aurora PostgreSQL DB cluster to require SCRAM
<a name="PostgreSQL_Password_Encryption_configuration.preliminary"></a>

For Aurora PostgreSQL 14.3 and higher versions, you can require the Aurora PostgreSQL DB cluster to accept only passwords that use the scram-sha-256 algorithm.

**Important**  
For existing RDS Proxies with PostgreSQL databases, if you modify the database authentication to use `SCRAM` only, the proxy becomes unavailable for up to 60 seconds. To avoid the issue, do one of the following:  
Ensure that the database allows both `SCRAM` and `MD5` authentication.
To use only `SCRAM` authentication, create a new proxy, migrate your application traffic to the new proxy, then delete the proxy previously associated with the database.

Before making changes to your system, be sure you understand the complete process, as follows:
+ Get information about all roles and password encryption for all database users. 
+ Double-check the parameter settings for your Aurora PostgreSQL DB cluster for the parameters that control password encryption.
+ If your Aurora PostgreSQL DB cluster uses a default parameter group, you need to create a custom DB cluster parameter group and apply it to your Aurora PostgreSQL DB cluster so that you can modify parameters when needed. If your Aurora PostgreSQL DB cluster uses a custom parameter group, you can modify the necessary parameters later in the process, as needed. 
+ Change the `password_encryption` parameter to `scram-sha-256`.
+ Notify all database users that they need to update their passwords. Do the same for your `postgres` account. The new passwords are encrypted and stored using the scram-sha-256 algorithm.
+ Verify that all passwords are encrypted using as the type of encryption. 
+ If all passwords use scram-sha-256, you can change the `rds.accepted_password_auth_method` parameter from `md5+scram` to `scram-sha-256`. 

**Warning**  
After you change `rds.accepted_password_auth_method` to scram-sha-256 alone, any users (roles) with `md5`–encrypted passwords can't connect. 

### Getting ready to require SCRAM for your Aurora PostgreSQL DB cluster
<a name="PostgreSQL_Password_Encryption_configuration.getting-ready"></a>

Before making any changes to your Aurora PostgreSQL DB cluster, check all existing database user accounts. Also, check the type of encryption used for passwords. You can do these tasks by using the `rds_tools` extension. To see which PostgreSQL versions support `rds_tools`, see [Extension versions for Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html).

**To get a list of database users (roles) and password encryption methods**

1. Use `psql` to connect to the primary instance of your Aurora PostgreSQL DB cluster , as shown in the following.

   ```
   psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Install the `rds_tools` extension.

   ```
   postgres=> CREATE EXTENSION rds_tools;
   CREATE EXTENSION
   ```

1. Get a listing of roles and encryption.

   ```
   postgres=> SELECT * FROM 
         rds_tools.role_password_encryption_type();
   ```

   You see output similar to the following.

   ```
          rolname        | encryption_type
   ----------------------+-----------------
    pg_monitor           |
    pg_read_all_settings |
    pg_read_all_stats    |
    pg_stat_scan_tables  |
    pg_signal_backend    |
    lab_tester           | md5
    user_465             | md5
    postgres             | md5
   (8 rows)
   ```

### Creating a custom DB cluster parameter group
<a name="PostgreSQL_Password_Encryption_configuration.custom-parameter-group"></a>

**Note**  
If your Aurora PostgreSQL DB cluster already uses a custom parameter group, you don't need to create a new one. 

For an overview of parameter groups for Aurora, see [Creating a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md). 

The password encryption type used for passwords is set in one parameter, `password_encryption`. The encryption that the Aurora PostgreSQL DB cluster allows is set in another parameter, `rds.accepted_password_auth_method`. Changing either of these from the default values requires that you create a custom DB cluster parameter group and apply it to your cluster. 

You can also use the AWS Management Console or the RDS API to create a custom DB cluster parameter group . For more information, see [Creating a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md). 

You can now associate the custom parameter group with your DB instance. 

**To create a custom DB cluster parameter group**

1. Use the `[create-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-parameter-group.html)` CLI command to create the custom parameter group for the cluster. The following example uses `aurora-postgresql13` as the source for this custom parameter group. 

   For Linux, macOS, or Unix:

   ```
   aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \
     --db-parameter-group-family aurora-postgresql13  --description 'Custom DB cluster parameter group for SCRAM'
   ```

   For Windows:

   ```
   aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^
     --db-parameter-group-family aurora-postgresql13  --description "Custom DB cluster parameter group for SCRAM"
   ```

   You can now associate the custom parameter group with your cluster. 

1. Use the `[modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html)` CLI command to apply this custom parameter group to your Aurora PostgreSQL DB cluster.

   For Linux, macOS, or Unix:

   ```
   aws rds modify-db-cluster --db-cluster-identifier 'your-instance-name' \
           --db-cluster-parameter-group-name "docs-lab-scram-passwords
   ```

   For Windows:

   ```
   aws rds modify-db-cluster --db-cluster-identifier "your-instance-name" ^
           --db-cluster-parameter-group-name "docs-lab-scram-passwords
   ```

   To resynchronize your Aurora PostgreSQL DB cluster with your custom DB cluster parameter group, reboot the primary and all other instances of the cluster. 

### Configuring password encryption to use SCRAM
<a name="PostgreSQL_Password_Encryption_configuration.configure-password-encryption"></a>

The password encryption mechanism used by an Aurora PostgreSQL DB cluster is set in the DB cluster parameter group in the `password_encryption` parameter. Allowed values are unset, `md5`, or `scram-sha-256`. The default value depends on the Aurora PostgreSQL version, as follows:
+ Aurora PostgreSQL 14 – Default is `scram-sha-256`
+ Aurora PostgreSQL 13 – Default is `md5`

With a custom DB cluster parameter group attached to your Aurora PostgreSQL DB cluster, you can modify values for the password encryption parameter.

![\[Following, the RDS console shows the default values for the password_encryption parameters for Aurora PostgreSQL.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-pwd-encryption-md5-scram-1.png)


**To change password encryption setting to scram-sha-256**
+ Change the value of the password encryption to scram-sha-256, as shown following. The change can be applied immediately because the parameter is dynamic, so a restart isn't required for the change to take effect. 

  For Linux, macOS, or Unix:

  ```
  aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name \
    'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'
  ```

  For Windows:

  ```
  aws rds modify-db-parameter-group --db-parameter-group-name ^
    "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"
  ```

### Migrating passwords for user roles to SCRAM
<a name="PostgreSQL_Password_Encryption_configuration.migrating-users"></a>

You can migrate passwords for user roles to SCRAM as described following.

**To migrate database user (role) passwords from MD5 to SCRAM**

1. Log in as the administrator user (default user name, `postgres`) as shown following.

   ```
   psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Check the setting of the `password_encryption` parameter on your RDS for PostgreSQL DB instance by using the following command.

   ```
   postgres=> SHOW password_encryption;
    password_encryption
   ---------------------
    md5
    (1 row)
   ```

1. Change the value of this parameter to scram-sha-256. For more information, see [Configuring password encryption to use SCRAM](#PostgreSQL_Password_Encryption_configuration.configure-password-encryption). 

1.  Check the value again to make sure that it's now set to `scram-sha-256`, as follows. 

   ```
   postgres=> SHOW password_encryption;
    password_encryption
   ---------------------
    scram-sha-256
    (1 row)
   ```

1. Notify all database users to change their passwords. Be sure to also change your own password for account `postgres` (the database user with `rds_superuser` privileges). 

   ```
   labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me';
   ALTER ROLE
   ```

1. Repeat the process for all databases on your Aurora PostgreSQL DB cluster. 

### Changing parameter to require SCRAM
<a name="PostgreSQL_Password_Encryption_configuration.require-scram"></a>

This is the final step in the process. After you make the change in the following procedure, any user accounts (roles) that still use `md5` encryption for passwords can't log in to the Aurora PostgreSQL DB cluster. 

The `rds.accepted_password_auth_method` specifies the encryption method that the Aurora PostgreSQL DB cluster accepts for a user password during the login process. The default value is `md5+scram`, meaning that either method is accepted. In the following image, you can find the default setting for this parameter.

![\[The RDS console showing the default and allowed values for the rds.accepted_password_auth_method parameters.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/pwd-encryption-md5-scram-2.png)


The allowed values for this parameter are `md5+scram` or `scram` alone. Changing this parameter value to `scram` makes this a requirement. 

**To change the parameter value to require SCRAM authentication for passwords**

1. Verify that all database user passwords for all databases on your Aurora PostgreSQL DB cluster use `scram-sha-256` for password encryption. To do so, query `rds_tools` for the role (user) and encryption type, as follows. 

   ```
   postgres=> SELECT * FROM rds_tools.role_password_encryption_type();
     rolname        | encryption_type
     ----------------------+-----------------
     pg_monitor           |
     pg_read_all_settings |
     pg_read_all_stats    |
     pg_stat_scan_tables  |
     pg_signal_backend    |
     lab_tester           | scram-sha-256
     user_465             | scram-sha-256
     postgres             | scram-sha-256
     ( rows)
   ```

1. Repeat the query across all DB instances in your Aurora PostgreSQL DB cluster. 

   If all passwords use scram-sha-256, you can proceed. 

1. Change the value of the accepted password authentication to scram-sha-256, as follows.

   For Linux, macOS, or Unix:

   ```
   aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \
     --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'
   ```

   For Windows:

   ```
   aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^
     --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"
   ```

## Securing Aurora PostgreSQL data with SSL/TLS
<a name="AuroraPostgreSQL.Security.SSL"></a>

Amazon RDS supports Secure Socket Layer (SSL) and Transport Layer Security (TLS) encryption for Aurora PostgreSQL DB clusters. Using SSL/TLS, you can encrypt a connection between your applications and your Aurora PostgreSQL DB clusters. You can also force all connections to your Aurora PostgreSQL DB cluster to use SSL/TLS. Amazon Aurora PostgreSQL supports Transport Layer Security (TLS) versions 1.1 and 1.2. We recommend using TLS 1.2 for encrypted connections. We have added support for TLSv1.3 from the following versions of Aurora PostgreSQL:
+ 15.3 and all higher versions
+ 14.8 and higher 14 versions
+ 13.11 and higher 13 versions
+ 12.15 and higher 12 versions
+ 11.20 and higher 11 versions

For general information about SSL/TLS support and PostgreSQL databases, see [SSL support](https://www.postgresql.org/docs/current/libpq-ssl.html) in the PostgreSQL documentation. For information about using an SSL/TLS connection over JDBC, see [Configuring the client](https://jdbc.postgresql.org/documentation/head/ssl-client.html) in the PostgreSQL documentation.

**Topics**
+ [Requiring an SSL/TLS connection to an Aurora PostgreSQL DB cluster](#AuroraPostgreSQL.Security.SSL.Requiring)
+ [Determining the SSL/TLS connection status](#AuroraPostgreSQL.Security.SSL.Status)
+ [Configuring cipher suites for connections to Aurora PostgreSQL DB clusters](#AuroraPostgreSQL.Security.SSL.ConfiguringCipherSuites)

SSL/TLS support is available in all AWS Regions for Aurora PostgreSQL. Amazon RDS creates an SSL/TLS certificate for your Aurora PostgreSQL DB cluster when the DB cluster is created. If you enable SSL/TLS certificate verification, then the SSL/TLS certificate includes the DB cluster endpoint as the Common Name (CN) for the SSL/TLS certificate to guard against spoofing attacks. 

**To connect to an Aurora PostgreSQL DB cluster over SSL/TLS**

1. Download the certificate.

   For information about downloading certificates, see [Using SSL/TLS to encrypt a connection to a DB cluster](UsingWithRDS.SSL.md).

1. Import the certificate into your operating system.

1. Connect to your Aurora PostgreSQL DB cluster over SSL/TLS.

   When you connect using SSL/TLS, your client can choose to verify the certificate chain or not. If your connection parameters specify `sslmode=verify-ca` or `sslmode=verify-full`, then your client requires the RDS CA certificates to be in their trust store or referenced in the connection URL. This requirement is to verify the certificate chain that signs your database certificate.

   When a client, such as psql or JDBC, is configured with SSL/TLS support, the client first tries to connect to the database with SSL/TLS by default. If the client can't connect with SSL/TLS, it reverts to connecting without SSL/TLS. By default, the `sslmode` option for JDBC and libpq-based clients is set to `prefer`. 

   Use the `sslrootcert` parameter to reference the certificate, for example `sslrootcert=rds-ssl-ca-cert.pem`.

The following is an example of using psql to connect to an Aurora PostgreSQL DB cluster.

```
$ psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 \
    "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"
```

### Requiring an SSL/TLS connection to an Aurora PostgreSQL DB cluster
<a name="AuroraPostgreSQL.Security.SSL.Requiring"></a>

To require SSL/TLS connections to your Aurora PostgreSQL DB cluster, use `rds.force_ssl` parameter.
+ To require SSL/TLS connections, set the `rds.force_ssl` parameter value to 1 (on).
+ To turn off required SSL/TLS connections, set the `rds.force_ssl` parameter value to 0 (off).

The default value of this parameter depends on the Aurora PostgreSQL version:
+ For Aurora PostgreSQL versions 17 and later: The default value is 1 (on).
+ For Aurora PostgreSQL versions 16 and older: The default value is 0 (off).

**Note**  
When you perform a major version upgrade from Aurora PostgreSQL version 16 or earlier to version 17 or later, the default value of the parameter changes from 0 (off) to 1 (on). This change may cause connectivity failures for applications that are not configured for SSL. You can revert to the previous default behavior by setting this parameter to 0 (off).

For more information on handling parameters, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

Updating the `rds.force_ssl` parameter also sets the PostgreSQL `ssl` parameter to 1 (on) and modifies your DB cluster's `pg_hba.conf` file to support the new SSL/TLS configuration.

When the `rds.force_ssl` parameter is set to 1 for a DB cluster, you see output similar to the following when you connect, indicating that SSL/TLS is now required:

```
$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser
psql (9.3.12, server 9.4.4)
WARNING: psql major version 9.3, server major version 9.4.
Some psql features might not work.
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=>
```

### Determining the SSL/TLS connection status
<a name="AuroraPostgreSQL.Security.SSL.Status"></a>

The encrypted status of your connection is shown in the logon banner when you connect to the DB cluster.

```
Password for user master: 
psql (9.3.12) 
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) 
Type "help" for help.   

postgres=>
```

You can also load the `sslinfo` extension and then call the `ssl_is_used()` function to determine if SSL/TLS is being used. The function returns `t` if the connection is using SSL/TLS, otherwise it returns `f`.

```
postgres=> create extension sslinfo;
CREATE EXTENSION

postgres=> select ssl_is_used();
 ssl_is_used
---------
t
(1 row)
```

You can use the `select ssl_cipher()` command to determine the SSL/TLS cipher:

```
postgres=> select ssl_cipher();
ssl_cipher
--------------------
DHE-RSA-AES256-SHA
(1 row)
```

 If you enable `set rds.force_ssl` and restart your DB cluster, non-SSL connections are refused with the following message:

```
$ export PGSSLMODE=disable
$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser
psql: FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off
$
```

For information about the `sslmode` option, see [Database connection control functions](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) in the PostgreSQL documentation.

### Configuring cipher suites for connections to Aurora PostgreSQL DB clusters
<a name="AuroraPostgreSQL.Security.SSL.ConfiguringCipherSuites"></a>

By using configurable cipher suites, you can have more control over the security of your database connections. You can specify a list of cipher suites that you want to allow to secure client SSL/TLS connections to your database. With configurable cipher suites, you can control the connection encryption that your database server accepts. Doing this helps prevent the use of insecure or deprecated ciphers.

Configurable cipher suites is supported in Aurora PostgreSQL versions 11.8 and higher.

To specify the list of permissible ciphers for encrypting connections, modify the `ssl_ciphers` cluster parameter. Set the `ssl_ciphers` parameter to a string of comma-separated cipher values in a cluster parameter group using the AWS Management Console, the AWS CLI, or the RDS API. To set cluster parameters, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md).

The following table shows the supported ciphers for the valid Aurora PostgreSQL engine versions.


| Aurora PostgreSQL engine versions | Supported ciphers | TLS 1.1 | TLS 1.2 | TLS 1.3 | 
| --- | --- | --- | --- | --- | 
| 9.6, 10.20 and lower, 11.15 and lower, 12.10 and lower, 13.6 and lower | DHE-RSA-AES128-SHA DHE-RSA-AES128-SHA256 DHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-SHA DHE-RSA-AES256-SHA256 DHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-SHA ECDHE-ECDSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-SHA384 ECDHE-RSA-AES128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-SHA ECDHE-RSA-AES256-GCM-SHA384 | Yes No No No No No Yes No No Yes No No Yes No | No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes |  No No No No No No No No No No No No No No  | 
| 10.21, 11.16, 12.11, 13.7, 14.3 and 14.4 |  ECDHE-RSA-AES128-SHATLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1CHACHA20\$1POLY1305\$1SHA256 | Yes No Yes No Yes No Yes No No Yes No Yes No | Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes | No No No No No No No No No No No No No | 
| 10.22 , 11.17 , 12.12 , 13.8 , 14.5 , and 15.2 |  TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1CHACHA20\$1POLY1305\$1SHA256 |  Yes No No Yes No Yes No No Yes No No Yes No Yes Yes No  | Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes | No No No No No No No No No No No No No No No No | 
| 11.20, 12.15, 13.11, 14.8, 15.3, 16.1 and higher | TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1RSA\$1WITH\$1AES\$1256\$1GCM\$1SHA384 TLS\$1RSA\$1WITH\$1AES\$1256\$1CBC\$1SHA TLS\$1RSA\$1WITH\$1AES\$1128\$1GCM\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA256 TLS\$1RSA\$1WITH\$1AES\$1128\$1CBC\$1SHA TLS\$1ECDHE\$1RSA\$1WITH\$1CHACHA20\$1POLY1305\$1SHA256 TLS\$1AES\$1128\$1GCM\$1SHA256 TLS\$1AES\$1256\$1GCM\$1SHA384  | Yes No No Yes No Yes No No Yes No No Yes No Yes Yes No No No | Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No |  No No No No No No No No No No No No No No No No Yes Yes  | 

You can also use the [describe-engine-default-cluster-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-engine-default-cluster-parameters.html) CLI command to determine which cipher suites are currently supported for a specific parameter group family. The following example shows how to get the allowed values for the `ssl_cipher` cluster parameter for Aurora PostgreSQL 11.

```
aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-postgresql11
                
    ...some output truncated...
	{
		"ParameterName": "ssl_ciphers",
		"Description": "Sets the list of allowed TLS ciphers to be used on secure connections.",
		"Source": "engine-default",
		"ApplyType": "dynamic",
		"DataType": "list",
		"AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,
		ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384,
		TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
		TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
		"IsModifiable": true,
		"MinimumEngineVersion": "11.8",
		"SupportedEngineModes": [
			"provisioned"
		]
	},
    ...some output truncated...
```

The `ssl_ciphers` parameter defaults to all allowed cipher suites. For more information about ciphers, see the [ssl\$1ciphers](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL-CIPHERS) variable in the PostgreSQL documentation. 

# Using dynamic masking with Aurora PostgreSQL
<a name="AuroraPostgreSQL.Security.DynamicMasking"></a>

Dynamic data masking is a security feature that protects sensitive data in Aurora PostgreSQL databases by controlling how data appears to users at query time. Aurora implements it through the `pg_columnmask` extension. `pg_columnmask` provides column-level data protection that complements PostgreSQL's native row-level security and granular access control mechanisms.

With `pg_columnmask`, you create masking policies that determine data visibility based on user roles. When users query tables with masking policies, Aurora PostgreSQL applies the appropriate masking function at query time based on the user's role and policy weight. The underlying data remains unchanged in storage.

`pg_columnmask` supports the following capabilities:
+ **Built-in and custom masking functions** – Use pre-built functions for common patterns like email and text masking, or create your own custom functions to protects sensitive data (PII) through SQL-based masking policies.
+ **Multiple masking strategies** – Completely hide information, replace partial values with wildcards, or define custom masking approaches.
+ **Policy prioritization** – Define multiple policies for a single column. Use weights to determine which masking policy should be used when multiple policies apply to a column. Aurora PostgreSQL applies policies based on weight and user role membership. 

`pg_columnmask` is available on Aurora PostgreSQL version 16.10 and higher, and version 17.6 and higher. It is available is available at no additional cost.

# Getting started with dynamic masking
<a name="AuroraPostgreSQL.Security.DynamicMasking.GetStarted"></a>

To dynamically mask data, you install the `pg_columnmask` extension in your database and create masking policies for your tables. The setup process involves prerequisite verification, extension installation, role configuration, policy creation, and validation testing.

## Extension installation and configuration
<a name="AuroraPostgreSQL.Security.DynamicMasking.GetStarted.Installation"></a>

Connect to your Aurora PostgreSQL cluster using the RDS Console Query Editor or a PostgreSQL client such as psql with rds\$1superuser (master user) credentials.

Execute the extension creation command to enable `pg_columnmask` functionality:

```
CREATE EXTENSION pg_columnmask;
```

This command installs the `pg_columnmask` extension, creates the necessary catalog tables, and registers the built-in masking functions. The extension installation is database-specific, meaning you must install it separately in each database where the functionality is required.

**Note**  
Connections made before installing this extension will still show unmasked data. Close and reconnect to fix this.

Verify the extension installation by checking the available masking functions:

```
SELECT proname FROM pg_proc
    WHERE pronamespace = 'pgcolumnmask'::regnamespace AND proname LIKE 'mask_%';
    proname     
--------Output --------
 mask_email
 mask_text
 mask_timestamp
(3 rows)
```

# Procedures for managing data masking policies
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures"></a>

You can manage masking policies using procedures provided by the `pg_columnmask` extension. To create, modify, or drop masking policies, you must have one of the following privileges:
+ Owner of the table on which you are creating the `pg_columnmask` policy.
+ Member of `rds_superuser`.
+ Member of `pg_columnmask` policy manager role set by the `pgcolumnmask.policy_admin_rolname` parameter.

The following command creates a table that is used in subsequent sections:

```
CREATE TABLE public.customers (
    id SERIAL PRIMARY KEY,
    name TEXT,
    phone TEXT,
    address TEXT,
    email TEXT
);
```

## CREATE\$1MASKING\$1POLICY
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.CreateMaskingPolicy"></a>

The following procedure creates a new masking policy for a user table:

**Syntax**

```
create_masking_policy(
    policy_name,
    table_name,
    masking_expressions,
    roles,
    weight)
```

**Arguments**


| Parameter | Datatype | Description | 
| --- | --- | --- | 
| policy\$1name | NAME |  The name of the masking policy. Must be unique per table.  | 
| table\$1name | REGCLASS |  The qualified/unqualified name or oid of the table to apply masking policy.  | 
| masking\$1expressions | JSONB |  JSON object containing column name and masking function pairs. Each key is a column name and its value is the masking expression to be applied on that column.  | 
| roles | NAME[] |  The roles to which this masking policy applies. Default is PUBLIC.  | 
| weight | INT |  Weight of the masking policy. When multiple policies are applicable to a given user's query, the policy with the highest weight (higher integer number) will be applied to each masked column. Default is 0. No two masking policies on the table can have the same wieght.  | 

**Return type**

None

**Example of creating a masking policy that masks the email column for the `test_user` role:**  

```
CALL pgcolumnmask.create_masking_policy(
    'customer_mask',
    'public.customers',
    JSON_OBJECT('{
        "email", "pgcolumnmask.mask_email(email)"
    }')::JSONB,
    ARRAY['test_user'],
    100
);
```

## ALTER\$1MASKING\$1POLICY
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.AlterMaskingPolicy"></a>

This procedure modifies an existing masking policy. `ALTER_MASKING_POLICY` can modify the policy masking expressions, set of roles to which the policy applies and the weight of the masking policy. When one of those parameters is omitted, the corresponding part of the policy is unchanged.

**Syntax**

```
alter_masking_policy(
    policy_name,
    table_name,
    masking_expressions,
    roles,
    weight)
```

**Arguments**


| Parameter | Datatype | Description | 
| --- | --- | --- | 
| policy\$1name | NAME |  Existing name of the masking policy.  | 
| table\$1name | REGCLASS |  The qualified/unqualified name oid of the table containing the masking policy.  | 
| masking\$1expressions | JSONB |  New JSON object containing column name and masking function pairs or NULL otherwise.  | 
| roles | NAME[] |  The list of new roles to which this masking policy applies or NULL otherwise.  | 
| weight | INT |  New weight for the masking policy or NULL otherwise.  | 

**Return type**

None

**Example of adding the analyst role to an existing masking policy without changing other policy attributes.**  

```
CALL pgcolumnmask.alter_masking_policy(
    'customer_mask',
    'public.customers',
    NULL,
    ARRAY['test_user', 'analyst'],
    NULL 
);

-- Alter the weight of the policy without altering other details
CALL pgcolumnmask.alter_masking_policy(
    'customer_mask',
    'customers',
    NULL,
    NULL,
    4
);
```

## DROP\$1MASKING\$1POLICY
<a name="AuroraPostgreSQL.Security.DynamicMasking.Procedures.DropMaskingPolicy"></a>

This procedure removes an existing masking policy.

**Syntax**

```
drop_masking_policy(
        policy_name,
        table_name)
```

**Arguments**


| Parameter | Datatype | Description | 
| --- | --- | --- | 
| policy\$1name | NAME |  Existing name of the masking policy.  | 
| table\$1name | REGCLASS |  The qualified/unqualified name oid of the table containing the masking policy.  | 

**Return type**

None

**Example of dropping the masking policy customer\$1mask**  

```
-- Drop a masking policy
    CALL pgcolumnmask.drop_masking_policy(
        'customer_mask',
        'public.customers',
    );
```

# Escaping identifiers in masking policy DDL procedure
<a name="AuroraPostgreSQL.Security.DynamicMasking.EscapeIdentifiers"></a>

When creating data masking policies with quoted identifiers, proper escaping is required to ensure correct object references and policy application. To use quoted identifiers inside the `pg_columnmask` masking policy management procedures:
+ **Policy name** – Must be enclosed in double quotes.
+ **Table name** – Both schema name and table name must be enclosed in double quotes individually when required.
+ **Masking expressions** – Column and function names in masking expressions must be enclosed in double quotes and the quotes themselves must be escaped using a backslash.
+ **Roles** – The array of role names is automatically quoted. The role name should exactly match the name as seen in `pg_roles` including case sensitivity.

**Example of escaping and quoting syntax**  
This example shows the proper escaping and quoting syntax when creating masking policies for tables, columns, functions, and roles that use mixed-case names or require quoted identifiers in Aurora PostgreSQL.  

```
-- Create a table and columns with mixed case name 
CREATE TABLE public."Employees" (
    "Name" TEXT,
    "Email" TEXT,
    ssn VARCHAR(20)
);

-- Create a role with mixed case name
CREATE ROLE "Masked_user";

-- Create a function with mixed case name
CREATE OR REPLACE FUNCTION public."MaskEmail"(text)
    RETURNS character varying
    LANGUAGE plpgsql
    IMMUTABLE PARALLEL SAFE
    AS $$ BEGIN
        RETURN 'XXXXXXXX'::text;
    END $$;

-- Now use these objects with mixed case names in
-- masking policy management procedures
CALL pgcolumnmask.create_masking_policy(
    '"Policy1"',  -- policy name should be surrounded with double quotes for quoting
    'public."Employees"', -- table and schema name should be individually 
                          -- surrounded with double quotes for quoting
    JSON_OBJECT('{
        "\"Email\"", "\"MaskEmail\"(\"Email\")"
    }')::JSONB, -- masking expression should have double quotes around function names
                -- and columns names etc when needed. Also the double quotes itself
                -- should be escaped using \ (backslash) since this is a JSON string
    ARRAY['Masked_user'], -- Rolename do not need quoting
                          -- (this behaviour may change in future release)
    100
);

SELECT * FROM pgcolumnmask.pg_columnmask_policies
    WHERE tablename = 'Employees';
-[ RECORD 1 ]-----+-------------------------------------
schemaname        | public
tablename         | Employees
policyname        | Policy1
roles             | {Masked_user}
masked_columns    | {Email}
masking_functions | {"(\"MaskEmail\"(\"Email\"))::text"}
weight            | 100
```

## Administrative views
<a name="AuroraPostgreSQL.Security.DynamicMasking.AdminViews"></a>

You can review all the `pg_columnmask` policy using the publicly accessible `pgcolumnmask.pg_columnmask_policies` administrative view. Following information is available using this view. The view only returns the masking policies owned by current user.


| Column name | Data type | Description | 
| --- | --- | --- | 
|  schemaname  | NAME |  Schema of the relation to which the policy is attached  | 
|  tablename  | NAME |  Name of the relation to which the policy is attached  | 
|  policyname  | NAME |  Name of the masking policy, all masking policies have unique names  | 
|  roles  | TEXT[] |  Role to which policy applies.  | 
|  masked\$1columns  | TEXT[] |  Masked columns  | 
|  masking\$1functions  | TEXT[] |  Masking functions  | 
| weight | INT |  Weight of the attached policy  | 

# Pre-defined data masking functions
<a name="AuroraPostgreSQL.Security.DynamicMasking.PredefinedMaskingFunctions"></a>

`pg_columnmask` extension provides built-in utility functions written in C language (for faster execution) which can be used as masking expression for `pg_columnmask` policies.

**mask\$1text**

A function to mask text data with configurable visibility options.

**Arguments**


| Parameter | Datatype | Description | 
| --- | --- | --- | 
| input | TEXT |  The original text string to be masked  | 
| mask\$1char | CHAR(1) |  Character used for masking (default: 'X')  | 
| visible\$1prefix | INT |  Number of characters at the beginning of input text that will remain unmasked (default: 0)  | 
| visible\$1suffix | INT |  Number of characters at the end of input text that will remain unmasked (default: 0)  | 
| use\$1hash\$1mask | BOOLEAN |  If TRUE, uses a hash-based masking instead of mask\$1char (default: FALSE)  | 

**Example of using different masking options**  
Mask the entire input string with the default 'X' character  

```
postgres=> SELECT pgcolumnmask.mask_text('Hello World');
  mask_text  
-------------
 XXXXXXXXXXX
```
Use the `mask_char` argument to mask text input using a different character  

```
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*');
  mask_text  
-------------
 ***********
```
Use `visible_prefix` and `visible_suffix` parameters to control how many characters remain unmasked at the start and end of the text  

```
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 5, 1);
  mask_text  
-------------
 Hello*****d
```
When `use_hash_mask` is true the input string is masked using random characters `mask_char` argument is ignored but `visible_prefix` and `visible_suffix` are still honored  

```
postgres=> SELECT pgcolumnmask.mask_text('Hello World', '*', 2, 2, true);
  mask_text  
-------------
 Hex36dOHild
```

**mask\$1timestamp**


| Parameter | Datatype | Description | 
| --- | --- | --- | 
| ts\$1to\$1mask | TIMESTAMP |  The original timestamp to be masked  | 
| mask\$1part | TEXT |  Specifies which part of the timestamp to mask (default: 'all') Valid values: 'year', 'month', 'day', 'hour', 'minute', 'second', 'all'  | 
| mask\$1value | TIMESTAMP |  The timestamp value to use for masking (default: '1900-01-01 00:00:00')  | 

**Example of using `mask_timestamps`**  
These examples demonstrate complete timestamp masking to a default value, partial masking of specific timestamp components (year only), and masking with a custom replacement value.  
Completely mask input value to the default timestamp  

```
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00');
   mask_timestamp    
---------------------
 1900-01-01 00:00:00
```
To mask only one part of the timestamp from example only the year  

```
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'year');
   mask_timestamp    
---------------------
 1900-06-15 14:30:00
```
To change the masked value for timestamp use the `mask_value` argument  

```
postgres=> SELECT pgcolumnmask.mask_timestamp('2023-06-15 14:30:00', 'all', '2012-12-12 12:12:12');
   mask_timestamp    
---------------------
 2012-12-12 12:12:12
```

**mask\$1timestamp**

A function to mask email addresses while preserving email structure.


| Parameter | Datatype | Description | 
| --- | --- | --- | 
| input | TEXT |  The original email address to be masked  | 
| mask\$1char | CHAR(1) |  Character used for masking (default: 'X')  | 
| mask\$1local | BOOLEAN |  If TRUE, masks the local part of email (before @) (default: TRUE)  | 
| mask\$1domain | BOOLEAN |  If TRUE, masks the domain part of email (after @) (default: TRUE)  | 

**Example of using `mask_email`**  
These examples demonstrate complete email masking, custom mask characters, and selective masking of either the local part or domain part of the email address.  
Complete masking  

```
postgres=> SELECT pgcolumnmask.mask_email('user@example.com');
    mask_email    
------------------
 XXXX@XXXXXXX.com
```
Use `mask_char` to change the character used for masking  

```
postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*');
    mask_email    
------------------
 ****@*******.com
```
Use `mask_local` and `mask_domain` to control masking on local and domain  

```
postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*', true, false);
    mask_email    
------------------
 ****@example.com

postgres=> SELECT pgcolumnmask.mask_email('user@example.com', '*', false, true);
    mask_email    
------------------
 user@*******.com
```

# Implementing pg\$1columnmask in an end-to-end workflow
<a name="AuroraPostgreSQL.Security.DynamicMasking.WorkflowExample"></a>

This section demonstrates a complete implementation of `pg_columnmask` using a sample employee table with sensitive data. You'll learn how to create custom masking functions, define multiple masking policies with different weight levels for various roles (intern, support, analyst), and observe how users with single or multiple role memberships see different levels of masked data. The examples also cover masking behavior in DML statements with RETURNING clauses, triggers on tables versus views, and policy management operations including renaming, altering weights, and cleanup.

1. Create a sample table with some sensitive data:

   ```
   CREATE SCHEMA hr;
   
   CREATE TABLE hr.employees (
       id INT PRIMARY KEY,
       name TEXT NOT NULL,
       email TEXT,
       ssn TEXT,
       salary NUMERIC(10,2)
    );
   
   INSERT INTO hr.employees VALUES
       (1, 'John Doe', 'john.doe@example.com', '123-45-6789', 50000.00),
       (2, 'Jane Smith', 'jane.smith@example.com', '987-65-4321', 60000.00);
   ```

1. Create custom masking functions:

   ```
   CREATE OR REPLACE FUNCTION public.mask_ssn(ssn TEXT)
       RETURNS TEXT AS $$
       BEGIN
           RETURN 'XXX-XX-' || RIGHT(ssn, 4);
       END;
       $$ LANGUAGE plpgsql;
   
   CREATE OR REPLACE FUNCTION public.mask_salary(salary NUMERIC, multiplier NUMERIC DEFAULT 0.0)
       RETURNS NUMERIC AS $$
       BEGIN
           RETURN salary * multiplier;
       END;
       $$ LANGUAGE plpgsql;
   ```

1. Create multiple policies with different masking levels based on user roles:

   ```
   -- Create different roles
   CREATE ROLE analyst_role;
   CREATE ROLE support_role;
   CREATE ROLE intern_role;
   
   GRANT USAGE ON SCHEMA hr TO analyst_role, support_role, intern_role;
   GRANT SELECT ON hr.employees TO analyst_role, support_role, intern_role;
   ----------------------------------------------------------------------
   
   -- Low-Weight Policy (Intern)
   CALL pgcolumnmask.create_masking_policy(
       'employee_mask_strict',
       'hr.employees',
       JSON_BUILD_OBJECT('name', 'pgcolumnmask.mask_text(name, ''*'')',
                         'email', 'pgcolumnmask.mask_email(email)',
                         'ssn', 'pgcolumnmask.mask_text(ssn, ''*'')',
                         'salary', 'public.mask_salary(salary)')::JSONB,
       ARRAY['intern_role'],
       10  -- Lowest weight
   );
   
   ----------------------------------------------------------------------
   -- Medium-Weight Policy (Support)
   CALL pgcolumnmask.create_masking_policy(
       'employee_mask_moderate',
       'hr.employees',
       JSON_BUILD_OBJECT('email', 'pgcolumnmask.mask_email(email, ''#'')',
                         'ssn', 'public.mask_ssn(ssn)',
                         'salary', 'public.mask_salary(salary)')::JSONB,
       ARRAY['support_role'],
       50   -- Medium weight
   );
   
   ----------------------------------------------------------------------
   -- High-Weight Policy (Analyst)
   CALL pgcolumnmask.create_masking_policy(
       'employee_mask_light',
       'hr.employees',
       JSON_BUILD_OBJECT('ssn', 'public.mask_ssn(ssn)',
                         'salary', 'public.mask_salary(salary, 0.9)')::JSONB,
       ARRAY['analyst_role'],
       100   -- Highest weight
   );
   ```

1. The following examples demonstrate how different users see data based on their role membership and policy weights.

   ```
   -- Create users
   CREATE USER sarah_intern;
   GRANT intern_role TO sarah_intern;
   
   CREATE USER lisa_support;
   GRANT support_role TO lisa_support;
   
   CREATE USER mike_analyst;
   GRANT analyst_role TO mike_analyst;
   
   CREATE USER ethan_support_intern;
   GRANT support_role, intern_role TO ethan_support_intern;
   
   CREATE USER john_analyst_intern;
   GRANT analyst_role, intern_role TO john_analyst_intern;
   ```

   As an intern (strictest masking):

   ```
   SET ROLE sarah_intern;
   
   SELECT * FROM hr.employees;
    id |    name    |         email          |     ssn     | salary 
   ----+------------+------------------------+-------------+--------
     1 | ********   | XXXXXXXX@XXXXXXX.com   | *********** |   0.00
     2 | ********** | XXXXXXXXXX@XXXXXXX.com | *********** |   0.00
   ```

   As a support user (moderate masking):

   ```
   SET ROLE lisa_support;
   
   SELECT * FROM hr.employees;
    id |    name    |         email          |     ssn     | salary 
   ----+------------+------------------------+-------------+--------
     1 | John Doe   | ########@#######.com   | XXX-XX-6789 |   0.00
     2 | Jane Smith | ##########@#######.com | XXX-XX-4321 |   0.00
   ```

   As an analyst (lightest masking):

   ```
   SET ROLE mike_analyst;
   
   SELECT * FROM hr.employees;
    id |    name    |         email          |     ssn     |  salary  
   ----+------------+------------------------+-------------+----------
     1 | John Doe   | john.doe@example.com   | XXX-XX-6789 | 45000.00
     2 | Jane Smith | jane.smith@example.com | XXX-XX-4321 | 54000.00
   ```

   As ethan\$1support\$1intern user which is both intern and support user:

   ```
   SET ROLE ethan_support_intern;
   
   -- masking policies appliable to this user: employee_mask_strict and employee_mask_moderate
   -- id : unmasked because no masking policy appliable on ethan_support_intern
   --            masks these columns
   -- name : masked because of employee_mask_strict policy
   -- email, ssn, salary : both employee_mask_strict and employee_mask_moderate mask these columns
   --                      but employee_mask_moderate will be use because of higher weight 
   
   SELECT * FROM hr.employees;
    id |    name    |         email          |     ssn     | salary 
   ----+------------+------------------------+-------------+--------
     1 | ********   | ########@#######.com   | XXX-XX-6789 |   0.00
     2 | ********** | ##########@#######.com | XXX-XX-4321 |   0.00
   ```

   As a john\$1analyst\$1intern which is both intern and analyst:

   ```
   SET ROLE john_analyst_intern;
   
   -- masking policies appliable to this user: employee_mask_strict and employee_mask_light
   -- id : unmasked because no masking policy appliable on john_analyst_intern
   --            masks these columns
   -- name, email : masked because of employee_mask_strict
   -- ssn, salary : both employee_mask_strict and employee_mask_light mask these columns
   --               but employee_mask_light will be use because of higher weight 
   
   SELECT * FROM hr.employees;
    id |    name    |         email          |     ssn     |  salary  
   ----+------------+------------------------+-------------+----------
     1 | ********   | XXXXXXXX@XXXXXXX.com   | XXX-XX-6789 | 45000.00
     2 | ********** | XXXXXXXXXX@XXXXXXX.com | XXX-XX-4321 | 54000.00
   ```

# Understanding masking behavior in DML operations
<a name="AuroraPostgreSQL.Security.DynamicMasking.DMLMasking"></a>

`pg_columnmask` applies consistently across all DML operations, including INSERT, UPDATE, DELETE, and MERGE statements. When you execute these operations, Aurora PostgreSQL masks data according to a core principle – any data read from storage is masked according to the current user's applicable policies.

Masking affects some of the following query components like:
+ WHERE clauses
+ JOIN conditions
+ Subqueries
+ RETURNING clauses

All of these components operate on masked values, not the original data. While data is written to storage unmasked, users only see their masked view when reading it back.

Aurora PostgreSQL enforces all database constraints (NOT NULL, UNIQUE, CHECK, FOREIGN KEY) on the actual stored values, not masked values. This can occasionally create apparent inconsistencies if masking functions aren't carefully designed.

Masking works alongside column-level permissions:
+ Users without SELECT privileges cannot read columns
+ Users with SELECT privileges see masked values according to their applicable policies

# Understanding masking behavior in trigger functions
<a name="AuroraPostgreSQL.Security.DynamicMasking.TriggerFunctionMasking"></a>

When `pg_columnmask` policies are applied to tables, it's important to understand how masking interacts with trigger functions. Triggers are database functions that execute automatically in response to certain events on a table, such as INSERT, UPDATE, or DELETE operations.

By default, DDM applies different masking rules depending on the type of trigger:

Table triggers  
**Transition tables are unmasked** – Trigger functions on tables have access to unmasked data in their transition tables for both old and new row versions  
Table owners create triggers and own the data, so they have full access to manage their tables effectively

View Triggers (INSTEAD OF Triggers)  
**Transition tables are masked** – Trigger functions on views see masked data according to the current user's permissions  
View owners may differ from base table owners and should respect masking policies on underlying tables

Two server-level configuration parameters control trigger behavior with masked tables. These can only be set by `rds_superuser`:
+ **Restrict Triggers on Masked Tables** – Prevents trigger execution when a masked user performs DML operations on tables with applicable masking policies.
+ **Restrict Triggers on Views with Masked Tables:** – Prevents trigger execution on views when the view definition includes tables with masking policies applicable to the current user.

**Example of differences between function application to table and view**  
The following example creates a trigger function that prints old and new row values, then demonstrates how the same function behaves differently when attached to a table versus a view.  

```
-- Create trigger function
CREATE OR REPLACE FUNCTION print_changes()
    RETURNS TRIGGER AS
    $$
        BEGIN
        RAISE NOTICE 'Old row: name=%, email=%, ssn=%, salary=%',
            OLD.name, OLD.email, OLD.ssn, OLD.salary;
        
        RAISE NOTICE 'New row: name=%, email=%, ssn=%, salary=%',
            NEW.name, NEW.email, NEW.ssn, NEW.salary;
        
        RETURN NEW;
        END;
    $$ LANGUAGE plpgsql;

-- Create trigger
CREATE TRIGGER print_changes_trigger
    BEFORE UPDATE ON hr.employees
    FOR EACH ROW
    EXECUTE FUNCTION print_changes();

-- Grant update to analyst role
GRANT UPDATE ON hr.employees TO analyst_role;

-- Unmasked data must be seen inside trigger even for masked user for the OLD and NEW
-- row passed to trigger function
BEGIN;
SET ROLE mike_analyst;
UPDATE hr.employees SET id = id + 10 RETURNING *;
NOTICE:  Old row: name=John Doe, email=john.doe@example.com, ssn=123-45-6789, salary=50000.00
NOTICE:  New row: name=John Doe, email=john.doe@example.com, ssn=123-45-6789, salary=50000.00
NOTICE:  Old row: name=Jane Smith, email=jane.smith@example.com, ssn=987-65-4321, salary=60000.00
NOTICE:  New row: name=Jane Smith, email=jane.smith@example.com, ssn=987-65-4321, salary=60000.00
 id |    name    |         email          |     ssn     |  salary  
----+------------+------------------------+-------------+----------
 11 | John Doe   | john.doe@example.com   | XXX-XX-6789 | 45000.00
 12 | Jane Smith | jane.smith@example.com | XXX-XX-4321 | 54000.00
(2 rows)

ROLLBACK;


-- Triggers on views (which are supposed to see masked data for new/old row)
CREATE VIEW hr.view_over_employees AS SELECT * FROM hr.employees;
GRANT UPDATE, SELECT ON hr.view_over_employees TO analyst_role;

-- Create trigger for this view
CREATE TRIGGER print_changes_trigger
    INSTEAD OF UPDATE ON hr.view_over_employees
    FOR EACH ROW
    EXECUTE FUNCTION print_changes();

-- Masked new and old rows should be passed to trigger if trigger is on view
BEGIN;
SET ROLE mike_analyst;
UPDATE hr.view_over_employees SET id = id + 10 RETURNING *;
NOTICE:  Old row: name=John Doe, email=john.doe@example.com, ssn=XXX-XX-6789, salary=45000.00
NOTICE:  New row: name=John Doe, email=john.doe@example.com, ssn=XXX-XX-6789, salary=45000.00
NOTICE:  Old row: name=Jane Smith, email=jane.smith@example.com, ssn=XXX-XX-4321, salary=54000.00
NOTICE:  New row: name=Jane Smith, email=jane.smith@example.com, ssn=XXX-XX-4321, salary=54000.00
 id |    name    |         email          |     ssn     |  salary  
----+------------+------------------------+-------------+----------
 11 | John Doe   | john.doe@example.com   | XXX-XX-6789 | 45000.00
 12 | Jane Smith | jane.smith@example.com | XXX-XX-4321 | 54000.00
(2 rows)
ROLLBACK;
```
We recommend reviewing trigger behavior before implementing triggers on masked tables. Table triggers have access to unmasked data in transition tables, while view triggers see masked data.

**Example of renaming masking policy**  
The following example demonstrates how to rename existing policies using the `rename_masking_policy` procedure.  

```
-- Rename the strict policy
CALL pgcolumnmask.rename_masking_policy(
    'employee_mask_strict',
    'hr.employees',
    'intern_protection_policy'
);

-- Verify the rename
SELECT policyname, roles, weight
    FROM pgcolumnmask.pg_columnmask_policies
    WHERE tablename = 'employees'
    ORDER BY weight DESC;

        policyname        |     roles      | weight 
--------------------------+----------------+--------
 employee_mask_light      | {analyst_role} |    100
 employee_mask_moderate   | {support_role} |     50
 intern_protection_policy | {intern_role}  |     10
```

**Example of altering policy weight**  
The following example demonstrates how to alter policy weights to change their weight.  

```
-- Change weight of moderate policy
CALL pgcolumnmask.alter_masking_policy(
    'employee_mask_moderate'::NAME,
    'hr.employees'::REGCLASS,
    NULL,    -- Keep existing masking expressions
    NULL,    -- Keep existing roles
    75       -- New weight
);

-- Verify the changes
SELECT policyname, roles, weight
    FROM pgcolumnmask.pg_columnmask_policies
    WHERE tablename = 'employees'
    ORDER BY weight DESC;
        policyname        |     roles      | weight 
--------------------------+----------------+--------
 employee_mask_light      | {analyst_role} |    100
 employee_mask_moderate   | {support_role} |     75
 intern_protection_policy | {intern_role}  |     10
```

**Example of cleaning up**  
The following example demonstrates how to drop all policies, tables and users.  

```
-- Drop policies
CALL pgcolumnmask.drop_masking_policy(
    'intern_protection_policy',
    'hr.employees'
);

CALL pgcolumnmask.drop_masking_policy(
    'employee_mask_moderate',
    'hr.employees'
);

CALL pgcolumnmask.drop_masking_policy(
    'employee_mask_light',
    'hr.employees'
);

-- Drop table and functions
DROP VIEW IF EXISTS hr.view_over_employees;
DROP TABLE IF EXISTS hr.employees;
DROP SCHEMA IF EXISTS hr;
DROP FUNCTION IF EXISTS public.mask_ssn(text);
DROP FUNCTION IF EXISTS public.mask_salary(numeric, numeric);

-- Drop users
DROP USER sarah_intern, lisa_support, mike_analyst,
    ethan_support_intern, john_analyst_intern;
DROP ROLE intern_role, support_role, analyst_role;
```

# Configuring masking policy management role
<a name="AuroraPostgreSQL.Security.DynamicMasking.PolicyManagementRole"></a>

The PostgreSQL column masking extension, `pg_columnmask`, allows you to delegate the management of masking policies to a specific role, rather than requiring `rds_superuser` or table owner privileges. This provides more granular control over who can create, alter, and drop masking policies.

To configure the role that will have masking policy management privileges, follow these steps:

1. Create the policy admin role – As an `rds_superuser`, create a new role responsible for managing masking policies:

   ```
   CREATE ROLE mask_admin NOLOGIN;
   ```

1. Configure the PostgreSQL parameter – In your custom DB cluster parameter group, set the `pgcolumnmask.policy_admin_rolname` engine configuration parameter to the name of the role you created:

   ```
   pgcolumnmask.policy_admin_rolname = mask_admin
   ```

   This engine configuration parameters can be set in a DB cluster parameter group and it does not require an instance reboot. For details on updating parameter, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md).

1. Grant the role to users As an `rds_superuser`, grant the `mask_admin` role to the users who should be able to manage masking policies:

   ```
   CREATE USER alice LOGIN;
   CREATE USER bob LOGIN;
   GRANT mask_admin TO alice, bob;
   ```

   Additionally, ensure that the users have USAGE privilege on the schemas where they will be managing masking policies:

   ```
   GRANT USAGE ON SCHEMA hr TO alice, bob;
   ```

Now, when users `alice` and `bob` connect to the database, they can use the standard `pg_columnmask` extension functions to create, alter, and drop masking policies on all tables in all the schemas where they have `USAGE` privilege on the schema.

# Best practices for secure pg\$1columnmask implementation
<a name="AuroraPostgreSQL.Security.DynamicMasking.BestPractices"></a>

The following section provides security best practices for implementing `pg_columnmask` in your Aurora PostgreSQL environment. Follow these recommendations to:
+ Establish a secure role-based access control architecture
+ Develop masking functions that prevent security vulnerabilities
+ Understand and control trigger behavior with masked data

## Role-based security architecture
<a name="AuroraPostgreSQL.Security.DynamicMasking.BestPractices.architecture"></a>

Define a role hierarchy to implement access controls in your database. Aurora PostgreSQL `pg_columnmask` augments these controls by providing an additional layer for fine-grained data masking within those roles.

Create dedicated roles that align with organizational functions rather than granting permissions to individual users. This approach provides better auditability and simplifies permission management as your organizational structure evolves.

**Example of creating an organzational role heirarchy**  
The following example creates an organizational role hierarchy with dedicated roles for different functions, then assigns individual users to the appropriate roles. In this example, organizational roles (analyst\$1role, support\$1role) are created first, then individual users are granted membership in these roles. This structure allows you to manage permissions at the role level rather than for each individual user.  

```
-- Create organizational role hierarchy
CREATE ROLE data_admin_role;
CREATE ROLE security_admin_role;
CREATE ROLE analyst_role;
CREATE ROLE support_role;
CREATE ROLE developer_role;

-- Specify security_admin_role as masking policy manager in the DB cluster parameter
-- group pgcolumnmask.policy_admin_rolname = 'security_admin_role'

-- Create specific users and assign to appropriate roles
CREATE USER security_manager;
CREATE USER data_analyst1, data_analyst2;
CREATE USER support_agent1, support_agent2;

GRANT security_admin_role TO security_manager;
GRANT analyst_role TO data_analyst1, data_analyst2;
GRANT support_role TO support_agent1, support_agent2;
```
Implement the principle of least privilege by granting only the minimum permissions necessary for each role. Avoid granting broad permissions that could be exploited if credentials are compromised.  

```
-- Grant specific table permissions rather than schema-wide access
GRANT SELECT ON sensitive_data.customers TO analyst_role;
GRANT SELECT ON sensitive_data.transactions TO analyst_role;
-- Do not grant: GRANT ALL ON SCHEMA sensitive_data TO analyst_role;
```
Policy administrators require `USAGE` privileges on schemas where they manage masking policies. Grant these privileges selectively, following the principle of least privilege. Conduct regular reviews of schema access permissions to ensure only authorized personnel maintain policy management capabilities.  
The policy admin role parameter configuration is restricted to database administrators only. This parameter cannot be modified at the database or session level, preventing unprivileged users from overriding policy admin assignments. This restriction ensures that masking policy control remains centralized and secure.  
Assign the policy admin role to specific individuals rather than groups. This targeted approach ensures selective access to masking policy management, as policy administrators have the ability to mask all tables within the database. 

## Secure masking function development
<a name="AuroraPostgreSQL.Security.DynamicMasking.BestPractices.MaskingDevelopment"></a>

Develop masking functions using early binding semantics to ensure proper dependency tracking and prevent late binding vulnerabilities such as search path modification during runtime. It is recommended to use `BEGIN ATOMIC` syntax for SQL functions to enable compile-time validation (i.e. early binding) and dependency management.

```
-- Example - Secure masking function with early binding
CREATE OR REPLACE FUNCTION secure_mask_ssn(input_ssn TEXT)
    RETURNS TEXT
    LANGUAGE SQL
    IMMUTABLE PARALLEL SAFE STRICT
    BEGIN ATOMIC
        SELECT CASE
            WHEN input_ssn IS NULL THEN NULL
            WHEN length(input_ssn) < 4 THEN repeat('X', length(input_ssn))
            ELSE repeat('X', length(input_ssn) - 4) || right(input_ssn, 4)
        END;
    END;
```

Alternatively, create functions that are immune to search path changes by explicitly schema qualifying all object references, ensuring consistent behavior across different user sessions.

```
-- Function immune to search path changes
CREATE OR REPLACE FUNCTION data_masking.secure_phone_mask(phone_number TEXT)
    RETURNS TEXT
    LANGUAGE SQL
    IMMUTABLE PARALLEL SAFE STRICT
    AS $$
    SELECT CASE
        WHEN phone_number IS NULL THEN NULL
        WHEN public.length(public.regexp_replace(phone_number, '[^0-9]', '', 'g')) < 10 THEN 'XXX-XXX-XXXX'
        ELSE public.regexp_replace(
            phone_number,
            '([0-9]{3})[0-9]{3}([0-9]{4})',
            public.concat('\1-XXX-\2')
        )
    END;
    $$;
```

Implement input validation within masking functions to handle edge cases and prevent unexpected behavior. Always include NULL handling and validate input formats to ensure consistent masking behavior. 

```
-- Robust masking function with comprehensive input validation
CREATE OR REPLACE FUNCTION secure_mask_phone(phone_number TEXT)
    RETURNS TEXT
    LANGUAGE SQL
    IMMUTABLE PARALLEL SAFE STRICT
    BEGIN ATOMIC
        SELECT CASE
            WHEN phone_number IS NULL THEN NULL
            WHEN length(trim(phone_number)) = 0 THEN phone_number
            WHEN length(regexp_replace(phone_number, '[^0-9]', '', 'g')) < 10 THEN 'XXX-XXX-XXXX'
            ELSE regexp_replace(phone_number, '([0-9]{3})[0-9]{3}([0-9]{4})', '\1-XXX-\2')
        END;
    END;
```

## DML Triggers behavior with pg\$1columnmask
<a name="AuroraPostgreSQL.Security.DynamicMasking.BestPractices.DMLTriggerBehavior"></a>

For table triggers, transition tables will be fully unmasked. For view triggers(IOT), transition tables will be masked according to the current user's view permissions.

Table triggers with pg\$1columnmask  
Triggers are passed a transition table which contains the old and new version of the rows modified by the firing DML query. Depending upon when the trigger is fired, Aurora PostgreSQL populates the old and new rows. For example, a `BEFORE INSERT` trigger only has new versions of the rows and empty old versions because there is no old version to refer.  
`pg_columnmask` does not mask transition tables inside triggers on tables. Triggers can use masked columns inside their body and it sees unmasked data. The trigger creator should make sure how the trigger gets executed for an user. The following example works correctly in this case.  

```
-- Example for table trigger uses masked column in its definition
-- Create a table and insert some rows
CREATE TABLE public.credit_card_table (
    name TEXT,
    credit_card_no VARCHAR(16),
    is_fraud BOOL
);

INSERT INTO public.credit_card_table (name, credit_card_no, is_fraud)
    VALUES
    ('John Doe', '4532015112830366', false),
    ('Jane Smith', '5410000000000000', true),
    ('Brad Smith', '1234567891234567', true);

-- Create a role which will see masked data and grant it privileges
CREATE ROLE intern_user;
GRANT SELECT, DELETE ON public.credit_card_table TO intern_user;

-- Trigger which will silenty skip delete of non fraudelent credit cards
CREATE OR REPLACE FUNCTION prevent_non_fraud_delete()
    RETURNS TRIGGER AS
    $$
    BEGIN
        IF OLD.is_fraud = false THEN
            RETURN NULL;
        END IF;
        RETURN OLD;
    END;
    $$ LANGUAGE plpgsql;

CREATE TRIGGER prevent_non_fraud_delete
    BEFORE DELETE ON credit_card_table
    FOR EACH ROW
    EXECUTE FUNCTION prevent_non_fraud_delete();

CREATE OR REPLACE FUNCTION public.return_false()
    RETURNS BOOLEAN
    LANGUAGE SQL
    IMMUTABLE PARALLEL SAFE STRICT
    BEGIN ATOMIC
      SELECT false;
    END;

-- A masking policy that masks both credit card number and is_fraud column.
-- If we apply masking inside trigger then prevent_non_fraud_delete trigger will
-- allow deleting more rows to masked user (even non fraud ones).
CALL pgcolumnmask.create_masking_policy(
    'mask_credit_card_no_&_is_fraud'::NAME,
    'public.credit_card_table'::REGCLASS,
    JSON_BUILD_OBJECT('credit_card_no', 'pgcolumnmask.mask_text(credit_card_no)',
                      'is_fraud', 'public.return_false()')::JSONB,
    ARRAY['intern_user']::NAME[],
    10::INT
);

-- Test trigger behaviour using intern_user
BEGIN;
SET ROLE intern_user;
-- credit card number & is_fraud is completely masked from intern_user
SELECT * FROM public.credit_card_table;
    name    |  credit_card_no  | is_fraud 
------------+------------------+----------
 John Doe   | XXXXXXXXXXXXXXXX | f
 Jane Smith | XXXXXXXXXXXXXXXX | f
 Brad Smith | XXXXXXXXXXXXXXXX | f
(3 rows)

-- The delete trigger lets the intern user delete rows for Jane and Brad even though
-- intern_user sees their is_fraud = false, but the table trigger works with original
-- unmasked value
DELETE FROM public.credit_card_table RETURNING *;
    name    |  credit_card_no  | is_fraud 
------------+------------------+----------
 Jane Smith | XXXXXXXXXXXXXXXX | f
 Brad Smith | XXXXXXXXXXXXXXXX | f
(2 rows)

COMMIT;
```
Trigger creator leaks unmasked data to user if they are not careful about the statements they use in their trigger body. For example using a `RAISE NOTICE ‘%’, masked_column;` prints the column to current user.  

```
-- Example showing table trigger leaking column value to current user
CREATE OR REPLACE FUNCTION leaky_trigger_func()
    RETURNS TRIGGER AS
    $$
    BEGIN
        RAISE NOTICE 'Old credit card number was: %', OLD.credit_card_no;
        RAISE NOTICE 'New credit card number is %', NEW.credit_card_no;
        RETURN NEW;
    END;
    $$ LANGUAGE plpgsql;

CREATE TRIGGER leaky_trigger
    AFTER UPDATE ON public.credit_card_table
    FOR EACH ROW
    EXECUTE FUNCTION leaky_trigger_func();

-- Grant update on column is_fraud to auditor role
-- auditor will NOT HAVE PERMISSION TO READ DATA
CREATE ROLE auditor;
GRANT UPDATE (is_fraud) ON public.credit_card_table TO auditor;

-- Also add auditor role to existing masking policy on credit card table
CALL pgcolumnmask.alter_masking_policy(
    'mask_credit_card_no_&_is_fraud'::NAME,
    'public.credit_card_table'::REGCLASS,
    NULL::JSONB,
    ARRAY['intern_user', 'auditor']::NAME[],
    NULL::INT
);

-- Log in as auditor
-- [auditor]
-- Update will fail if trying to read data from the table
UPDATE public.credit_card_table
    SET is_fraud = true
    WHERE credit_card_no = '4532015112830366';
ERROR:  permission denied for table cc_table

-- [auditor]
-- But leaky update trigger will still print the entire row even though
-- current user does not have permission to select from public.credit_card_table
UPDATE public.credit_card_table SET is_fraud = true;
NOTICE:  Old credit_card_no was: 4532015112830366
NOTICE:  New credit_card_no is 4532015112830366
```

Triggers on views with pg\$1columnmask (Instead of triggers)  
Triggers can only be created on views in PostgreSQL. They are used for running DML statements on views that are not updatable. Transit tables are always masked inside instead of trigger (IOT), because the view and the base tables used inside the view query could have different owners. In which case, base tables might have some masking policies applicable on the view owner and the view owner must always see masked data from base tables inside its triggers. This is different from triggers on tables because in that case the trigger creator and the data inside the tables are owned by the same user which is not the case here.  

```
-- Create a view over credit card table
CREATE OR REPLACE VIEW public.credit_card_view
    AS
    SELECT * FROM public.credit_card_table;

-- Truncate credit card table and insert fresh data
TRUNCATE TABLE public.credit_card_table;
INSERT INTO public.credit_card_table (name, credit_card_no, is_fraud)
    VALUES
    ('John Doe', '4532015112830366', false),
    ('Jane Smith', '5410000000000000', true),
    ('Brad Smith', '1234567891234567', true);

CREATE OR REPLACE FUNCTION public.print_changes()
    RETURNS TRIGGER AS
    $$
    BEGIN
        RAISE NOTICE 'Old row: name=%, credit card number=%, is fraud=%',
            OLD.name, OLD.credit_card_no, OLD.is_fraud;
    
        RAISE NOTICE 'New row: name=%, credit card number=%, is fraud=%',
            NEW.name, NEW.credit_card_no, NEW.is_fraud;
    
    RETURN NEW;
   END;
   $$ LANGUAGE plpgsql;

CREATE TRIGGER print_changes_trigger
    INSTEAD OF UPDATE ON public.credit_card_view
    FOR EACH ROW
    EXECUTE FUNCTION public.print_changes();

GRANT SELECT, UPDATE ON public.credit_card_view TO auditor;

-- [auditor]
-- Login as auditor role
BEGIN;

-- Any data coming out from the table will be masked in instead of triggers
-- according to masking policies applicable to current user
UPDATE public.credit_card_view
    SET name = CONCAT(name, '_new_name')
    RETURNING *;
NOTICE:  Old row: name=John Doe, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  New row: name=John Doe_new_name, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  Old row: name=Jane Smith, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  New row: name=Jane Smith_new_name, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  Old row: name=Brad Smith, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  New row: name=Brad Smith_new_name, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
        name         |  credit_card_no  | is_fraud 
---------------------+------------------+----------
 John Doe_new_name   | XXXXXXXXXXXXXXXX | f
 Jane Smith_new_name | XXXXXXXXXXXXXXXX | f
 Brad Smith_new_name | XXXXXXXXXXXXXXXX | f
 
 -- Any new data going into the table using INSERT or UPDATE command will be unmasked
 UPDATE public.credit_card_view
    SET credit_card_no = '9876987698769876'
    RETURNING *;
NOTICE:  Old row: name=John Doe, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  New row: name=John Doe, credit card number=9876987698769876, is fraud=f
NOTICE:  Old row: name=Jane Smith, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  New row: name=Jane Smith, credit card number=9876987698769876, is fraud=f
NOTICE:  Old row: name=Brad Smith, credit card number=XXXXXXXXXXXXXXXX, is fraud=f
NOTICE:  New row: name=Brad Smith, credit card number=9876987698769876, is fraud=f
    name    |  credit_card_no  | is_fraud 
------------+------------------+----------
 John Doe   | 9876987698769876 | f
 Jane Smith | 9876987698769876 | f
 Brad Smith | 9876987698769876 | f
 
 COMMIT;
```

Database/User level GuCs to control triggers behavior  
Two configuration parameters control trigger execution behavior for users with applicable masking policies. Use these parameters to prevent triggers from executing on masked tables or views when additional security restrictions are required. Both parameters are disabled by default, allowing triggers to execute normally.  
**First GUC: Trigger firing restriction on masked tables**  
Specifications:  
+ Name: `pgcolumnmask.restrict_dml_triggers_for_masked_users`
+ Type: `boolean`
+ Default: `false` (triggers are allowed to be executed)
Prevents trigger execution on masked tables for masked users when set to TRUE. `pg_columnmask` runs through the error.  
**Second GUC: Trigger firing restriction on views with masked tables**  
Specifications:  
+ Name: `pgcolumnmask.restrict_iot_triggers_for_masked_users`
+ Type: `boolean`
+ Default: `false` (triggers are allowed to be executed)
Prevents trigger execution on views that include masked tables in their definition for masked users when set to TRUE.

These parameters operate independently and are configurable like standard database configuration parameters.

# Aurora PostgreSQL pg\$1columnmask data movement scenarios
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement"></a>

`pg_columnmask` behavior varies across different data movement operations depending on whether the operation occurs at the storage, logical, or application layer. Storage-level operations (such as cloning) behave differently from logical operations (such as `pg_dump`) and application-level operations (such as FDW queries). This section describes masking behavior for common scenarios including replication, backups, exports, and migrations, and explains the security implications for each.

**Topics**
+ [Aurora Global Database and Read Replicas](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.RR)
+ [Database clone and snapshot restore](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.Clones)
+ [Logical replication](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.LogRep)
+ [Blue/Green deployments](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.BlueGreen)
+ [Zero-ETL and CDC streams](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.ZETL)
+ [AWS Database Migration Service](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.DMS)
+ [Data exports](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.DataExport)
+ [Views and materialized views](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.Views)
+ [Data dump and restore](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.DDR)
+ [Foreign data wrapper](#AuroraPostgreSQL.Security.DynamicMasking.DataMovement.FDQ)

## Aurora Global Database and Read Replicas
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.RR"></a>

Aurora `pg_columnmask` policies are stored in database system tables within the cluster volume. All replicas access the same policies and return consistently masked results. For Aurora Global Database deployments, `pg_columnmask` policies replicate to secondary AWS Regions along with other database system tables, ensuring consistent data protection across regions. During failover scenarios, all `pg_columnmask` policies remain intact and functional.

## Database clone and snapshot restore
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.Clones"></a>

Aurora Fast Clone and snapshot restore operations preserve all `pg_columnmask` policies, roles, and configurations as part of the database system tables. The cloned or restored database inherits all existing policies from the source cluster. After cloning or restoration, each database cluster maintains independent `pg_columnmask` policies.

## Logical replication
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.LogRep"></a>

During initial synchronization, logical replication uses standard SQL COPY operations, and `pg_columnmask` policies are enforced based on the replication user's permissions. During ongoing CDC (change data capture), masking policies are not applied and unmasked data is replicated through WAL records. Users with `pg_create_subscription` privileges can potentially exfiltrate unmasked data by setting up replication to a system they control.

## Blue/Green deployments
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.BlueGreen"></a>

During snapshot restoration, `pg_columnmask` policies are automatically included. The green environment starts with an identical copy of all policies from the blue environment. During replication from blue to green, data is not masked. Subsequent masking policy changes (DDL commands) on the blue cluster do not replicate to the green cluster and invalidate RDS blue/green deployments.

## Zero-ETL and CDC streams
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.ZETL"></a>

Data replication is not affected by `pg_columnmask` policies. Zero-ETL supports DDL replication but doesn't replicate `pg_columnmask` or RLS policies. No masking policies are applied to replicated data in Zero-ETL.

## AWS Database Migration Service
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.DMS"></a>

Initial data sync is masked or unmasked based on the user selected for the DMS task. CDC data is always unmasked. While `pg_columnmask` related internal RLS policies may be migrated, they won't function on non-pg\$1columnmask-enabled targets.

## Data exports
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.DataExport"></a>

`pg_columnmask` treats exports like any other query operation—masking is applied based on the executing user's permissions. This applies to SQL commands like COPY, SELECT INTO, CREATE TABLE AS, and Aurora PostgreSQL's S3 export functionality. 

**Note**  
When masked users export data, the resulting files contain masked values that may violate database constraints when restored.

## Views and materialized views
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.Views"></a>

Keep the following considerations in mind when using views:
+ **Regular views** – Always use `INVOKER` semantics. The current user's masking policies apply when querying the view, regardless of who created the view.
+ **Materialized views** – When refreshed, the masking policies of the materialized view owner apply, not the policies of the user performing the refresh. If the owner has masking policies, the materialized view always contains masked data.

## Data dump and restore
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.DDR"></a>

`pg_dump` operates as a regular database user and applies masking policies based on the connecting user's permissions. If a masked user performs a dump, the backup file contains masked data. `pg_columnmask` policies are included in the dump as part of the database schema. Successful restoration requires that all referenced roles exist in the target database and that the target has the `pg_columnmask` extension installed.

**Note**  
Starting with PostgreSQL 18, `pg_dump` supports the `—no-policies` option which excludes both Row Level Security (RLS) and `pg_columnmask` masking policies from database dumps. For more information, see [pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html).

## Foreign data wrapper
<a name="AuroraPostgreSQL.Security.DynamicMasking.DataMovement.FDQ"></a>

When using foreign data wrappers, masking policies on remote tables are applied based on the mapped user's permissions on the source server, not the local querying user's permissions, and while you can access masked remote data through FDW, you cannot create DDM or RLS policies directly on foreign tables in your local database.

# Updating applications to connect to Aurora PostgreSQL DB clusters using new SSL/TLS certificates
<a name="ssl-certificate-rotation-aurora-postgresql"></a>

As of January 13, 2023, Amazon RDS has published new Certificate Authority (CA) certificates for connecting to your Aurora DB clusters using Secure Socket Layer or Transport Layer Security (SSL/TLS). Following, you can find information about updating your applications to use the new certificates.

This topic can help you to determine whether any client applications use SSL/TLS to connect to your DB clusters. If they do, you can further check whether those applications require certificate verification to connect. 

**Note**  
Some applications are configured to connect to Aurora PostgreSQL DB clusters only if they can successfully verify the certificate on the server.   
For such applications, you must update your client application trust stores to include the new CA certificates. 

After you update your CA certificates in the client application trust stores, you can rotate the certificates on your DB clusters. We strongly recommend testing these procedures in a development or staging environment before implementing them in your production environments.

For more information about certificate rotation, see [Rotating your SSL/TLS certificate](UsingWithRDS.SSL-certificate-rotation.md). For more information about downloading certificates, see [Using SSL/TLS to encrypt a connection to a DB cluster](UsingWithRDS.SSL.md). For information about using SSL/TLS with PostgreSQL DB clusters, see [Securing Aurora PostgreSQL data with SSL/TLS](AuroraPostgreSQL.Security.md#AuroraPostgreSQL.Security.SSL).

**Topics**
+ [Determining whether applications are connecting to Aurora PostgreSQL DB clusters using SSL](#ssl-certificate-rotation-aurora-postgresql.determining-server)
+ [Determining whether a client requires certificate verification in order to connect](#ssl-certificate-rotation-aurora-postgresql.determining-client)
+ [Updating your application trust store](#ssl-certificate-rotation-aurora-postgresql.updating-trust-store)
+ [Using SSL/TLS connections for different types of applications](#ssl-certificate-rotation-aurora-postgresql.applications)

## Determining whether applications are connecting to Aurora PostgreSQL DB clusters using SSL
<a name="ssl-certificate-rotation-aurora-postgresql.determining-server"></a>

Check the DB cluster configuration for the value of the `rds.force_ssl` parameter. By default, the `rds.force_ssl` parameter is set to `0` (off). If the `rds.force_ssl` parameter is set to `1` (on), clients are required to use SSL/TLS for connections. For more information about parameter groups, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

If `rds.force_ssl` isn't set to `1` (on), query the `pg_stat_ssl` view to check connections using SSL. For example, the following query returns only SSL connections and information about the clients using SSL.

```
select datname, usename, ssl, client_addr from pg_stat_ssl inner join pg_stat_activity on pg_stat_ssl.pid = pg_stat_activity.pid where ssl is true and usename<>'rdsadmin';
```

Only rows using SSL/TLS connections are displayed with information about the connection. The following is sample output.

```
 datname  | usename | ssl | client_addr
----------+---------+-----+-------------
 benchdb  | pgadmin | t   | 53.95.6.13
 postgres | pgadmin | t   | 53.95.6.13
(2 rows)
```

The preceding query displays only the current connections at the time of the query. The absence of results doesn't indicate that no applications are using SSL connections. Other SSL connections might be established at a different time.

## Determining whether a client requires certificate verification in order to connect
<a name="ssl-certificate-rotation-aurora-postgresql.determining-client"></a>

When a client, such as psql or JDBC, is configured with SSL support, the client first tries to connect to the database with SSL by default. If the client can't connect with SSL, it reverts to connecting without SSL. The default `sslmode` mode used for both libpq-based clients (such as psql) and JDBC is set to `prefer`. The certificate on the server is verified only when `sslrootcert` is provided with `sslmode` set to `verify-ca` or `verify-full`. An error is thrown if the certificate is invalid.

Use `PGSSLROOTCERT` to verify the certificate with the `PGSSLMODE` environment variable, with `PGSSLMODE` set to `verify-ca` or `verify-full`. 

```
PGSSLMODE=verify-full PGSSLROOTCERT=/fullpath/ssl-cert.pem psql -h pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com -U primaryuser -d postgres
```

Use the `sslrootcert` argument to verify the certificate with `sslmode` in connection string format, with `sslmode` set to `verify-ca` or `verify-full`. 

```
psql "host=pgdbidentifier.cxxxxxxxx.us-east-2.rds.amazonaws.com sslmode=verify-full sslrootcert=/full/path/ssl-cert.pem user=primaryuser dbname=postgres"
```

For example, in the preceding case, if you use an invalid root certificate, you see an error similar to the following on your client.

```
psql: SSL error: certificate verify failed
```

## Updating your application trust store
<a name="ssl-certificate-rotation-aurora-postgresql.updating-trust-store"></a>

For information about updating the trust store for PostgreSQL applications, see [Secure TCP/IP connections with SSL](https://www.postgresql.org/docs/current/ssl-tcp.html) in the PostgreSQL documentation.

**Note**  
When you update the trust store, you can retain older certificates in addition to adding the new certificates.

### Updating your application trust store for JDBC
<a name="ssl-certificate-rotation-aurora-postgresql.updating-trust-store.jdbc"></a>

You can update the trust store for applications that use JDBC for SSL/TLS connections.

For information about downloading the root certificate, see [Using SSL/TLS to encrypt a connection to a DB cluster](UsingWithRDS.SSL.md).

For sample scripts that import certificates, see [Sample script for importing certificates into your trust store](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-sample-script).

## Using SSL/TLS connections for different types of applications
<a name="ssl-certificate-rotation-aurora-postgresql.applications"></a>

The following provides information about using SSL/TLS connections for different types of applications:
+ **psql**

  The client is invoked from the command line by specifying options either as a connection string or as environment variables. For SSL/TLS connections, the relevant options are `sslmode` (environment variable `PGSSLMODE`), `sslrootcert` (environment variable `PGSSLROOTCERT`).

  For the complete list of options, see [Parameter key words](https://www.postgresql.org/docs/11/libpq-connect.html#LIBPQ-PARAMKEYWORDS) in the PostgreSQL documentation. For the complete list of environment variables, see [Environment variables](https://www.postgresql.org/docs/current/libpq-envars.html) in the PostgreSQL documentation.
+ **pgAdmin**

  This browser-based client is a more user-friendly interface for connecting to a PostgreSQL database.

  For information about configuring connections, see the [pgAdmin documentation](https://www.pgadmin.org/docs/pgadmin4/latest/server_dialog.html).
+ **JDBC**

  JDBC enables database connections with Java applications.

  For general information about connecting to a PostgreSQL database with JDBC, see [Connecting to the database](https://jdbc.postgresql.org/documentation/use/) in the PostgreSQL documentation. For information about connecting with SSL/TLS, see [Configuring the client](https://jdbc.postgresql.org/documentation/ssl/) in the PostgreSQL documentation. 
+ **Python**

  A popular Python library for connecting to PostgreSQL databases is `psycopg2`.

  For information about using `psycopg2`, see the [psycopg2 documentation](https://pypi.org/project/psycopg2/). For a short tutorial on how to connect to a PostgreSQL database, see [Psycopg2 tutorial](https://wiki.postgresql.org/wiki/Psycopg2_Tutorial). You can find information about the options the connect command accepts in [The psycopg2 module content](https://www.psycopg.org/docs/module.html).

**Important**  
After you have determined that your database connections use SSL/TLS and have updated your application trust store, you can update your database to use the rds-ca-rsa2048-g1 certificates. For instructions, see step 3 in [Updating your CA certificate by modifying your DB instance ](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-updating).

# Using Kerberos authentication with Aurora PostgreSQL
<a name="postgresql-kerberos"></a>

You can use Kerberos to authenticate users when they connect to your DB cluster running PostgreSQL. To do so, configure your DB cluster to use AWS Directory Service for Microsoft Active Directory for Kerberos authentication. AWS Directory Service for Microsoft Active Directory is also called AWS Managed Microsoft AD. It's a feature available with Directory Service. To learn more, see [What is Directory Service?](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) in the *AWS Directory Service Administration Guide*.

To start, create an AWS Managed Microsoft AD directory to store user credentials. Then, provide to your PostgreSQL DB cluster the Active Directory's domain and other information. When users authenticate with the PostgreSQL DB cluster, authentication requests are forwarded to the AWS Managed Microsoft AD directory. 

Keeping all of your credentials in the same directory can save you time and effort. You have a centralized location for storing and managing credentials for multiple DB clusters. Using a directory can also improve your overall security profile.

In addition, you can access credentials from your own on-premises Microsoft Active Directory. To do so, create a trusting domain relationship so that the AWS Managed Microsoft AD directory trusts your on-premises Microsoft Active Directory. In this way, your users can access your PostgreSQL clusters with the same Windows single sign-on (SSO) experience as when they access workloads in your on-premises network.

A database can use Kerberos, AWS Identity and Access Management (IAM), or both Kerberos and IAM authentication. However, because Kerberos and IAM authentication provide different authentication methods, a specific database user can log in to a database using only one or the other authentication method but not both. For more information about IAM authentication, see [IAM database authentication ](UsingWithRDS.IAMDBAuth.md). 

**Note**  
RDS for PostgreSQL doesn't support Kerberos authentication for Active Directory groups.

**Topics**
+ [Region and version availability](#postgresql-kerberos.RegionVersionAvailability)
+ [Overview of Kerberos authentication for PostgreSQL DB clusters](#postgresql-kerberos-overview)
+ [Setting up Kerberos authentication for PostgreSQL DB clusters](postgresql-kerberos-setting-up.md)
+ [Managing an Aurora PostgreSQL DB cluster in an Active Directory domain](postgresql-kerberos-managing.md)
+ [Connecting to PostgreSQL with Kerberos authentication](postgresql-kerberos-connecting.md)
+ [Using AD security groups for Aurora PostgreSQL access control](AD.Security.Groups.md)

## Region and version availability
<a name="postgresql-kerberos.RegionVersionAvailability"></a>

Feature availability and support varies across specific versions of each database engine, and across AWS Regions. For more information on version and Region availability of Aurora PostgreSQL with Kerberos authentication, see [Kerberos authentication with Aurora PostgreSQL](Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.KerberosAuthentication.apg).

## Overview of Kerberos authentication for PostgreSQL DB clusters
<a name="postgresql-kerberos-overview"></a>

To set up Kerberos authentication for a PostgreSQL DB cluster, take the following steps, described in more detail later:

1. Use AWS Managed Microsoft AD to create an AWS Managed Microsoft AD directory. You can use the AWS Management Console, the AWS CLI, or the Directory Service API to create the directory. Make sure to open the relevant outbound ports on the directory security group so that the directory can communicate with the cluster.

1. Create a role that provides Amazon Aurora access to make calls to your AWS Managed Microsoft AD directory. To do so, create an AWS Identity and Access Management (IAM) role that uses the managed IAM policy `AmazonRDSDirectoryServiceAccess`. 

   For the IAM role to allow access, the AWS Security Token Service (AWS STS) endpoint must be activated in the correct AWS Region for your AWS account. AWS STS endpoints are active by default in all AWS Regions, and you can use them without any further actions. For more information, see [Activating and deactivating AWS STS in an AWS Region](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html#sts-regions-activate-deactivate) in the *IAM User Guide*.

1. Create and configure users in the AWS Managed Microsoft AD directory using the Microsoft Active Directory tools. For more information about creating users in your Active Directory, see [Manage users and groups in AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups.html) in the *Directory Service Administration Guide*.

1. If you plan to locate the directory and the DB instance in different AWS accounts or virtual private clouds (VPCs), configure VPC peering. For more information, see [What is VPC peering?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) in the *Amazon VPC Peering Guide*.

1. Create or modify a PostgreSQL DB cluster either from the console, CLI, or RDS API using one of the following methods:
   + [Creating and connecting to an Aurora PostgreSQL DB cluster](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md) 
   + [Modifying an Amazon Aurora DB cluster](Aurora.Modifying.md)
   + [Restoring from a DB cluster snapshot](aurora-restore-snapshot.md)
   + [Restoring a DB cluster to a specified time](aurora-pitr.md)

   You can locate the cluster in the same Amazon Virtual Private Cloud (VPC) as the directory or in a different AWS account or VPC. When you create or modify the PostgreSQL DB cluster, do the following:
   + Provide the domain identifier (`d-*` identifier) that was generated when you created your directory.
   + Provide the name of the IAM role that you created.
   + Ensure that the DB instance security group can receive inbound traffic from the directory security group.

1. Use the RDS master user credentials to connect to the PostgreSQL DB cluster. Create the user in PostgreSQL to be identified externally. Externally identified users can log in to the PostgreSQL DB cluster using Kerberos authentication.

# Setting up Kerberos authentication for PostgreSQL DB clusters
<a name="postgresql-kerberos-setting-up"></a>

You use AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) to set up Kerberos authentication for a PostgreSQL DB cluster. To set up Kerberos authentication, take the following steps. 

**Topics**
+ [Step 1: Create a directory using AWS Managed Microsoft AD](#postgresql-kerberos-setting-up.create-directory)
+ [Step 2: (Optional) Create a trust relationship between your on-premises Active Directory and Directory Service](#postgresql-kerberos-setting-up.create-trust)
+ [Step 3: Create an IAM role for Amazon Aurora to access the Directory Service](#postgresql-kerberos-setting-up.CreateIAMRole)
+ [Step 4: Create and configure users](#postgresql-kerberos-setting-up.create-users)
+ [Step 5: Enable cross-VPC traffic between the directory and the DB instance](#postgresql-kerberos-setting-up.vpc-peering)
+ [Step 6: Create or modify a PostgreSQL DB cluster](#postgresql-kerberos-setting-up.create-modify)
+ [Step 7: Create PostgreSQL users for your Kerberos principals](#postgresql-kerberos-setting-up.create-logins)
+ [Step 8: Configure a PostgreSQL client](#postgresql-kerberos-setting-up.configure-client)

## Step 1: Create a directory using AWS Managed Microsoft AD
<a name="postgresql-kerberos-setting-up.create-directory"></a>

Directory Service creates a fully managed Active Directory in the AWS Cloud. When you create an AWS Managed Microsoft AD directory, Directory Service creates two domain controllers and DNS servers for you. The directory servers are created in different subnets in a VPC. This redundancy helps make sure that your directory remains accessible even if a failure occurs. 

 When you create an AWS Managed Microsoft AD directory, AWS Directory Service performs the following tasks on your behalf: 
+ Sets up an Active Directory within your VPC. 
+ Creates a directory administrator account with the user name `Admin` and the specified password. You use this account to manage your directory. 
**Important**  
Make sure to save this password. Directory Service doesn't store this password, and it can't be retrieved or reset.
+ Creates a security group for the directory controllers. The security group must permit communication with the PostgreSQL DB cluster.

When you launch AWS Directory Service for Microsoft Active Directory, AWS creates an Organizational Unit (OU) that contains all of your directory's objects. This OU, which has the NetBIOS name that you entered when you created your directory, is located in the domain root. The domain root is owned and managed by AWS. 

 The `Admin` account that was created with your AWS Managed Microsoft AD directory has permissions for the most common administrative activities for your OU: 
+ Create, update, or delete users
+ Add resources to your domain such as file or print servers, and then assign permissions for those resources to users in your OU 
+ Create additional OUs and containers 
+ Delegate authority 
+ Restore deleted objects from the Active Directory Recycle Bin 
+ Run Active Directory and Domain Name Service (DNS) modules for Windows PowerShell on the Active Directory Web Service 

The `Admin` account also has rights to perform the following domain-wide activities: 
+ Manage DNS configurations (add, remove, or update records, zones, and forwarders) 
+ View DNS event logs 
+ View security event logs 

**To create a directory with AWS Managed Microsoft AD**

1.  In the [Directory Service console](https://console.aws.amazon.com/directoryservicev2/) navigation pane, choose **Directories**, and then choose **Set up directory**. 

1. Choose **AWS Managed Microsoft AD**. AWS Managed Microsoft AD is the only option currently supported for use with Amazon Aurora. 

1. Choose **Next**.

1. On the **Enter directory information** page, provide the following information:   
**Edition**  
 Choose the edition that meets your requirements.  
**Directory DNS name**  
 The fully qualified name for the directory, such as **corp.example.com**.   
**Directory NetBIOS name**  
 An optional short name for the directory, such as `CORP`.   
**Directory description**  
 An optional description for the directory.   
**Admin password**  
 The password for the directory administrator. The directory creation process creates an administrator account with the user name `Admin` and this password.   
 The directory administrator password can't include the word "admin." The password is case-sensitive and must be 8–64 characters in length. It must also contain at least one character from three of the following four categories:   
   +  Lowercase letters (a–z) 
   +  Uppercase letters (A–Z) 
   +  Numbers (0–9) 
   +  Nonalphanumeric characters (\$1\$1@\$1\$1%^&\$1\$1-\$1=`\$1\$1()\$1\$1[]:;"'<>,.?/)   
**Confirm password**  
 Retype the administrator password.   
Make sure that you save this password. Directory Service doesn't store this password, and it can't be retrieved or reset.

1. Choose **Next**.

1. On the **Choose VPC and subnets** page, provide the following information:  
**VPC**  
Choose the VPC for the directory. You can create the PostgreSQL DB cluster in this same VPC or in a different VPC.   
**Subnets**  
 Choose the subnets for the directory servers. The two subnets must be in different Availability Zones. 

1. Choose **Next**.

1.  Review the directory information. If changes are needed, choose **Previous** and make the changes. When the information is correct, choose **Create directory**.   
![\[Directory details page\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/WinAuth2.png)

 It takes several minutes for the directory to be created. When it has been successfully created, the **Status** value changes to **Active**. 

 To see information about your directory, choose the directory ID in the directory listing. Make a note of the **Directory ID** value. You need this value when you create or modify your PostgreSQL DB instance. 

![\[Image of details page\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/WinAuth3.png)


## Step 2: (Optional) Create a trust relationship between your on-premises Active Directory and Directory Service
<a name="postgresql-kerberos-setting-up.create-trust"></a>

If you don't plan to use your own on-premises Microsoft Active Directory, skip to [Step 3: Create an IAM role for Amazon Aurora to access the Directory Service](#postgresql-kerberos-setting-up.CreateIAMRole).

To get Kerberos authentication using your on-premises Active Directory, you need to create a trusting domain relationship using a forest trust between your on-premises Microsoft Active Directory and the AWS Managed Microsoft AD directory (created in [Step 1: Create a directory using AWS Managed Microsoft AD](#postgresql-kerberos-setting-up.create-directory)). The trust can be one-way, where the AWS Managed Microsoft AD directory trusts the on-premises Microsoft Active Directory. The trust can also be two-way, where both Active Directories trust each other. For more information about setting up trusts using Directory Service, see [When to create a trust relationship](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_setup_trust.html) in the *AWS Directory Service Administration Guide*.

**Note**  
If you use an on-premises Microsoft Active Directory:  
Windows clients must connect using the domain name of the Directory Service in the endpoint rather than rds.amazonaws.com. For more information, see [Connecting to PostgreSQL with Kerberos authentication](postgresql-kerberos-connecting.md).
Windows clients can't connect using Aurora custom endpoints. To learn more, see [Amazon Aurora endpoint connections](Aurora.Overview.Endpoints.md).
For [global databases](aurora-global-database.md):  
Windows clients can connect using instance endpoints or cluster endpoints in the primary AWS Region of the global database only.
Windows clients can't connect using cluster endpoints in secondary AWS Regions.

Make sure that your on-premises Microsoft Active Directory domain name includes a DNS suffix routing that corresponds to the newly created trust relationship. The following screenshot shows an example.

![\[DNS routing corresponds to the created trust\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/kerberos-auth-trust.png)


## Step 3: Create an IAM role for Amazon Aurora to access the Directory Service
<a name="postgresql-kerberos-setting-up.CreateIAMRole"></a>

For Amazon Aurora to call Directory Service for you, your AWS account needs an IAM role that uses the managed IAM policy `AmazonRDSDirectoryServiceAccess`. This role allows Amazon Aurora to make calls to Directory Service. (Note that this IAM role to access the Directory Service is different than the IAM role used for [IAM database authentication ](UsingWithRDS.IAMDBAuth.md).) 

When you create a DB instance using the AWS Management Console and your console user account has the `iam:CreateRole` permission, the console creates the needed IAM role automatically. In this case, the role name is `rds-directoryservice-kerberos-access-role`. Otherwise, you must create the IAM role manually. When you create this IAM role, choose `Directory Service`, and attach the AWS managed policy `AmazonRDSDirectoryServiceAccess` to it. 

For more information about creating IAM roles for a service, see [Creating a role to delegate permissions to an AWS service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) in the *IAM User Guide*.

**Note**  
The IAM role used for Windows Authentication for RDS for Microsoft SQL Server can't be used for Amazon Aurora.

As an alternative to using the `AmazonRDSDirectoryServiceAccess` managed policy, you can create policies with the required permissions. In this case, the IAM role must have the following IAM trust policy.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.amazonaws.com",
          "rds.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

The role must also have the following IAM role policy.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:GetAuthorizedApplicationDetails"
      ],
    "Effect": "Allow",
    "Resource": "*"
    }
  ]
}
```

------

For opt-in AWS Regions, use Region-specific service principals in IAM role trust policies. When you create a trust policy for services in these Regions, specify the Region code in the service principal.

The following example shows a trust policy that includes Region-specific service principals:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "directoryservice.rds.REGION-CODE.amazonaws.com",
          "rds.REGION-CODE.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Replace REGION-CODE with the code for your specific Region. For example, use the following service principals for the Asia Pacific (Melbourne) Region:

```
"Service": [
  "directoryservice.rds.ap-southeast-4.amazonaws.com",
  "rds.ap-southeast-4.amazonaws.com"
]
```

## Step 4: Create and configure users
<a name="postgresql-kerberos-setting-up.create-users"></a>

 You can create users by using the Active Directory Users and Computers tool. This is one of the Active Directory Domain Services and Active Directory Lightweight Directory Services tools. For more information, see [Add Users and Computers to the Active Directory domain](https://learn.microsoft.com/en-us/troubleshoot/windows-server/identity/create-an-active-directory-server#add-users-and-computers-to-the-active-directory-domain) in the Microsoft documentation. In this case, users are individuals or other entities, such as their computers that are part of the domain and whose identities are being maintained in the directory. 

To create users in an Directory Service directory, you must be connected to a Windows-based Amazon EC2 instance that's a member of the Directory Service directory. At the same time, you must be logged in as a user that has privileges to create users. For more information, see [Create a user](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_manage_users_groups_create_user.html) in the *AWS Directory Service Administration Guide*.

## Step 5: Enable cross-VPC traffic between the directory and the DB instance
<a name="postgresql-kerberos-setting-up.vpc-peering"></a>

If you plan to locate the directory and the DB cluster in the same VPC, skip this step and move on to [Step 6: Create or modify a PostgreSQL DB cluster](#postgresql-kerberos-setting-up.create-modify).

If you plan to locate the directory and the DB instance in different VPCs, configure cross-VPC traffic using VPC peering or [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html).

The following procedure enables traffic between VPCs using VPC peering. Follow the instructions in [What is VPC peering?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html) in the *Amazon Virtual Private Cloud Peering Guide*.

**To enable cross-VPC traffic using VPC peering**

1. Set up appropriate VPC routing rules to ensure that network traffic can flow both ways.

1. Ensure that the DB instance security group can receive inbound traffic from the directory security group.

1. Ensure that there is no network access control list (ACL) rule to block traffic.

If a different AWS account owns the directory, you must share the directory.

**To share the directory between AWS accounts**

1. Start sharing the directory with the AWS account that the DB instance will be created in by following the instructions in [Tutorial: Sharing your AWS Managed Microsoft AD directory for seamless EC2 Domain-join](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_directory_sharing.html) in the *Directory Service Administration Guide*.

1. Sign in to the Directory Service console using the account for the DB instance, and ensure that the domain has the `SHARED` status before proceeding.

1. While signed into the Directory Service console using the account for the DB instance, note the **Directory ID** value. You use this directory ID to join the DB instance to the domain.

## Step 6: Create or modify a PostgreSQL DB cluster
<a name="postgresql-kerberos-setting-up.create-modify"></a>

Create or modify a PostgreSQL DB cluster for use with your directory. You can use the console, CLI, or RDS API to associate a DB cluster with a directory. You can do this in one of the following ways:
+  Create a new PostgreSQL DB cluster using the console, the [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) CLI command, or the [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) RDS API operation. For instructions, see [Creating and connecting to an Aurora PostgreSQL DB cluster](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md). 
+  Modify an existing PostgreSQL DB cluster using the console, the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI command, or the [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) RDS API operation. For instructions, see [Modifying an Amazon Aurora DB cluster](Aurora.Modifying.md). 
+  Restore a PostgreSQL DB cluster from a DB snapshot using the console, the [restore-db-cluster-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) CLI command, or the [RestoreDBClusterFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html) RDS API operation. For instructions, see [Restoring from a DB cluster snapshot](aurora-restore-snapshot.md). 
+  Restore a PostgreSQL DB cluster to a point-in-time using the console, the [ restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) CLI command, or the [ RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) RDS API operation. For instructions, see [Restoring a DB cluster to a specified time](aurora-pitr.md). 

Kerberos authentication is only supported for PostgreSQL DB clusters in a VPC. The DB cluster can be in the same VPC as the directory, or in a different VPC. The DB cluster must use a security group that allows ingress and egress within the directory's VPC so the DB cluster can communicate with the directory.

**Note**  
Enabling Kerberos authentication isn't currently supported on Aurora PostgreSQL DB cluster during migration from RDS for PostgreSQL. You can enable Kerberos authentication only on a standalone Aurora PostgreSQL DB cluster.

### Console
<a name="postgresql-kerberos-setting-up.create-modify.Console"></a>

When you use the console to create, modify, or restore a DB cluster, choose **Kerberos authentication** in the **Database authentication** section. Then choose **Browse Directory**. Select the directory or choose **Create a new directory** to use the Directory Service.

![\[Choosing Kerberos for authentication and identifying the directory to use.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/rpg-authentication-use-kerberos.png)


### AWS CLI
<a name="postgresql-kerberos-setting-up.create-modify.CLI"></a>

When you use the AWS CLI, the following parameters are required for the DB cluster to be able to use the directory that you created:
+ For the `--domain` parameter, use the domain identifier ("d-\$1" identifier) generated when you created the directory.
+ For the `--domain-iam-role-name` parameter, use the role you created that uses the managed IAM policy `AmazonRDSDirectoryServiceAccess`.

For example, the following CLI command modifies a DB cluster to use a directory.

```
aws rds  modify-db-cluster --db-cluster-identifier mydbinstance --domain d-Directory-ID --domain-iam-role-name role-name 
```

**Important**  
If you modify a DB cluster to enable Kerberos authentication, reboot the DB cluster after making the change.

## Step 7: Create PostgreSQL users for your Kerberos principals
<a name="postgresql-kerberos-setting-up.create-logins"></a>

At this point, your Aurora PostgreSQL DB cluster is joined to the AWS Managed Microsoft AD domain. The users that you created in the directory in [Step 4: Create and configure users](#postgresql-kerberos-setting-up.create-users) need to be set up as PostgreSQL database users and granted privileges to login to the database. You do that by signing in as the database user with `rds_superuser` privileges. For example, if you accepted the defaults when you created your Aurora PostgreSQL DB cluster, you use `postgres`, as shown in the following steps. 

**To create PostgreSQL database users for Kerberos principals**

1. Use `psql` to connect to your Aurora PostgreSQL DB cluster's DB instance endpoint using `psql`. The following example uses the default `postgres` account for the `rds_superuser` role.

   ```
   psql --host=cluster-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Create a database user name for each Kerberos principal (Active Directory username) that you want to have access to the database. Use the canonical username (identity) as defined in the Active Directory instance, that is, a lower-case `alias` (username in Active Directory) and the upper-case name of the Active Directory domain for that user name. The Active Directory user name is an externally authenticated user, so use quotes around the name as shown following.

   ```
   postgres=> CREATE USER "username@CORP.EXAMPLE.COM" WITH LOGIN;
   CREATE ROLE
   ```

1. Grant the `rds_ad` role to the database user.

   ```
   postgres=> GRANT rds_ad TO "username@CORP.EXAMPLE.COM";
   GRANT ROLE
   ```

After you finish creating all the PostgreSQL users for your Active Directory user identities, users can access the Aurora PostgreSQL DB cluster by using their Kerberos credentials. 

It's required that the database users who authenticate using Kerberos are doing so from client machines that are members of the Active Directory domain.

Database users that have been granted the `rds_ad` role can't also have the `rds_iam` role. This also applies to nested memberships. For more information, see [IAM database authentication ](UsingWithRDS.IAMDBAuth.md). 

### Configuring your Aurora PostgreSQL DB cluster for case-insensitive user names
<a name="postgresql-kerberos-setting-up.create-logins.set-case-insentive"></a>

Aurora PostgreSQL versions 14.5, 13.8, 12.12, and 11.17 support the `krb_caseins_users` PostgreSQL parameter. This parameter supports case-insensitive Active Directory user names. By default, this parameter is set to false, so user names are interpreted case-sensitively by Aurora PostgreSQL. That's the default behavior in all older versions of Aurora PostgreSQL. However, you can set this parameter to `true` in your custom DB cluster parameter group and allow your Aurora PostgreSQL DB cluster to interpret user names, case-insensitively. Consider doing this as a convenience for your database users, who might sometimes mis-type the casing of their user name when authenticating using Active Directory. 

To change the `krb_caseins_users` parameter, your Aurora PostgreSQL DB cluster must be using a custom DB cluster parameter group. For information about working with a custom DB cluster parameter group, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md). 

You can use the AWS CLI or the AWS Management Console to change the setting. For more information, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md).

## Step 8: Configure a PostgreSQL client
<a name="postgresql-kerberos-setting-up.configure-client"></a>

To configure a PostgreSQL client, take the following steps:
+ Create a krb5.conf file (or equivalent) to point to the domain. 
+ Verify that traffic can flow between the client host and Directory Service. Use a network utility such as Netcat for the following:
  + Verify traffic over DNS for port 53.
  + Verify traffic over TCP/UDP for port 53 and for Kerberos, which includes ports 88 and 464 for Directory Service.
+ Verify that traffic can flow between the client host and the DB instance over the database port. For example, use psql to connect and access the database.

The following is sample krb5.conf content for AWS Managed Microsoft AD.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
```

The following is sample krb5.conf content for an on-premises Microsoft Active Directory.

```
[libdefaults]
 default_realm = EXAMPLE.COM
[realms]
 EXAMPLE.COM = {
  kdc = example.com
  admin_server = example.com
 }
 ONPREM.COM = {
  kdc = onprem.com
  admin_server = onprem.com
 }
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 .onprem.com = ONPREM.COM
 onprem.com = ONPREM.COM  
 .rds.amazonaws.com = EXAMPLE.COM
 .amazonaws.com.rproxy.govskope.ca.cn = EXAMPLE.COM
 .amazon.com = EXAMPLE.COM
```

# Managing an Aurora PostgreSQL DB cluster in an Active Directory domain
<a name="postgresql-kerberos-managing"></a>

You can use the console, the CLI, or the RDS API to manage your DB cluster and its relationship with your Microsoft Active Directory. For example, you can associate an Active Directory to enable Kerberos authentication. You can also remove the association for an Active Directory to disable Kerberos authentication. You can also move a DB cluster to be externally authenticated by one Microsoft Active Directory to another.

For example, using the CLI, you can do the following:
+ To reattempt enabling Kerberos authentication for a failed membership, use the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI command. Specify the current membership's directory ID for the `--domain` option.
+ To disable Kerberos authentication on a DB instance, use the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI command. Specify `none` for the `--domain` option.
+ To move a DB instance from one domain to another, use the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI command. Specify the domain identifier of the new domain for the `--domain` option.

## Understanding Domain membership
<a name="postgresql-kerberos-managing.understanding"></a>

After you create or modify your DB cluster, the DB instances become members of the domain. You can view the status of the domain membership in the console or by running the [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI command. The status of the DB instance can be one of the following: 
+ `kerberos-enabled` – The DB instance has Kerberos authentication enabled.
+ `enabling-kerberos` – AWS is in the process of enabling Kerberos authentication on this DB instance.
+ `pending-enable-kerberos` – Enabling Kerberos authentication is pending on this DB instance.
+ `pending-maintenance-enable-kerberos` – AWS will attempt to enable Kerberos authentication on the DB instance during the next scheduled maintenance window.
+ `pending-disable-kerberos` – Disabling Kerberos authentication is pending on this DB instance.
+ `pending-maintenance-disable-kerberos` – AWS will attempt to disable Kerberos authentication on the DB instance during the next scheduled maintenance window.
+ `enable-kerberos-failed` – A configuration problem prevented AWS from enabling Kerberos authentication on the DB instance. Correct the configuration problem before reissuing the command to modify the DB instance.
+ `disabling-kerberos` – AWS is in the process of disabling Kerberos authentication on this DB instance.

A request to enable Kerberos authentication can fail because of a network connectivity issue or an incorrect IAM role. In some cases, the attempt to enable Kerberos authentication might fail when you create or modify a DB cluster. If so, make sure that you are using the correct IAM role, then modify the DB cluster to join the domain.

# Connecting to PostgreSQL with Kerberos authentication
<a name="postgresql-kerberos-connecting"></a>

You can connect to PostgreSQL with Kerberos authentication with the pgAdmin interface or with a command-line interface such as psql. For more information about connecting, see [Connecting to an Amazon Aurora PostgreSQL DB cluster](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL). For information about obtaining the endpoint, port number, and other details needed for connection, see [Viewing the endpoints for an Aurora cluster](Aurora.Overview.Endpoints.md#Aurora.Endpoints.Viewing). 

**Note**  
GSSAPI authentication and encryption in PostgreSQL are implemented by the Kerberos library `libkrb5.so`. Features such as `postgres_fdw` and `dblink` also rely on this same library for outbound connections with Kerberos authentication or encryption.

## pgAdmin
<a name="collapsible-section-pgAdmin"></a>

To use pgAdmin to connect to PostgreSQL with Kerberos authentication, take the following steps:

1. Launch the pgAdmin application on your client computer.

1. On the **Dashboard** tab, choose **Add New Server**.

1. In the **Create - Server** dialog box, enter a name on the **General** tab to identify the server in pgAdmin.

1. On the **Connection** tab, enter the following information from your Aurora PostgreSQL database. 
   + For **Host**, enter the endpoint for the Writer instance of your Aurora PostgreSQL DB cluster. An endpoint looks similar to the following:

     ```
     AUR-cluster-instance.111122223333.aws-region.rds.amazonaws.com
     ```

     To connect to an on-premises Microsoft Active Directory from a Windows client, you use the domain name of the AWS Managed Active Directory instead of `rds.amazonaws.com` in the host endpoint. For example, suppose that the domain name for the AWS Managed Active Directory is `corp.example.com`. Then for **Host**, the endpoint would be specified as follows: 

     ```
     AUR-cluster-instance.111122223333.aws-region.corp.example.com
     ```
   + For **Port**, enter the assigned port. 
   + For **Maintenance database**, enter the name of the initial database to which the client will connect.
   + For **Username**, enter the user name that you entered for Kerberos authentication in [Step 7: Create PostgreSQL users for your Kerberos principals](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins). 

1. Choose **Save**.

## Psql
<a name="collapsible-section-psql"></a>

To use psql to connect to PostgreSQL with Kerberos authentication, take the following steps:

1. At a command prompt, run the following command.

   ```
   kinit username                
   ```

   Replace *`username`* with the user name. At the prompt, enter the password stored in the Microsoft Active Directory for the user.

1. If the PostgreSQL DB cluster is using a publicly accessible VPC, put IP address for your DB cluster endpoint in your `/etc/hosts` file on the EC2 client. For example, the following commands obtain the IP address and then put it in the `/etc/hosts` file.

   ```
   % dig +short PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com  
   ;; Truncated, retrying in TCP mode.
   ec2-34-210-197-118.AWS-Region.compute.amazonaws.com.
   34.210.197.118 
   
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
   ```

   If you're using an on-premises Microsoft Active Directory from a Windows client, then you need to connect using a specialized endpoint. Instead of using the Amazon domain `rds.amazonaws.com` in the host endpoint, use the domain name of the AWS Managed Active Directory.

   For example, suppose that the domain name for your AWS Managed Active Directory is `corp.example.com`. Then use the format `PostgreSQL-endpoint.AWS-Region.corp.example.com` for the endpoint and put it in the `/etc/hosts` file.

   ```
   % echo " 34.210.197.118  PostgreSQL-endpoint.AWS-Region.corp.example.com" >> /etc/hosts
   ```

1. Use the following psql command to log in to a PostgreSQL DB cluster that is integrated with Active Directory. Use a cluster or instance endpoint. 

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.rds.amazonaws.com postgres
   ```

   To log in to the PostgreSQL DB cluster from a Windows client using an on-premises Active Directory, use the following psql command with the domain name from the previous step (`corp.example.com`):

   ```
   psql -U username@CORP.EXAMPLE.COM -p 5432 -h PostgreSQL-endpoint.AWS-Region.corp.example.com postgres
   ```

# Using AD security groups for Aurora PostgreSQL access control
<a name="AD.Security.Groups"></a>

From Aurora PostgreSQL 14.10 and 15.5 versions, Aurora PostgreSQL access control can be managed using AWS Directory Service for Microsoft Active Directory (AD) security groups. Earlier versions of Aurora PostgreSQL support Kerberos based authentication with AD only for individual users. Each AD user had to be explicitly provisioned to DB cluster to get access. 

Instead of explicitly provisioning each AD user to DB cluster based on business needs, you can leverage AD security groups as explained below: 
+ AD users are members of various AD security groups in an Active Directory. These are not dictated by DB cluster administrator, but are based on business requirements, and are handled by an AD administrator.
+ DB cluster administrators create DB roles in DB instances based on business requirements. These DB roles may have different permissions or privileges.
+ DB cluster administrators configure a mapping from AD security groups to DB roles on a per DB cluster basis.
+ DB users can access DB clusters using their AD credentials. Access is based on AD security group membership. AD users gain or lose access automatically based on their AD group memberships.

## Prerequisites
<a name="AD.Security.Groups.Prereq"></a>

Ensure that you have the following before setting up the extension for AD Security groups:
+ Set up Kerberos authentication for PostgreSQL DB clusters. For more information, see [ Setting up Kerberos authentication for PostgreSQL DB clusters](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-setting-up.html).
**Note**  
For AD security groups, skip Step 7: Create PostgreSQL users for your Kerberos principals in this setup procedure.
**Important**  
If you enable AD security groups on an Aurora PostgreSQL cluster that already has Kerberos authentication enabled, you might encounter authentication issues. This occurs when you add `pg_ad_mapping` to the `shared_preload_libraries` parameter and restart your database. When using cluster endpoints, login attempts using an AD user that isn't a database user with the `rds_ad` role can fail. This can also potentially cause engine crashes. To resolve this issue, disable and then re-enable Kerberos authentication on your cluster. This workaround is required for existing instances but doesn't affect instances created after April 2025.
+ Managing a DB cluster in a Domain. For more information, see [ Managing a DB cluster in a Domain](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-managing.html).

## Setting up the pg\$1ad\$1mapping extension
<a name="AD.Security.Groups.Setup"></a>

Aurora PostgreSQL is now providing `pg_ad_mapping` extension to manage the mapping between AD security groups and DB roles in Aurora PostgreSQL cluster. For more information about the functions provided by `pg_ad_mapping`, see [Using functions from the `pg_ad_mapping` extension](#AD.Security.Groups.functions).

To set up the `pg_ad_mapping` extension on your Aurora PostgreSQL DB cluster, you first add `pg_ad_mapping` to the shared libraries on the custom DB cluster parameter group for your Aurora PostgreSQL DB cluster. For information about creating a custom DB cluster parameter group, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md). Next, you install the `pg_ad_mapping` extension. The procedures in this section show you how. You can use the AWS Management Console or the AWS CLI. 

You must have permissions as the `rds_superuser` role to perform all these tasks.

The steps following assume that your Aurora PostgreSQL DB cluster is associated with a custom DB cluster parameter group.

### Console
<a name="AD.Security.Groups.basic-setup.CON"></a>

**To set up the `pg_ad_mapping` extension**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose your Aurora PostgreSQL DB cluster's Writer instance.

1. Open the **Configuration** tab for your Aurora PostgreSQL DB cluster writer instance. Among the Instance details, find the **Parameter group** link. 

1. Choose the link to open the custom parameters associated with your Aurora PostgreSQL DB cluster. 

1. In the **Parameters** search field, type `shared_pre` to find the `shared_preload_libraries` parameter.

1. Choose **Edit parameters** to access the property values.

1. Add `pg_ad_mapping` to the list in the **Values** field. Use a comma to separate items in the list of values.   
![\[Image of the shared_preload_libaries parameter with pgAudit added.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg_shared_preload_pgadmapping.png)

1. Reboot the writer instance of your Aurora PostgreSQL DB cluster so that your change to the `shared_preload_libraries` parameter takes effect. 

1. When the instance is available, verify that `pg_ad_mapping` has been initialized. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster, and then run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_ad_mapping
   (1 row)
   ```

1. With `pg_ad_mapping` initialized, you can now create the extension. You need to create the extension after initializing the library to start using the functions provided by this extension. 

   ```
   CREATE EXTENSION pg_ad_mapping;
   ```

1. Close the `psql` session.

   ```
   labdb=> \q
   ```

### AWS CLI
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.CLI"></a>

**To setup pg\$1ad\$1mapping**

To setup pg\$1ad\$1mapping using the AWS CLI, you call the [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) operation to add this parameter in your custom parameter group, as shown in the following procedure.

1. Use the following AWS CLI command to add `pg_ad_mapping` to the `shared_preload_libraries` parameter.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=pg_ad_mapping,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Use the following AWS CLI command to reboot the writer instance of your Aurora PostgreSQL DB cluster so that the pg\$1ad\$1mapping is initialized.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

1. When the instance is available, you can verify that `pg_ad_mapping` has been initialized. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster, and then run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_ad_mapping
   (1 row)
   ```

   With pg\$1ad\$1mapping initialized, you can now create the extension.

   ```
   CREATE EXTENSION pg_ad_mapping;
   ```

1. Close the `psql` session so that you can use the AWS CLI.

   ```
   labdb=> \q
   ```

## Retrieving Active Directory Group SID in PowerShell
<a name="AD.Security.Groups.retrieving"></a>

A security identifier (SID) is used to uniquely identify a security principal or security group. Whenever a security group or account is created in Active Directory a SID is assigned to it. To fetch the AD security group SID from the active directory, you can use the Get-ADGroup cmdlet from windows client machine which is joined with that Active Directory domain. The Identity parameter specifies the Active Directory group name to get the corresponding SID. 

The following example returns the SID of AD group *adgroup1*.

```
C:\Users\Admin> Get-ADGroup -Identity adgroup1 | select SID
            
             SID
-----------------------------------------------
S-1-5-21-3168537779-1985441202-1799118680-1612
```

## Mapping DB role with AD security group
<a name="AD.Security.Groups.mapping"></a>

You need to explicitly provision the AD security groups in the database as a PostgreSQL DB role. An AD user, who is part of at least one provisioned AD security group will get access to the database. You shouldn’t grant `rds_ad role` to AD group security based DB role. Kerberos authentication for security group will get triggered by using the domain name suffix like *user1@example.com*. This DB role can't use Password or IAM authentication to gain access to database.

**Note**  
AD users who have a corresponding DB role in the database with `rds_ad` role granted to them, can't login as part of the AD security group. They will get access through DB role as an individual user.

For example, accounts-group is a security group in AD where you would like to provision this security group in the Aurora PostgreSQL as accounts-role.


| AD Security Group | PosgreSQL DB role | 
| --- | --- | 
| accounts-group | accounts-role  | 

When mapping the DB role with the AD security group, you must ensure that DB role has the LOGIN attribute set and it has CONNECT privilege to the required login database.

```
postgres => alter role accounts-role login;
        
ALTER ROLE
postgres => grant connect on database accounts-db to accounts-role;
```

Admin can now proceed to create the mapping between AD security group and PostgreSQL DB role.

```
admin=>select pgadmap_set_mapping('accounts-group', 'accounts-role', <SID>, <Weight>);
```

For information on retrieving SID of AD security group, see [Retrieving Active Directory Group SID in PowerShell](#AD.Security.Groups.retrieving).

There might be cases where an AD user belongs to multiple groups, in that case, AD user will inherit the privileges of the DB role, which was provisioned with the highest weight. If the two roles have the same weight, AD user will inherit the privileges of the DB role corresponding to the mapping that was added recently. The recommendation is to specify weights that reflect the relative permissions/privileges of individual DB roles. Higher the permissions or privileges of a DB role, higher the weight that should be associated with the mapping entry. This will avoid the ambiguity of two mappings having the same weight.

The following table shows a sample mapping from AD security groups to Aurora PostgreSQL DB roles.


| AD Security Group | PosgreSQL DB role | Weight | 
| --- | --- | --- | 
| accounts-group | accounts-role | 7 | 
| sales-group | sales-role | 10 | 
| dev-group | dev-role | 7 | 

In the following example, `user1` will inherit the privileges of sales-role since it has the higher weight while `user2` will inherit the privileges of `dev-role` as the mapping for this role was created after `accounts-role`, which share the same weight as `accounts-role`.


| Username | Security Group membership | 
| --- | --- | 
| user1 | accounts-group sales-group | 
| user2 | accounts-group dev-group | 

The psql commands to establish, list, and clear the mappings are shown below. Currently, it isn't possible to modify a single mapping entry. The existing entry needs to be deleted and the mapping recreated.

```
admin=>select pgadmap_set_mapping('accounts-group', 'accounts-role', 'S-1-5-67-890', 7);
admin=>select pgadmap_set_mapping('sales-group', 'sales-role', 'S-1-2-34-560', 10);
admin=>select pgadmap_set_mapping('dev-group', 'dev-role', 'S-1-8-43-612', 7);
            
admin=>select * from pgadmap_read_mapping();
            
ad_sid       | pg_role        | weight | ad_grp 
-------------+----------------+--------+---------------
S-1-5-67-890 | accounts-role | 7      | accounts-group
S-1-2-34-560 | sales-role    | 10     | sales-group
S-1-8-43-612 | dev-role      | 7      | dev-group
(3 rows)
```

## AD user identity logging/auditing
<a name="AD.Security.Groups.useridentity"></a>

Use the following command to determine the database role inherited by current or session user:

```
postgres=>select session_user, current_user;
            
session_user | current_user
-------------+--------------
dev-role     | dev-role

(1 row)
```

To determine the AD security principal identity, use the following command:

```
postgres=>select principal from pg_stat_gssapi where pid = pg_backend_pid();
            
 principal        
-------------------------
 user1@example.com

(1 row)
```

Currently, AD user identity isn't visible in the audit logs. The `log_connections` parameter can be enabled to log DB session establishment. For more information, see [log\$1connections](https://docs.aws.amazon.com/prescriptive-guidance/latest/tuning-postgresql-parameters/log-connections.html). The output for this includes the AD user identity, as shown below. The backend PID associated with this output can then help attribute actions back to the actual AD user. 

```
pgrole1@postgres:[615]:LOG: connection authorized: user=pgrole1 database=postgres application_name=psql GSS (authenticated=yes, encrypted=yes, principal=Admin@EXAMPLE.COM)
```

## Limitations
<a name="AD.Security.Groups.limitations"></a>
+ Microsoft Entra ID known as Azure Active Directory isn't supported. 

## Using functions from the `pg_ad_mapping` extension
<a name="AD.Security.Groups.functions"></a>

`pg_ad_mapping` extension provided support to the following functions:

### pgadmap\$1set\$1mapping
<a name="AD.Security.Groups.functions.setmapping"></a>

This function establishes the mapping between AD security group and Database role with an associated weight.

#### Syntax
<a name="pgadmap_set_mapping-syntax"></a>

 

```
pgadmap_set_mapping(
ad_group, 
db_role, 
ad_group_sid, 
weight)
```

#### Arguments
<a name="pgadmap_set_mapping-arguments"></a>


| Parameter | Description | 
| --- | --- | 
| ad\$1group | Name of AD Group. Value cannot be null or empty string. | 
| db\$1role | Database role to be mapped to the specified AD Group. Value cannot be null or empty string. | 
| ad\$1group\$1sid | Security identifier that is used to uniquely identify the AD group. Value starts with 'S-1-' and cannot be null or empty string. For more information, see [Retrieving Active Directory Group SID in PowerShell](#AD.Security.Groups.retrieving). | 
| weight | Weight associated with the database role. The role with highest weight gets precedence when user is a member of multiple groups. Default value of weight is 1. | 

#### Return type
<a name="pgadmap_set_mapping-return-type"></a>

`None`

#### Usage notes
<a name="pgadmap_set_mapping-usage-notes"></a>

This function adds a new mapping from AD security group to database role. It can only be executed on the primary DB instance of the DB cluster by a user having rds\$1superuser privilege. 

#### Examples
<a name="pgadmap_set_mapping-examples"></a>

```
postgres=> select pgadmap_set_mapping('accounts-group','accounts-role','S-1-2-33-12345-67890-12345-678',10);
            
pgadmap_set_mapping 

(1 row)
```

### pgadmap\$1read\$1mapping
<a name="AD.Security.Groups.functions.readmapping"></a>

This function lists the mappings between AD security group and DB role that were set using `pgadmap_set_mapping` function.

#### Syntax
<a name="pgadmap_read_mapping-syntax"></a>

 

```
pgadmap_read_mapping()
```

#### Arguments
<a name="pgadmap_read_mapping-arguments"></a>

`None`

#### Return type
<a name="pgadmap_read_mapping-return-type"></a>


| Parameter | Description | 
| --- | --- | 
| ad\$1group\$1sid | Security identifier that is used to uniquely identify the AD group. Value starts with 'S-1-' and cannot be null or empty string. For more information, see [Retrieving Active Directory Group SID in PowerShell](#AD.Security.Groups.retrieving).accounts-role@example.com | 
| db\$1role | Database role to be mapped to the specified AD Group. Value cannot be null or empty string. | 
| weight | Weight associated with the database role. The role with highest weight gets precedence when user is a member of multiple groups. Default value of weight is 1. | 
| ad\$1group | Name of AD Group. Value cannot be null or empty string. | 

#### Usage notes
<a name="pgadmap_read_mapping-usage-notes"></a>

Call this function to list all the available mappings between AD security group and DB role. 

#### Examples
<a name="pgadmap_read_mapping-examples"></a>

```
postgres=> select * from pgadmap_read_mapping();
            
ad_sid                              | pg_role       | weight | ad_grp 
------------------------------------+---------------+--------+------------------
S-1-2-33-12345-67890-12345-678      | accounts-role | 10     | accounts-group
(1 row)

(1 row)
```

### pgadmap\$1reset\$1mapping
<a name="AD.Security.Groups.functions.resetmapping"></a>

This function resets one or all the mappings that were set using `pgadmap_set_mapping` function.

#### Syntax
<a name="pgadmap_reset_mapping-syntax"></a>

 

```
pgadmap_reset_mapping(
ad_group_sid, 
db_role, 
weight)
```

#### Arguments
<a name="pgadmap_reset_mapping-arguments"></a>


| Parameter | Description | 
| --- | --- | 
| ad\$1group\$1sid | Security identifier that is used to uniquely identify the AD group. | 
| db\$1role | Database role to be mapped to the specified AD Group. | 
| weight | Weight associated with the database role. | 

If no arguments are provided, all AD group to DB role mappings are reset. Either all arguments need to be provided or none.

#### Return type
<a name="pgadmap_reset_mapping-return-type"></a>

`None`

#### Usage notes
<a name="pgadmap_reset_mapping-usage-notes"></a>

Call this function to delete a specific AD group to DB role mapping or to reset all mappings. This function can only be executed on the primary DB instance of the DB cluster by a user having `rds_superuser` privilege. 

#### Examples
<a name="pgadmap_reset_mapping-examples"></a>

```
postgres=> select * from pgadmap_read_mapping();
            
   ad_sid                       | pg_role      | weight      | ad_grp 
--------------------------------+--------------+-------------+-------------------
 S-1-2-33-12345-67890-12345-678 | accounts-role| 10          | accounts-group
 S-1-2-33-12345-67890-12345-666 | sales-role   | 10          | sales-group
 
(2 rows)
postgres=> select pgadmap_reset_mapping('S-1-2-33-12345-67890-12345-678', 'accounts-role', 10);
                
pgadmap_reset_mapping   
(1 row)
                
postgres=> select * from pgadmap_read_mapping();
            
   ad_sid                       | pg_role      | weight      | ad_grp 
--------------------------------+--------------+-------------+---------------
 S-1-2-33-12345-67890-12345-666 | sales-role   | 10          | sales-group
 
(1 row)
postgres=> select pgadmap_reset_mapping();

pgadmap_reset_mapping   
(1 row)
                
postgres=> select * from pgadmap_read_mapping();
            
   ad_sid                       | pg_role      | weight      | ad_grp 
--------------------------------+--------------+-------------+--------------
 (0 rows)
```

# Migrating data to Amazon Aurora with PostgreSQL compatibility
<a name="AuroraPostgreSQL.Migrating"></a>

You have several options for migrating data from your existing database to an Amazon Aurora PostgreSQL-Compatible Edition DB cluster. Your migration options also depend on the database that you are migrating from and the size of the data that you are migrating. Following are your options:

**[ Migrating an RDS for PostgreSQL DB instance using a snapshot](AuroraPostgreSQL.Migrating.RDSPostgreSQL.Import.Console.md)**  
You can migrate data directly from an RDS for PostgreSQL DB snapshot to an Aurora PostgreSQL DB cluster.

**[ Migrating an RDS for PostgreSQL DB instance using an Aurora read replica](AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.md)**  
You can also migrate from an RDS for PostgreSQL DB instance by creating an Aurora PostgreSQL read replica of an RDS for PostgreSQL DB instance. When the replica lag between the RDS for PostgreSQL DB instance and the Aurora PostgreSQL read replica is zero, you can stop replication. At this point, you can make the Aurora read replica a standalone Aurora PostgreSQL DB cluster for reading and writing.

**[Importing data from Amazon S3 into Aurora PostgreSQL ](USER_PostgreSQL.S3Import.md) **  
You can migrate data by importing it from Amazon S3 into a table belonging to an Aurora PostgreSQL DB cluster. 

**Migrating from a database that is not PostgreSQL-compatible**  
You can use AWS Database Migration Service (AWS DMS) to migrate data from a database that is not PostgreSQL-compatible. For more information on AWS DMS, see [What is AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) in the *AWS Database Migration Service User Guide*. 

**Note**  
Enabling Kerberos authentication isn't currently supported on Aurora PostgreSQL DB cluster during migration from RDS for PostgreSQL. You can enable Kerberos authentication only on a standalone Aurora PostgreSQL DB cluster.

For a list of AWS Regions where Aurora is available, see [Amazon Aurora](https://docs.aws.amazon.com/general/latest/gr/rande.html#aurora) in the *AWS General Reference*.

**Important**  
If you plan to migrate an RDS for PostgreSQL DB instance to an Aurora PostgreSQL DB cluster in the near future, we strongly recommend that you turn off auto minor version upgrades for the DB instance early in the migration planning phase. Migration to Aurora PostgreSQL might be delayed if the RDS for PostgreSQL version isn't yet supported by Aurora PostgreSQL.   
For information about Aurora PostgreSQL versions, see [ Engine versions for Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Updates.20180305.html).

# Migrating a snapshot of an RDS for PostgreSQL DB instance to an Aurora PostgreSQL DB cluster
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Import.Console"></a>

To create an Aurora PostgreSQL DB cluster, you can migrate a DB snapshot of an RDS for PostgreSQL DB instance. The new Aurora PostgreSQL DB cluster is populated with the data from the original RDS for PostgreSQL DB instance. For information about creating a DB snapshot, see [Creating a DB snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html).

In some cases, the DB snapshot might not be in the AWS Region where you want to locate your data. If so, use the Amazon RDS console to copy the DB snapshot to that AWS Region. For information about copying a DB snapshot, see [Copying a DB snapshot](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html).

You can migrate RDS for PostgreSQL snapshots that are compatible with the Aurora PostgreSQL versions available in the given AWS Region. For example, you can migrate a snapshot from an RDS for PostgreSQL 11.1 DB instance to Aurora PostgreSQL version 11.4, 11.7, 11.8, or 11.9 in the US West (N. California) Region. You can migrate RDS for PostgreSQL 10.11 snapshot to Aurora PostgreSQL 10.11, 10.12, 10.13, and 10.14. In other words, the RDS for PostgreSQL snapshot must use the same or a lower minor version as the Aurora PostgreSQL. 

You can also choose for your new Aurora PostgreSQL DB cluster to be encrypted at rest by using an AWS KMS key. This option is available only for unencrypted DB snapshots.

To migrate an RDS for PostgreSQL DB snapshot to an Aurora PostgreSQL DB cluster, you can use the AWS Management Console, the AWS CLI, or the RDS API. When you use the AWS Management Console, the console takes the actions necessary to create both the DB cluster and the primary instance.

## Console
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Import.Console.console"></a>

**To migrate a PostgreSQL DB snapshot by using the RDS console**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose **Snapshots**.

1. On the **Snapshots** page, choose the RDS for PostgreSQL snapshot that you want to migrate into an Aurora PostgreSQL DB cluster.

1. Choose **Actions** then choose **Migrate snapshot**.

1. Set the following values on the **Migrate database** page:
   + **DB engine version**: Choose a DB engine version you want to use for the new migrated instance.
   + **DB instance identifier**: Enter a name for the DB cluster that is unique for your account in the AWS Region that you chose. This identifier is used in the endpoint addresses for the instances in your DB cluster. You might choose to add some intelligence to the name, such as including the AWS Region and DB engine that you chose, for example **aurora-cluster1**.

     The DB instance identifier has the following constraints:
     + It must contain 1–63 alphanumeric characters or hyphens.
     + Its first character must be a letter.
     + It can't end with a hyphen or contain two consecutive hyphens.
     + It must be unique for all DB instances per AWS account, per AWS Region.
   + **DB instance class**: Choose a DB instance class that has the required storage and capacity for your database, for example `db.r6g.large`. Aurora cluster volumes automatically grow as the amount of data in your database increases. So you only need to choose a DB instance class that meets your current storage requirements. For more information, see [Overview of Amazon Aurora storage](Aurora.Overview.StorageReliability.md#Aurora.Overview.Storage).
   + **Virtual private cloud (VPC)**: If you have an existing VPC, then you can use that VPC with your Aurora PostgreSQL DB cluster by choosing your VPC identifier, for example `vpc-a464d1c1`. For information about creating a VPC, see [Tutorial: Create a VPC for use with a DB cluster (IPv4 only)](CHAP_Tutorials.WebServerDB.CreateVPC.md).

     Otherwise, you can choose to have Amazon RDS create a VPC for you by choosing **Create new VPC**. 
   + **DB subnet group**: If you have an existing subnet group, then you can use that subnet group with your Aurora PostgreSQL DB cluster by choosing your subnet group identifier, for example `gs-subnet-group1`.
   + **Public access**: Choose **No** to specify that instances in your DB cluster can only be accessed by resources inside of your VPC. Choose **Yes** to specify that instances in your DB cluster can be accessed by resources on the public network.
**Note**  
Your production DB cluster might not need to be in a public subnet, because only your application servers require access to your DB cluster. If your DB cluster doesn't need to be in a public subnet, set **Public access** to **No**.
   + **VPC security group**: Choose a VPC security group to allow access to your database.
   + **Availability Zone**: Choose the Availability Zone to host the primary instance for your Aurora PostgreSQL DB cluster. To have Amazon RDS choose an Availability Zone for you, choose **No preference**.
   + **Database port**: Enter the default port to be used when connecting to instances in the Aurora PostgreSQL DB cluster. The default is `5432`.
**Note**  
You might be behind a corporate firewall that doesn't allow access to default ports such as the PostgreSQL default port, 5432. In this case, provide a port value that your corporate firewall allows. Remember that port value later when you connect to the Aurora PostgreSQL DB cluster.
   + **Enable Encryption**: Choose **Enable Encryption** for your new Aurora PostgreSQL DB cluster to be encrypted at rest. Also choose a KMS key as the **AWS KMS key** value.
   + **Auto minor version upgrade**: Choose **Enable auto minor version upgrade** to enable your Aurora PostgreSQL DB cluster to receive minor PostgreSQL DB engine version upgrades automatically when they become available.

     The **Auto minor version upgrade** option only applies to upgrades to PostgreSQL minor engine versions for your Aurora PostgreSQL DB cluster. It doesn't apply to regular patches applied to maintain system stability.

1. Choose **Migrate** to migrate your DB snapshot. 

1. Choose **Databases** to see the new DB cluster. Choose the new DB cluster to monitor the progress of the migration. When the migration completes, the Status for the cluster is **Available**. On the **Connectivity & security** tab, you can find the cluster endpoint to use for connecting to the primary writer instance of the DB cluster. For more information on connecting to an Aurora PostgreSQL DB cluster, see [Connecting to an Amazon Aurora DB cluster](Aurora.Connecting.md). 

## AWS CLI
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Import.Console.CLI"></a>

Using the AWS CLI to migrate an RDS for PostgreSQL DB snapshot to an Aurora PostgreSQL involves two separate AWS CLI commands. First, you use the `restore-db-cluster-from-snapshot` AWS CLI command create a new Aurora PostgreSQL DB cluster. You then use the `create-db-instance` command to create the primary DB instance in the new cluster to complete the migration. The following procedure creates an Aurora PostgreSQL DB cluster with primary DB instance that has the same configuration as the DB instance used to create the snapshot. 

**To migrate an RDS for PostgreSQL DB snapshot to an Aurora PostgreSQL DB cluster**

1. Use the [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) command to obtain information about the DB snapshot you want to migrate. You can specify either the `--db-instance-identifier` parameter or the `--db-snapshot-identifier` in the command. If you don't specify one of these parameters, you get all snapshots. 

   ```
   aws rds describe-db-snapshots --db-instance-identifier <your-db-instance-name>
   ```

1. The command returns all configuration details for any snapshots created from the DB instance specified. In the output, find the snapshot that you want to migrate and locate its Amazon Resource Name (ARN). To learn more about Amazon RDS ARNs, see [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds). An ARN looks similar to the output following.

   ```
   “DBSnapshotArn": "arn:aws:rds:aws-region:111122223333:snapshot:<snapshot_name>"
   ```

   Also in the output you can find configuration details for the RDS for PostgreSQL DB instance, such as the engine version, allocated storage, whether or not the DB instance is encrypted, and so on. 

1. Use the [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) command to start the migration. Specify the following parameters:
   + `--db-cluster-identifier` – The name that you want to give to the Aurora PostgreSQL DB cluster. This Aurora DB cluster is the target for your DB snapshot migration. 
   + `--snapshot-identifier` – The Amazon Resource Name (ARN) of the DB snapshot to migrate. 
   + `--engine` – Specify `aurora-postgresql` for the Aurora DB cluster engine.
   + `--kms-key-id` – This optional parameter lets you create an encrypted Aurora PostgreSQL DB cluster from an unencrypted DB snapshot. It also lets you choose a different encryption key for the DB cluster than the key used for the DB snapshot.
**Note**  
You can't create an unencrypted Aurora PostgreSQL DB cluster from an encrypted DB snapshot. 

   Without the `--kms-key-id` parameter specified as shown following, the [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html) AWS CLI command creates an empty Aurora PostgreSQL DB cluster that's either encrypted using the same key as the DB snapshot or is unencrypted if the source DB snapshot isn't encrypted. 

   For Linux, macOS, or Unix:

   ```
   aws rds restore-db-cluster-from-snapshot \
       --db-cluster-identifier cluster-name \
       --snapshot-identifier arn:aws:rds:aws-region:111122223333:snapshot:your-snapshot-name \
       --engine aurora-postgresql
   ```

   For Windows:

   ```
   aws rds restore-db-cluster-from-snapshot ^
       --db-cluster-identifier new_cluster ^
       --snapshot-identifier arn:aws:rds:aws-region:111122223333:snapshot:your-snapshot-name ^
       --engine aurora-postgresql
   ```

1. The command returns details about the Aurora PostgreSQL DB cluster that's being created for the migration. You can check the status of the Aurora PostgreSQL DB cluster by using the [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clussters.html) AWS CLI command.

   ```
   aws rds describe-db-clusters --db-cluster-identifier cluster-name
   ```

1. When the DB cluster becomes "available", you use [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) command to populate the Aurora PostgreSQL DB cluster with the DB instance based on your Amazon RDS DB snapshot. Specify the following parameters:
   + `--db-cluster-identifier` – The name of the new Aurora PostgreSQL DB cluster that you created in the previous step. 
   + `--db-instance-identifier` – The name you want to give to the DB instance. This instance becomes the primary node in your Aurora PostgreSQL DB cluster.
   + `----db-instance-class ` – Specify the DB instance class to use. Choose from among the DB instance classes supported by the Aurora PostgreSQL version to which you're migrating. For more information, see [DB instance class types](Concepts.DBInstanceClass.Types.md) and [Supported DB engines for DB instance classes](Concepts.DBInstanceClass.SupportAurora.md).
   + `--engine` – Specify `aurora-postgresql` for the DB instance.

   You can also create the DB instance with a different configuration than the source DB snapshot, by passing in the appropriate options in the `create-db-instance` AWS CLI command. For more information, see the [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) command. 

   For Linux, macOS, or Unix:

   ```
   aws rds create-db-instance \
       --db-cluster-identifier cluster-name \
       --db-instance-identifier --db-instance-class db.instance.class \
       --engine aurora-postgresql
   ```

   For Windows:

   ```
   aws rds create-db-instance ^
       --db-cluster-identifier cluster-name ^
       --db-instance-identifier --db-instance-class db.instance.class ^
       --engine aurora-postgresql
   ```

When the migration process completes, the Aurora PostgreSQL cluster has a populated primary DB instance. 

# Migrating data from an RDS for PostgreSQL DB instance to an Aurora PostgreSQL DB cluster using an Aurora read replica
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica"></a>

You can use an RDS for PostgreSQL DB instance as the basis for a new Aurora PostgreSQL DB cluster by using an Aurora read replica for the migration process. The Aurora read replica option is available only for migrating within the same AWS Region and account, and it's available only if the Region offers a compatible version of Aurora PostgreSQL for your RDS for PostgreSQL DB instance. By *compatible*, we mean that the Aurora PostgreSQL version is the same as the RDS for PostgreSQL version, or that it is a higher minor version in the same major version family.

For example, to use this technique to migrate an RDS for PostgreSQL 11.14 DB instance, the Region must offer Aurora PostgreSQL version 11.14 or a higher minor version in the PostgreSQL version 11 family. 

**Topics**
+ [Overview of migrating data by using an Aurora read replica](#AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Intro)
+ [Preparing to migrate data by using an Aurora read replica](#AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Prepare)
+ [Creating an Aurora read replica](#AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Create)
+ [Promoting an Aurora read replica](#AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Promote)

## Overview of migrating data by using an Aurora read replica
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Intro"></a>

Migrating from an RDS for PostgreSQL DB instance to an Aurora PostgreSQL DB cluster is a multistep procedure. First, you create an Aurora read replica of your source RDS for PostgreSQL DB instance. That starts a replication process from your RDS for PostgreSQL DB instance to a special-purpose DB cluster known as a **Replica* cluster*. The Replica cluster consists solely of an Aurora read replica (a reader instance). 

**Note**  
It can take several hours per terabyte of data for the migration to complete. 

**Promoting an Aurora PostgreSQL Replica**

After you create an Aurora PostgreSQL DB cluster, follow these steps to promote the Aurora Replica:

1. Stop all database write workload on the source RDS for PostgreSQL DB instance.

1. Get the current `WAL LSN` from the source RDS for PostgreSQL DB instance:

   ```
   SELECT pg_current_wal_lsn();
   pg_current_wal_lsn
   --------------------
   0/F0000318
   (1 row)
   ```

1. On the Aurora PostgreSQL Replica cluster, check that the replayed LSN is greater than the LSN from step 2:

   ```
   SELECT pg_last_wal_replay_lsn();
   pg_last_wal_replay_lsn
   ------------------------
   0/F0000400
   (1 row)
   ```

   Alternatively, you can use the following query on the source RDS for PostgreSQL DB instance:

   ```
   SELECT restart_lsn FROM pg_replication_slots;
   ```

1. Promote the Aurora PostgreSQL Replica cluster.

   When the replication stops, the replica cluster is promoted to a standalone Aurora PostgreSQL DB cluster, and the reader is promoted to writer instance for the cluster. At this point, you can add instances to the Aurora PostgreSQL DB cluster to size it according to your use case. If you no longer need the original RDS for PostgreSQL DB instance, you can delete it.

You can't create an Aurora read replica if your RDS for PostgreSQL DB instance already has an Aurora read replica or if it has a cross-Region read replica. 

## Preparing to migrate data by using an Aurora read replica
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Prepare"></a>

**Note**  
When preparing to migrate data to Aurora PostgreSQL, it's important to identify and handle unlogged tables appropriately. For more information, see [Handling unlogged tables during migration](aurora-postgresql-unlogged-tables.md#aurora-postgresql-unlogged-tables-migration).

During the migration process using Aurora read replica, updates made to the source RDS for PostgreSQL DB instance are asynchronously replicated to the Aurora read replica of the Replica cluster. The process uses PostgreSQL's native streaming replication functionality which stores write-ahead logs (WAL) segments on the source instance. Before starting this migration process, make sure that your instance has sufficient storage capacity by checking values for the metrics listed in the table. 


| Metric | Description | 
| --- | --- | 
|  `FreeStorageSpace`  |  The available storage space. Units: Bytes  | 
|  `OldestReplicationSlotLag`  |  The size of the lag for WAL data in the replica that is lagging the most. Units: Megabytes  | 
|  `RDSToAuroraPostgreSQLReplicaLag`  |  The amount of time in seconds that an Aurora PostgreSQL DB cluster lags behind the source RDS DB instance.  | 
|  `TransactionLogsDiskUsage`  |  The disk space used by the transaction logs. Units: Megabytes  | 

For more information about monitoring your RDS instance, see [Monitoring](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) in the *Amazon RDS User Guide*.

## Creating an Aurora read replica
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Create"></a>

You can create an Aurora read replica for an RDS for PostgreSQL DB instance by using the AWS Management Console or the AWS CLI. The option to create an Aurora read replica using the AWS Management Console is available only if the AWS Region offers a compatible Aurora PostgreSQL version. That is, it's available only if there's an Aurora PostgreSQL version that is the same as the RDS for PostgreSQL version or a higher minor version in the same major version family.

### Console
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Create.Console"></a>

**To create an Aurora read replica from a source PostgreSQL DB instance**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**. 

1. Choose the RDS for PostgreSQL DB instance that you want to use as the source for your Aurora read replica. For **Actions**, choose **Create Aurora read replica**. If this choice doesn't display, it means that a compatible Aurora PostgreSQL version isn't available in the Region.   
![\[Create Aurora read replica\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Aurorapgres-migrate.png)

1. On the Create Aurora read replica settings page, you configure the properties for the Aurora PostgreSQL DB cluster as shown in the following table. The Replica DB cluster is created from a snapshot of the source DB instance using the same 'master' user name and password as the source, so you can't change these at this time.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.html)

1. Choose **Create read replica**.

### AWS CLI
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Create.CLI"></a>

To create an Aurora read replica from a source RDS for PostgreSQL DB instance by using the AWS CLI, you first use the [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) CLI command to create an empty Aurora DB cluster. Once the DB cluster exists, you then use the [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) command to create the primary instance for your DB cluster. The primary instance is the first instance that's created in an Aurora DB cluster. In this case, it's created initially as an Aurora read replica of your RDS for PostgreSQL DB instance. When the process concludes, your RDS for PostgreSQL DB instance has effectively been migrated to an Aurora PostgreSQL DB cluster.

You don't need to specify the main user account (typically, `postgres`), its password, or the database name. The Aurora read replica obtains these automatically from the source RDS for PostgreSQL DB instance that you identify when you invoke the AWS CLI commands. 

You do need to specify the engine version to use for the Aurora PostgreSQL DB cluster and the DB instance. The version you specify should match the source RDS for PostgreSQL DB instance. If the source RDS for PostgreSQL DB instance is encrypted, you need to also specify encryption for the Aurora PostgreSQL DB cluster primary instance. Migrating an encrypted instance to an unencrypted Aurora DB cluster isn't supported. 

The following examples create an Aurora PostgreSQL DB cluster named `my-new-aurora-cluster` that's going to use an unencrypted RDS DB source instance. You first create the Aurora PostgreSQL DB cluster by calling the [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) CLI command. The example shows how to use the optional `--storage-encrypted `parameter to specify that the DB cluster should be encrypted. Because the source DB isn't encrypted, the `--kms-key-id` is used to specify the key to use. For more information about required and optional parameters, see the list following the example.

For Linux, macOS, or Unix:

```
aws rds create-db-cluster  \
    --db-cluster-identifier my-new-aurora-cluster \
    --db-subnet-group-name my-db-subnet
    --vpc-security-group-ids sg-11111111 
    --engine aurora-postgresql \
    --engine-version same-as-your-rds-instance-version \
    --replication-source-identifier arn:aws:rds:aws-region:111122223333:db/rpg-source-db \
    --storage-encrypted \
    --kms-key-id arn:aws:kms:aws-region:111122223333:key/11111111-2222-3333-444444444444
```

For Windows:

```
aws rds create-db-cluster  ^
    --db-cluster-identifier my-new-aurora-cluster ^
    --db-subnet-group-name my-db-subnet ^
    --vpc-security-group-ids sg-11111111 ^
    --engine aurora-postgresql ^
    --engine-version same-as-your-rds-instance-version ^
    --replication-source-identifier arn:aws:rds:aws-region:111122223333:db/rpg-source-db ^
    --storage-encrypted ^
    --kms-key-id arn:aws:kms:aws-region:111122223333:key/11111111-2222-3333-444444444444
```

In the following list you can find more information about some of the options shown in the example. Unless otherwise specified, these parameters are required.
+ `--db-cluster-identifier` – You need to give your new Aurora PostgreSQL DB cluster a name.
+ `--db-subnet-group-name` – Create your Aurora PostgreSQL DB cluster in the same DB subnet as the source DB instance.
+ `--vpc-security-group-ids` – Specify the security group for your Aurora PostgreSQL DB cluster. 
+ `--engine-version` – Specify the version to use for the Aurora PostgreSQL DB cluster. This should be the same as or a higher minor version than the version used by your source RDS for PostgreSQL DB instance. 
+ `--replication-source-identifier` – Identify your RDS for PostgreSQL DB instance using its Amazon Resource Name (ARN). For more information about Amazon RDS ARNs, see [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds) in the *AWS General Reference*. of your DB cluster.
+ `--storage-encrypted` – Optional. Use only when needed to specify encryption as follows:
  + Use this parameter when the source DB instance has encrypted storage. The call to [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) fails if you don't use this parameter with a source DB instance that has encrypted storage. If you want to use a different key for the Aurora PostgreSQL DB cluster than the key used by the source DB instance, you need to also specify the `--kms-key-id`. 
  + Use if the source DB instance's storage is unencrypted but you want the Aurora PostgreSQL DB cluster to use encryption. If so, you also need to identify the encryption key to use with the `--kms-key-id` parameter.
+ `--kms-key-id` – Optional. When used, you can specify the key to use for storage encryption (`--storage-encrypted`) by using the key's ARN, ID, alias ARN, or its alias name. This parameter is needed only for the following situations:
  + To choose a different key for the Aurora PostgreSQL DB cluster than that used by the source DB instance. 
  + To create an encrypted cluster from an unencrypted source. In this case, you need to specify the key that Aurora PostgreSQL should use for encryption.

After creating the Aurora PostgreSQL DB cluster, you then create the primary instance by using the [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI command, as shown in the following: 

For Linux, macOS, or Unix:

```
aws rds create-db-instance \
    --db-cluster-identifier my-new-aurora-cluster \
    --db-instance-class db.x2g.16xlarge \
    --db-instance-identifier rpg-for-migration \
    --engine aurora-postgresql
```

For Windows:

```
aws rds create-db-instance ^
    --db-cluster-identifier my-new-aurora-cluster ^
    --db-instance-class db.x2g.16xlarge ^
    --db-instance-identifier rpg-for-migration ^
    --engine aurora-postgresql
```

In the following list, you can find more information about some of the options shown in the example.
+ `--db-cluster-identifier` – Specify the name of the Aurora PostgreSQL DB cluster that you created with the [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) command in the previous steps.
+ `--db-instance-class` – The name of the DB instance class to use for your primary instance, such as `db.r4.xlarge`, `db.t4g.medium`, `db.x2g.16xlarge`, and so on. For a list of available DB instance classes, see [DB instance class types](Concepts.DBInstanceClass.Types.md). 
+ `--db-instance-identifier` – Specify the name to give your primary instance.
+ `--engine aurora-postgresql` – Specify `aurora-postgresql` for the engine.

### RDS API
<a name="Aurora.Migration.RDSPostgreSQL.Create.API"></a>

To create an Aurora read replica from a source RDS for PostgreSQL DB instance, first use the RDS API operation [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) to create a new Aurora DB cluster for the Aurora read replica that gets created from your source RDS for PostgreSQL DB instance. When the Aurora PostgreSQL DB cluster is available, you then use the [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) to create the primary instance for the Aurora DB cluster.

You don't need to specify the main user account (typically, `postgres`), its password, or the database name. The Aurora read replica obtains these automatically from the source RDS for PostgreSQL DB instance specified with `ReplicationSourceIdentifier`. 

You do need to specify the engine version to use for the Aurora PostgreSQL DB cluster and the DB instance. The version you specify should match the source RDS for PostgreSQL DB instance. If the source RDS for PostgreSQL DB instance is encrypted, you need to also specify encryption for the Aurora PostgreSQL DB cluster primary instance. Migrating an encrypted instance to an unencrypted Aurora DB cluster isn't supported. 

To create the Aurora DB cluster for the Aurora read replica, use the RDS API operation [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) with the following parameters:
+ `DBClusterIdentifier` – The name of the DB cluster to create.
+ `DBSubnetGroupName` – The name of the DB subnet group to associate with this DB cluster.
+ `Engine=aurora-postgresql` – The name of the engine to use.
+ `ReplicationSourceIdentifier` – The Amazon Resource Name (ARN) for the source PostgreSQL DB instance. For more information about Amazon RDS ARNs, see [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-rds) in the *Amazon Web Services General Reference.* If `ReplicationSourceIdentifier` identifies an encrypted source, Amazon RDS uses your default KMS key unless you specify a different key using the `KmsKeyId` option. 
+ `VpcSecurityGroupIds` – The list of Amazon EC2 VPC security groups to associate with this DB cluster.
+ `StorageEncrypted` – Indicates that the DB cluster is encrypted. When you use this parameter without also specifying the `ReplicationSourceIdentifier`, Amazon RDS uses your default KMS key.
+ `KmsKeyId` – The key for an encrypted cluster. When used, you can specify the key to use for storage encryption by using the key's ARN, ID, alias ARN, or its alias name.

For more information, see [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html) in the *Amazon RDS API Reference*.

Once the Aurora DB cluster is available, you can then create a primary instance for it by using the RDS API operation [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) with the following parameters:
+ `DBClusterIdentifier` – The name of your DB cluster.
+ `DBInstanceClass` – The name of the DB instance class to use for your primary instance.
+ `DBInstanceIdentifier` – The name of your primary instance.
+ `Engine=aurora-postgresql` – The name of the engine to use.

For more information, see [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) in the *Amazon RDS API Reference*.

## Promoting an Aurora read replica
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Promote"></a>

The migration to Aurora PostgreSQL isn't complete until you promote the Replica cluster, so don't delete the RDS for PostgreSQL source DB instance just yet. 

Before promoting the Replica cluster, make sure that the RDS for PostgreSQL DB instance doesn't have any in-process transactions or other activity writing to the database. When the replica lag on the Aurora read replica reaches zero (0), you can promote the Replica cluster. For more information about monitoring replica lag, see [Monitoring Aurora PostgreSQL replication](AuroraPostgreSQL.Replication.md#AuroraPostgreSQL.Replication.Monitoring) and [Instance-level metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances).

### Console
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Promote.Console"></a>

**To promote an Aurora read replica to an Aurora DB cluster**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**. 

1. Choose the Replica cluster.   
![\[Promote a Replica cluster to full Aurora PostgreSQL DB cluster status\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Aurorapgres-migrate-2.png)

1. For **Actions**, choose **Promote**. This may take a few minutes and can cause downtime. 

When the process completes, the Aurora Replica cluster is a Regional Aurora PostgreSQL DB cluster, with a Writer instance containing the data from the RDS for PostgreSQL DB instance.

### AWS CLI
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Promote.CLI"></a>

To promote an Aurora read replica to a stand-alone DB cluster, use the [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica-db-cluster.html) AWS CLI command. 

**Example**  
For Linux, macOS, or Unix:  

```
aws rds promote-read-replica-db-cluster \
    --db-cluster-identifier myreadreplicacluster
```
For Windows:  

```
aws rds promote-read-replica-db-cluster ^
    --db-cluster-identifier myreadreplicacluster
```

### RDS API
<a name="AuroraPostgreSQL.Migrating.RDSPostgreSQL.Replica.Promote.API"></a>

To promote an Aurora read replica to a stand-alone DB cluster, use the RDS API operation [PromoteReadReplicaDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplicaDBCluster.html). 

After you promote the Replica cluster, you can confirm that the promotion has completed by checking the event log, as follows.

**To confirm that the Aurora Replica cluster was promoted**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Events**.

1. On the **Events** page, find the name of your cluster in the **Source** list. Each event has a source, type, time, and message. You can see all events that have occurred in your AWS Region for your account. A successful promotion generates the following message. 

   ```
   Promoted Read Replica cluster to a stand-alone database cluster.
   ```

After promotion is complete, the source RDS for PostgreSQL DB instance and the Aurora PostgreSQL DB cluster are unlinked. You can direct your client applications to the endpoint for the Aurora read replica. For more information on the Aurora endpoints, see [Amazon Aurora endpoint connections](Aurora.Overview.Endpoints.md). At this point, you can safely delete the DB instance.

# Optimizing query performance in Aurora PostgreSQL
<a name="AuroraPostgreSQL.optimizing.queries"></a>

Optimizing query performance is crucial because it helps databases run faster and more efficiently while using fewer resources, which results in better user experience and lower operating costs. Amazon Aurora PostgreSQL provides several features to help optimize query performance for PostgreSQL workloads.

**Topics**
+ [Improving query performance for Aurora PostgreSQL with Aurora Optimized Reads](AuroraPostgreSQL.optimized.reads.md)
+ [Optimizing correlated subqueries in Aurora PostgreSQL](apg-correlated-subquery.md)
+ [Improving query performance using adaptive join](user-apg-adaptive-join.md)
+ [Using shared plan cache](apg-shared-plan-cache.md)

# Improving query performance for Aurora PostgreSQL with Aurora Optimized Reads
<a name="AuroraPostgreSQL.optimized.reads"></a>

You can achieve faster query processing for Aurora PostgreSQL with Aurora Optimized Reads. An Aurora PostgreSQL DB instance that uses Aurora Optimized Reads delivers up to 8x improved query latency and up to 30% cost savings for applications with large datasets, that exceed the memory capacity of a DB instance.

**Topics**
+ [Overview of Aurora Optimized Reads in PostgreSQL](#AuroraPostgreSQL.optimized.reads.overview)
+ [Using Aurora Optimized Reads](#AuroraPostgreSQL.optimized.reads.using)
+ [Use cases for Aurora Optimized Reads](#AuroraPostgreSQL.optimized.reads.usecases)
+ [Monitoring DB instances that use Aurora Optimized Reads](#AuroraPostgreSQL.optimized.reads.monitoring)
+ [Best practices for Aurora Optimized Reads](#AuroraPostgreSQL.optimized.reads.bestpractices)

## Overview of Aurora Optimized Reads in PostgreSQL
<a name="AuroraPostgreSQL.optimized.reads.overview"></a>

Aurora Optimized Reads is available by default when you create a DB cluster that uses Graviton-based R6gd, R8gd, and Intel-based R6id instances with non-volatile memory express (NVMe) storage. It is available from the following PostgreSQL versions:
+ 14.12 and higher versions, 15.7 and higher versions, 16.3 and higher versions, 17.4 and higher versions for R8gd instances
+ 14.9 and higher versions, 15.4 and higher versions, 16.1 and all higher versions for R6gd and R6id instances

Aurora Optimized Reads supports two capabilities: tiered cache and temporary objects.

**Optimized Reads-enabled tiered cache ** - Using tiered cache, you can extend your DB instance caching capacity by up to 5x the instance memory. This automatically maintains the cache to contain the most recent, transactionally consistent data, freeing applications from the overhead of managing the data currency of external result-set based caching solutions. It offers up to 8x better latency for queries that were previously fetching data from Aurora storage.

In Aurora, the value for `shared_buffers` in the default parameter group is usually set to around 75% of the available memory. However, for the r8gd, r6gd, and r6id instance types, Aurora reduces the `shared_buffers` space by 4.5% to host the metadata for the Optimized Reads cache.

**Optimized Reads-enabled temporary objects** - Using temporary objects, you can achieve faster query processing by placing the temporary files that are generated by PostgreSQL on the local NVMe storage. This reduces the traffic to Elastic Block Storage (EBS) over the network. It offers up to 2x better latency and throughput for advanced queries that sort, join, or merge large volumes of data that do not fit within the memory capacity available on a DB instance.

On an Aurora I/O-Optimized cluster, Optimized Reads makes use of both tiered cache and temporary objects on NVMe storage. With Optimized Reads-enabled tiered cache capability, Aurora allocates 2x the instance memory for temporary objects, approximately 10% of the storage for internal operations and the remaining storage as tiered cache. On an Aurora Standard cluster, Optimized Reads makes use of only temporary objects. 

Aurora I/O-Optimized clusters allows you to resize the allocated space for Optimized Reads-enabled temporary objects using the dynamic parameter `aurora_temp_space_size` at the instance level. This resizing feature is available from the following PostgreSQL versions:
+ 16.8 and all higher versions
+ 15.12 and higher 15 versions
+ 14.17 and higher 14 versions

With this parameter, you can resize the capacity from 2x up to 6x of instance memory without requiring database engine restart. When you expand temporary object space, the change takes effect immediately, regardless of concurrent workloads. However, when you reduce the space, the adjustment completes only after there is sufficient unused space in temporary objects to accommodate the new size request. After you resize Optimized Reads-enabled temporary objects, the tiered cache automatically adjusts to use any available space.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.optimized.reads.html)

**Note**  
A switch between IO-Optimized and Standard clusters on a NVMe-based DB instance class causes an immediate database engine restart.

In Aurora PostgreSQL, use the `temp_tablespaces` parameter to configure the table space where the temporary objects are stored.

To check whether the temporary objects are configured, use the following command:

```
postgres=> show temp_tablespaces;
temp_tablespaces
---------------------
aurora_temp_tablespace
(1 row)
```

The `aurora_temp_tablespace` is a tablespace configured by Aurora that points to the NVMe local storage. You can't modify this parameter or switch back to Amazon EBS storage.

To check whether optimized reads cache is turned on, use the following command:

```
postgres=> show shared_preload_libraries;
                 shared_preload_libraries
--------------------------------------------------------
rdsutils,pg_stat_statements,aurora_optimized_reads_cache
```

## Using Aurora Optimized Reads
<a name="AuroraPostgreSQL.optimized.reads.using"></a>

When you provision an Aurora PostgreSQL DB instance with one of the NVMe-based DB instances, the DB instance automatically uses Aurora Optimized Reads.

To turn on Aurora Optimized Reads, do one of the following:
+ Create an Aurora PostgreSQL DB cluster using one of the NVMe-based DB instance classes. For more information, see [Creating an Amazon Aurora DB cluster](Aurora.CreateInstance.md).
+ Modify an existing Aurora PostgreSQL DB cluster to use one of the NVMe-based DB instance classes. For more information, see [Modifying an Amazon Aurora DB cluster](Aurora.Modifying.md).

Aurora Optimized Reads is available in all AWS Regions where one or more of the DB instance classes with local NVMe SSD storage are supported. For more information, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md).

To switch back to a non-optimized reads Aurora instance, modify the DB instance class of your Aurora instance to the similar instance class without NVMe ephemeral storage for your database workloads. For example, if the current DB instance class is db.r6gd.4xlarge, choose db.r6g.4xlarge to switch back. For more information, see [Modifying an Aurora DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html).

## Use cases for Aurora Optimized Reads
<a name="AuroraPostgreSQL.optimized.reads.usecases"></a>

**Optimized Reads-enabled tiered cache**

The following are some use cases that can benefit from Optimized Reads with tiered cache:
+ Internet scale applications such as payments processing, billing, e-commerce with strict performance SLAs.
+ Real-time reporting dashboards that run hundreds of point queries for metrics/data collection.
+ Generative AI applications with the pgvector extension to search exact or nearest neighbors across millions of vector embeddings.

**Optimized Reads-enabled temporary objects**

The following are some use cases that can benefit from Optimized Reads with temporary objects:
+ Analytical queries that include Common Table Expressions (CTEs), derived tables, and grouping operations.
+ Read replicas that handle the unoptimized queries for an application.
+ On-demand or dynamic reporting queries with complex operations such as GROUP BY and ORDER BY that can't always use appropriate indexes.
+ `CREATE INDEX` or `REINDEX` operations for sorting.
+ Other workloads that use internal temporary tables.

## Monitoring DB instances that use Aurora Optimized Reads
<a name="AuroraPostgreSQL.optimized.reads.monitoring"></a>

You can monitor your queries that use Optimized Reads-enabled tiered cache with the EXPLAIN command as shown in the following example:

```
Postgres=> EXPLAIN (ANALYZE, BUFFERS) SELECT c FROM sbtest15 WHERE id=100000000                   

QUERY PLAN
--------------------------------------------------------------------------------------
 Index Scan using sbtest15_pkey on sbtest15  (cost=0.57..8.59 rows=1 width=121) (actual time=0.287..0.288 rows=1 loops=1)
   Index Cond: (id = 100000000)
   Buffers: shared hit=3 read=2 aurora_orcache_hit=2
   I/O Timings: shared/local read=0.264
 Planning:
   Buffers: shared hit=33 read=6 aurora_orcache_hit=6
   I/O Timings: shared/local read=0.607
 Planning Time: 0.929 ms
 Execution Time: 0.303 ms
(9 rows)
Time: 2.028 ms
```

**Note**  
`aurora_orcache_hit` and `aurora_storage_read` fields in the `Buffers` section of the explain plan are shown only when Optimized Reads is turned on and their values are greater than zero. The read field is the total of the `aurora_orcache_hit` and `aurora_storage_read` fields.

You can monitor DB instances that use Aurora Optimized Reads using the following CloudWatch metrics:
+ `AuroraOptimizedReadsCacheHitRatio`
+ `FreeEphemeralStorage`
+ `ReadIOPSEphemeralStorage`
+ `ReadLatencyEphemeralStorage`
+ `ReadThroughputEphemeralStorage`
+ `WriteIOPSEphemeralStorage`
+ `WriteLatencyEphemeralStorage`
+ `WriteThroughputEphemeralStorage`

These metrics provide data about available instance store storage, IOPS, and throughput. For more information about these metrics, see [Instance-level metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances).

You can also use the `pg_proctab` extension to monitor NVMe storage. 

```
postgres=>select * from pg_diskusage();

major | minor |       devname       | reads_completed | reads_merged | sectors_read | readtime | writes_completed | writes_merged | sectors_written | writetime | current_io | iotime  | totaliotime
------+-------+---------------------+-----------------+--------------+--------------+----------+------------------+---------------+-----------------+-----------+------------+---------+-------------
      |       | rdstemp             |           23264 |            0 |       191450 |    11670 |          1750892 |             0 |        24540576 |    819350 |          0 | 3847580 |      831020
      |       | rdsephemeralstorage |           23271 |            0 |       193098 |     2620 |           114961 |             0 |        13845120 |    130770 |          0 |  215010 |      133410
(2 rows)
```

## Best practices for Aurora Optimized Reads
<a name="AuroraPostgreSQL.optimized.reads.bestpractices"></a>

Use the following best practices for Aurora Optimized Reads:
+ Monitor the storage space available on the instance store with the CloudWatch metric `FreeEphemeralStorage`. If the instance store is reaching its limit because of the workload on the DB instance, tune the concurrency and queries which heavily use temporary objects or modify it to use a larger DB instance class.
+ Monitor the CloudWatch metric for the Optimized Reads cache hit rate. Operations like VACUUM modify large numbers of blocks very quickly. This can cause a temporary drop in the hit ratio. The `pg_prewarm` extension can be used to load data into the buffer cache that allows Aurora to proactively write some of those blocks to the Optimized Reads cache.
+ You can enable cluster cache management (CCM) to warm up the buffer cache and tiered cache on a tier-0 reader, which will be used as a failover target. When CCM is enabled, the buffer cache is periodically scanned to write pages eligible for eviction in tiered cache. For more information on CCM, see [Fast recovery after failover with cluster cache management for Aurora PostgreSQL](AuroraPostgreSQL.cluster-cache-mgmt.md). 

# Optimizing correlated subqueries in Aurora PostgreSQL
<a name="apg-correlated-subquery"></a>

 A correlated subquery references table columns from the outer query. It is evaluated once for every row returned by the outer query. In the following example, the subquery references a column from table ot. This table is not included in the subquery’s FROM clause, but it is referenced in the outer query’s FROM clause. If table ot has 1 million rows, the subquery needs to be evaluated 1 million times. 

```
SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT AVG(it.b) FROM it WHERE it.a = ot.a);
```

**Note**  
Subquery transformation and subquery cache are available in Aurora PostgreSQL beginning with version 16.8, while Babelfish for Aurora PostgreSQL supports these features from 4.2.0.
Starting with Babelfish for Aurora PostgreSQL versions 4.6.0 and 5.2.0, the following parameters control these features:  
 babelfishpg\$1tsql.apg\$1enable\$1correlated\$1scalar\$1transform 
 babelfishpg\$1tsql.apg\$1enable\$1subquery\$1cache 
By default, both parameters are turned on.

## Improving Aurora PostgreSQL query performance using subquery transformation
<a name="apg-corsubquery-transformation"></a>

Aurora PostgreSQL can accelerate correlated subqueries by transforming them into equivalent outer joins. This optimization applies to the following two types of correlated subqueries:
+ Subqueries that return a single aggregate value and appear in the SELECT list.

  ```
  SELECT ot.a, ot.b, (SELECT AVG(it.b) FROM it WHERE it.a = ot.a) FROM ot;
  ```
+ Subqueries that return a single aggregate value and appear in a WHERE clause.

  ```
  SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT AVG(it.b) FROM it WHERE it.a = ot.a);
  ```

### Enabling transformation in the subquery
<a name="apg-corsub-transform"></a>

 To enable the transformation of correlated subqueries into equivalent outer joins, set the `apg_enable_correlated_scalar_transform` parameter to `ON`. The default value of this parameter is `OFF`. 

You can modify the cluster or instance parameter group to set the parameters. To learn more, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

Alternatively, you can configure the setting for just the current session by the following command:

```
SET apg_enable_correlated_scalar_transform TO ON;
```

### Verifying the transformation
<a name="apg-corsub-transform-confirm"></a>

Use the EXPLAIN command to verify if the correlated subquery has been transformed into an outer join in the query plan. 

 When the transformation is enabled, the applicable correlated subquery part will be transformed into outer join. For example: 

```
postgres=> CREATE TABLE ot (a INT, b INT);
CREATE TABLE
postgres=> CREATE TABLE it (a INT, b INT);
CREATE TABLE

postgres=> SET apg_enable_correlated_scalar_transform TO ON;
SET
postgres=> EXPLAIN (COSTS FALSE) SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT AVG(it.b) FROM it WHERE it.a = ot.a);

                         QUERY PLAN
--------------------------------------------------------------
 Hash Join
   Hash Cond: (ot.a = apg_scalar_subquery.scalar_output)
   Join Filter: ((ot.b)::numeric < apg_scalar_subquery.avg)
   ->  Seq Scan on ot
   ->  Hash
         ->  Subquery Scan on apg_scalar_subquery
               ->  HashAggregate
                     Group Key: it.a
                     ->  Seq Scan on it
```

The same query is not transformed when the GUC parameter is turned `OFF`. The plan will not have outer join but subplan instead.

```
postgres=> SET apg_enable_correlated_scalar_transform TO OFF;
SET
postgres=> EXPLAIN (COSTS FALSE) SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT AVG(it.b) FROM it WHERE it.a = ot.a);
                QUERY PLAN
----------------------------------------
 Seq Scan on ot
   Filter: ((b)::numeric < (SubPlan 1))
   SubPlan 1
     ->  Aggregate
           ->  Seq Scan on it
                 Filter: (a = ot.a)
```

### Limitations
<a name="apg-corsub-transform-limitations"></a>
+ The subquery must be in the SELECT list or in one of the conditions in the where clause. Otherwise, it won’t be transformed.
+ The subquery must return an aggregate function. User-defined aggregate functions aren't supported for transformation.
+ A subquery whose return expression isn't a simple aggregate function won't be transformed.
+ The correlated condition in subquery WHERE clauses should be a simple column reference. Otherwise, it won’t be transformed.
+ The correlated condition in subquery where clauses must be a plain equality predicate.
+ The subquery can't contain either a HAVING or a GROUP BY clause.
+ The where clause in the subquery may contain one or more predicates combined with AND.

**Note**  
The performance impact of transformation varies depending on your schema, data, and workload. Correlated subquery execution with transformation can significantly improve performance as the number of rows produced by the outer query increases. We strongly recommend that you test this feature in a non-production environment with your actual schema, data, and workload before enabling it in a production environment.

## Using subquery cache to improve Aurora PostgreSQL query performance
<a name="apg-subquery-cache"></a>

 Aurora PostgreSQL supports subquery cache to store the results of correlated subqueries. This feature skips repeated correlated subquery executions when subquery results are already in the cache. 

### Understanding subquery cache
<a name="apg-subquery-cache-understand"></a>

 PostgreSQL’s Memoize node is the key part of subquery cache. The Memoize node maintains a hash table in local cache to map from input parameter values to query result rows. The memory limit for the hash table is the product of work\$1mem and hash\$1mem\$1multiplier. To learn more, see [Resource Consumption](https://www.postgresql.org/docs/16/runtime-config-resource.html). 

 During query execution, subquery cache uses Cache Hit Rate (CHR) to estimate whether the cache is improving query performance and to decide at query runtime whether to continue using the cache. CHR is the ratio of the number of cache hits to the total number of requests. For example, if a correlated subquery needs to be executed 100 times, and 70 of those execution results can be retrieved from the cache, the CHR is 0.7.

For every apg\$1subquery\$1cache\$1check\$1interval number of cache misses, the benefit of subquery cache is evaluated by checking whether the CHR is larger than apg\$1subquery\$1cache\$1hit\$1rate\$1threshold. If not, the cache will be deleted from memory, and the query execution will return to the original, uncached subquery re-execution. 

### Parameters that control subquery cache behavior
<a name="apg-subquery-cache-parameters"></a>

The following table lists the parameters that control the behavior of the subquery cache.


|  Parameter  | Description  | Default | Allowed  | 
| --- | --- | --- | --- | 
| apg\$1enable\$1subquery\$1cache  | Enables the use of cache for correlated scalar subqueries.  | OFF  | ON, OFF | 
| apg\$1subquery\$1cache\$1check\$1interval  | Sets the frequency, in number of cache misses, to evaluate subquery cache hit rate.   | 500  | 0–2147483647 | 
| apg\$1subquery\$1cache\$1hit\$1rate\$1threshold  | Sets the threshold for subquery cache hit rate.  | 0.3  | 0.0–1.0 | 

**Note**  
Larger values of `apg_subquery_cache_check_interval` may improve the accuracy of the CHR-based cache benefit estimation, but will increase the cache overhead, since CHR won’t get evaluated until the cache table has `apg_subquery_cache_check_interval` rows. 
Larger values of `apg_subquery_cache_hit_rate_threshold` bias towards abandoning subquery cache and returning back to the original, uncached subquery re-execution. 

You can modify the cluster or instance parameter group to set the parameters. To learn more, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

Alternatively, you can configure the setting for just the current session by the following command:

```
SET apg_enable_subquery_cache TO ON;
```

### Turning on subquery cache in Aurora PostgreSQL
<a name="apg-subquery-cache-turningon"></a>

When subquery cache is enabled, Aurora PostgreSQL applies cache to save subquery results. The query plan will then have a Memoize node under SubPlan. 

 For example, the following command sequence shows the estimated query execution plan of a simple correlated subquery without subquery cache. 

```
postgres=> SET apg_enable_subquery_cache TO OFF;
SET
postgres=> EXPLAIN (COSTS FALSE) SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT it.b FROM it WHERE it.a = ot.a);

             QUERY PLAN
------------------------------------
 Seq Scan on ot
   Filter: (b < (SubPlan 1))
   SubPlan 1
     ->  Seq Scan on it
           Filter: (a = ot.a)
```

After turning on `apg_enable_subquery_cache`, the query plan will contain a Memoize node under the SubPlan node, indicating that the subquery is planning to use cache.

```
postgres=> SET apg_enable_subquery_cache TO ON;
SET
postgres=> EXPLAIN (COSTS FALSE) SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT it.b FROM it WHERE it.a = ot.a);

             QUERY PLAN
------------------------------------
 Seq Scan on ot
   Filter: (b < (SubPlan 1))
   SubPlan 1
     ->  Memoize
           Cache Key: ot.a
           Cache Mode: binary
           ->  Seq Scan on it
                 Filter: (a = ot.a)
```

 The actual query execution plan contains more details of the subquery cache, including cache hits and cache misses. The following output shows the actual query execution plan of the above example query after inserting some values to the tables. 

```
postgres=> EXPLAIN (COSTS FALSE, TIMING FALSE, ANALYZE TRUE) SELECT ot.a, ot.b FROM ot WHERE ot.b < (SELECT it.b FROM it WHERE it.a = ot.a);
            QUERY PLAN
-----------------------------------------------------------------------------
 Seq Scan on ot (actual rows=2 loops=1)
   Filter: (b < (SubPlan 1))
   Rows Removed by Filter: 8
   SubPlan 1
     ->  Memoize (actual rows=0 loops=10)
           Cache Key: ot.a
           Cache Mode: binary
           Hits: 4  Misses: 6  Evictions: 0  Overflows: 0  Memory Usage: 1kB
           ->  Seq Scan on it (actual rows=0 loops=6)
                 Filter: (a = ot.a)
                 Rows Removed by Filter: 4
```

The total cache hit number is 4, and the total cache miss number is 6. If the total number of hits and misses is less than the number of loops in the Memoize node, it means that the CHR evaluation did not pass and the cache was cleaned up and abandoned at some point. The subquery execution then returned back to the original uncached re-execution.

### Limitations
<a name="apg-subquery-cache-limitations"></a>

Subquery cache does not support certain patterns of correlated subqueries. Those types of queries will be run without cache, even if subquery cache is turned on:
+ IN/EXISTS/ANY/ALL correlated subqueries
+ Correlated subqueries containing nondeterministic functions. 
+ Correlated subqueries that reference outer table columns with datatypes that don't support hashing or equality operations.

# Improving query performance using adaptive join
<a name="user-apg-adaptive-join"></a>

## Overview
<a name="user-apg-adaptive-join-intro"></a>

Adaptive join is a preview feature in Aurora PostgreSQL 17.4 that helps improve query performance. This feature is disabled by default, but you can enable it using Global User Configuration (GUC) parameters. Since this is a preview feature, the default parameter values might change. When enabled, adaptive join helps optimize query performance by dynamically switching from a nested loop join to a hash join at runtime. This switch occurs when the PostgreSQL optimizer has incorrectly chosen a nested loop join due to inaccurate cardinality estimates.

## Configuring adaptive join
<a name="user-apg-adaptive-join-config"></a>

You can control adaptive join using these three GUC parameters:


**Adaptive join configuration parameters**  

| GUC parameter | Description | Default and configuration options | 
| --- | --- | --- | 
| apg\$1adaptive\$1join\$1crossover\$1multiplier | This multiplier works with the row crossover point to determine when to switch from a nested loop to a hash join. The row crossover point is where the SQL optimizer estimates that nested loop and hash join operations have equal cost. A higher multiplier value reduces the likelihood of adaptive join switching to a hash join. |  Controls whether Adaptive Join is enabled [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/user-apg-adaptive-join.html)  | 
| apg\$1adaptive\$1join\$1cost\$1threshold | This parameter sets a minimum query cost threshold. Adaptive join automatically disables itself for queries below this threshold. This prevents performance overhead in simple queries where the cost of planning an adaptive join could exceed the benefits of switching from nested loop to hash join. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/user-apg-adaptive-join.html)  | 
| apg\$1enable\$1parameterized\$1adaptive\$1join | This parameter extends adaptive join functionality to parameterized nested loop joins when enabled. By default, adaptive join works only with unparameterized nested loop joins, as these are more likely to benefit from switching to hash join. Parameterized nested loop joins typically perform better, making the switch to hash join less critical. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/user-apg-adaptive-join.html) Requires `apg_adaptive_join_crossover_multiplier` to be enabled first  | 

# Using shared plan cache
<a name="apg-shared-plan-cache"></a>

## Overview
<a name="apg-shared-plan-cache-overview"></a>

Aurora PostgreSQL uses a process-per-user model where each client connection creates a dedicated backend process. Each backend process maintains its own local plan cache for prepared statements. Because these caches can't be shared between processes, applications that use many prepared statements might create duplicate caches across different backend processes, which leads to increased memory usage.

Aurora PostgreSQL versions 17.6 and later and 16.10 and later introduce shared plan cache functionality. When you enable this feature, backend processes can share generic plans, which reduces memory usage and improves performance by eliminating duplicate plan generation.

The shared plan cache uses the following components as its cache key:
+ Query string (including comments)
+ Planner-related GUC parameters (including `search_path`)
+ User ID
+ Database ID

Instance restarts reset the shared cache.

## Parameters
<a name="apg-shared-plan-cache-parameters"></a>

The following table describes the parameters that control the shared plan cache feature:


| Parameter | Description | Default | Allowed | 
| --- | --- | --- | --- | 
| apg\$1shared\$1plan\$1cache.enable | Turns shared plan cache on or off | 0 (OFF) | 0, 1 | 
| apg\$1shared\$1plan\$1cache.max | The maximum number of cache entries | 200–1000 (instance size dependent) | 100–50000 | 
| apg\$1shared\$1plan\$1cache.min\$1size\$1per\$1entry | The minimum plan size to store in shared cache. Smaller plans use local cache to optimize OLTP performance. | 16 KB | 0–32768 (KB) | 
| apg\$1shared\$1plan\$1cache.max\$1size\$1per\$1entry | The maximum plan size for shared cache. Larger plans store only cost information. | 256 KB–4 MB (instance size dependent) | 0–32768 (KB) | 
| apg\$1shared\$1plan\$1cache.idle\$1generic\$1plan\$1release\$1timeout | The time after which idle sessions release local generic plans. Lower values save memory; higher values might improve performance. | 10 seconds | 0–2147483647 (ms) | 

**Note**  
You can modify all parameters without restarting.

## Monitoring views and functions
<a name="apg-shared-plan-cache-monitoring"></a>
+ `apg_shared_plan_cache()` – Shows detailed cache entry information (hits, validity, timestamps)
+ `apg_shared_plan_cache_stat()` – Displays instance-level statistics (evictions, invalidations)
+ `apg_shared_plan_cache_reset()` – Removes all entries in `apg_shared_plan_cache()` and `apg_shared_plan_cache_stat()`
+ `apg_shared_plan_cache_remove(cache_key)` – Removes an entry from `apg_shared_plan_cache()` where the entry matches the `cache_key`

## Limitations
<a name="apg-shared-plan-cache-limitations"></a>
+ Only works with prepared statements and doesn't cache PL/pgSQL statements
+ Doesn't cache a query that contains temporary tables or catalog tables
+ Doesn't cache a query that depends on RLS (Row-Level Security)
+ Each replica maintains its own cache (no cross-replica sharing)

# Working with unlogged tables in Aurora PostgreSQL
<a name="aurora-postgresql-unlogged-tables"></a>

Amazon Aurora PostgreSQL supports unlogged tables that are crash-safe and maintain data integrity even after writer instance failures or failovers. In standard PostgreSQL, unlogged tables bypass the Write-Ahead Log (WAL) during write operations, resulting in faster write speeds. However, this comes at the cost of reduced durability, as unlogged tables are not crash-safe and can lose data after a system failure or unclean shutdown. These unlogged tables are automatically truncated after a crash or unclean shutdown. Their contents and indexes are also not replicated to standby servers.

In contrast, Aurora PostgreSQL handles unlogged tables differently due to its distributed storage architecture. This is because Aurora's storage system does not rely on the traditional PostgreSQL WAL for durability. However, the performance benefits typically associated with unlogged tables in standard PostgreSQL may not be as significant in Aurora. This is due to Aurora's distributed storage architecture, which can introduce additional overhead compared to the local storage used in standard PostgreSQL.

When using unlogged tables in Aurora PostgreSQL, consider the following: 
+ You can access unlogged tables only from the writer node in the Aurora DB cluster.
+ Reader nodes can access unlogged tables only when promoted to writer status.
+ When you try to access unlogged tables from a reader node, it will result in the following error:

  `cannot access temporary or unlogged relations during recovery.`

## Creating unlogged tables
<a name="aurora-postgresql-unlogged-tables-create"></a>

To create an unlogged table in Aurora PostgreSQL, add the UNLOGGED keyword in your CREATE TABLE statement:

```
CREATE UNLOGGED TABLE staging_sales_data (
    transaction_id bigint,
    customer_id bigint,
    product_id bigint,
    transaction_date date,
    amount NUMERIC
);
```

## Handling unlogged tables during migration
<a name="aurora-postgresql-unlogged-tables-migration"></a>

When preparing to migrate data to Aurora PostgreSQL, it's important to identify and handle unlogged tables appropriately. Unlogged tables are not WAL-logged and are excluded from the replication stream, meaning they will not be replicated to an Aurora read replica.

Convert unlogged tables to logged tables or drop them if they are not being used before creating an Aurora read replica.

To verify the presence of unlogged tables in each database within the instance, use the following command:

```
SELECT oid, relfilenode, relname, relpersistence, relkind 
FROM pg_class 
WHERE relpersistence ='u';
```

To convert an unlogged table back to a logged table, use the following command:

```
ALTER TABLE table_name SET LOGGED;
```

This operation rewrites the entire table and places an exclusive lock on it until completion. For large tables, this may result in significant downtime.

## Converting unlogged tables to logged tables
<a name="aurora-postgresql-unlogged-tables-convert"></a>

When you need to convert an unlogged table back to a logged table, you can use the following command:

```
ALTER TABLE table_name SET LOGGED;
```

This operation rewrites the entire table and places an exclusive lock on it until the operation completes. For large tables, this can result in significant downtime.

## Unlogged tables and logical replication
<a name="aurora-postgresql-unlogged-tables-logicalrep"></a>

Unlogged tables are generally not included in logical replication because logical replication relies on the WAL to capture and transfer changes. By default, changes to unlogged tables are not WAL-logged and excluded from the replication stream, making them unsuitable for use cases where logical replication is required. However, Aurora PostgreSQL provides a parameter called `rds.logically_replicate_unlogged_tables` that allows you to control this behavior:
+ When `rds.logically_replicate_unlogged_tables` is set to 0 (off) the unlogged tables are excluded from logical replication.
+  When `rds.logically_replicate_unlogged_tables` is set to 1 (on) the unlogged tables are included in logical replication. 

**Note**  
In Aurora PostgreSQL, the `rds.logically_replicate_unlogged_tables` parameter is set by default to 1 (on) in versions 14 and earlier, and to 0 (off) in versions 15 and later.

# Working with PostgreSQL autovacuum on Amazon Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum"></a>

We strongly recommend that you use the autovacuum feature to maintain the health of your PostgreSQL DB instance. Autovacuum automates the start of the VACUUM and the ANALYZE commands. It checks for tables with a large number of inserted, updated, or deleted tuples. After this check, it reclaims storage by removing obsolete data or tuples from the PostgreSQL database.

By default, autovacuum is turned on for the Aurora PostgreSQL DB instances that you create using any of the default PostgreSQL DB parameter groups. Other configuration parameters associated with the autovacuum feature are also set by default. Because these defaults are somewhat generic, you can benefit from tuning some of the parameters associated with the autovacuum feature for your specific workload. 

Following, you can find more information about the autovacuum and how to tune some of its parameters on your Aurora PostgreSQL DB instance. 

**Topics**
+ [Allocating memory for autovacuum](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum.WorkMemory)
+ [Reducing the likelihood of transaction ID wraparound](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptiveAutoVacuuming)
+ [Determining if the tables in your database need vacuuming](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.NeedVacuuming.md)
+ [Determining which tables are currently eligible for autovacuum](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.EligibleTables.md)
+ [Determining if autovacuum is currently running and for how long](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AutovacuumRunning.md)
+ [Performing a manual vacuum freeze](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.VacuumFreeze.md)
+ [Reindexing a table when autovacuum is running](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.Reindexing.md)
+ [Managing autovacuum with large indexes](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.md)
+ [Other parameters that affect autovacuum](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.OtherParms.md)
+ [Setting table-level autovacuum parameters](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.TableParameters.md)
+ [Logging autovacuum and vacuum activities](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.Logging.md)
+ [Understanding the behavior of autovacuum with invalid databases](appendix.postgresql.commondbatasks.autovacuumbehavior.md)
+ [Identify and resolve aggressive vacuum blockers in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.md)

## Allocating memory for autovacuum
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.WorkMemory"></a>

One of the most important parameters influencing autovacuum performance is the [https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-AUTOVACUUM-WORK-MEM](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-AUTOVACUUM-WORK-MEM) parameter. In Aurora PostgreSQL versions 14 and prior, the `autovacuum_work_mem` parameter is set to -1, indicating that the setting of `maintenance_work_mem` is used instead. For all other versions, `autovacuum_work_mem` is determined by GREATEST(\$1DBInstanceClassMemory/32768\$1, 65536).

Manual vacuum operations always use the `maintenance_work_mem` setting, with a default setting of GREATEST(\$1DBInstanceClassMemory/63963136\$11024\$1, 65536), and it can also be adjusted at the session level using the `SET` command for more targeted manual `VACUUM` operations.

The `autovacuum_work_mem` determines memory for autovacuum to hold identifiers of dead tuples (`pg_stat_all_tables.n_dead_tup`) for vacuuming indexes.

When doing calculations to determine the `autovacuum_work_mem` parameter's value, be aware of the following:
+ If you set the parameter too low, the vacuum process might have to scan the table multiple times to complete its work. Such multiple scans can have a negative impact on performance. For larger instances, setting `maintenance_work_mem` or `autovacuum_work_mem` to at least 1 GB can improve the performance of vacuuming tables with a high number of dead tuples. However, in PostgreSQL versions 16 and prior, vacuum’s memory usage is capped at 1 GB, which is sufficient to process approximately 179 million dead tuples in a single pass. If a table has more dead tuples than this, vacuum will need to make multiple passes through the table's indexes, significantly increasing the time required. Starting with PostgreSQL version 17, there isn't a limit of 1 GB, and autovacuum can process more than 179 million tuples by using radix trees.

  A tuple identifier is 6 bytes in size. To estimate the memory needed for vacuuming an index of a table, query `pg_stat_all_tables.n_dead_tup` to find the number of dead tuples, then multiply this number by 6 to determine the memory required for vacuuming the index in a single pass. You may use the following query:

  ```
  SELECT
      relname AS table_name,
      n_dead_tup,
      pg_size_pretty(n_dead_tup * 6) AS estimated_memory
  FROM
      pg_stat_all_tables
  WHERE
      relname = 'name_of_the_table';
  ```
+ The `autovacuum_work_mem` parameter works in conjunction with the `autovacuum_max_workers` parameter. Each worker among `autovacuum_max_workers` can use the memory that you allocate. If you have many small tables, allocate more `autovacuum_max_workers` and less `autovacuum_work_mem`. If you have large tables (larger than 100 GB), allocate more memory and fewer worker processes. You need to have enough memory allocated to succeed on your biggest table. Thus, make sure that the combination of worker processes and memory equals the total memory that you want to allocate.

## Reducing the likelihood of transaction ID wraparound
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptiveAutoVacuuming"></a>

In some cases, parameter group settings related to autovacuum might not be aggressive enough to prevent transaction ID wraparound. To address this, Aurora PostgreSQL provides a mechanism that adapts the autovacuum parameter values automatically. *Adaptive autovacuum* is a feature for Aurora PostgreSQL. A detailed explanation of [TransactionID wraparound](https://www.postgresql.org/docs/current/static/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND) is found in the PostgreSQL documentation. 

Adaptive autovacuum is turned on by default for Aurora PostgreSQL instances with the dynamic parameter `rds.adaptive_autovacuum` set to ON. We strongly recommend that you keep this turned on. However, to turn off adaptive autovacuum parameter tuning, set the `rds.adaptive_autovacuum` parameter to 0 or OFF. 

Transaction ID wraparound is still possible even when Aurora Amazon RDS tunes the autovacuum parameters. We encourage you to implement an Amazon CloudWatch alarm for transaction ID wraparound. For more information, see the post [Implement an early warning system for transaction ID wraparound in RDS for PostgreSQL](https://aws.amazon.com/blogs/database/implement-an-early-warning-system-for-transaction-id-wraparound-in-amazon-rds-for-postgresql/) on the AWS Database Blog.

With adaptive autovacuum parameter tuning turned on, Amazon RDS begins adjusting autovacuum parameters when the CloudWatch metric `MaximumUsedTransactionIDs` reaches the value of the `autovacuum_freeze_max_age` parameter or 500,000,000, whichever is greater. 

Amazon RDS continues to adjust parameters for autovacuum if a table continues to trend toward transaction ID wraparound. Each of these adjustments dedicates more resources to autovacuum to avoid wraparound. Amazon RDS updates the following autovacuum-related parameters: 
+ [autovacuum\$1vacuum\$1cost\$1delay](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY)
+ [ autovacuum\$1vacuum\$1cost\$1limit](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-LIMIT)
+  [https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-AUTOVACUUM-WORK-MEM](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-AUTOVACUUM-WORK-MEM) 
+  [autovacuum\$1naptime](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-NAPTIME) 

RDS modifies these parameters only if the new value makes autovacuum more aggressive. The parameters are modified in memory on the DB instance. The values in the parameter group aren't changed. To view the current in-memory settings, use the PostgreSQL [SHOW](https://www.postgresql.org/docs/current/sql-show.html) SQL command. 

When Amazon RDS modifies any of these autovacuum parameters, it generates an event for the affected DB instance. This event is visible on the AWS Management Console and through the Amazon RDS API. After the `MaximumUsedTransactionIDs` CloudWatch metric returns below the threshold, Amazon RDS resets the autovacuum-related parameters in memory back to the values specified in the parameter group. It then generates another event corresponding to this change.

# Determining if the tables in your database need vacuuming
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.NeedVacuuming"></a>

You can use the following query to show the number of unfrozen transactions in a database. The `datfrozenxid` column of a database's `pg_database` row is a lower bound on the normal transaction IDs appearing in that database. This column is the minimum of the per-table `relfrozenxid` values within the database. 

```
SELECT datname, age(datfrozenxid) FROM pg_database ORDER BY age(datfrozenxid) desc limit 20;
```

For example, the results of running the preceding query might be the following.

```
datname    | age
mydb       | 1771757888
template0  | 1721757888
template1  | 1721757888
rdsadmin   | 1694008527
postgres   | 1693881061
(5 rows)
```

When the age of a database reaches 2 billion transaction IDs, transaction ID (XID) wraparound occurs and the database becomes read-only. You can use this query to produce a metric and run a few times a day. By default, autovacuum is set to keep the age of transactions to no more than 200,000,000 ([https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE)).

A sample monitoring strategy might look like this:
+ Set the `autovacuum_freeze_max_age` value to 200 million transactions.
+ If a table reaches 500 million unfrozen transactions, that triggers a low-severity alarm. This isn't an unreasonable value, but it can indicate that autovacuum isn't keeping up.
+ If a table ages to 1 billion, this should be treated as an alarm to take action on. In general, you want to keep ages closer to `autovacuum_freeze_max_age` for performance reasons. We recommend that you investigate using the recommendations that follow.
+ If a table reaches 1.5 billion unvacuumed transactions, that triggers a high-severity alarm. Depending on how quickly your database uses transaction IDs, this alarm can indicate that the system is running out of time to run autovacuum. In this case, we recommend that you resolve this immediately.

If a table is constantly breaching these thresholds, modify your autovacuum parameters further. By default, using VACUUM manually (which has cost-based delays disabled) is more aggressive than using the default autovacuum, but it is also more intrusive to the system as a whole.

We recommend the following:
+ Be aware and turn on a monitoring mechanism so that you are aware of the age of your oldest transactions.

  For information on creating a process that warns you about transaction ID wraparound, see the AWS Database Blog post [Implement an early warning system for transaction ID wraparound in Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/implement-an-early-warning-system-for-transaction-id-wraparound-in-amazon-rds-for-postgresql/).
+ For busier tables, perform a manual vacuum freeze regularly during a maintenance window, in addition to relying on autovacuum. For information on performing a manual vacuum freeze, see [Performing a manual vacuum freeze](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.VacuumFreeze.md).

# Determining which tables are currently eligible for autovacuum
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.EligibleTables"></a>

Often, it is one or two tables in need of vacuuming. Tables whose `relfrozenxid` value is greater than the number of transactions in `autovacuum_freeze_max_age` are always targeted by autovacuum. Otherwise, if the number of tuples made obsolete since the last VACUUM exceeds the vacuum threshold, the table is vacuumed.

The [autovacuum threshold](https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTOVACUUM) is defined as:

```
Vacuum-threshold = vacuum-base-threshold + vacuum-scale-factor * number-of-tuples
```

where the `vacuum base threshold` is `autovacuum_vacuum_threshold`, the `vacuum scale factor` is `autovacuum_vacuum_scale_factor`, and the `number of tuples` is `pg_class.reltuples`.

While you are connected to your database, run the following query to see a list of tables that autovacuum sees as eligible for vacuuming.

```
WITH vbt AS (SELECT setting AS autovacuum_vacuum_threshold FROM 
pg_settings WHERE name = 'autovacuum_vacuum_threshold'),
vsf AS (SELECT setting AS autovacuum_vacuum_scale_factor FROM 
pg_settings WHERE name = 'autovacuum_vacuum_scale_factor'), 
fma AS (SELECT setting AS autovacuum_freeze_max_age FROM pg_settings WHERE name = 'autovacuum_freeze_max_age'),
sto AS (select opt_oid, split_part(setting, '=', 1) as param,
split_part(setting, '=', 2) as value from (select oid opt_oid, unnest(reloptions) setting from pg_class) opt)
SELECT '"'||ns.nspname||'"."'||c.relname||'"' as relation,
pg_size_pretty(pg_table_size(c.oid)) as table_size,
age(relfrozenxid) as xid_age,
coalesce(cfma.value::float, autovacuum_freeze_max_age::float) autovacuum_freeze_max_age,
(coalesce(cvbt.value::float, autovacuum_vacuum_threshold::float) +
coalesce(cvsf.value::float,autovacuum_vacuum_scale_factor::float) * c.reltuples)
AS autovacuum_vacuum_tuples, n_dead_tup as dead_tuples FROM
pg_class c join pg_namespace ns on ns.oid = c.relnamespace 
join pg_stat_all_tables stat on stat.relid = c.oid join vbt on (1=1) join vsf on (1=1) join fma on (1=1)
left join sto cvbt on cvbt.param = 'autovacuum_vacuum_threshold' and c.oid = cvbt.opt_oid 
left join sto cvsf on cvsf.param = 'autovacuum_vacuum_scale_factor' and c.oid = cvsf.opt_oid
left join sto cfma on cfma.param = 'autovacuum_freeze_max_age' and c.oid = cfma.opt_oid
WHERE c.relkind = 'r' and nspname <> 'pg_catalog'
AND (age(relfrozenxid) >= coalesce(cfma.value::float, autovacuum_freeze_max_age::float)
OR coalesce(cvbt.value::float, autovacuum_vacuum_threshold::float) + 
coalesce(cvsf.value::float,autovacuum_vacuum_scale_factor::float) * 
c.reltuples <= n_dead_tup)
ORDER BY age(relfrozenxid) DESC LIMIT 50;
```

# Determining if autovacuum is currently running and for how long
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AutovacuumRunning"></a>

If you need to manually vacuum a table, make sure to determine if autovacuum is currently running. If it is, you might need to adjust parameters to make it run more efficiently, or turn off autovacuum temporarily so that you can manually run VACUUM.

Use the following query to determine if autovacuum is running, how long it has been running, and if it is waiting on another session. 

```
SELECT datname, usename, pid, state, wait_event, current_timestamp - xact_start AS xact_runtime, query
FROM pg_stat_activity 
WHERE upper(query) LIKE '%VACUUM%' 
ORDER BY xact_start;
```

After running the query, you should see output similar to the following.

```
 datname | usename  |  pid  | state  | wait_event |      xact_runtime       | query  
 --------+----------+-------+--------+------------+-------------------------+--------------------------------------------------------------------------------------------------------
 mydb    | rdsadmin | 16473 | active |            | 33 days 16:32:11.600656 | autovacuum: VACUUM ANALYZE public.mytable1 (to prevent wraparound)
 mydb    | rdsadmin | 22553 | active |            | 14 days 09:15:34.073141 | autovacuum: VACUUM ANALYZE public.mytable2 (to prevent wraparound)
 mydb    | rdsadmin | 41909 | active |            | 3 days 02:43:54.203349  | autovacuum: VACUUM ANALYZE public.mytable3
 mydb    | rdsadmin |   618 | active |            | 00:00:00                | SELECT datname, usename, pid, state, wait_event, current_timestamp - xact_start AS xact_runtime, query+
         |          |       |        |            |                         | FROM pg_stat_activity                                                                                 +
         |          |       |        |            |                         | WHERE query like '%VACUUM%'                                                                           +
         |          |       |        |            |                         | ORDER BY xact_start;                                                                                  +
```

Several issues can cause a long-running autovacuum session (that is, multiple days long). The most common issue is that your [https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM](https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) parameter value is set too low for the size of the table or rate of updates. 

We recommend that you use the following formula to set the `maintenance_work_mem` parameter value.

```
GREATEST({DBInstanceClassMemory/63963136*1024},65536)
```

Short running autovacuum sessions can also indicate problems:
+ It can indicate that there aren't enough `autovacuum_max_workers` for your workload. In this case, you need to indicate the number of workers.
+ It can indicate that there is an index corruption (autovacuum crashes and restarts on the same relation but makes no progress). In this case, run a manual `vacuum freeze verbose table` to see the exact cause. 

# Performing a manual vacuum freeze
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.VacuumFreeze"></a>

You might want to perform a manual vacuum on a table that has a vacuum process already running. This is useful if you have identified a table with an age approaching 2 billion transactions (or above any threshold you are monitoring).

The following steps are guidelines, with several variations to the process. For example, during testing, suppose that you find that the [https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM](https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) parameter value is set too small and that you need to take immediate action on a table. However, perhaps you don't want to bounce the instance at the moment. Using the queries in previous sections, you determine which table is the problem and notice a long running autovacuum session. You know that you need to change the `maintenance_work_mem` parameter setting, but you also need to take immediate action and vacuum the table in question. The following procedure shows what to do in this situation.

**To manually perform a vacuum freeze**

1. Open two sessions to the database containing the table you want to vacuum. For the second session, use "screen" or another utility that maintains the session if your connection is dropped.

1. In session one, get the process ID (PID) of the autovacuum session running on the table. 

   Run the following query to get the PID of the autovacuum session.

   ```
   SELECT datname, usename, pid, current_timestamp - xact_start 
   AS xact_runtime, query
   FROM pg_stat_activity WHERE upper(query) LIKE '%VACUUM%' ORDER BY 
   xact_start;
   ```

1. In session two, calculate the amount of memory that you need for this operation. In this example, we determine that we can afford to use up to 2 GB of memory for this operation, so we set [https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM](https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) for the current session to 2 GB.

   ```
   SET maintenance_work_mem='2 GB';
   SET
   ```

1. In session two, issue a `vacuum freeze verbose` command for the table. The verbose setting is useful because, although there is no progress report for this in PostgreSQL currently, you can see activity.

   ```
   \timing on
   Timing is on.
   vacuum freeze verbose pgbench_branches;
   ```

   ```
   INFO:  vacuuming "public.pgbench_branches"
   INFO:  index "pgbench_branches_pkey" now contains 50 row versions in 2 pages
   DETAIL:  0 index row versions were removed.
   0 index pages have been deleted, 0 are currently reusable.
   CPU 0.00s/0.00u sec elapsed 0.00 sec.
   INFO:  index "pgbench_branches_test_index" now contains 50 row versions in 2 pages
   DETAIL:  0 index row versions were removed.
   0 index pages have been deleted, 0 are currently reusable.
   CPU 0.00s/0.00u sec elapsed 0.00 sec.
   INFO:  "pgbench_branches": found 0 removable, 50 nonremovable row versions 
        in 43 out of 43 pages
   DETAIL:  0 dead row versions cannot be removed yet.
   There were 9347 unused item pointers.
   0 pages are entirely empty.
   CPU 0.00s/0.00u sec elapsed 0.00 sec.
   VACUUM
   Time: 2.765 ms
   ```

1. In session one, if autovacuum was blocking the vacuum session, `pg_stat_activity` shows that waiting is `T` for your vacuum session. In this case, end the autovacuum process as follows.

   ```
   SELECT pg_terminate_backend('the_pid'); 
   ```
**Note**  
Some lower versions of Amazon Aurora can't terminate an autovacuum process using the preceding command and fail with the following error: `ERROR: 42501: must be a superuser to terminate superuser process LOCATION: pg_terminate_backend, signalfuncs.c:227`. To find the PostgreSQL versions that have been patched, search for the following bullet in [Amazon Aurora PostgreSQL updates](https://docs.aws.amazon.com/'):  

   ```
   Allow rds_superuser to terminate backends which are not explicitly associated with a role
   ```

   At this point, your session begins. Autovacuum restarts immediately because this table is probably the highest on its list of work. 

1. Initiate your `vacuum freeze verbose` command in session two, and then end the autovacuum process in session one.

# Reindexing a table when autovacuum is running
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.Reindexing"></a>

If an index has become corrupt, autovacuum continues to process the table and fails. If you attempt a manual vacuum in this situation, you receive an error message like the following.

```
postgres=>  vacuum freeze pgbench_branches;
ERROR: index "pgbench_branches_test_index" contains unexpected 
   zero page at block 30521
HINT: Please REINDEX it.
```

When the index is corrupted and autovacuum is attempting to run on the table, you contend with an already running autovacuum session. When you issue a [REINDEX](https://www.postgresql.org/docs/current/static/sql-reindex.html) command, you take out an exclusive lock on the table. Write operations are blocked, and also read operations that use that specific index.

**To reindex a table when autovacuum is running on the table**

1. Open two sessions to the database containing the table that you want to vacuum. For the second session, use "screen" or another utility that maintains the session if your connection is dropped.

1. In session one, get the PID of the autovacuum session running on the table.

   Run the following query to get the PID of the autovacuum session.

   ```
   SELECT datname, usename, pid, current_timestamp - xact_start 
   AS xact_runtime, query
   FROM pg_stat_activity WHERE upper(query) like '%VACUUM%' ORDER BY 
   xact_start;
   ```

1. In session two, issue the reindex command.

   ```
   \timing on
   Timing is on.
   reindex index pgbench_branches_test_index;
   REINDEX
     Time: 9.966 ms
   ```

1. In session one, if autovacuum was blocking the process, you see in `pg_stat_activity` that waiting is "T" for your vacuum session. In this case, you end the autovacuum process. 

   ```
   SELECT pg_terminate_backend('the_pid');
   ```

   At this point, your session begins. It's important to note that autovacuum restarts immediately because this table is probably the highest on its list of work. 

1. Initiate your command in session two, and then end the autovacuum process in session 1.

# Managing autovacuum with large indexes
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes"></a>

As part of its operation, *autovacuum* performs several [ vacuum phases](https://www.postgresql.org/docs/current/progress-reporting.html#VACUUM-PHASES) while running on a table. Before the table is cleaned up, all of its indexes are first vacuumed. When removing multiple large indexes, this phase consumes a significant amount of time and resources. Therefore, as a best practice, be sure to control the number of indexes on a table and eliminate unused indexes.

For this process, first check the overall index size. Then, determine if there are potentially unused indexes that can be removed as shown in the following examples.

**To check the size of the table and its indexes**

```
postgres=> select pg_size_pretty(pg_relation_size('pgbench_accounts'));
pg_size_pretty
6404 MB
(1 row)
```

```
postgres=> select pg_size_pretty(pg_indexes_size('pgbench_accounts'));
pg_size_pretty
11 GB
(1 row)
```

In this example, the size of indexes is larger than the table. This difference can cause performance issues as the indexes are bloated or unused, which impacts the autovacuum as well as insert operations.

**To check for unused indexes**

Using the [https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ALL-INDEXES-VIEW](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ALL-INDEXES-VIEW) view, you can check how frequently an index is used with the `idx_scan` column. In the following example, the unused indexes have the `idx_scan` value of `0`.

```
postgres=> select * from pg_stat_user_indexes where relname = 'pgbench_accounts' order by idx_scan desc;
    
relid  | indexrelid | schemaname | relname          | indexrelname          | idx_scan | idx_tup_read | idx_tup_fetch
-------+------------+------------+------------------+-----------------------+----------+--------------+---------------
16433  | 16454      | public     | pgbench_accounts | index_f               | 6        | 6            | 0
16433  | 16450      | public     | pgbench_accounts | index_b               | 3        | 199999       | 0
16433  | 16447      | public     | pgbench_accounts | pgbench_accounts_pkey | 0        | 0            | 0
16433  | 16452      | public     | pgbench_accounts | index_d               | 0        | 0            | 0
16433  | 16453      | public     | pgbench_accounts | index_e               | 0        | 0            | 0
16433  | 16451      | public     | pgbench_accounts | index_c               | 0        | 0            | 0
16433  | 16449      | public     | pgbench_accounts | index_a               | 0        | 0            | 0
(7 rows)
```

```
postgres=> select schemaname, relname, indexrelname, idx_scan from pg_stat_user_indexes where relname = 'pgbench_accounts' order by idx_scan desc;
    
schemaname  | relname          | indexrelname          | idx_scan
------------+------------------+-----------------------+----------
public      | pgbench_accounts | index_f               | 6
public      | pgbench_accounts | index_b               | 3
public      | pgbench_accounts | pgbench_accounts_pkey | 0
public      | pgbench_accounts | index_d               | 0
public      | pgbench_accounts | index_e               | 0
public      | pgbench_accounts | index_c               | 0
public      | pgbench_accounts | index_a               | 0
(7 rows)
```

**Note**  
These statistics are incremental from the time that the statistics are reset. Suppose you have an index that is only used at the end of a business quarter or just for a specific report. It's possible that this index hasn't been used since the statistics were reset. For more information, see [Statistics Functions](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-STATS-FUNCTIONS). Indexes that are used to enforce uniqueness won't have scans performed and shouldn't be identified as unused indexes. To identify the unused indexes, you should have in-depth knowledge of the application and its queries.

To check when the stats were last reset for a database, use [ https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW]( https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW)

```
postgres=> select datname, stats_reset from pg_stat_database where datname = 'postgres';
    
datname   | stats_reset
----------+-------------------------------
postgres  | 2022-11-17 08:58:11.427224+00
(1 row)
```

## Vacuuming a table as quickly as possible
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.Executing"></a>

**RDS for PostgreSQL 12 and higher**

If you have too many indexes in a large table, your DB instance could be nearing transaction ID wraparound (XID), which is when the XID counter wraps around to zero. Left unchecked, this situation could result in data loss. However, you can quickly vacuum the table without cleaning up the indexes. In RDS for PostgreSQL 12 and higher, you can use VACUUM with the [https://www.postgresql.org/docs/current/sql-vacuum.html](https://www.postgresql.org/docs/current/sql-vacuum.html) clause.

```
postgres=> VACUUM (INDEX_CLEANUP FALSE, VERBOSE TRUE) pgbench_accounts;
        
INFO: vacuuming "public.pgbench_accounts"
INFO: table "pgbench_accounts": found 0 removable, 8 nonremovable row versions in 1 out of 819673 pages
DETAIL: 0 dead row versions cannot be removed yet, oldest xmin: 7517
Skipped 0 pages due to buffer pins, 0 frozen pages.
CPU: user: 0.01 s, system: 0.00 s, elapsed: 0.01 s.
```

If an autovacuum session is already running, you must terminate it to begin the manual VACUUM. For information on performing a manual vacuum freeze, see [Performing a manual vacuum freeze](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.VacuumFreeze.md)

**Note**  
Skipping index cleanup regularly causes index bloat, which degrades scan performance. The index retains dead rows, and the table retains dead line pointers. As a result, `pg_stat_all_tables.n_dead_tup` increases until autovacuum or a manual VACUUM with index cleanup runs. As a best practice, use this procedure only to prevent transaction ID wraparound.

**RDS for PostgreSQL 11 and older**

However, in RDS for PostgreSQL 11 and lower versions, the only way to allow vacuum to complete faster is to reduce the number of indexes on a table. Dropping an index can affect query plans. We recommend that you drop unused indexes first, then drop the indexes when XID wraparound is very near. After the vacuum process completes, you can recreate these indexes.

# Other parameters that affect autovacuum
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.OtherParms"></a>

The following query shows the values of some of the parameters that directly affect autovacuum and its behavior. The [autovacuum parameters](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html) are described fully in the PostgreSQL documentation.

```
SELECT name, setting, unit, short_desc
FROM pg_settings
WHERE name IN (
'autovacuum_max_workers',
'autovacuum_analyze_scale_factor',
'autovacuum_naptime',
'autovacuum_analyze_threshold',
'autovacuum_analyze_scale_factor',
'autovacuum_vacuum_threshold',
'autovacuum_vacuum_scale_factor',
'autovacuum_vacuum_threshold',
'autovacuum_vacuum_cost_delay',
'autovacuum_vacuum_cost_limit',
'vacuum_cost_limit',
'autovacuum_freeze_max_age',
'maintenance_work_mem',
'vacuum_freeze_min_age');
```

While these all affect autovacuum, some of the most important ones are:
+ [maintenance\$1work\$1mem](https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-MAINTENANCE_WORK_MEM)
+ [autovacuum\$1freeze\$1max\$1age](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE)
+ [autovacuum\$1max\$1workers](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-MAX-WORKERS)
+ [autovacuum\$1vacuum\$1cost\$1delay](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-DELAY)
+ [ autovacuum\$1vacuum\$1cost\$1limit](https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-VACUUM-COST-LIMIT)

# Setting table-level autovacuum parameters
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.TableParameters"></a>

You can set autovacuum-related [storage parameters](https://www.postgresql.org/docs/current/static/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS) at a table level, which can be better than altering the behavior of the entire database. For large tables, you might need to set aggressive settings and you might not want to make autovacuum behave that way for all tables.

The following query shows which tables currently have table-level options in place.

```
SELECT relname, reloptions
FROM pg_class
WHERE reloptions IS NOT null;
```

An example where this might be useful is on tables that are much larger than the rest of your tables. Suppose that you have one 300-GB table and 30 other tables less than 1 GB. In this case, you might set some specific parameters for your large table so you don't alter the behavior of your entire system.

```
ALTER TABLE mytable set (autovacuum_vacuum_cost_delay=0);
```

Doing this turns off the cost-based autovacuum delay for this table at the expense of more resource usage on your system. Normally, autovacuum pauses for `autovacuum_vacuum_cost_delay` each time `autovacuum_cost_limit` is reached. For more details, see the PostgreSQL documentation about [cost-based vacuuming](https://www.postgresql.org/docs/current/static/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-VACUUM-COST).

# Logging autovacuum and vacuum activities
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum.Logging"></a>

Information about autovacuum activities is sent to the `postgresql.log` based on the level specified in the `rds.force_autovacuum_logging_level` parameter. Following are the values allowed for this parameter and the PostgreSQL versions for which that value is the default setting:
+ `disabled` (PostgreSQL 10, PostgreSQL 9.6)
+ `debug5`, `debug4`, `debug3`, `debug2`, `debug1`
+ `info` (PostgreSQL 12, PostgreSQL 11)
+ `notice`
+ `warning` (PostgreSQL 13 and above)
+ `error`, log, `fatal`, `panic`

The `rds.force_autovacuum_logging_level` works with the `log_autovacuum_min_duration` parameter. The `log_autovacuum_min_duration` parameter's value is the threshold (in milliseconds) above which autovacuum actions get logged. A setting of `-1` logs nothing, while a setting of 0 logs all actions. As with `rds.force_autovacuum_logging_level`, default values for `log_autovacuum_min_duration` are version dependent, as follows: 
+ `10000 ms` – PostgreSQL 14, PostgreSQL 13, PostgreSQL 12, and PostgreSQL 11 
+ `(empty)` – No default value for PostgreSQL 10 and PostgreSQL 9.6

We recommend that you set `rds.force_autovacuum_logging_level` to `WARNING`. We also recommend that you set `log_autovacuum_min_duration` to a value from 1000 to 5000. A setting of 5000 logs activity that takes longer than 5,000 milliseconds. Any setting other than -1 also logs messages if the autovacuum action is skipped because of a conflicting lock or concurrently dropped relations. For more information, see [Automatic Vacuuming](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html) in the PostgreSQL documentation. 

To troubleshoot issues, you can change the `rds.force_autovacuum_logging_level` parameter to one of the debug levels, from `debug1` up to `debug5` for the most verbose information. We recommend that you use debug settings for short periods of time and for troubleshooting purposes only. To learn more, see [When to log](https://www.postgresql.org/docs/current/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN) in the PostgreSQL documentation. 

**Note**  
PostgreSQL allows the `rds_superuser` account to view autovacuum sessions in `pg_stat_activity`. For example, you can identify and end an autovacuum session that is blocking a command from running, or running slower than a manually issued vacuum command.

# Understanding the behavior of autovacuum with invalid databases
<a name="appendix.postgresql.commondbatasks.autovacuumbehavior"></a>

 A new value `-2` is introduced into the `datconnlimit` column in the `pg_database` catalog to indicate databases that have been interrupted in the middle of the DROP DATABASE operation as invalid. 

 This new value is available from the following Aurora PostgreSQL versions: 
+ 15.4 and all higher versions
+ 14.9 and higher versions
+ 13.12 and higher versions
+ 12.16 and higher versions
+ 11.21 and higher versions

Invalid databases do not affect autovacuum's ability to freeze functionality for valid databases. Autovacuum ignores invalid databases. Consequently, regular vacuum operations will continue to function properly and efficiently for all valid databases in your PostgreSQL environment.

**Topics**
+ [Monitoring transaction ID](#appendix.postgresql.commondbatasks.autovacuum.monitorxid)
+ [Adjusting the monitoring query](#appendix.postgresql.commondbatasks.autovacuum.monitoradjust)
+ [Resolving invalid database issue](#appendix.postgresql.commondbatasks.autovacuum.connissue)

## Monitoring transaction ID
<a name="appendix.postgresql.commondbatasks.autovacuum.monitorxid"></a>

 The `age(datfrozenxid)` function is commonly used to monitor the transaction ID (XID) age of databases to prevent transaction ID wraparound. 

 Since invalid databases are excluded from autovacuum, their transaction ID (XID) counter can reach the maximum value of `2 billion`, wrap around to `- 2 billion`, and continue this cycle indefinitely. A typical query to monitor Transaction ID wraparound might look like: 

```
SELECT max(age(datfrozenxid)) FROM pg_database;
```

However, with the introduction of the -2 value for `datconnlimit`, invalid databases can skew the results of this query. Since these databases are not valid and should not be part of regular maintenance checks, they can cause false positives, leading you to believe that the `age(datfrozenxid)` is higher than it actually is.

## Adjusting the monitoring query
<a name="appendix.postgresql.commondbatasks.autovacuum.monitoradjust"></a>

 To ensure accurate monitoring, you should adjust your monitoring query to exclude invalid databases. Follow this recommended query: 

```
SELECT
    max(age(datfrozenxid))
FROM
    pg_database
WHERE
    datconnlimit <> -2;
```

This query ensures that only valid databases are considered in the `age(datfrozenxid)` calculation, providing a true reflection of the transaction ID age across your PostgreSQL environment.

## Resolving invalid database issue
<a name="appendix.postgresql.commondbatasks.autovacuum.connissue"></a>

 When attempting to connect to an invalid database, you may encounter an error message similar to the following: 

```
postgres=> \c db1
connection to server at "mydb.xxxxxxxxxx.us-west-2.rds.amazonaws.com" (xx.xx.xx.xxx), port xxxx failed: FATAL:  cannot connect to invalid database "db1"
HINT:  Use DROP DATABASE to drop invalid databases.
Previous connection kept
```

 Additionally, if the `log_min_messages` parameter is set to `DEBUG2` or higher, you may notice the following log entries indicating that the autovacuum process is skipping the invalid database: 

```
       
2024-07-30 05:59:00 UTC::@:[32000]:DEBUG:  autovacuum: skipping invalid database "db6"
2024-07-30 05:59:00 UTC::@:[32000]:DEBUG:  autovacuum: skipping invalid database "db1"
```

To resolve the issue, follow the `HINT` provided during the connection attempt. Connect to any valid database using your RDS master account or a database account with the `rds_superuser` role, and drop invalid database(s).

```
SELECT
    'DROP DATABASE ' || quote_ident(datname) || ';'
FROM
    pg_database
WHERE
    datconnlimit = -2 \gexec
```

# Identify and resolve aggressive vacuum blockers in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring"></a>

In PostgreSQL, vacuuming is vital for ensuring database health as it reclaims storage and prevents [transaction ID wraparound](https://www.postgresql.org/docs/current/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND) issues. However, there are times when vacuuming can be prevented from operating as desired, which can result in performance degradation, storage bloat, and even impact availability of your DB instance by transaction ID wraparound. Therefore, identifying and resolving these issues are essential for optimal database performance and availability. Read [Understanding autovacuum in Amazon RDS for PostgreSQL environments](https://aws.amazon.com/blogs/database/understanding-autovacuum-in-amazon-rds-for-postgresql-environments/) to learn more about autovacuum.

The `postgres_get_av_diag()` function helps identify issues that either prevent or delay the aggressive vacuum progress. Suggestions are provided, which may include commands to resolve the issue where it is identifiable or guidance for further diagnostics where the issue is not identifiable. Aggressive vacuum blockers are reported when the age exceeds RDS' [adaptive autovacuum](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptiveAutoVacuuming) threshold of 500 million transaction IDs.

**What is the age of the transaction ID?**

The `age()` function for transaction IDs calculates the number of transactions that have occurred since the oldest unfrozen transaction ID for a database (`pg_database.datfrozenxid`) or table (`pg_class.relfrozenxid`). This value indicates database activity since the last aggressive vacuum operation and highlights the likely workload for upcoming VACUUM processes. 

**What is an aggressive vacuum?**

An aggressive VACUUM operation conducts a comprehensive scan of all pages within a table, including those typically skipped during regular VACUUMs. This thorough scan aims to "freeze" transaction IDs approaching their maximum age, effectively preventing a situation known as [transaction ID wraparound](https://www.postgresql.org/docs/current/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND).

For `postgres_get_av_diag()` to report blockers, the blocker must be at least 500 million transactions old.

**Topics**
+ [Installing autovacuum monitoring and diagnostic tools in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Installation.md)
+ [Functions of postgres\$1get\$1av\$1diag() in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Functions.md)
+ [Resolving identifiable vacuum blockers in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md)
+ [Resolving unidentifiable vacuum blockers in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Unidentifiable_blockers.md)
+ [Resolving vacuum performance issues in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Performance.md)
+ [Explanation of the NOTICE messages in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.NOTICE.md)

# Installing autovacuum monitoring and diagnostic tools in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Installation"></a>

The `postgres_get_av_diag()` function is currently available in the following Aurora PostgreSQL versions:
+ 17.4 and higher 17 versions
+ 16.7 and higher 16 versions
+ 15.11 and higher 15 versions
+ 14.16 and higher 14 versions
+ 13.19 and higher 13 versions

 In order to use `postgres_get_av_diag()`, create the `rds_tools` extension.

```
postgres=> CREATE EXTENSION rds_tools ;
CREATE EXTENSION
```

Verify that the extension is installed.

```
postgres=> \dx rds_tools
             List of installed extensions
   Name    | Version |  Schema   |                    Description
 ----------+---------+-----------+----------------------------------------------------------
 rds_tools |   1.9   | rds_tools | miscellaneous administrative functions for RDS PostgreSQL
 1 row
```

Verify that the function is created.

```
postgres=> SELECT
    proname function_name,
    pronamespace::regnamespace function_schema,
    proowner::regrole function_owner
FROM
    pg_proc
WHERE
    proname = 'postgres_get_av_diag';
    function_name     | function_schema | function_owner
----------------------+-----------------+----------------
 postgres_get_av_diag | rds_tools       | rds_superuser
(1 row)
```

# Functions of postgres\$1get\$1av\$1diag() in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Functions"></a>

The `postgres_get_av_diag()` function retrieves diagnostic information about autovacuum processes that are blocking or lagging behind in a Aurora PostgreSQL database. The query needs to be executed in the database with the oldest transaction ID for accurate results. For more information about using the database with the oldest transaction ID, see [Not connected to the database with the age of oldest transaction ID](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.NOTICE.md)

```
SELECT
    blocker,
    DATABASE,
    blocker_identifier,
    wait_event,
    TO_CHAR(autovacuum_lagging_by, 'FM9,999,999,999') AS autovacuum_lagging_by,
    suggestion,
    suggested_action
FROM (
    SELECT
        *
    FROM
        rds_tools.postgres_get_av_diag ()
    ORDER BY
        autovacuum_lagging_by DESC) q;
```

The `postgres_get_av_diag()` function returns a table with the following information:

**blocker**  
Specifies the category of database activity that is blocking the vacuum.  
+ [Active statement](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Active_statement)
+ [Idle in transaction](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Idle_in_transaction)
+ [Prepared transaction](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Prepared_transaction)
+ [Logical replication slot](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Logical_replication_slot)
+ [Reader instances](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Reader_instances)
+ [Temporary tables](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Temporary_tables)

**database**  
Specifies the name of the database where applicable and supported. This is the database in which the activity is ongoing and blocking or will block the autovacuum. This is the database you are required to connect to and take action.

**blocker\$1identifier**  
Specifies the identifier of the activity that is blocking or will block the autovacuum. The identifier can be a process ID along with a SQL statement, a prepared transaction, an IP address of a read replica, and the name of the replication slot, either logical or physical.

**wait\$1event**  
Specifies the [wait event](AuroraPostgreSQL.Tuning.md) of the blocking session and is applicable for the following blockers:  
+ Active statement
+ Idle in transaction

**autovacum\$1lagging\$1by**  
Specifies the number of transactions that autovacuum is lagging behind in its backlog work per category.

**suggestion**  
Specifies suggestions to resolve the blocker. These instructions include the name of the database in which the activity exists where applicable, the Process ID (PID) of the session where applicable, and the action to be taken.

**suggested\$1action**  
Suggests the action that needs to be taken to resolve the blocker.

# Resolving identifiable vacuum blockers in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Identifiableblockers"></a>

Autovacuum performs aggressive vacuums and lowers the age of transaction IDs to below the threshold specified by the `autovacuum_freeze_max_age` parameter of your RDS instance. You can track this age using the Amazon CloudWatch metric `MaximumUsedTransactionIDs`.

To find the setting of `autovacuum_freeze_max_age` (which has a default of 200 million transaction IDs) for your Amazon RDS instance, you can use the following query:

```
SELECT
    TO_CHAR(setting::bigint, 'FM9,999,999,999') autovacuum_freeze_max_age
FROM
    pg_settings
WHERE
    name = 'autovacuum_freeze_max_age';
```

Note that `postgres_get_av_diag()` only checks for aggressive vacuum blockers when the age exceeds Amazon RDS’ [adaptive autovacuum](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum.AdaptiveAutoVacuuming) threshold of 500 million transaction IDs. For `postgres_get_av_diag()` to detect blockers, the blocker must be at least 500 million transactions old.

The `postgres_get_av_diag()` function identifies the following types of blockers:

**Topics**
+ [Active statement](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Active_statement)
+ [Idle in transaction](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Idle_in_transaction)
+ [Prepared transaction](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Prepared_transaction)
+ [Logical replication slot](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Logical_replication_slot)
+ [Reader instances](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Reader_instances)
+ [Temporary tables](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Temporary_tables)

## Active statement
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Active_statement"></a>

In PostgreSQL, an active statement is an SQL statement that is currently being executed by the database. This includes queries, transactions, or any operations in progress. When monitoring via `pg_stat_activity`, the state column indicates that the process with the corresponding PID is active.

The `postgres_get_av_diag()` function displays output similar to the following when it identifies a statement that is an active statement.

```
blocker               | Active statement
database              | my_database
blocker_identifier    | SELECT pg_sleep(20000);
wait_event            | Timeout:PgSleep
autovacuum_lagging_by | 568,600,871
suggestion            | Connect to database "my_database", review carefully and you may consider terminating the process using suggested_action. For more information, see Working with PostgreSQL autovacuum in the Amazon RDS User Guide.
suggested_action      | {"SELECT pg_terminate_backend (29621);"}
```

**Suggested action**

Following the guidance in the `suggestion` column, the user can connect to the database where the active statement is present and, as specified in the `suggested_action` column, it's advisable to carefully review the option to terminate the session. If termination is safe, you may use the `pg_terminate_backend()` function to terminate the session. This action can be performed by an administrator (such as the RDS master account) or a user with the required `pg_terminate_backend()` privilege.

**Warning**  
A terminated session will undo (`ROLLBACK`) changes it made. Depending on your requirements, you may want to rerun the statement. However, it is recommended to do so only after the autovacuum process has finished its aggressive vacuum operation.

## Idle in transaction
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Idle_in_transaction"></a>

An idle in transaction statement refers to any session that has opened an explicit transaction (such as by issuing a `BEGIN` statement), performed some work, and is now waiting for the client to either pass more work or signal the end of the transaction by issuing a `COMMIT`, `ROLLBACK`, or `END` (which would result in an implicit `COMMIT`).

The `postgres_get_av_diag()` function displays output similar to the following when it identifies an `idle in transaction` statement as a blocker.

```
blocker               | idle in transaction
database              | my_database
blocker_identifier    | INSERT INTO tt SELECT * FROM tt;
wait_event            | Client:ClientRead
autovacuum_lagging_by | 1,237,201,759
suggestion            | Connect to database "my_database", review carefully and you may consider terminating the process using suggested_action. For more information, see Working with PostgreSQL autovacuum in the Amazon RDS User Guide.
suggested_action      | {"SELECT pg_terminate_backend (28438);"}
```

**Suggested action**

As indicated in the `suggestion` column, you can connect to the database where the idle in transaction session is present and terminate the session using the `pg_terminate_backend()` function. The user can be your admin (RDS master account) user or a user with the `pg_terminate_backend()` privilege.

**Warning**  
A terminated session will undo (`ROLLBACK`) changes it made. Depending on your requirements, you may want to rerun the statement. However, it is recommended to do so only after the autovacuum process has finished its aggressive vacuum operation.

## Prepared transaction
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Prepared_transaction"></a>

PostgreSQL allows transactions that are part of a two-phase commit strategy called [prepared transactions](https://www.postgresql.org/docs/current/sql-prepare-transaction.html). These are enabled by setting the `max_prepared_transactions` parameter to a non-zero value. Prepared transactions are designed to ensure that a transaction is durable and remains available even after database crashes, restarts, or client disconnections. Like regular transactions, they are assigned a transaction ID and can affect the autovacuum. If left in a prepared state, autovacuum cannot perform freeezing and it can lead to transaction ID wraparound.

When transactions are left prepared indefinitely without being resolved by a transaction manager, they become orphaned prepared transactions. The only way to fix this is to either commit or rollback the transaction using the `COMMIT PREPARED` or `ROLLBACK PREPARED` commands, respectively.

**Note**  
Be aware that a backup taken during a prepared transaction will still contain that transaction after restoration. Refer to the following information about how to locate and close such transactions.

The `postgres_get_av_diag()` function displays the following output when it identifies a blocker that is a prepared transaction.

```
blocker               | Prepared transaction
database              | my_database
blocker_identifier    | myptx
wait_event            | Not applicable
autovacuum_lagging_by | 1,805,802,632
suggestion            | Connect to database "my_database" and consider either COMMIT or ROLLBACK the prepared transaction using suggested_action. For more information, see Working with PostgreSQL autovacuum in the Amazon RDS User Guide.
suggested_action      | {"COMMIT PREPARED 'myptx';",[OR],"ROLLBACK PREPARED 'myptx';"}
```

**Suggested action**

As mentioned in the suggestion column, connect to the database where the prepared transaction is located. Based on the `suggested_action` column, carefully review whether to perform either `COMMIT` or `ROLLBACK`, and the the appropiate the action.

To monitor prepared transactions in general, PostgreSQL offers a catalog view called `pg_prepared_xacts`. You can use the following query to find prepared transactions.

```
SELECT
    gid,
    prepared,
    owner,
    database,
    transaction AS oldest_xmin
FROM
    pg_prepared_xacts
ORDER BY
    age(transaction) DESC;
```

## Logical replication slot
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Logical_replication_slot"></a>

The purpose of a replication slot is to hold unconsumed changes until they are replicated to a target server. For more information, see PostgreSQL's [Logical replication](https://www.postgresql.org/docs/current/logical-replication.html).

There are two types of logical replication slots.

**Inactive logical replication slots**

When replication is terminated, unconsumed transaction logs can't be removed, and the replication slot becomes inactive. Although an inactive logical replication slot isn't currently used by a subscriber, it remains on the server, leading to the retention of WAL files and preventing the removal of old transaction logs. This can increase disk usage and specifically block autovacuum from cleaning up internal catalog tables, as the system must preserve LSN information from being overwritten. If not addressed, this can result in catalog bloat, performance degradation, and an increased risk of wraparound vacuum, potentially causing transaction downtime.

**Active but slow logical replication slots**

Sometimes removal of dead tuples of catalog is delayed due to the performance degradation of logical replication. This delay in replication slows down updating the `catalog_xmin` and can lead to catalog bloat and wraparound vacuum.

The `postgres_get_av_diag()` function displays output similar to the following when it finds a logical replication slot as a blocker.

```
blocker               | Logical replication slot
database              | my_database
blocker_identifier    | slot1
wait_event            | Not applicable
autovacuum_lagging_by | 1,940,103,068
suggestion            | Ensure replication is active and resolve any lag for the slot if active. If inactive, consider dropping it using the command in suggested_action. For more information, see Working with PostgreSQL autovacuum in the Amazon RDS User Guide.
suggested_action      | {"SELECT pg_drop_replication_slot('slot1') FROM pg_replication_slots WHERE active = 'f';"}
```

**Suggested action**

To resolve this problem, check the replication configuration for issues with the target schema or data that might be terminating the apply process. The most common reasons are the following: 
+ Missing columns
+ Incompatible data type
+ Data mismatch
+ Missing table

If the problem is related to infrastructure issues:
+ Network issues - [How do I resolve issues with an Amazon RDS DB in an incompatible network state?](https://repost.aws/knowledge-center/rds-incompatible-network).
+ Database or DB instance is not available due to the following reasons:
  + Replica instance is out of storage - Review [Amazon RDS DB instances run out of storage](https://repost.aws/knowledge-center/rds-out-of-storage) for information about adding storage.
  + Incompatible-parameters - Review [How can I fix an Amazon RDS DB instance that is stuck in the incompatible-parameters status?](https://repost.aws/knowledge-center/rds-incompatible-parameters) for more information about how you can resolve the issue.

If your instance is outside the AWS network or on AWS EC2, consult your administrator on how to resolve the availability or infrastructure-related issues.

**Dropping the inactive slot**

**Warning**  
Caution: Before dropping a replication slot, carefully ensure that it has no ongoing replication, is inactive, and is in an unrecoverable state. Dropping a slot prematurely could disrupt replication or cause data loss.

After confirming that the replication slot is no longer needed, drop it to allow autovacuum to continue. The condition `active = 'f'` ensures that only an inactive slot is dropped.

```
SELECT pg_drop_replication_slot('slot1') WHERE active ='f'
```

## Reader instances
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Reader_instances"></a>

When the hot\$1standby\$1feedback setting is enabled, it prevents autovacuum on the writer instance from removing dead rows that might still be needed by queries running on the reader instance. This behavior is necessary because queries running on the reader instance (also applicable to reader instances in Aurora Global Database) require those rows to remain available on the writer instance preventing query conflicts and cancellations.

**Note**  
`hot_standby_feedback` is enabled by default and unmodifiable in Aurora PostgreSQL.

The `postgres_get_av_diag()` function displays output similar to the following when it finds a read replica with physical replication slot as the blocker.

```
blocker               | Oldest query running on aurora reader
database              | Not applicable
blocker_identifier    | my-aurora-reader-2
wait_event            | Not applicable
autovacuum_lagging_by | 540,122,859
suggestion            | Run the following query on the reader "my-aurora-reader-2" to find the long running query:                                                                                                 
                      | SELECT * FROM pg_catalog.pg_stat_activity WHERE backend_xmin::text::bigint = 523476310;                                                                                                    
                      | Review carefully and you may consider terminating the query on reader using suggested_action.                                                      
suggested_action      | {"SELECT pg_terminate_backend(pid) FROM pg_catalog.pg_stat_activity WHERE backend_xmin::text::bigint = 523476310;","                                                                       
                      | [OR]                                                                                                                                                                                    
                      | ","Delete the reader if not needed"}
```

As recommended in the `suggested_action` column, carefully review these options to unblock autovacuum.
+ **Terminate the query** – Following the guidance in the suggestion column, you can connect to the read replica, as specified in the suggested\$1action column, it's advisable to carefully review the option to terminate the session. If termination is deemed safe, you may use the `pg_terminate_backend()` function to terminate the session. This action can be performed by an administrator (such as the RDS master account) or a user with the required pg\$1terminate\$1backend() privilege.

  You may run the following SQL command on the read replica to terminate the query that is preventing the vacuum on the primary from cleaning up old rows. The value of `backend_xmin` is reported in the function’s output:

  ```
  SELECT
      pg_terminate_backend(pid)
  FROM
      pg_catalog.pg_stat_activity
  WHERE
      backend_xmin::text::bigint = backend_xmin;
  ```
+ **Delete the reader instances if not needed** – If the reader instance is no longer necessary, you can delete it. This will remove the associated replication overhead and allow the primary to recycle transaction logs without being held back by the instance.

## Temporary tables
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Temporary_tables"></a>

[Temporary tables](https://www.postgresql.org/docs/current/sql-createtable.html), created using the `TEMPORARY` keyword, reside in the temp schema, for example pg\$1temp\$1xxx, and are only accessible to the session that created them. Temporary tables are dropped when the session ends. However, these tables are invisible to PostgreSQL's autovacuum process, and must be manually vacuumed by the session that created them. Trying to vacuum the temp table from another session has no effect.

In unusual circumstances, a temporary table exists without an active session owning it. If the owning session ends unexpectedly due to a fatal crash, network issue, or similar event, the temporary table might not be cleaned up, leaving it behind as an "orphaned" table. When the PostgreSQL autovacuum process detects an orphaned temporary table, it logs the following message:

```
LOG: autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"
```

The `postgres_get_av_diag()` function displays output similar to the following when it identifies a temporary table as a blocker. For the function to correctly show the output related to temporary tables, it needs to be executed within the same database where those tables exist.

```
blocker               | Temporary table
database              | my_database
blocker_identifier    | pg_temp_14.ttemp
wait_event            | Not applicable
autovacuum_lagging_by | 1,805,802,632
suggestion            | Connect to database "my_database". Review carefully, you may consider dropping temporary table using command in suggested_action. For more information, see Working with PostgreSQL autovacuum in the Amazon RDS User Guide.
suggested_action      | {"DROP TABLE ttemp;"}
```

**Suggested action**

Follow the instructions provided in the `suggestion` column of the output to identify and remove the temporary table that is preventing autovacuum from running. Use the following command to drop the temporary table reported by `postgres_get_av_diag()`. Replace the table name based on the output provided by the `postgres_get_av_diag()` function.

```
DROP TABLE my_temp_schema.my_temp_table;
```

The following query can be used to identify temporary tables:

```
SELECT
    oid,
    relname,
    relnamespace::regnamespace,
    age(relfrozenxid)
FROM
    pg_class
WHERE
relpersistence = 't'
ORDER BY
    age(relfrozenxid) DESC;
```

# Resolving unidentifiable vacuum blockers in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Unidentifiable_blockers"></a>

This section explores additional reasons that can prevent vacuuming from making progress. These issues are currently not directly identifiable by the `postgres_get_av_diag()` function. 

**Topics**
+ [Index inconsistency](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Index_inconsistency)
+ [Exceptionally high transaction rate](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.High_transaction_rate)

## Index inconsistency
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Index_inconsistency"></a>

A logically inconsistent index can prevent autovacuum from making progress. The following errors or similar errors are logged during either the vacuum phase of the index or when the index is accessed by SQL statements.

```
ERROR: right sibling's left-link doesn't match:block 5 links to 10 instead of expected 2 in index ix_name
```

```
ERROR: failed to re-find parent key in index "XXXXXXXXXX" for deletion target page XXX
CONTEXT:  while vacuuming index index_name of relation schema.table
```

**Guidance**

Rebuild the index or skip indexes using `INDEX_CLEANUP` on manual `VACUUM FREEZE`. 
+ **Using the CONCURRENTLY option** – Prior to PostgreSQL version 12, rebuilding an index required an exclusive table lock, restricting access to the table. With PostgreSQL version 12, and later versions, the CONCURRENTLY option allows for row-level locking, significantly improving the table's availability. Following is the command:

  ```
  REINDEX INDEX ix_name CONCURRENTLY;
  ```

  While CONCURRENTLY is less disruptive, it can be slower on busy tables. Consider building the index during low-traffic periods if possible. For more information, see [REINDEX](https://www.postgresql.org/docs/current/sql-reindex.html) in *PostgreSQL* documentation.
+ **Using the INDEX\$1CLEANUP FALSE option** – If the indexes are large and estimated to require a significant amount of time to finish, you can unblock autovacuum by executing a manual VACUUM FREEZE while excluding indexes. This functionality is available in PostgreSQL version 12 and later versions.

  Bypassing indexes will allow you to skip the vacuum process of the inconsistent index and mitigate the wraparound issue. However, this will not resolve the underlying invalid page problem. To fully address and resolve the invalid page issue, you will still need to rebuild the index.

## Exceptionally high transaction rate
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.High_transaction_rate"></a>

In PostgreSQL, high transaction rates can significantly impact autovacuum's performance, leading to slower cleanup of dead tuples and increased risk of transaction ID wraparound. You can monitor the transaction rate by measuring the difference in `max(age(datfrozenxid))` between two time periods, typically per second. Additionally, you can use the following counter metrics from RDS Performance Insights to measure the transaction rate (the sum of xact\$1commit and xact\$1rollback) which is the total number of transactions.


|  Counter  |  Type  |  Unit  |  Metric  | 
| --- | --- | --- | --- | 
|  xact\$1commit  |  Transactions  |  Commits per second  |  db.Transactions.xact\$1commit  | 
|  xact\$1rollback  |  Transactions  |  Rollbacks per second  |  db.Transactions.xact\$1rollback  | 

A rapid increase indicates a high transaction load, which can overwhelm autovacuum, causing bloat, lock contention, and potential performance issues. This can negatively impact the autovacuum process in a couple of ways:
+ **Table Activity:** The specific table being vacuumed could be experiencing a high volume of transactions, causing delays.
+ **System Resources** The overall system might be overloaded, making it difficult for autovacuum to access the necessary resources to function efficiently.

Consider the following strategies for allowing autovacuum to operate more effectively and keep up with its tasks:

1. Reduce the transaction rate if possible. Consider to batch or group similar transactions where feasible.

1. Target frequently updated tables with manual `VACUUM FREEZE` operation nightly, weekly, or biweekly during off-peak hours. 

1. Consider scaling up your instance class to allocate more system resources to handle the high transaction volume and autovacuum.

# Resolving vacuum performance issues in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Performance"></a>

This section discusses factors that often contribute to slower vacuum performance and how to address these issues.

**Topics**
+ [Vacuum large indexes](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Large_indexes)
+ [Too many tables or databases to vacuum](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Multiple_tables)
+ [Aggressive vacuum (to prevent wraparound) is running](#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Aggressive_vacuum)

## Vacuum large indexes
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Large_indexes"></a>

VACUUM operates through sequential phases: initialization, heap scanning, index and heap vacuuming, index cleanup, heap truncation, and final cleanup. During the heap scan, the process prunes pages, defragments and freezes them. After completing the heap scan, VACUUM cleans indexes, returns empty pages to the operating system, and performs final cleanup tasks like vacuuming the free space map and updating statistics.

Index vacuuming may require multiple passes when `maintenance_work_mem` (or `autovacuum_work_mem`) is insufficient to process the index. In PostgreSQL 16 and earlier, a 1 GB memory limit for storing dead tuple IDs often forced multiple passes on large indexes. PostgreSQL 17 introduces `TidStore`, which dynamically allocates memory instead of using a single-allocation array. This removes the 1 GB constraint, uses memory more efficiently, and reduces the need for multiple index scans per each index.

Large indexes may still require multiple passes in PostgreSQL 17 if available memory can't accommodate the entire index processing at once. Typically, larger indexes contain more dead tuples that require multiple passes.

**Detecting slow vacuum operations**

The `postgres_get_av_diag()` function can detect when vacuum operations are running slowly due to insufficient memory. For more information on this function, see [Installing autovacuum monitoring and diagnostic tools in Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Installation.md).

The `postgres_get_av_diag()` function issues the following notices when the available memory is not enough to complete the index vacuuming in a single pass.

**`rds_tools` 1.9**

```
NOTICE: Your database is currently running aggressive vacuum to prevent wraparound and it might be slow.
```

```
NOTICE: The current setting of autovacuum_work_mem is XX might not be sufficient. Consider increasing the setting to XXX, and if necessary, scaling up the RDS instance class for more 
        memory. The suggested value is an estimate based on the current number of dead tuples for the table being vacuumed, which might not fully reflect the latest state. Additionally, review the possibility of manual 
        vacuum with exclusion of indexes using (VACUUM (INDEX_CLEANUP FALSE, VERBOSE TRUE) table_name;). For more information, see 
        
        [Working with PostgreSQL autovacuum in the Amazon Aurora User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Autovacuum.html).
```

**Note**  
The `postgres_get_av_diag()` function relies on `pg_stat_all_tables.n_dead_tup` for estimating the amount of memory required for index vacuuming.

When the `postgres_get_av_diag()` function identifies a slow vacuum operation that requires multiple index scans due to insufficient `autovacuum_work_mem`, it will generate the following message:

```
NOTICE: Your vacuum is performing multiple index scans due to insufficient autovacuum_work_mem:XXX for index vacuuming. 
        For more information, see [Working with PostgreSQL autovacuum in the Amazon Amazon RDS User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Autovacuum.html).
```

**Guidance**

You can apply the following workarounds using manual `VACUUM FREEZE` to speed up freezing the table.

**Increase the memory for vacuuming**

As suggested by the `postgres_get_av_diag()` function, it's advisable to increase the `autovacuum_work_mem` parameter to address potential memory constraints at the instance level. While `autovacuum_work_mem` is a dynamic parameter, it's important to note that for the new memory setting to take effect, the autovacuum daemon needs to restart its workers. To accomplish this:

1. Confirm that the new setting is in place.

1. Terminate the processes currently running autovacuum.

This approach ensures that the adjusted memory allocation is applied to new autovacuum operations.

For more immediate results, consider manually performing a `VACUUM FREEZE` operation with an increased `maintenance_work_mem` setting within your session:

```
SET maintenance_work_mem TO '1GB';
VACUUM FREEZE VERBOSE table_name;
```

If you're using Amazon RDS and find that you need additional memory to support higher values for `maintenance_work_mem` or `autovacuum_work_mem`, consider upgrading to an instance class with more memory. This can provide the necessary resources to enhance both manual and automatic vacuum operations, leading to improved overall vacuum and database performance.

**Disable INDEX\$1CLEANUP**

Manual `VACUUM` in PostgreSQL version 12 and later allows skipping the index cleanup phase, while emergency autovacuum in PostgreSQL version 14 and later does this automatically based on the [https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-VACUUM-FAILSAFE-AGE](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-VACUUM-FAILSAFE-AGE) parameter.

**Warning**  
Skipping index cleanup can lead to index bloat and negatively impact query performance. To mitigate this, consider reindexing or vacuuming affected indexes during a maintenance window.

For additional guidance on handling large indexes, refer to the documentation on [Managing autovacuum with large indexes](Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.md).

**Parallel index vacuuming**

Starting with PostgreSQL 13, indexes can be vacuumed and cleaned in parallel by default using manual `VACUUM`, with one vacuum worker process assigned to each index. However, for PostgreSQL to determine if a vacuum operation qualifies for parallel execution, specific criteria must be met:
+ There must be at least two indexes.
+ The `max_parallel_maintenance_workers` parameter should be set to at least 2.
+ The index size must exceed the `min_parallel_index_scan_size` limit, which defaults to 512KB.

You can adjust the `max_parallel_maintenance_workers` setting based on the number of vCPUs available on your Amazon RDS instance and the number of indexes on the table to optimize vacuuming turnaround time.

For more information, see [Parallel vacuuming in Amazon RDS for PostgreSQL and Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/parallel-vacuuming-in-amazon-rds-for-postgresql-and-amazon-aurora-postgresql/).

## Too many tables or databases to vacuum
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Multiple_tables"></a>

As mentioned in PostgreSQL's [The Autovacuum Daemon](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM') documentation, the autovacuum daemon operates through multiple processes. This includes a persistent autovacuum launcher responsible for starting autovacuum worker processes for each database within the system. The launcher schedules these workers to initiate approximately every `autovacuum_naptime` seconds per database.

With 'N' databases, a new worker begins roughly every [`autovacuum_naptime`/N seconds]. However, the total number of concurrent workers is limited by the `autovacuum_max_workers` setting. If the number of databases or tables requiring vacuuming exceeds this limit, the next database or table will be processed as soon as a worker becomes available.

When many large tables or databases require vacuuming concurrently, all available autovacuum workers can become occupied for an extended duration, delaying maintenance on other tables and databases. In environments with high transaction rates, this bottleneck can quickly escalate and potentially lead to wraparound vacuum issues within your Amazon RDS instance.

When `postgres_get_av_diag()` detects a high number of tables or databases, it provides the following recommendation:

```
NOTICE: Your database is currently running aggressive vacuum to prevent wraparound and it might be slow.
```

```
NOTICE: The current setting of autovacuum_max_workers:3 might not be sufficient. Consider increasing the setting and, if necessary, consider scaling up the Amazon RDS instance class for more workers.
```

**Guidance**

**Increase autovacuum\$1max\$1workers**

To expedite the vacuuming, we recommend adjusting the `autovacuum_max_workers` parameter to allow more concurrent autovacuum workers. If performance bottlenecks persist, consider scaling up your Amazon RDS instance to a class with more vCPUs, which can further improve the parallel processing capabilities.

## Aggressive vacuum (to prevent wraparound) is running
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Aggressive_vacuum"></a>

The age of the database (MaximumUsedTransactionIDs) in PostgreSQL only decreases when an aggressive vacuum (to prevent wraparound) is successfully completed. Until this vacuum finishes, the age will continue to increase depending on the transaction rate.

The `postgres_get_av_diag()` function generates the following `NOTICE` when it detects an aggressive vacuum. However, it only triggers this output after the vacuum has been active for at least two minutes.

```
NOTICE: Your database is currently running aggressive vacuum to prevent wraparound, monitor autovacuum performance.
```

For more information about aggressive vacuum, see [When an aggressive vacuum is already running](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.NOTICE.md).

You can verify if an aggressive vacuum is in progress with the following query:

```
SELECT
    a.xact_start AS start_time,
    v.datname "database",
    a.query,
    a.wait_event,
    v.pid,
    v.phase,
    v.relid::regclass,
    pg_size_pretty(pg_relation_size(v.relid)) AS heap_size,
    (
        SELECT
            string_agg(pg_size_pretty(pg_relation_size(i.indexrelid)) || ':' || i.indexrelid::regclass || chr(10), ', ')
        FROM
            pg_index i
        WHERE
            i.indrelid = v.relid
    ) AS index_sizes,
    trunc(v.heap_blks_scanned * 100 / NULLIF(v.heap_blks_total, 0)) AS step1_scan_pct,
    v.index_vacuum_count || '/' || (
        SELECT
            count(*)
        FROM
            pg_index i
        WHERE
            i.indrelid = v.relid
    ) AS step2_vacuum_indexes,
    trunc(v.heap_blks_vacuumed * 100 / NULLIF(v.heap_blks_total, 0)) AS step3_vacuum_pct,
    age(CURRENT_TIMESTAMP, a.xact_start) AS total_time_spent_sofar
FROM
    pg_stat_activity a
    INNER JOIN pg_stat_progress_vacuum v ON v.pid = a.pid;
```

You can determine if it's an aggressive vacuum (to prevent wraparound) by checking the query column in the output. The phrase "to prevent wraparound" indicates that it is an aggressive vacuum.

```
query                  | autovacuum: VACUUM public.t3 (to prevent wraparound)
```

For example, suppose you have a blocker at transaction age 1 billion and a table requiring an aggressive vacuum to prevent wraparound at the same transaction age. Additionally, there's another blocker at transaction age 750 million. After clearing the blocker at transaction age 1 billion, the transaction age won't immediately drop to 750 million. It will remain high until the table needing the aggressive vacuum or any transaction with an age over 750 million is completed. During this period, the transaction age of your PostgreSQL cluster will continue to rise. Once the vacuum process is completed, the transaction age will drop to 750 million but will start increasing again until further vacuuming is finished. This cycle will continue as long as these conditions persist, until the transaction age eventually drops to the level configured for your Amazon RDS instance, specified by `autovacuum_freeze_max_age`.

# Explanation of the NOTICE messages in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.NOTICE"></a>

 The `postgres_get_av_diag()` function provides the following NOTICE messages:

**When the age has not reached the monitoring threshold yet**  
The monitoring threshold for `postgres_get_av_diag()` to identify blockers is 500 million transactions by default. If `postgres_get_av_diag()` generates the following NOTICE, it indicates that the transaction age has not yet reached this threshold.  

```
NOTICE: postgres_get_av_diag() checks for blockers that prevent aggressive vacuums only, it does so only after exceeding dvb_threshold which is 500,000,000 and age of this PostgreSQL cluster is currently at 2.
```

**Not connected to the database with the age of oldest transaction ID**  
The `postgres_get_av_diag()` function provides the most accurate output when connected to the database with the oldest transaction ID age. The database with the oldest transaction ID age reported by `postgres_get_av_diag()` will be different than “my\$1database” in your case. If you are not connected to the correct database, the following NOTICE is generated:  

```
NOTICE: You are not connected to the database with the age of oldest transaction ID. Connect to my_database database and run postgres_get_av_diag() for accurate reporting.
```
Connecting to the database with the oldest transaction age is important for the following reasons:  
+ **Identifying temporary table blockers:** Because the metadata for temporary tables is specific to each database, they are typically found in the database where they are created. However, if a temporary table happens to be the top blocker and resides in the database with the oldest transaction, this could be misleading. Connecting to the correct database ensures the accurate identification of the temporary table blocker.
+ **Diagnosing slow vacuums:** The index metadata and table count information are database-specific and necessary for diagnosing slow vacuum issues.

**Database with oldest transaction by age is on an rdsadmin or template0 database**  
In certain cases, the `rdsadmin` or `template0` databases may be identified as the database with the oldest transaction ID age. If this happens, `postgres_get_av_diag()` will issue the following NOTICE:  

```
NOTICE: The database with the age of oldest transaction ID is rdsadmin or template0, reach out to support if the reported blocker is in rdsadmin or template0.
```
Verify that the listed blocker is not originating from either of these two databases. If the blocker is reported to be present in either `rdsadmin` or `template0`, contact support as these databases are not user-accessible and require intervention.  
It is highly unlikely for either the `rdsadmin` or `template0` database to contain a top blocker.

**When an aggressive vacuum is already running**  
The `postgres_get_av_diag()` function is designed to report when an aggressive vacuum process is running, but it only triggers this output after the vacuum has been active for at least 1 minute. This intentional delay helps reduce the chances of false positives. By waiting, the function ensures that only effective, significant vacuums are reported, leading to more accurate and reliable monitoring of vacuum activity.  
The `postgres_get_av_diag()` function generates the following NOTICE when it detects one or more aggressive vacuums in progress.   

```
NOTICE: Your database is currently running aggressive vacuum to prevent wraparound, monitor autovacuum performance.
```
As indicated in the NOTICE, continue to monitor the performance of vacuum. For more information about aggressive vacuum see [Aggressive vacuum (to prevent wraparound) is running](Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Resolving_Performance.md#Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Aggressive_vacuum)

**When autovacuum is off**  
The `postgres_get_av_diag()` function generates the following NOTICE if autovacuum is disabled on your database instance:  

```
NOTICE: Autovacuum is OFF, we strongly recommend to enable it, no restart is necessary.
```
Autovacuum is a critical feature of your Aurora PostgreSQL DB instance that ensures smooth database operation. It automatically removes old row versions, reclaims storage space, and prevents table bloat, helping to keep tables and indexes efficient for optimal performance. Additionally, it protects against transaction ID wraparound, which can halt transactions on your Amazon RDS instance. Disabling autovacuum can lead to long-term declines in database performance and stability. We suggest you to keep it on all the times. For more information, see [Understanding autovacuum in Aurora PostgreSQL environments](https://aws.amazon.com/blogs/database/understanding-autovacuum-in-amazon-rds-for-postgresql-environments/).  
Turning off autovacuum doesn't stop aggressive vacuums. These will still occur once your tables hit the `autovacuum_freeze_max_age` threshold. 

**The number of transactions remaining is critically low**  
The `postgres_get_av_diag()` function generates the following NOTICE when a wraparound vacuum is imminent. This NOTICE is issued when your Amazon RDS instance is 100 million transactions away from potentially rejecting new transactions.  

```
WARNING: Number of transactions remaining is critically low, resolve issues with autovacuum or perform manual VACUUM FREEZE before your instance stops accepting transactions.
```
Your immediate action is required to avoid database downtime. You should closely monitor your vacuuming operations and consider manually initiating a `VACUUM FREEZE` on the affected database to prevent transaction failures.

# Managing TOAST OID contention in Amazon Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID"></a>

TOAST (The Oversized-Attribute Storage Technique) is a PostgreSQL feature designed to handle large data values that exceed the typical 8KB database block size. PostgreSQL doesn't allow physical rows to span multiple blocks. The block size acts as an upper limit on row size. TOAST overcomes this restriction by splitting large field values into smaller chunks. It stores them separately in a dedicated TOAST table linked to the main table. For more information, see the [PostgreSQL TOAST storage mechanism and implementation documentation](https://www.postgresql.org/docs/current/storage-toast.html).

**Topics**
+ [Understanding TOAST operations](#Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.HowWorks)
+ [Identifying performance challenges](#Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.PerformanceChallenges)
+ [Recommendations](#Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.Recommendations)
+ [Monitoring](#Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.Monitoring)

## Understanding TOAST operations
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.HowWorks"></a>

TOAST performs compression and stores large field values out of line. TOAST assigns a unique OID (Object Identifier) to each chunk of oversized data stored in the TOAST table. The main table stores the TOAST value ID and relation ID on the page to reference the corresponding row in the TOAST table. This allows PostgreSQL to efficiently locate and manage these TOAST chunks. However, as the TOAST table grows, the system risks exhausting available OIDs, leading to both performance degradation and potential downtime due to OID depletion.

### Object identifiers in TOAST
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.ObjectIdentifiers"></a>

An Object Identifier (OID) is a system-wide unique identifier used by PostgreSQL to reference database objects like tables, indexes, and functions. These identifiers play a vital role in PostgreSQL's internal operations, allowing the database to efficiently locate and manage objects.

For tables with eligible data sets for toasting, PostgreSQL assigns OIDs to uniquely identify each chunk of oversized data stored in the associated TOAST table. The system associates each chunk with a `chunk_id`, which helps PostgreSQL organize and locate these chunks efficiently within the TOAST table.

## Identifying performance challenges
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.PerformanceChallenges"></a>

PostgreSQL's OID management relies on a global 32-bit counter so that it wraps around after generating 4 billion unique values. While the database cluster shares this counter, OID allocation involves two steps during TOAST operations:
+ **Global counter for allocation** – The global counter assigns a new OID across the cluster.
+ **Local search for conflicts** – The TOAST table ensures the new OID does not conflict with existing OIDs already used in that specific table.

Performance degradation can occur when:
+ The TOAST table has high fragmentation or dense OID usage, leading to delays in assigning the OID.
+ The system frequently allocates and reuses OIDs in environments with high data churn or wide tables that use TOAST extensively.

For more information, see the [PostgreSQL TOAST table size limits and OID allocation documentation](https://wiki.postgresql.org/wiki/TOAST#Total_table_size_limit):

A global counter generates the OIDs and wraps around every 4 billion values, so that from time to time, the system generates an already-used value again. PostgreSQL detects that and tries again with the next OID. A slow INSERT could occur if there is a very long run of used OID values with no gaps in the TOAST table. These challenges become more pronounced as the OID space fills, leading to slower inserts and updates.

### Identifying the problem
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.IdentifyingProblem"></a>
+ Simple `INSERT` statements take significantly longer than usual in an inconsistent and random manner.
+ Delays occur only for `INSERT` and `UPDATE` statements involving TOAST operations.
+ The following log entries appear in PostgreSQL logs when the system struggles to find available OIDs in TOAST tables:

  ```
  LOG: still searching for an unused OID in relation "pg_toast_20815"
  DETAIL: OID candidates have been checked 1000000 times, but no unused OID has been found yet.
  ```
+ Performance Insights indicates a high number of average active sessions (AAS) associated with `LWLock:buffer_io` and `LWLock:OidGenLock` wait events.

  You can run the following SQL query to identify long-running INSERT transactions with wait events:

  ```
  SELECT
      datname AS database_name,
      usename AS database_user,
      pid,
      now() - pg_stat_activity.xact_start AS transaction_duration,
      concat(wait_event_type, ':', wait_event) AS wait_event,
      substr(query, 1, 30) AS TRANSACTION,
      state
  FROM
      pg_stat_activity
  WHERE (now() - pg_stat_activity.xact_start) > INTERVAL '60 seconds'
      AND state IN ('active', 'idle in transaction', 'idle in transaction (aborted)', 'fastpath function call', 'disabled')
      AND pid <> pg_backend_pid()
  AND lower(query) LIKE '%insert%'
  ORDER BY
      transaction_duration DESC;
  ```

  Example query results displaying INSERT operations with extended wait times:

  ```
   database_name |  database_user  |  pid  | transaction_duration |     wait_event      |          transaction           | state
  ---------------+-----------------+-------+----------------------+---------------------+--------------------------------+--------
   postgres       | db_admin_user| 70965 | 00:10:19.484061      | LWLock:buffer_io    | INSERT INTO "products" (......... | active
   postgres       | db_admin_user| 69878 | 00:06:14.976037      | LWLock:buffer_io    | INSERT INTO "products" (......... | active
   postgres       | db_admin_user| 68937 | 00:05:13.942847      | :                   | INSERT INTO "products" (......... | active
  ```

### Isolating the problem
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.IsolatingProblem"></a>
+ **Test small insert** – Insert a record smaller than the `toast_tuple_target` threshold. Remember that compression is applied before TOAST storage. If this operates without performance issues, the problem is related to TOAST operations.
+ **Test new table** – Create a new table with the same structure and insert a record larger than `toast_tuple_target`. If this works without issues, the problem is localized to the original table's OID allocation.

## Recommendations
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.Recommendations"></a>

The following approaches can help resolve TOAST OID contention issues.
+ **Data cleanup and archive** – Review and delete any obsolete or unnecessary data to free up OIDs for future use, or archive the data. Consider the following limitations:
  + Limited scalability, as future cleanup might not always be possible.
  + Possible long-running VACUUM operation to remove the resulting dead tuples.
+ **Write to a new table** – Create a new table for future inserts and use a `UNION ALL` view to combine old and new data for queries. This view presents the combined data from both old and new tables, allowing queries to access them as a single table. Consider the following limitations:
  + Updates on the old table might still cause OID exhaustion.
+ **Partition or Shard** – Partition the table or shard data for better scalability and performance. Consider the following limitations:
  + Increased complexity in query logic and maintenance, potential need for application changes to handle partitioned data correctly.

## Monitoring
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.Monitoring"></a>

### Using system tables
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.SystemTables"></a>

You can use PostgreSQL's system tables to monitor growth of OID usage.

**Warning**  
Depending on the number of OIDs in the TOAST table, it may take time to complete. We recommend that you schedule monitoring during off-business hours to minimize impact.

The following anonymous block counts the number of distinct OIDs used in each TOAST table and displays the parent table information:

```
DO $$
DECLARE
    r record;
    o bigint;
    parent_table text;
    parent_schema text;
BEGIN
    SET LOCAL client_min_messages TO notice;
    FOR r IN
    SELECT
        c.oid,
        c.oid::regclass AS toast_table
    FROM
        pg_class c
    WHERE
        c.relkind = 't'
        AND c.relowner != 10 LOOP
            -- Fetch the number of distinct used OIDs (chunk IDs) from the TOAST table
            EXECUTE 'SELECT COUNT(DISTINCT chunk_id) FROM ' || r.toast_table INTO o;
            -- If there are used OIDs, find the associated parent table and its schema
            IF o <> 0 THEN
                SELECT
                    n.nspname,
                    c.relname INTO parent_schema,
                    parent_table
                FROM
                    pg_class c
                    JOIN pg_namespace n ON c.relnamespace = n.oid
                WHERE
                    c.reltoastrelid = r.oid;
                -- Raise a concise NOTICE message
                RAISE NOTICE 'Parent schema: % | Parent table: % | Toast table: % | Number of used OIDs: %', parent_schema, parent_table, r.toast_table, TO_CHAR(o, 'FM9,999,999,999,999');
            END IF;
        END LOOP;
END
$$;
```

Example output displaying OID usage statistics by TOAST table:

```
NOTICE:  Parent schema: public | Parent table: my_table | Toast table: pg_toast.pg_toast_16559 | Number of used OIDs: 45,623,317
NOTICE:  Parent schema: public | Parent table: my_table1 | Toast table: pg_toast.pg_toast_45639925 | Number of used OIDs: 10,000
NOTICE:  Parent schema: public | Parent table: my_table2 | Toast table: pg_toast.pg_toast_45649931 | Number of used OIDs: 1,000,000
DO
```

The following anonymous block retrieves the maximum assigned OID for each non-empty TOAST table:

```
DO $$
DECLARE
    r record;
    o bigint;
    parent_table text;
    parent_schema text;
BEGIN
    SET LOCAL client_min_messages TO notice;
    FOR r IN
    SELECT
        c.oid,
        c.oid::regclass AS toast_table
    FROM
        pg_class c
    WHERE
        c.relkind = 't'
        AND c.relowner != 10 LOOP
            -- Fetch the max(chunk_id) from the TOAST table
            EXECUTE 'SELECT max(chunk_id) FROM ' || r.toast_table INTO o;
            -- If there's at least one TOASTed chunk, find the associated parent table and its schema
            IF o IS NOT NULL THEN
                SELECT
                    n.nspname,
                    c.relname INTO parent_schema,
                    parent_table
                FROM
                    pg_class c
                    JOIN pg_namespace n ON c.relnamespace = n.oid
                WHERE
                    c.reltoastrelid = r.oid;
                -- Raise a concise NOTICE message
                RAISE NOTICE 'Parent schema: % | Parent table: % | Toast table: % | Max chunk_id: %', parent_schema, parent_table, r.toast_table, TO_CHAR(o, 'FM9,999,999,999,999');
            END IF;
        END LOOP;
END
$$;
```

Example output displaying maximum chunk IDs for TOAST tables:

```
NOTICE:  Parent schema: public | Parent table: my_table | Toast table: pg_toast.pg_toast_16559 | Max chunk_id: 45,639,907
NOTICE:  Parent schema: public | Parent table: my_table1 | Toast table: pg_toast.pg_toast_45639925 | Max chunk_id: 45,649,929
NOTICE:  Parent schema: public | Parent table: my_table2 | Toast table: pg_toast.pg_toast_45649931 | Max chunk_id: 46,649,935
DO
```

### Using Performance Insights
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.PerformanceInsights"></a>

The wait events `LWLock:buffer_io` and `LWLock:OidGenLock` appear in Performance Insights during operations that require assigning new Object Identifiers (OIDs). High Average Active Sessions (AAS) for these events typically point to contention during OID assignment and resource management. This is particularly common in environments with high data churn, extensive large data usage, or frequent object creation.

#### LWLock:buffer\$1io
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.LWLockBufferIO"></a>

`LWLock:buffer_io` is a wait event that occurs when a PostgreSQL session is waiting for I/O operations on a shared buffer to complete. This typically happens when the database reads data from disk into memory or writes modified pages from memory to disk. The `BufferIO` wait event ensures consistency by preventing multiple processes from accessing or modifying the same buffer while I/O operations are in progress. High occurrences of this wait event may indicate disk bottlenecks or excessive I/O activity in the database workload.

During TOAST operations:
+ PostgreSQL allocates OIDs for large objects and ensures their uniqueness by scanning the TOAST table's index.
+ Large TOAST indexes may require accessing multiple pages to verify OID uniqueness. This results in increased disk I/O, especially when the buffer pool cannot cache all required pages.

The size of the index directly affects the number of buffer pages that need to be accessed during these operations. Even if the index is not bloated, its sheer size can increase buffer I/O, particularly in high-concurrency or high-churn environments. For more information, see [LWLock:BufferIO wait event troubleshooting guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/apg-waits.lwlockbufferio.html).

#### LWLock:OidGenLock
<a name="Appendix.PostgreSQL.CommonDBATasks.TOAST_OID.LWLockOidGenLock"></a>

`OidGenLock` is a wait event that occurs when a PostgreSQL session is waiting to allocate a new object identifier (OID). This lock ensures that OIDs are generated sequentially and safely, allowing only one process to generate OIDs at a time.

During TOAST operations:
+ **OID allocation for chunks in TOAST table** – PostgreSQL assigns OIDs to chunks in TOAST tables when managing large data records. Each OID must be unique to prevent conflicts in the system catalog.
+ **High concurrency** – Since access to OID generator is sequential, when multiple sessions are concurrently creating objects that require OIDs, contention for `OidGenLock` can occur. This increases the likelihood of sessions waiting for OID allocation to complete.
+ **Dependency on system catalog access** – Allocating OIDs requires updates to shared system catalog tables like `pg_class` and `pg_type`. If these tables experience heavy activity (due to frequent DDL operations), it can increase lock contention for `OidGenLock`.
+ **High OID allocation demand** – TOAST heavy workloads with large data records require constant OID allocation, increasing contention.

Additional factors that increase OID contention:
+ **Frequent object creation** – Workloads that frequently create and drop objects, such as temporary tables, amplify contention on the global OID counter.
+ **Global counter locking** – The global OID counter is accessed serially to ensure uniqueness, creating a single point of contention in high-concurrency environments.

# Using Babelfish for Aurora PostgreSQL
<a name="babelfish"></a>

Babelfish for Aurora PostgreSQL extends your Aurora PostgreSQL DB cluster with the ability to accept database connections from SQL Server clients. With Babelfish, applications that were originally built for SQL Server can work directly with Aurora PostgreSQL with few code changes compared to a traditional migration and without changing database drivers. For more information about migrating, see [Migrating a SQL Server database to Babelfish for Aurora PostgreSQL](babelfish-migration.md).

Babelfish provides an additional endpoint for an Aurora PostgreSQL database cluster that allows it to understand the SQL Server wire-level protocol and commonly used SQL Server statements. Client applications that use the Tabular Data Stream (TDS) wire protocol can connect natively to the TDS listener port on Aurora PostgreSQL. To learn more about TDS, see [[MS-TDS]: Tabular Data Stream Protocol](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-tds/b46a581a-39de-4745-b076-ec4dbb7d13ec) on the Microsoft website.

**Note**  
Babelfish for Aurora PostgreSQL supports TDS versions 7.1 through 7.4.

Babelfish also provides access to data using the PostgreSQL connection. By default, both SQL dialects supported by Babelfish are available through their native wire protocols at the following ports: 
+ SQL Server dialect (T-SQL), clients connect to port 1433.
+ PostgreSQL dialect (PL/pgSQL), clients connect to port 5432.

Babelfish runs the Transact-SQL (T-SQL) language with some differences. For more information, see [Differences between Babelfish for Aurora PostgreSQL and SQL Server](babelfish-compatibility.md). 

In the following sections, you can find information about setting up and using a Babelfish for Aurora PostgreSQL DB cluster.

**Topics**
+ [Babelfish limitations](babelfish-limitations.md)
+ [Understanding Babelfish architecture and configuration](babelfish-understanding-overview-howitworks.md)
+ [Creating a Babelfish for Aurora PostgreSQL DB cluster](babelfish-create.md)
+ [Migrating a SQL Server database to Babelfish for Aurora PostgreSQL](babelfish-migration.md)
+ [Database authentication with Babelfish for Aurora PostgreSQL](babelfish-db-authentication.md)
+ [Connecting to a Babelfish DB cluster](babelfish-connect.md)
+ [Working with Babelfish](working-with-babelfish-usage-notes-features.md)
+ [Troubleshooting Babelfish](babelfish-troubleshooting.md)
+ [Managing Babelfish for Aurora PostgreSQL version updates](babelfish-information.md)
+ [Babelfish for Aurora PostgreSQL reference](USER_AuroraPostgreSQL_Babelfish_Reference.md)

# Babelfish limitations
<a name="babelfish-limitations"></a>

 The following limitations currently apply to Babelfish for Aurora PostgreSQL: 
+  Babelfish doesn't support the following Aurora features: 
  + AWS Identity and Access Management
  + Database Activity Streams (DAS)
  + RDS Data API with Aurora PostgreSQL Serverless v2 and provisioned
  + RDS Proxy with RDS for SQL Server
  + Salted challenge response authentication mechanism (SCRAM)
  + Query editor
  + Zero-ETL integrations
+  Babelfish doesn't provide the following client driver API support: 
  +  API requests with the connection attributes related to Microsoft Distributed Transaction Coordinator (MSDTC) aren't supported. These include XA calls by the SQLServerXAResource class in the SQL server JDBC driver. 
+ Babelfish currently doesn't support the following Aurora PostgreSQL extensions:
  + `bloom`
  + `btree_gin`
  + `btree_gist`
  + `citext`
  + `cube`
  + `hstore`
  + `hypopg`
  + Logical replication using `pglogical`
  + `ltree`
  + `pgcrypto`
  + Query plan management using `apg_plan_mgmt`

  To learn more about PostgreSQL extensions, see [Working with extensions and foreign data wrappers](Appendix.PostgreSQL.CommonDBATasks.md).
+ The open source [jTDS driver](https://github.com/milesibastos/jTDS/) that is designed as an alternative to the Microsoft JDBC driver is not supported.

# Understanding Babelfish architecture and configuration
<a name="babelfish-understanding-overview-howitworks"></a>

You manage the Aurora PostgreSQL-Compatible Edition DB cluster running Babelfish much as you would any Aurora DB cluster. That is, you benefit from the scalability, high-availability with failover support, and built-in replication provided by an Aurora DB cluster. To learn more about these capabilities, see [Managing performance and scaling for Aurora DB clusters](Aurora.Managing.Performance.md), [High availability for Amazon Aurora](Concepts.AuroraHighAvailability.md), and [Replication with Amazon Aurora](Aurora.Replication.md). You also have access to many other AWS tools and utilities, including the following:
+ Amazon CloudWatch is a monitoring and observability service that provides you with data and actionable insights. For more information, see [Monitoring Amazon Aurora metrics with Amazon CloudWatch](monitoring-cloudwatch.md).
+ Performance Insights is a database performance tuning and monitoring feature that helps you quickly assess the load on your database. To learn more, see [Monitoring DB load with Performance Insights on Amazon Aurora](USER_PerfInsights.md).
+ Aurora global databases span multiple AWS Regions, enabling low latency global reads and providing fast recovery from the rare outage that might affect an entire AWS Region. For more information, see [Using Amazon Aurora Global Database](aurora-global-database.md).
+ Automatic software patching keeps your database up-to-date with the latest security and feature patches when they become available.
+ Amazon RDS events notify you by email or SMS message of important database events, such as an automated failover. For more information, see [Monitoring Amazon Aurora events](working-with-events.md). 

Following, you can learn about Babelfish architecture and how the SQL Server databases that you migrate are handled by Babelfish. When you create your Babelfish DB cluster, you need to make some decisions up front about single database or multiple databases, collations, and other details. 

**Topics**
+ [Babelfish architecture](babelfish-architecture.md)
+ [DB cluster parameter group settings for Babelfish](babelfish-configuration.md)
+ [Understanding Collations in Babelfish for Aurora PostgreSQL](babelfish-collations.md)
+ [Managing Babelfish error handling with escape hatches](babelfish-strict.md)

# Babelfish architecture
<a name="babelfish-architecture"></a>

When you create an Aurora PostgreSQL cluster with Babelfish turned on, Aurora provisions the cluster with a PostgreSQL database named `babelfish_db`. This database is where all migrated SQL Server objects and structures reside. 

**Note**  
In an Aurora PostgreSQL cluster, the `babelfish_db` database name is reserved for Babelfish. Creating your own "babelfish\$1db" database on a Babelfish DB cluster prevents Aurora from successfully provisioning Babelfish. 

When you connect to the TDS port, the session is placed in the `babelfish_db` database. From T-SQL, the structure looks similar to being connected to a SQL Server instance. You can see the `master`, `msdb`, and `tempdb` databases, and the `sys.databases` catalog. You can create additional user databases and switch between databases with the USE statement. When you create a SQL Server user database, it's flattened into the `babelfish_db` PostgreSQL database. Your database retains cross-database syntax and semantics equal to or similar to those provided by SQL Server.

## Using Babelfish with a single database or multiple databases
<a name="babelfish-single_vs_multi_db"></a>

When you create an Aurora PostgreSQL cluster to use with Babelfish, you choose between using a single SQL Server database on its own or multiple SQL Server databases together. Your choice affects how the names of SQL Server schemas inside the `babelfish_db` database appear from Aurora PostgreSQL. The migration mode is stored in the `migration_mode` parameter. You must not change this parameter after creating your cluster as you could lose access to all your previously created SQL objects.

In single-db mode, the schema names of the SQL Server database remain the same in the `babelfish_db` database of the PostgreSQL. If you choose to migrate only a single database, the schema names of the migrated user database can be referenced in PostgreSQL with the same names used in SQL Server. For example, the `dbo` and `smith` schemas reside inside the `dbA` database*.* 

![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/babelfish_single_db_mode.png)


When connecting through TDS, you can run `USE dba` to see schemas `dbo` and `dev` from T-SQL, as you would in SQL Server. The unchanged schema names are also visible from PostgreSQL.

In multiple-database mode, the schema names of user databases become `dbname_schemaname` when accessed from PostgreSQL. The schema names remain the same when accessed from T-SQL.

![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/babelfish_multi_db_mode.png)


As shown in the image, multiple-database mode and single-database mode are the same as SQL Server when connecting through the TDS port and using T-SQL. For example, `USE dbA` lists schemas `dbo` and  `dev` just as it does in SQL Server. The mapped schema names, such as `dba_dbo`  and `dba_dev`, are visible from PostgreSQL.

Each database still contains your schemas. The name of each database is prepended to the name of the SQL Server schema, using an underscore as a delimiter, for example:
+ `dba` contains `dba_dbo` and `dba_dev`.
+ `dbb` contains `dbb_dbo` and `dbb_test`.
+ `dbc` contains `dbc_dbo` and `dbc_prod`.

Inside the `babelfish_db` database, the T-SQL user still needs to run `USE dbname` to change database context, so the look and feel remains similar to SQL Server.

## Choosing a migration mode
<a name="babelfish-choosing_single_vs_multi"></a>

Each migration mode has advantages and disadvantages. Choose your migration mode based on the number of user databases you have, and your migration plans. After you create a cluster for use with Babelfish, you must not change the migration mode as you might lose access to all your previously created SQL objects. When choosing a migration mode, consider the requirements of your user databases and clients.

When you create a cluster for use with Babelfish, Aurora PostgreSQL creates the system databases, `master` and `tempdb`. If you created or modified objects in the system databases (`master` or `tempdb`), make sure to recreate those objects in your new cluster. Unlike SQL Server, Babelfish doesn't reinitialize `tempdb` after a cluster reboot.

Use single database migration mode in the following cases:
+ If you are migrating a single SQL Server database. In single database mode, migrated schema names when accessed from PostgreSQL are identical to those in original SQL Server schema names. This reduces code changes to existing SQL queries if you want to optimize them to run with a PostgreSQL connection.
+ If your end goal is a complete migration to native Aurora PostgreSQL. Before migrating, consolidate your schemas into a single schema (`dbo`) and then migrate into a single cluster to lessen required changes.

Use multiple database migration mode in the following cases:
+ If you want the default SQL Server experience with multiple user databases in the same instance.
+ If multiple user databases need to be migrated together.

# DB cluster parameter group settings for Babelfish
<a name="babelfish-configuration"></a>

When you create an Aurora PostgreSQL DB cluster and choose **Turn on Babelfish**, a DB cluster parameter group is created for you automatically if you choose **Create new**. This DB cluster parameter group is based on the Aurora PostgreSQL DB cluster parameter group for the Aurora PostgreSQL version chosen for the install, for example, Aurora PostgreSQL version 14. It's named using the following general pattern: 

```
custom-aurora-postgresql14-babelfish-compat-3
```

You can change the following settings during the cluster creation process but some of these can't be changed once they're stored in the custom parameter group, so choose carefully:
+ Single database or Multiple databases
+ Default collation locale
+ Collation name
+ DB parameter group

To use an existing Aurora PostgreSQL DB cluster version 13 or higher parameter group, edit the group and set the `babelfish_status` parameter to `on`. Specify any Babelfish options before creating your Aurora PostgreSQL cluster. To learn more, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

The following parameters control Babelfish preferences. Unless otherwise stated in the Description, parameters are modifiable. The default value is included in the description. To see the allowable values for any parameter, do as follows: 

**Note**  
When you associate a new DB parameter group with a DB instance, the modified static and dynamic parameters are applied only after the DB instance is rebooted. However, if you modify dynamic parameters in the DB parameter group after you associate it with the DB instance, these changes are applied immediately without a reboot.

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose **Parameter groups** from the navigation menu.

1. Choose the `default.aurora-postgresql14` DB cluster parameter group from the list.

1. Enter the name of a parameter in the search field. For example, enter `babelfishpg_tsql.default_locale` in the search field to display this parameter and its default value and allowable settings. 
**Note**  
Babelfish for Aurora PostgreSQL global databases works in secondary regions only if the following parameters are turned on in those regions.


| Parameter | Description | Apply Type | Is Modifiable | 
| --- | --- | --- | --- | 
| babelfishpg\$1tsql.apg\$1enable\$1correlated\$1scalar\$1transform | Enables the planner to transform correlated scalar subquery in Babelfish. (Default: on) (Allowable: on, off)  | dynamic | true | 
| babelfishpg\$1tsql.apg\$1enable\$1subquery\$1cache | Enables the use of cache for correlated scalar subquery in Babelfish. (Default: on) (Allowable: on, off)  | dynamic | true | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1scale | Sets the default scale of numeric type to be sent in the TDS column metadata if the engine doesn't specify one. (Default: 8) (Allowable: 0–38)  | dynamic | true | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1precision | An integer that sets the default precision of numeric type to be sent in the TDS column metadata if the engine doesn't specify one. (Default: 38) (Allowable: 1–38) | dynamic | true | 
| babelfishpg\$1tds.tds\$1default\$1packet\$1size | An integer that sets the default packet size for connecting SQL Server clients. (Default: 4096) (Allowable: 512–32767) | dynamic | true | 
| babelfishpg\$1tds.tds\$1default\$1protocol\$1version | An integer that sets a default TDS protocol version for connecting clients. (Default: DEFAULT) (Allowable: TDSv7.0, TDSv7.1, TDSv7.1.1, TDSv7.2, TDSv7.3A, TDSv7.3B, TDSv7.4, DEFAULT) | dynamic | true | 
| babelfishpg\$1tds.default\$1server\$1name | A string that identifies the default name of the Babelfish server. (Default: Microsoft SQL Server) (Allowable: null) | dynamic | true | 
| babelfishpg\$1tds.tds\$1debug\$1log\$1level | An integer that sets the logging level in TDS; 0 turns off logging. (Default: 1) (Allowable: 0, 1, 2, 3) | dynamic | true | 
| babelfishpg\$1tds.listen\$1addresses | A string that sets the host name or IP address or addresses to listen for TDS on. This parameter can't be modified after the Babelfish DB cluster is created. (Default: \$1 ) (Allowable: null)  | – | false | 
| babelfishpg\$1tds.port | An integer that specifies the TCP port used for requests in SQL Server syntax. (Default: 1433) (Allowable: 1–65535) | static | true | 
| babelfishpg\$1tds.tds\$1ssl\$1encrypt | A boolean that turns encryption on (0) or off (1) for data traversing the TDS listener port. For detailed information about using SSL for client connections, see [Babelfish SSL settings and client connections](#babelfish-ssl). (Default: 0) (Allowable: 0, 1) | dynamic | true | 
| babelfishpg\$1tds.tds\$1ssl\$1max\$1protocol\$1version | A string that specifies the highest SSL/TLS protocol version to use for the TDS session. (Default: 'TLSv1.2') (Allowable: 'TLSv1', 'TLSv1.1', 'TLSv1.2') | dynamic | true | 
| babelfishpg\$1tds.tds\$1ssl\$1min\$1protocol\$1version | A string that specifies the minimum SSL/TLS protocol version to use for the TDS session. (Default: 'TLSv1.2' from Aurora PostgreSQL version 16, 'TLSv1' for versions older than Aurora PostgreSQL version 16) (Allowable: 'TLSv1', 'TLSv1.1', 'TLSv1.2') | dynamic | true | 
| babelfishpg\$1tds.unix\$1socket\$1directories | A string that identifies the TDS server Unix socket directory. This parameter can't be modified after the Babelfish DB cluster is created. (Default: /tmp) (Allowable: null) | – | false | 
| babelfishpg\$1tds.unix\$1socket\$1group | A string that identifies the TDS server Unix socket group. This parameter can't be modified after the Babelfish DB cluster is created. (Default: rdsdb) (Allowable: null) | – | false | 
| babelfishpg\$1tsql.default\$1locale |  A string that specifies the default locale used for Babelfish collations. The default locale is the locale only and doesn't include any qualifiers. Set this parameter when you provision a Babelfish DB cluster. After the DB cluster is provisioned, changes to this parameter are ignored. (Default: en\$1US) (Allowable: See [tables](babelfish-collations.md))   | static | true | 
| babelfishpg\$1tsql.migration\$1mode |  A non-modifiable list that specifies support for single- or multiple user databases. Set this parameter when you provision a Babelfish DB cluster. After the DB cluster is provisioned, you can't modify this parameter's value. (Default: multi-db from Aurora PostgreSQL version 16, single-db for versions older than Aurora PostgreSQL version 16) (Allowable: single-db, multi-db,null)  | static | true | 
| babelfishpg\$1tsql.server\$1collation\$1name |  A string that specifies the name of the collation used for server-level actions. Set this parameter when you provision a Babelfish DB cluster. After the DB cluster is provisioned, don't modify the value of this parameter. (Default: bbf\$1unicode\$1general\$1ci\$1as) (Allowable: See [tables](babelfish-collations.md))  | static | true | 
| babelfishpg\$1tsql.version |  A string that sets the output of @@VERSION variable. Don't modify this value for Aurora PostgreSQL DB clusters. (Default: null) (Allowable: default)  | dynamic | true | 
| rds.babelfish\$1status | A string that sets the state of Babelfish functionality. When this parameter is set to `datatypesonly`, Babelfish is turned off but SQL Server data types are still available. (Default: off) (Allowable: on, off, datatypesonly) | static | true | 
| unix\$1socket\$1permissions | An integer that sets the TDS server Unix socket permissions. This parameter can't be modified after the Babelfish DB cluster is created. (Default: 0700) (Allowable: 0–511) | – | false | 

## Babelfish SSL settings and client connections
<a name="babelfish-ssl"></a>

To require SSL/TLS connections to your Babelfish for Aurora PostgreSQL DB cluster, use the `rds.force_ssl` parameter.
+ To require SSL/TLS connections, set the `rds.force_ssl` parameter value to 1 (on).
+ To turn off required SSL/TLS connections, set the `rds.force_ssl` parameter value to 0 (off).

The default value of this parameter depends on the Aurora PostgreSQL version:
+ For Aurora PostgreSQL versions 17 and later: The default value is 1 (on).
+ For Aurora PostgreSQL versions 16 and older: The default value is 0 (off).

**Note**  
When you perform a major version upgrade from Aurora PostgreSQL version 16 or earlier to version 17 or later, the default value of the parameter changes from 0 (off) to 1 (on). This change may cause connectivity failures for applications that are not configured for SSL. You can revert to the previous default behavior by setting this parameter to 0 (off).

For driver-specific details, see [Connecting to a Babelfish DB cluster](babelfish-connect.md).

When a client connects to the TDS port (default `1433`), Babelfish compares the Secure Sockets Layer (SSL) setting sent during the client handshake to the Babelfish SSL parameter setting (`tds_ssl_encrypt`). Babelfish then determines if a connection is allowed. If a connection is allowed, encryption behavior is either enforced or not, depending on your parameter settings and the support for encryption offered by the client.

The table following shows how Babelfish behaves for each combination.


| Client SSL setting | Babelfish SSL setting | rds.force\$1ssl | Connection allowed? | Value returned to client | 
| --- | --- | --- | --- | --- | 
| ENCRYPT\$1ON | Any | Any | Allowed, the entire connection is encrypted | ENCRYPT\$1ON | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=1 | Any | Allowed, the entire connection is encrypted | ENCRYPT\$1REQ | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=0 | Allowed, the login packet is encrypted | ENCRYPT\$1OFF | 
| ENCRYPT\$1OFF | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=1 | No, connection closed | ENCRYPT\$1OFF | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=0 | Yes | ENCRYPT\$1NOT\$1SUP | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=1 | Any | No, connection closed  | ENCRYPT\$1REQ | 
| ENCRYPT\$1NOT\$1SUP | tds\$1ssl\$1encrypt=0 | rds.force\$1ssl=1 | No, connection closed | ENCRYPT\$1NOT\$1SUP | 
| ENCRYPT\$1CLIENT\$1CERT | Any | Any | No, connection closed | Unsupported | 

# Understanding Collations in Babelfish for Aurora PostgreSQL
<a name="babelfish-collations"></a>

When you create an Aurora PostgreSQL DB cluster with Babelfish, you choose a collation for your data. A *collation* specifies the sort order and bit patterns that produce the text or characters in a given written human language. A collation includes rules comparing data for a given set of bit patterns. Collation is related to localization. Different locales affect character mapping, sort order, and the like. Collation attributes are reflected in the names of various collations. For information about attributes, see the [Babelfish collation attributes table](#bfish-collation-attributes-table). 

Babelfish maps SQL Server collations to comparable collations provided by Babelfish. Babelfish predefines Unicode collations with culturally sensitive string comparisons and sort orders. Babelfish also provides a way to translate the collations in your SQL Server DB to the closest-matching Babelfish collation. Locale-specific collations are provided for different languages and regions. 

Some collations specify a code page that corresponds to a client-side encoding. Babelfish automatically translates from the server encoding to the client encoding depending on the collation of each output column. 

Babelfish supports the collations listed in the [Babelfish supported collations table](#bfish-collations-table). Babelfish maps SQL Server collations to comparable collations provided by Babelfish. 

Babelfish uses version 153.80 of the International Components for Unicode (ICU) collation library. For more information about ICU collations, see [ Collation](https://unicode-org.github.io/icu/userguide/collation/) in the ICU documentation. To learn more about PostgreSQL and collation, see [Collation Support](https://www.postgresql.org/docs/current/collation.html) in the the PostgreSQL documentation.

**Topics**
+ [DB cluster parameters that control collation and locale](#babelfish-collations.parameters)
+ [Deterministic and nondeterministic collations in Babelfish](#babelfish-collations.deterministic-nondeterministic)
+ [Collations supported at database level in Babelfish](#babelfish-collations.database-level)
+ [Server and object Collations in Babelfish](#babelfish-collations.reference-tables-supported-collations)
+ [Default Collation behavior in Babelfish](#babelfish-collations-default)
+ [Managing collations](collation.managing.md)
+ [Collation limitations and behavior differences](collation.limitations.md)

## DB cluster parameters that control collation and locale
<a name="babelfish-collations.parameters"></a><a name="collation-related-parameters"></a>

The following parameters affect collation behavior. 

**babelfishpg\$1tsql.default\$1locale**  
This parameter specifies the default locale used by the collation. This parameter is used in combination with attributes listed in the [Babelfish collation attributes table](#bfish-collation-attributes-table) to customize collations for a specific language and region. The default value for this parameter is `en-US`.  
The default locale applies to all Babelfish collation names that start with "BBF" and to all SQL Server collations that are mapped to Babelfish collations. Changing the setting for this parameter on an existing Babelfish DB cluster doesn't affect the locale of existing collations. For the list of collations, see the [Babelfish supported collations table](#bfish-collations-table). 

**babelfishpg\$1tsql.server\$1collation\$1name**  
This parameter specifies the default collation for the server (Aurora PostgreSQL DB cluster instance) and the database. The default value is `sql_latin1_general_cp1_ci_as`. The `server_collation_name` has to be a `CI_AS` collation because in T-SQL, the server collation determines how identifiers are compared.  
When you create your Babelfish DB cluster, you choose the **Collation name** from the selectable list. These include the collations listed in the [Babelfish supported collations table](#bfish-collations-table). Don't modify the `server_collation_name` after the Babelfish database is created.

The settings you choose when you create your Babelfish for Aurora PostgreSQL DB cluster are stored in the DB cluster parameter group associated with the cluster for these parameters and set its collation behavior.

## Deterministic and nondeterministic collations in Babelfish
<a name="babelfish-collations.deterministic-nondeterministic"></a>

Babelfish supports deterministic and nondeterministic collations:
+ A *deterministic collation* evaluates characters that have identical byte sequences as equal. That means that `x` and `X` aren't equal in a deterministic collation. Deterministic collations can be case-sensitive (CS) and accent-sensitive (AS).
+ A *nondeterministic collation* doesn't need an identical match. A nondeterministic collation evaluates `x` and `X` as equal. Nondeterministic collations are case-insensitive (CI) or accent-insensitive (AI), or both.

In the table following, you can find some behavior differences between Babelfish and PostgreSQL when using nondeterministic collations.


| Babelfish | PostgreSQL | 
| --- | --- | 
|  Supports the LIKE clause for CI\$1AS collations.  |  Doesn't support the LIKE clause on nondeterministic collations.  | 
|  Supports the LIKE clause only on the following AI collations from Babelfish version 4.2.0: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-collations.html)  |  Doesn't support the LIKE clause on nondeterministic collations.  | 

For a list of other limitations and behavior differences for Babelfish compared to SQL Server and PostgreSQL, see [Collation limitations and behavior differences](collation.limitations.md). 

Babelfish and SQL Server follow a naming convention for collations that describe the collation attributes, as shown in the table following.<a name="bfish-collation-attributes-table"></a>


| Attribute | Description | 
| --- | --- | 
| AI | Accent-insensitive. | 
| AS | Accent-sensitive. | 
| BIN2 | BIN2 requests data to be sorted in code point order. Unicode code point order is the same character order for UTF-8, UTF-16, and UCS-2 encodings. Code point order is a fast deterministic collation. | 
| CI | Case-insensitive. | 
| CS | Case-sensitive. | 
| PREF | To sort uppercase letters before lowercase letters, use a PREF collation. If comparison is case-insensitive, the uppercase version of a letter sorts before the lowercase version, if there is no other distinction. The ICU library supports uppercase preference with `colCaseFirst=upper`, but not for CI\$1AS collations. PREF can be applied only to `CS_AS` deterministic collations. | 

## Collations supported at database level in Babelfish
<a name="babelfish-collations.database-level"></a>

The following collations are supported at database level in Babelfish:
+ bbf\$1unicode\$1bin2
+ bbf\$1unicode\$1cp1\$1ci\$1ai
+ bbf\$1unicode\$1cp1\$1ci\$1as
+ bbf\$1unicode\$1cp1250\$1ci\$1ai
+ bbf\$1unicode\$1cp1250\$1ci\$1as
+ bbf\$1unicode\$1cp1257\$1ci\$1ai
+ bbf\$1unicode\$1cp1257\$1ci\$1as
+ estonian\$1ci\$1ai
+ estonian\$1ci\$1as
+ finnish\$1swedish\$1ci\$1ai
+ finnish\$1swedish\$1ci\$1as
+ french\$1ci\$1ai
+ french\$1ci\$1as
+ latin1\$1general\$1bin2
+ latin1\$1general\$1ci\$1ai
+ latin1\$1general\$1ci\$1as
+ latin1\$1general\$190\$1bin2
+ latin1\$1general\$1100\$1bin2
+ latin1\$1general\$1140\$1bin2
+ modern\$1spanish\$1ci\$1ai
+ modern\$1spanish\$1ci\$1as
+ polish\$1ci\$1ai
+ polish\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1\$1ci\$1ai
+ sql\$1latin1\$1general\$1cp1\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1250\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1251\$1ci\$1as
+ sql\$1latin1\$1general\$1cp1257\$1ci\$1as
+ traditional\$1spanish\$1ci\$1ai
+ traditional\$1spanish\$1ci\$1as

**Note**  
To use a different collation at the database level, ensure it matches the server-level collation. For more information, see [Server and object Collations in Babelfish](#babelfish-collations.reference-tables-supported-collations)

## Server and object Collations in Babelfish
<a name="babelfish-collations.reference-tables-supported-collations"></a>

Use the following collations as a server collation or an object collation.<a name="bfish-collations-table"></a>


| Collation ID | Notes | 
| --- | --- | 
|  bbf\$1unicode\$1general\$1ci\$1as  |  Supports case-insensitive comparison and the LIKE operator.  | 
|  bbf\$1unicode\$1cp1\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt) also known as CP1252.  | 
|  bbf\$1unicode\$1CP1250\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1250.txt) used to represent texts in Central European and Eastern European languages that use Latin script.  | 
|  bbf\$1unicode\$1CP1251\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1251.txt) for languages that use the Cyrillic script.  | 
|  bbf\$1unicode\$1cp1253\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1253.txt) used to represent modern Greek.  | 
|  bbf\$1unicode\$1cp1254\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1254.txt) that supports Turkish.  | 
|  bbf\$1unicode\$1cp1255\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt) that supports Hebrew.  | 
|  bbf\$1unicode\$1cp1256\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1256.txt) used to write languages that use Arabic script.  | 
|  bbf\$1unicode\$1cp1257\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1257.txt) used to support Estonian, Latvian, and Lithuanian languages.  | 
|  bbf\$1unicode\$1cp1258\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1258.txt) used to write Vietnamese characters.  | 
|  bbf\$1unicode\$1cp874\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit874.txt) used to write Thai characters.  | 
|  sql\$1latin1\$1general\$1cp1250\$1ci\$1as  |  [Nondeterministic single-byte character encoding](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1250.txt) used to represent Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1251\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1251.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1252.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1253\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1253.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1254\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1254.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1255\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1255.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1256\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1256.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1257\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1257.txt) that supports Latin characters.  | 
|  sql\$1latin1\$1general\$1cp1258\$1ci\$1as  |  [Nondeterministic collation](https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit1258.txt) that supports Latin characters.  | 
|  chinese\$1prc\$1ci\$1as  |  Nondeterministic collation that supports Chinese (PRC).  | 
|  cyrillic\$1general\$1ci\$1as  |  Nondeterministic collation that supports Cyrillic.  | 
|  finnish\$1swedish\$1ci\$1as  |  Nondeterministic collation that supports Finnish.  | 
|  french\$1ci\$1as  |  Nondeterministic collation that supports French.  | 
|  japanese\$1ci\$1as  | Nondeterministic collation that supports Japanese. Supported in Babelfish 2.1.0 and higher releases. | 
|  korean\$1wansung\$1ci\$1as  |  Nondeterministic collation that supports Korean (with dictionary sort).  | 
|  latin1\$1general\$1ci\$1as  |  Nondeterministic collation that supports Latin characters.  | 
|  modern\$1spanish\$1ci\$1as  |  Nondeterministic collation that supports Modern Spanish.  | 
|  polish\$1ci\$1as  |  Nondeterministic collation that supports Polish.  | 
|  thai\$1ci\$1as  |  Nondeterministic collation that supports Thai.  | 
|  traditional\$1spanish\$1ci\$1as  |  Nondeterministic collation that supports Spanish (traditional sort).  | 
|  turkish\$1ci\$1as  |  Nondeterministic collation that supports Turkish.  | 
|  ukrainian\$1ci\$1as  |  Nondeterministic collation that supports Ukrainian.  | 
|  vietnamese\$1ci\$1as  |  Nondeterministic collation that supports Vietnamese.  | 

You can use the following collations as object collations.<a name="bfish-icu-collations-table"></a>


| Dialect | Deterministic options | Nondeterministic options | 
| --- | --- | --- | 
|  Arabic  |  Arabic\$1CS\$1AS  |  Arabic\$1CI\$1AS Arabic\$1CI\$1AI  | 
|  Arabic script  |  BBF\$1Unicode\$1CP1256\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1256\$1CS\$1AS  |  BBF\$1Unicode\$1CP1256\$1CI\$1AI BBF\$1Unicode\$1CP1256\$1CS\$1AI  | 
|  Binary  |  latin1\$1general\$1bin2 BBF\$1Unicode\$1BIN2  |  –  | 
|  Central European and Eastern European languages that use Latin script  |  BBF\$1Unicode\$1CP1250\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1250\$1CS\$1AS  |  BBF\$1Unicode\$1CP1250\$1CI\$1AI BBF\$1Unicode\$1CP1250\$1CS\$1AI  | 
|  Chinese  |  Chinese\$1PRC\$1CS\$1AS  |  Chinese\$1PRC\$1CI\$1AS Chinese\$1PRC\$1CI\$1AI  | 
|  Cyrillic\$1General  |  Cyrillic\$1General\$1CS\$1AS  |  Cyrillic\$1General\$1CI\$1AS Cyrillic\$1General\$1CI\$1AI  | 
|  Cyrillic script  |  BBF\$1Unicode\$1CP1251\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1251\$1CS\$1AS  |  BBF\$1Unicode\$1CP1251\$1CI\$1AI BBF\$1Unicode\$1CP1251\$1CS\$1AI  | 
|  Estonian  |  Estonian\$1CS\$1AS  |  Estonian\$1CI\$1AS Estonian\$1CI\$1AI  | 
|  Estonian, Latvian, and Lithuanian  |  BBF\$1Unicode\$1CP1257\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1257\$1CS\$1AS  |  BBF\$1Unicode\$1CP1257\$1CI\$1AI BBF\$1Unicode\$1CP1257\$1CS\$1AI  | 
|  Finnish\$1Swedish  |  Finnish\$1Swedish\$1CS\$1AS  |  Finnish\$1Swedish\$1CI\$1AS Finnish\$1Swedish\$1CI\$1AI  | 
|  French  |  French\$1CS\$1AS  |  French\$1CI\$1AS French\$1CI\$1AI  | 
|  Greek  |  Greek\$1CS\$1AS  |  Greek\$1CI\$1AS Greek\$1CI\$1AI  | 
|  Hebrew  |  BBF\$1Unicode\$1CP1255\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1255\$1CS\$1AS Hebrew\$1CS\$1AS  |  BBF\$1Unicode\$1CP1255\$1CI\$1AI BBF\$1Unicode\$1CP1255\$1CS\$1AI Hebrew\$1CI\$1AS Hebrew\$1CI\$1AI  | 
|  Japanese (Babelfish 2.1.0 and higher)  | Japanese\$1CS\$1AS | Japanese\$1CI\$1AI Japanese\$1CI\$1AS | 
|  Korean\$1Wamsung  |  Korean\$1Wamsung\$1CS\$1AS  |  Korean\$1Wamsung\$1CI\$1AS Korean\$1Wamsung\$1CI\$1AI  | 
|  Latin characters for code page CP1252  |  latin1\$1general\$1cs\$1as BBF\$1Unicode\$1General\$1CS\$1AS BBF\$1Unicode\$1General\$1Pref\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1\$1CS\$1AS BBF\$1Unicode\$1CP1\$1CS\$1AS  |  latin1\$1general\$1ci\$1as latin1\$1general\$1ci\$1ai latin1\$1general\$1cs\$1ai BBF\$1Unicode\$1General\$1CI\$1AI BBF\$1Unicode\$1General\$1CS\$1AI BBF\$1Unicode\$1CP1\$1CI\$1AI BBF\$1Unicode\$1CP1\$1CS\$1AI  | 
|  Modern Greek  |  BBF\$1Unicode\$1CP1253\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1253\$1CS\$1AS  |  BBF\$1Unicode\$1CP1253\$1CI\$1AI BBF\$1Unicode\$1CP1253\$1CS\$1AI  | 
|  Modern\$1Spanish  |  Modern\$1Spanish\$1CS\$1AS  |  Modern\$1Spanish\$1CI\$1AS Modern\$1Spanish\$1CI\$1AI  | 
|  Mongolian  |  Mongolian\$1CS\$1AS  |  Mongolian\$1CI\$1AS Mongolian\$1CI\$1AI  | 
|  Polish  |  Polish\$1CS\$1AS  |  Polish\$1CI\$1AS Polish\$1CI\$1AI  | 
|  Thai  |  BBF\$1Unicode\$1CP874\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP874\$1CS\$1AS Thai\$1CS\$1AS  |  BBF\$1Unicode\$1CP874\$1CI\$1AI BBF\$1Unicode\$1CP874\$1CS\$1AI Thai\$1CI\$1AS, Thai\$1CI\$1AI  | 
|  Traditional\$1Spanish  |  Traditional\$1Spanish\$1CS\$1AS  |  Traditional\$1Spanish\$1CI\$1AS Traditional\$1Spanish\$1CI\$1AI  | 
|  Turkish  |  BBF\$1Unicode\$1CP1254\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1254\$1CS\$1AS Turkish\$1CS\$1AS  |  BBF\$1Unicode\$1CP1254\$1CI\$1AI BBF\$1Unicode\$1CP1254\$1CS\$1AI Turkish\$1CI\$1AS, Turkish\$1CI\$1AI  | 
|  Ukranian  |  Ukranian\$1CS\$1AS  |  Ukranian\$1CI\$1AS Ukranian\$1CI\$1AI  | 
|  Vietnamese  |  BBF\$1Unicode\$1CP1258\$1CS\$1AS BBF\$1Unicode\$1Pref\$1CP1258\$1CS\$1AS Vietnamese\$1CS\$1AS  |  BBF\$1Unicode\$1CP1258\$1CI\$1AI BBF\$1Unicode\$1CP1258\$1CS\$1AI Vietnamese\$1CI\$1AS Vietnamese\$1CI\$1AI  | 

## Default Collation behavior in Babelfish
<a name="babelfish-collations-default"></a>

Earlier, the default collation of the collatable datatypes was `pg_catalog.default`. The datatypes and the objects that depends on these datatypes follows cases-sensitive collation. This condition potentially impacts the T-SQL objects of the data set with case-insensitive collation. Starting with Babelfish 2.3.0, the default collation for the collatable data types (except TEXT and NTEXT) is the same as the collation in the `babelfishpg_tsql.server_collation_name` parameter. When you upgrade to Babelfish 2.3.0, the default collation is picked automatically at the time of DB cluster creation, which doesn't create any visible impact. 

# Managing collations
<a name="collation.managing"></a>

The ICU library provides collation version tracking to ensure that indexes that depend on collations can be reindexed when a new version of ICU becomes available. To see if your current database has collations that need refreshing, you can use the following query after connecting using `psql` or or `pgAdmin`:

```
SELECT pg_describe_object(refclassid, refobjid,
    refobjsubid) AS "Collation", 
    pg_describe_object(classid, objid, objsubid) AS "Object" 
    FROM pg_depend d JOIN pg_collation c ON refclassid = 'pg_collation'::regclass
    AND refobjid = c.oid WHERE c.collversion <> pg_collation_actual_version(c.oid) 
    ORDER BY 1, 2;
```

This query returns output such as the following:

```
 Collation | Object
-----------+--------
(0 rows)
```

In this example, no collations need to be updated.

To get a listing of the predefined collations in your Babelfish database, you can use `psql` or `pgAdmin` with the following query:

```
SELECT * FROM pg_collation;
```

Predefined collations are stored in the `sys.fn_helpcollations` table. You can use the following command to display information about a collation (such as its lcid, style, and collate flags). To get a listing of all collations by using `sqlcmd`, connect to the T-SQL port (1433, by default) and run the following query: 

```
1> :setvar SQLCMDMAXVARTYPEWIDTH 40
2> :setvar SQLCMDMAXFIXEDTYPEWIDTH 40
3> SELECT * FROM fn_helpcollations()
4> GO
name                                     description
---------------------------------------- ----------------------------------------
arabic_cs_as                             Arabic, case-sensitive, accent-sensitive
arabic_ci_ai                             Arabic, case-insensitive, accent-insensi
arabic_ci_as                             Arabic, case-insensitive, accent-sensiti
bbf_unicode_bin2                         Unicode-General, case-sensitive, accent-
bbf_unicode_cp1250_ci_ai                 Default locale, code page 1250, case-ins
bbf_unicode_cp1250_ci_as                 Default locale, code page 1250, case-ins
bbf_unicode_cp1250_cs_ai                 Default locale, code page 1250, case-sen
bbf_unicode_cp1250_cs_as                 Default locale, code page 1250, case-sen
bbf_unicode_pref_cp1250_cs_as            Default locale, code page 1250, case-sen
bbf_unicode_cp1251_ci_ai                 Default locale, code page 1251, case-ins
bbf_unicode_cp1251_ci_as                 Default locale, code page 1251, case-ins
bbf_unicode_cp1254_ci_ai                 Default locale, code page 1254, case-ins
...
(124 rows affected)
```

Lines 1 and 2 shown in the example narrow the output for documentation readability purposes only. 

```
1> SELECT SERVERPROPERTY('COLLATION')
2> GO
serverproperty
---------------------------------------------------------------------------
sql_latin1_general_cp1_ci_as

(1 rows affected)
1>
```

# Collation limitations and behavior differences
<a name="collation.limitations"></a>

Babelfish uses the ICU library for collation support. PostgreSQL is built with a specific version of ICU and can match at most one version of a collation. Variations across versions are unavoidable, as are minor variations across time as languages evolve. In the following list you can find known limitations and behavior variations of Babelfish collations:
+ **Indexes and collation type dependency** – An index on a user-defined type that depends on the International Components for Unicode (ICU) collation library (the library used by Babelfish) isn't invalidated when the library version changes.
+ **COLLATIONPROPERTY function** – Collation properties are implemented only for the supported Babelfish BBF collations. For more information, see the [Babelfish supported collations table](babelfish-collations.md#bfish-collations-table).
+ **Unicode sorting rule differences** – SQL collations for SQL Server sort Unicode-encoded data (`nchar` and `nvarchar`) differently than data that's not Unicode-encoded (`char` and `varchar`). Babelfish databases are always UTF-8 encoded and always apply Unicode sorting rules consistently, regardless of data type, so the sort order for `char` or `varchar` is the same as it is for `nchar` or `nvarchar`.
+ **Secondary-equal collations and sorting behavior** – The default ICU Unicode secondary-equal (`CI_AS`) collation sorts punctuation marks and other nonalphanumeric characters before numeric characters, and numeric characters before alphabetic characters. However, the order of punctuation and other special characters is different. 
+ **Tertiary collations, workaround for ORDER BY** – SQL collations, such as `SQL_Latin1_General_Pref_CP1_CI_AS`, support the `TERTIARY_WEIGHTS` function and the ability to sort strings that compare equally in a `CI_AS` collation to be sorted uppercase first: `ABC`, `ABc`, `AbC`, `Abc`, `aBC`, `aBc`, `abC`, and finally `abc`. Thus, the `DENSE_RANK OVER (ORDER BY column)` analytic function assesses these strings as having the same rank but orders them uppercase first within a partition.

  You can get a similar result with Babelfish by adding a `COLLATE` clause to the `ORDER BY` clause that specifies a tertiary `CS_AS` collation that specifies `@colCaseFirst=upper`. However, the `colCaseFirst` modifier applies only to strings that are tertiary-equal (rather than secondary-equal such as with `CI_AS` collation). Thus, you can't emulate tertiary SQL collations using a single ICU collation. 

  As a workaround, we recommend that you modify applications that use the `SQL_Latin1_General_Pref_CP1_CI_AS` collation to use the `BBF_SQL_Latin1_General_CP1_CI_AS` collation first. Then add `COLLATE BBF_SQL_Latin1_General_Pref_CP1_CS_AS` to any `ORDER BY` clause for this column.
+ **Character expansion** – A character expansion treats a single character as equal to a sequence of characters at the primary level. SQL Server's default `CI_AS` collation supports character expansion. ICU collations support character expansion for accent-insensitive collations only.

  When character expansion is required, then use a `AI` collation for comparisons. However, such collations aren't currently supported by the LIKE operator.
+ **char and varchar encoding** – When SQL collations are used for `char` or `varchar` data types, the sort order for characters preceding ASCII 127 is determined by the specific code page for that SQL collation. For SQL collations, strings declared as `char` or `varchar` might sort differently than strings declared as `nchar` or `nvarchar`.

  PostgreSQL encodes all strings with the database encoding, so all characters are converted to UTF-8 and sorted using Unicode rules.

  Because SQL collations sort nchar and nvarchar data types using Unicode rules, Babelfish encodes all strings on the server using UTF-8. Babelfish sorts nchar and nvarchar strings the same way it sorts char and varchar strings, using Unicode rules.
+ **Supplementary character** – The SQL Server functions `NCHAR`, `UNICODE`, and `LEN` support characters for code-points outside the Unicode Basic Multilingual Plane (BMP). In contrast, non-SC collations use surrogate pair characters to handle supplementary characters. For Unicode data types, SQL Server can represent up to 65,535 characters using UCS-2, or the full Unicode range (1,114,114 characters) if supplementary characters are used. 
+ **Kana-sensitive (KS) collations** – A Kana-sensitive (KS) collation is one that treats `Hiragana` and `Katakana` Japanese Kana characters differently. ICU supports the Japanese collation standard `JIS X 4061`. The now deprecated `colhiraganaQ [on | off]` locale modifier might provide the same functionality as KS collations. However, KS collations of the same name as SQL Server aren't currently supported by Babelfish.
+ **Width-sensitive (WS) collations** – When a single-byte character (half-width) and the same character represented as a double-byte character (full-width) are treated differently, the collation is called *width-sensitive (WS)*. WS collations with the same name as SQL Server aren't currently supported by Babelfish.
+ **Variation-selector sensitive (VSS) collations** – Variation-selector sensitive (VSS) collations distinguish between ideographic variation selectors in Japanese collations `Japanese_Bushu_Kakusu_140` and `Japanese_XJIS_140`. A variation sequence is made up of a base character plus an additional variation selector. If you don't select the `_VSS` option, the variation selector isn't considered in the comparison.

  VSS collations aren't currently supported by Babelfish.
+ **BIN and BIN2 collations** – A BIN2 collation sorts characters according to code point order. The byte-by-byte binary order of UTF-8 preserves Unicode code point order, so this is also likely to be the best-performing collation. If Unicode code point order works for an application, consider using a BIN2 collation. However, using a BIN2 collation can result in data being displayed on the client in an order that is culturally unexpected. New mappings to lowercase characters are added to Unicode as time progresses, so the `LOWER` function might perform differently on different versions of ICU. This is a special case of the more general collation versioning problem rather than as something specific to the BIN2 collation. 

  Babelfish provides the `BBF_Latin1_General_BIN2` collation with the Babelfish distribution to collate in Unicode code point order. In a BIN collation only the first character is sorted as a wchar. Remaining characters are sorted byte-by-byte, effectively in code point order according to its encoding. This approach doesn't follow Unicode collation rules and isn't supported by Babelfish.
+ **Non-deterministic collations and CHARINDEX limitation** – For Babelfish releases older than version 2.1.0, you can't use CHARINDEX with non-deterministic collations. By default, Babelfish uses a case-insensitive (non-deterministic) collation. Using CHARINDEX for older versions of Babelfish raises the following runtime error:

  ```
  nondeterministic collations are not supported for substring searches
  ```
**Note**  
This limitation and workaround apply to Babelfish version 1.x only (Aurora PostgreSQL 13.x versions). Babelfish 2.1.0 and higher releases don't have this issue.

  You can work around this issue in one of the following ways:
  + Explicitly convert the expression to a case-sensitive collation and case-fold both arguments by applying LOWER or UPPER. For example, `SELECT charindex('x', a) FROM t1` would become the following:

    ```
    SELECT charindex(LOWER('x'), LOWER(a COLLATE sql_latin1_general_cp1_cs_as)) FROM t1
    ```
  + Create a SQL function f\$1charindex, and replace CHARINDEX calls with calls to the following function:

    ```
    CREATE function f_charindex(@s1 varchar(max), @s2 varchar(max)) RETURNS int
    AS
    BEGIN
    declare @i int = 1
    WHILE len(@s2) >= len(@s1)
    BEGIN
      if LOWER(@s1) = LOWER(substring(@s2,1,len(@s1))) return @i
      set @i += 1
      set @s2 = substring(@s2,2,999999999)
    END
    return 0
    END
    go
    ```

# Managing Babelfish error handling with escape hatches
<a name="babelfish-strict"></a>

Babelfish mimics SQL behavior for control flow and transaction state whenever possible. When Babelfish encounters an error, it returns an error code similar to the SQL Server error code. If Babelfish can't map the error to a SQL Server code, it returns a fixed error code (`33557097`) and takes specific actions based on the type of error, as follows:
+ For compile time errors, Babelfish rolls back the transaction.
+ For runtime errors, Babelfish ends the batch and rolls back the transaction.
+ For protocol error between client and server, the transaction isn't rolled back.

If an error code can't be mapped to an equivalent code and the code for a similar error is available, the error code is mapped to the alternative code. For example, the behaviors that cause SQL Server codes `8143` and `8144` are both mapped to `8143`.

Errors that can't be mapped don't respect a `TRY... CATCH` construct.

You can use `@@ERROR` to return a SQL Server error code, or the `@@PGERROR` function to return a PostgreSQL error code. You can also use the `fn_mapped_system_error_list` function to return a list of mapped error codes. For information about PostgreSQL error codes, see [the PostgreSQL website](https://www.postgresql.org/docs/current/errcodes-appendix.html).

## Modifying Babelfish escape hatch settings
<a name="babelfish-escape_hatches"></a>

To handle statements that might fail, Babelfish defines certain options called escape hatches. An *escape hatch* is an option that specifies Babelfish behavior when it encounters an unsupported feature or syntax.

You can use the `sp_babelfish_configure` stored procedure to control the settings of an escape hatch. Use the script to set the escape hatch to `ignore` or `strict`. If it's set to `strict`, Babelfish returns an error that you need to correct before continuing.

To apply changes to the current session and on the cluster level, include the `server` keyword.

The usage is as follows:
+ To list all escape hatches and their status, plus usage information, run `sp_babelfish_configure`.
+ To list the named escape hatches and their values, for the current session or cluster-wide, run the command `sp_babelfish_configure 'hatch_name'` where `hatch_name` is the identifier of one or more escape hatches. *hatch\$1name* can use SQL wildcards, such as '%'.
+ To set one or more escape hatches to the value specified, run `sp_babelfish_configure ['hatch_name' [, 'strict'|'ignore' [, 'server']]`. To make the settings permanent on a cluster-wide level, include the `server` keyword, such as shown in the following:

  ```
  EXECUTE sp_babelfish_configure 'escape_hatch_unique_constraint', 'ignore', 'server'
  ```

  To set them for the current session only, don't use `server`.
+ To reset all escape hatches to their default values, run `sp_babelfish_configure 'default'` (Babelfish 1.2.0 and higher). 

The string identifying the hatch (or hatches) can include SQL wildcards. For example, the following sets all syntax escape hatches to `ignore` for the Aurora PostgreSQL cluster.

```
EXECUTE sp_babelfish_configure '%', 'ignore', 'server'
```

In the following table you can find descriptions and default values for the Babelfish predefined escape hatches.


| Escape hatch | Description | Default | 
| --- | --- | --- | 
| escape\$1hatch\$1checkpoint |  Allows the use of CHECKPOINT statement in the procedural code, but the CHECKPOINT statement is currently not implemented.  |  ignore  | 
| escape\$1hatch\$1constraint\$1name\$1for\$1default |  Controls Babelfish behavior related to default constraint names.  |  ignore  | 
| escape\$1hatch\$1database\$1misc\$1options |  Controls Babelfish behavior related to the following options on CREATE DATABASE: CONTAINMENT, DB\$1CHAINING, TRUSTWORTHY, PERSISTENT\$1LOG\$1BUFFER.  |  ignore  | 
| escape\$1hatch\$1for\$1replication |  Controls Babelfish behavior related to the [NOT] FOR REPLICATION clause when creating or altering a table.  |  strict  | 
| escape\$1hatch\$1fulltext |  Controls Babelfish behavior related to FULLTEXT features, such a DEFAULT\$1FULLTEXT\$1LANGUAGE in CREATE/ALTER DATABASE, CREATE FULLTEXT INDEX, or sp\$1fulltext\$1database.  |  ignore  | 
| escape\$1hatch\$1ignore\$1dup\$1key |  Controls Babelfish behavior related to CREATE/ALTER TABLE and CREATE INDEX. When IGNORE\$1DUP\$1KEY=ON, raises an error when set to `strict` (the default) or ignores the error when set to `ignore` (Babelfish version 1.2.0 and higher).   |  strict  | 
| escape\$1hatch\$1index\$1clustering |  Controls Babelfish behavior related to the CLUSTERED or NONCLUSTERED keywords for indexes and PRIMARY KEY or UNIQUE constraints. When CLUSTERED is ignored, the index or constraint is still created as if NONCLUSTERED was specified.  |  ignore  | 
| escape\$1hatch\$1index\$1columnstore |  Controls Babelfish behavior related to the COLUMNSTORE clause. If you specify `ignore`, Babelfish creates a regular B-tree index.  |  strict  | 
| escape\$1hatch\$1join\$1hints |  Controls the behavior of keywords in a JOIN operator: LOOP, HASH, MERGE, REMOTE, REDUCE, REDISTRIBUTE, REPLICATE.  |  ignore  | 
| escape\$1hatch\$1language\$1non\$1english |  Controls Babelfish behavior related to languages other than English for onscreen messages. Babelfish currently supports only `us_english` for onscreen messages. SET LANGUAGE might use a variable containing the language name, so the actual language being set can only be detected at run time.  |  strict  | 
| escape\$1hatch\$1login\$1hashed\$1password |  When ignored, suppresses the error for the `HASHED` keyword for `CREATE LOGIN` and `ALTER LOGIN`.  |  strict  | 
| escape\$1hatch\$1login\$1misc\$1options |  When ignored, suppresses the error for other keywords besides `HASHED`, `MUST_CHANGE`, `OLD_PASSWORD`, and `UNLOCK` for `CREATE LOGIN` and `ALTER LOGIN`.  |  strict  | 
| escape\$1hatch\$1login\$1old\$1password |  When ignored, suppresses the error for the `OLD_PASSWORD` keyword for `CREATE LOGIN` and `ALTER LOGIN`.  |  strict  | 
| escape\$1hatch\$1login\$1password\$1must\$1change |  When ignored, suppresses the error for the `MUST_CHANGE` keyword for `CREATE LOGIN` and `ALTER LOGIN`.  |  strict  | 
| escape\$1hatch\$1login\$1password\$1unlock |  When ignored, suppresses the error for the `UNLOCK` keyword for `CREATE LOGIN` and `ALTER LOGIN`.  |  strict  | 
| escape\$1hatch\$1nocheck\$1add\$1constraint |  Controls Babelfish behavior related to the WITH CHECK or NOCHECK clause for constraints.  |  strict  | 
| escape\$1hatch\$1nocheck\$1existing\$1constraint |  Controls Babelfish behavior related to FOREIGN KEY or CHECK constraints.   |  strict  | 
| escape\$1hatch\$1query\$1hints |  Controls Babelfish behavior related to query hints. When this option is set to ignore, the server ignores hints that use the OPTION (...) clause to specify query processing aspects. Examples include SELECT FROM ... OPTION(MERGE JOIN HASH, MAXRECURSION 10)).  |  ignore  | 
|  escape\$1hatch\$1rowversion | Controls the behavior of the ROWVERSION and TIMESTAMP datatypes. For usage information, see [Using Babelfish features with limited implementation](babelfish-compatibility.tsql.limited-implementation.md). | strict | 
| escape\$1hatch\$1schemabinding\$1function |  Controls Babelfish behavior related to the WITH SCHEMABINDING clause. By default, the WITH SCHEMABINDING clause is ignored when specified with the CREATE or ALTER FUNCTION command.   |  ignore  | 
| escape\$1hatch\$1schemabinding\$1procedure |  Controls Babelfish behavior related to the WITH SCHEMABINDING clause. By default, the WITH SCHEMABINDING clause is ignored when specified with the CREATE or ALTER PROCEDURE command.   |  ignore  | 
| escape\$1hatch\$1rowguidcol\$1column |  Controls Babelfish behavior related to the ROWGUIDCOL clause when creating or altering a table.  |  strict  | 
| escape\$1hatch\$1schemabinding\$1trigger |  Controls Babelfish behavior related to the WITH SCHEMABINDING clause. By default, the WITH SCHEMABINDING clause is ignored when specified with the CREATE or ALTER TRIGGER command.  |  ignore  | 
| escape\$1hatch\$1schemabinding\$1view |  Controls Babelfish behavior related to the WITH SCHEMABINDING clause. By default, the WITH SCHEMABINDING clause is ignored when specified with the CREATE or ALTER VIEW command.  |  ignore  | 
| escape\$1hatch\$1session\$1settings |  Controls Babelfish behavior toward unsupported session-level SET statements.  |  ignore  | 
| escape\$1hatch\$1showplan\$1all |  Controls Babelfish behavior related to SET SHOWPLAN\$1ALL and SET STATISTICS PROFILE. When set to ignore, they behave like SET BABELFISH\$1SHOWPLAN\$1ALL and SET BABELFISH\$1STATISTICS PROFILE; when set to strict, they are silently ignored.  |  strict  | 
| escape\$1hatch\$1storage\$1on\$1partition |  Controls Babelfish behavior related to the `ON partition_scheme column `clause when defining partitioning. Babelfish currently doesn't implement partitioning.  |  strict  | 
| escape\$1hatch\$1storage\$1options |  Escape hatch on any storage option used in CREATE, ALTER DATABASE, TABLE, INDEX. This includes clauses (LOG) ON, TEXTIMAGE\$1ON, FILESTREAM\$1ON that define storage locations (partitions, file groups) for tables, indexes, and constraints, and also for a database. This escape hatch setting applies to all of these clauses (including ON [PRIMARY] and ON "DEFAULT"). The exception is when a partition is specified for a table or index with ON partition\$1scheme (column).  |  ignore  | 
| escape\$1hatch\$1table\$1hints |  Controls the behavior of table hints specified using the WITH (...) clause.   |  ignore  | 
| escape\$1hatch\$1unique\$1constraint |  When set to strict, an obscure semantic difference between SQL Server and PostgreSQL in handling NULL values on indexed columns can raise errors. The semantic difference only emerges in unrealistic use cases, so you can set this escape hatch to 'ignore' to avoid seeing the error.  Deprecated from the following versions: 3.6.0 and higher versions, 4.2.0 and higher versions  |  strict  | 

# Creating a Babelfish for Aurora PostgreSQL DB cluster
<a name="babelfish-create"></a>

Babelfish for Aurora PostgreSQL is supported on Aurora PostgreSQL version 13.4 and higher.

You can use the AWS Management Console or the AWS CLI to create an Aurora PostgreSQL cluster with Babelfish.

**Note**  
In an Aurora PostgreSQL cluster, the `babelfish_db` database name is reserved for Babelfish. Creating your own "babelfish\$1db" database on a Babelfish for Aurora PostgreSQL prevents Aurora from successfully provisioning Babelfish. 

## Console
<a name="babelfish-create-cluster.console"></a>

**To create a cluster with Babelfish running with the AWS Management Console**

1. Open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/), and choose **Create database**.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_1.png)

1. For **Choose a database creation method**, do one of the following:
   + To specify detailed engine options, choose **Standard create**.
   + To use preconfigured options that support best practices for an Aurora cluster, choose **Easy create**.

1. For **Engine type**, choose **Aurora (PostgreSQL Compatible)**.

1. For **Available versions**, choose an Aurora PostgreSQL version. To get the latest Babelfish features, choose the highest Aurora PostgreSQL major version. Babelfish is supported on Aurora PostgreSQL 13.4 and higher versions.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_3.png)

1. For **Templates**, choose the template that matches your use case.

1. For **DB cluster identifier**, enter a name that you can easily find later in the DB cluster list.

1. For **Master username**, enter an administrator user name. The default value for Aurora PostgreSQL is `postgres`. You can accept the default or choose a different name. For example, to follow the naming convention used on your SQL Server databases, you can enter `sa` (system administrator) for the Master username.

   If you don't create a user named `sa` at this time, you can create one later with your choice of client. After creating the user, use the `ALTER SERVER ROLE` command to add it to the `sysadmin` group (role) for the cluster. 
**Warning**  
Master username must always use lowercase characters failing which the DB cluster can't connect to Babelfish via the TDS port.

1. For **Master password**, create a strong password and confirm the password. 

1. For the options that follow, until the **Babelfish settings** section, specify your DB cluster settings. For information about each setting, see [Settings for Aurora DB clusters](Aurora.CreateInstance.md#Aurora.CreateInstance.Settings).

1. To make Babelfish functionality available, select the **Turn on Babelfish** box.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_5.png)

1. For **DB cluster parameter group**, do one of the following:
   + Choose **Create new** to create a new parameter group with Babelfish turned on.
   + Choose **Choose existing** to use an existing parameter group. If you use an existing group, make sure to modify the group before creating the cluster and add values for Babelfish parameters. For information about Babelfish parameters, see [DB cluster parameter group settings for Babelfish](babelfish-configuration.md).

     If you use an existing group, provide the group name in the box that follows.

1. For **Database migration mode**, choose one of the following:
   + **Single database** to migrate a single SQL Server database.

     In some cases, you might migrate multiple user databases together, with your end goal a complete migration to native Aurora PostgreSQL without Babelfish. If the final applications require consolidated schemas (a single `dbo` schema), make sure to first consolidate your SQL Server databases into a single SQL server database. Then migrate to Babelfish using **Single database** mode.
   + **Multiple databases** to migrate multiple SQL Server databases (originating from a single SQL Server installation). Multiple database mode doesn't consolidate multiple databases that don't originate from a single SQL Server installation. For information about migrating multiple databases, see [Using Babelfish with a single database or multiple databases](babelfish-architecture.md#babelfish-single_vs_multi_db). 
**Note**  
From Aurora PostgreSQL 16 version, **Multiple databases** is chosen by default as the Database migration mode.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_6.png)

1. For **Default collation locale**, enter your server locale. The default is `en-US`. For detailed information about collations, see [Understanding Collations in Babelfish for Aurora PostgreSQL](babelfish-collations.md).

1. For **Collation name** field, enter your default collation. The default is `sql_latin1_general_cp1_ci_as`. For detailed information, see [Understanding Collations in Babelfish for Aurora PostgreSQL](babelfish-collations.md).

1. For **Babelfish TDS port**, enter the default port `1433`. Currently, Babelfish only supports port `1433` for your DB cluster.

1. For **DB parameter group**, choose a parameter group or have Aurora create a new group for you with default settings.

1. For **Failover priority**, choose a failover priority for the instance. If you don't choose a value, the default is `tier-1`. This priority determines the order in which replicas are promoted when recovering from a primary instance failure. For more information, see [Fault tolerance for an Aurora DB cluster](Concepts.AuroraHighAvailability.md#Aurora.Managing.FaultTolerance).

1. For **Backup retention period**, choose the length of time (1–35 days) that Aurora retains backup copies of the database. You can use backup copies for point-in-time restores (PITR) of your database down to the second. The default retention period is seven days.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_7.png)

1. Choose **Copy tags to snapshots** to copy any DB instance tags to a DB snapshot when you create a snapshot.
**Note**  
When restoring a DB cluster from a snapshot, it does not restore as a Babelfish for Aurora PostgreSQL DB cluster. You need to turn on the parameters that control Babelfish preferences in the DB cluster parameter group to enable Babelfish again. For more information on the Babelfish parameters, see [DB cluster parameter group settings for Babelfish](babelfish-configuration.md). 

1. Choose **Enable encryption** to turn on encryption at rest (Aurora storage encryption) for this DB cluster.

1. Choose **Enable Performance Insights** to turn on Amazon RDS Performance Insights.

1. Choose **Enable Enhanced monitoring** to start gathering metrics in real time for the operating system that your DB cluster runs on.

1. Choose **PostgreSQL log** to publish the log files to Amazon CloudWatch Logs.

1. Choose **Enable auto minor version upgrade** to automatically update your Aurora DB cluster when a minor version upgrade is available.

1. For **Maintenance window**, do the following:
   + To choose a time for Amazon RDS to make modifications or perform maintenance, choose **Select window**.
   + To perform Amazon RDS maintenance at an unscheduled time, choose **No preference**. 

1. Select the **Enable deletion protection** box to protect your database from being deleted by accident. 

   If you turn on this feature, you can't directly delete the database. Instead, you need to modify the database cluster and turn off this feature before deleting the database.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_9.png)

1. Choose **Create database**.

You can find your new database set up for Babelfish in the **Databases** listing. The **Status** column displays **Available** when the deployment is complete.

![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/bbf_create_cluster_10.png)


## AWS CLI
<a name="babelfish-create-cluster.CLI"></a>

When you create an Babelfish for Aurora PostgreSQL; using the AWS CLI, you need to pass the command the name of the DB cluster parameter group to use for the cluster. For more information, see [DB cluster prerequisites](Aurora.CreateInstance.md#Aurora.CreateInstance.Prerequisites).

Before you can use the AWS CLI to create an Aurora PostgreSQL cluster with Babelfish, do the following:
+ Choose your endpoint URL from the list of services at [Amazon Aurora endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aurora.html). 
+ Create a parameter group for the cluster. For more information about parameter groups, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).
+ Modify the parameter group, adding the parameter that turns on Babelfish.<a name="babelfish.CLI.Creating.DBCluster"></a>

**To create an Aurora PostgreSQL DB cluster with Babelfish using the AWS CLI**

The examples that follow use the default Master username, `postgres`. Replace as needed with the username that you created for your DB cluster, such as `sa` or whatever username you chose if you didn't accept the default. 

1. Create a parameter group.

   For Linux, macOS, or Unix:

   ```
   aws rds create-db-cluster-parameter-group \
   --endpoint-url endpoint-url \
   --db-cluster-parameter-group-name parameter-group \
   --db-parameter-group-family aurora-postgresql14 \
   --description "description"
   ```

   For Windows:

   ```
   aws rds create-db-cluster-parameter-group ^
   --endpoint-url endpoint-URL ^
   --db-cluster-parameter-group-name parameter-group ^
   --db-parameter-group-family aurora-postgresql14 ^
   --description "description"
   ```

1. Modify your parameter group to turn on Babelfish.

   For Linux, macOS, or Unix:

   ```
   aws rds modify-db-cluster-parameter-group \
   --endpoint-url endpoint-url \
   --db-cluster-parameter-group-name parameter-group \
   --parameters "ParameterName=rds.babelfish_status,ParameterValue=on,ApplyMethod=pending-reboot"
   ```

   For Windows:

   ```
   aws rds modify-db-cluster-parameter-group ^
   --endpoint-url endpoint-url ^
   --db-cluster-parameter-group-name paramater-group ^
   --parameters "ParameterName=rds.babelfish_status,ParameterValue=on,ApplyMethod=pending-reboot"
   ```

1. Identify your DB subnet group and the virtual private cloud (VPC) security group ID for your new DB cluster, and then call the [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) command.

   For Linux, macOS, or Unix:

   ```
   aws rds create-db-cluster \
   --db-cluster-identifier  cluster-name\
   --master-username postgres \
   --manage-master-user-password \
   --engine aurora-postgresql \
   --engine-version 14.3            \
   --vpc-security-group-ids security-group \
   --db-subnet-group-name subnet-group-name \
   --db-cluster-parameter-group-name parameter-group
   ```

   For Windows:

   ```
   aws rds create-db-cluster ^
   --db-cluster-identifier cluster-name ^
   --master-username postgres ^
   --manage-master-user-password ^
   --engine aurora-postgresql ^
   --engine-version 14.3 ^
   --vpc-security-group-ids security-group ^
   --db-subnet-group-name subnet-group ^
   --db-cluster-parameter-group-name parameter-group
   ```

   This example specifies the `--manage-master-user-password` option to generate the master user password and manage it in Secrets Manager. For more information, see [Password management with Amazon Aurora and AWS Secrets Manager](rds-secrets-manager.md). Alternatively, you can use the `--master-password` option to specify and manage the password yourself. 

1. Explicitly create the primary instance for your DB cluster. Use the name of the cluster that you created in step 3 for the `--db-cluster-identifier` argument when you call the [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) command, as shown following. 

   For Linux, macOS, or Unix:

   ```
   aws rds create-db-instance \
   --db-instance-identifier instance-name \
   --db-instance-class db.r6g \
   --db-subnet-group-name subnet-group \
   --db-cluster-identifier cluster-name \
   --engine aurora-postgresql
   ```

   For Windows:

   ```
   aws rds create-db-instance ^
   --db-instance-identifier instance-name ^
   --db-instance-class db.r6g ^
   --db-subnet-group-name subnet-group ^
   --db-cluster-identifier cluster-name ^
   --engine aurora-postgresql
   ```

# Migrating a SQL Server database to Babelfish for Aurora PostgreSQL
<a name="babelfish-migration"></a>

You can use Babelfish for Aurora PostgreSQL to migrate an SQL Server database to an Amazon Aurora PostgreSQL DB cluster. Before migrating, review [Using Babelfish with a single database or multiple databases](babelfish-architecture.md#babelfish-single_vs_multi_db). 

**Topics**
+ [Overview of the migration process](#babelfish-migration.process-summary)
+ [Evaluating and handling differences between SQL Server and Babelfish](#babelfish-migration.assessing-the-source)
+ [Import/export tools for migrating from SQL Server to Babelfish](#babelfish-migration.import-export-tools)

## Overview of the migration process
<a name="babelfish-migration.process-summary"></a>

The following summary lists the steps required to successfully migrate your SQL Server application and make it work with Babelfish. For information about the tools you can use for the export and import processes and for more detail, see [Import/export tools for migrating from SQL Server to Babelfish](#babelfish-migration.import-export-tools). To load the data, we recommend using AWS DMS with an Aurora PostgreSQL DB cluster as the target endpoint.

1. Create a new Aurora PostgreSQL DB cluster with Babelfish turned on. To learn how, see [Creating a Babelfish for Aurora PostgreSQL DB cluster](babelfish-create.md).

   To import the various SQL artifacts exported from your SQL Server database, connect to the Babelfish cluster using a SQL Server tool such as [sqlcmd](https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15). For more information, see [Using a SQL Server client to connect to your DB cluster](babelfish-connect-sqlserver.md).

1. On the SQL Server database that you want to migrate, export the data definition language (DDL). The DDL is SQL code that describes database objects that contain user data (such as tables, indexes, and views) and user-written database code (such as stored procedures, user-defined functions, and triggers).

   For more information, see [Using SQL Server Management Studio (SSMS) to migrate to Babelfish](#babelfish-migration.import-export-tools.ssms).

1. Run an assessment tool to evaluate the scope of any changes that you might need to make so that Babelfish can effectively support the application running on SQL Server. For more information, see [Evaluating and handling differences between SQL Server and Babelfish](#babelfish-migration.assessing-the-source).

1. Review the AWS DMS target endpoint limitations and update the DDL script as necessary. For more information, see Limitations to using a PostgreSQL target endpoint with Babelfish tables in [Using Babelfish for Aurora PostgreSQL as a target](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.Babelfish). 

1. On your new Babelfish DB cluster, run the DDL within your specified T-SQL database to create only the schemas, user-defined data types, and tables with their primary key constraints.

1. Use AWS DMS to migrate your data from SQL Server to Babelfish tables. For continuous replication using SQL Server Change Data Capture or SQL Replication, use Aurora PostgreSQL instead of Babelfish as the endpoint. To do so, see the [ Using Babelfish for Aurora PostgreSQL as a target for AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.Babelfish).

1. When the data load completes, create all the remaining T-SQL objects that support the application on your Babelfish cluster.

1.  Reconfigure your client application to connect to the Babelfish endpoint instead of your SQL Server database. For more information, see [Connecting to a Babelfish DB cluster](babelfish-connect.md).

1. Modify your application as needed and retest. For more information, see [Differences between Babelfish for Aurora PostgreSQL and SQL Server](babelfish-compatibility.md). 

You still need to assess your client-side SQL queries. The schemas generated from your SQL Server instance convert only the server-side SQL code. We recommend that you take the following steps:
+ Capture client-side queries by using the SQL Server Profiler with the TSQL\$1Replay predefined template. This template captures T-SQL statement information that you can then replay for iterative tuning and testing. You can start the profiler within SQL Server Management Studio from the **Tools** menu. Choose **SQL Server Profiler** to open the profiler and choose the TSQL\$1Replay template.

  To use for your Babelfish migration, start a trace and then run your application using your functional tests. The profiler captures the T-SQL statements. When you finish testing, stop the trace. Save the result to an XML file with your client-side queries (File > Save as > Trace XML File for Replay).

  For more information, see [ SQL Server Profiler](https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-ver16) in the Microsoft documentation. For more information about the TSQL\$1Replay template, see [SQL Server Profiler Templates](https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler-templates?view=sql-server-ver16).
+ For applications with complex client-side SQL queries, we recommend that you use Babelfish Compass to analyze these queries for Babelfish compatibility. If the analysis indicates that the client-side SQL statements contain unsupported SQL features, review the SQL aspects in the client application and modify as needed.
+ You can also capture the SQL queries as extended events (.xel format). To do so, use the SSMS XEvent Profiler. After generating the .xel file, extract the SQL statements into .xml files that Compass can then process. For more information, see [ Use the SSMS XEvent Profler](https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/use-the-ssms-xe-profiler?view=sql-server-ver16) in the Microsoft documentation.

When you're satisfied with all testing, analysis, and any modifications needed for your migrated application, you can start using your Babelfish database for production. To do so, stop the original database and redirect live client applications to use the Babelfish TDS port.

**Note**  
AWS DMS now supports replicating data from Babelfish. For more information, see [AWS DMS now supports Babelfish for Aurora PostgreSQL as a source](https://aws.amazon.com/about-aws/whats-new/2024/06/aws-dms-babelfish-aurora-postgresql-source/).

## Evaluating and handling differences between SQL Server and Babelfish
<a name="babelfish-migration.assessing-the-source"></a>

 For best results, we recommend that you evaluate the generated DDL/DML and the client query code before actually migrating your SQL Server database application to Babelfish. Depending on the version of Babelfish and the specific features of SQL Server that your application implements, you might need to refactor your application or use alternatives for functionality that aren't fully supported yet in Babelfish.
+ To assess your SQL Server application code, use Babelfish Compass on the generated DDL to determine how much T-SQL code is supported by Babelfish. Identify T-SQL code that might need modifications before running on Babelfish. For more information about this tool, see [ Babelfish Compass tool](https://github.com/babelfish-for-postgresql/babelfish_compass/releases/latest) on GitHub.
**Note**  
Babelfish Compass is an open-source tool. Report any issues with Babelfish Compass through GitHub instead of through AWS Support.

You can use Generate Script Wizard with SQL Server Management Studio (SSMS) to generate the SQL file that is assessed by Babelfish Compass or AWS Schema Conversion Tool CLI. We recommend the following steps to streamline the assessment.

1. On the **Choose Objects** page, choose **Script entire database and all database objects**.   
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-wizard-choose-objects.png)

1. For the **Set Scripting Options**, choose **Save as script file** as a **Single script file**.   
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-wizard-set-scripting-options.png)

1. Choose **Advanced** to change the default scripting options to identify features that normally are set to false for a full assessment:
   + Script Change Tracking to True
   + Script Full-Text Indexes to True
   + Script Triggers to True
   + Script Logins to True
   + Script Owner to True
   + Script Object-Level Permissions to True
   + Script Collations to True  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-advanced-scripting-options.png)

1. Perform the remaining steps in the wizard to generate the file.

## Import/export tools for migrating from SQL Server to Babelfish
<a name="babelfish-migration.import-export-tools"></a>

 We recommend that you use AWS DMS as the primary tool for migrating from SQL Server to Babelfish. However, Babelfish supports several other ways to migrate data using SQL Server tools that includes the following.
+ SQL Server Integration Services (SSIS) for all versions of Babelfish. For more information, see [ Migrate from SQL Server to Aurora PostgreSQL using SSIS and Babelfish](https://aws.amazon.com/blogs/database/migrate-from-sql-server-to-aurora-postgresql-using-ssis-and-babelfish/). 
+ Use the SSMS Import/Export Wizard for Babelfish versions 2.1.0 and later. This tool is available through the SSMS, but it's also available as a standalone tool. For more information, see [ Welcome to SQL Server Import and Export Wizard](https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/welcome-to-sql-server-import-and-export-wizard?view=sql-server-ver16) in the Microsoft documentation.
+ The Microsoft bulk data copy program (bcp) utility lets you copy data from a Microsoft SQL Server instance to a data file in the format you specify. For more information, see [bcp Utility](https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver16) in the Microsoft documentation. Babelfish now supports the data migration using the BCP client and the bcp utility now supports `-E` flag (for identity columns) and -b flag (for batching inserts). Certain bcp options aren't supported, including `-C`, `-T`, `-G`, `-K`, `-R`, `-V`, and `-h`.

### Using SQL Server Management Studio (SSMS) to migrate to Babelfish
<a name="babelfish-migration.import-export-tools.ssms"></a>

We recommend generating separate files for each of the specific object types. You can use the Generate Scripts wizard in SSMS for each set of DDL statements first, and then modify the objects as a group to fix any issues found during the assessment.

Perform these steps to migrate the data using AWS DMS or other data migration methods. Run these create script types first for a better and faster approach to load the data on the Babelfish tables in Aurora PostgreSQL. 

1. Run `CREATE SCHEMA` statements. 

1. Run `CREATE TYPE` statements to create user-defined data types. 

1. Run basic `CREATE TABLE` statements with the primary keys or unique constraints.

Perform the data load using the recommended import/export tool. Run the modified scripts for the following steps to add the remaining database objects. You need the create table statements to run these scripts for the constraints, triggers, and indexes. After the scripts generate, delete the create table statements.

1. Run `ALTER TABLE` statements for the check constraints, foreign key constraints, default constraints.

1. Run `CREATE TRIGGER` statements.

1. Run `CREATE INDEX` statements.

1. Run `CREATE VIEW` statements.

1. Run `CREATE STORED PROCEDURE` statements.

**To generate scripts for each object type**

Use the following steps to create the basic create table statements using the Generate Scripts wizard in SSMS. Follow the same steps to generate scripts for the different object types.

1. Connect to your existing SQL Server instance.

1. Open the context (right-click) menu for a database name.

1. Choose **Tasks**, and then choose **Generate Scripts...**.

1. On the **Choose Objects** pane, choose **Select specific database objects**. Choose **Tables**, select all tables. Choose **Next** to continue.   
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-choose-objects-tables.png)

1. On the **Set Scripting Options** page, choose **Advanced** to open the **Options** settings. To generate the basic create table statements, change the following default values: 
   + Script Defaults to False.
   + Script Extended Properties to False. Babelfish does not support extended properties.
   + Script Check Constraints to False. Script Foreign Keys to False.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-advance-scripting-def-values.png)

1. Choose **OK**.

1. On the **Set Scripting Options** page, choose **Save as script file** and then choose the **Single script file** option. Enter your **File name**.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-set-scripting-def-values.png)

1. Choose **Next** to view the **Summary wizard** page.

1. Choose **Next** to start the script generation.

   You can continue to generate scripts for the other object types in the wizard. Instead of choosing **Finish** after the file is saved, choose the **Previous** button three times to go back to the **Choose Objects** page. Then repeat the steps in the wizard to generate scripts for the other object types.

# Database authentication with Babelfish for Aurora PostgreSQL
<a name="babelfish-db-authentication"></a>

Babelfish for Aurora PostgreSQL supports two ways to authenticate database users. Password authentication is available by default for all Babelfish DB clusters. You can also add Kerberos authentication for the same DB cluster.

**Topics**
+ [Password authentication with Babelfish](#babelfish-authentication)
+ [Kerberos authentication with Babelfish](babelfish-active-directory.md)
+ [Setting up Kerberos authentication using Active Directory security groups for Babelfish](babelfish-kerberos-securityad.md)

## Password authentication with Babelfish
<a name="babelfish-authentication"></a>

Babelfish for Aurora PostgreSQL supports password authentication. Passwords are stored in encrypted form on disk. For more information about authentication on an Aurora PostgreSQL cluster, see [Security with Amazon Aurora PostgreSQL](AuroraPostgreSQL.Security.md).

You might be prompted for credentials each time you connect to Babelfish. Any user migrated to or created on Aurora PostgreSQL can use the same credentials on both the SQL Server port and the PostgreSQL port. Babelfish doesn't enforce password policies, but we recommend that you do the following:
+ Require a complex password that's at least eight (8) characters long.
+ Enforce a password expiration policy.

To review a complete list of database users, use the command `SELECT * FROM pg_user;`.

# Kerberos authentication with Babelfish
<a name="babelfish-active-directory"></a>

Babelfish for Aurora PostgreSQL 15.2 version supports authentication to your DB cluster using Kerberos. This method allows you to use Microsoft Windows Authentication to authenticate users when they connect to your Babelfish database. To do so, you must first configure your DB cluster to use AWS Directory Service for Microsoft Active Directory for Kerberos authentication. For more information, see [What is Directory Service?](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html) in the *AWS Directory Service Administration Guide*.

## Setting up Kerberos Authentication
<a name="babelfish-active-directory-setup"></a>

 Babelfish for Aurora PostgreSQL DB cluster can connect using two different ports, but Kerberos authentication setup is a one-time process. Therefore, you must first set up Kerberos authentication for your DB cluster. For more information, see [ Setting up Kerberos authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-setting-up.html). After completing the setup, ensure that you can connect with a PostgreSQL client using Kerberos. For more information, see [Connecting with Kerberos Authentication](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-connecting.html). 

## Login and user provisioning in Babelfish
<a name="babelfish-active-directory-login"></a>

 Windows logins created from the Tabular Data Stream (TDS) port can be used either with the TDS port or the PostgreSQL port. First, the login that can use Kerberos for authentication must be provisioned from the TDS port before it is used by the T-SQL users and applications to connect to a Babelfish database. When creating Windows logins, administrators can provide the login using either the DNS domain name or the NetBIOS domain name. Typically, NetBIOS domain is the subdomain of the DNS domain name. For example, if the DNS domain name is `CORP.EXAMPLE.COM`, then the NetBIOS domain can be `CORP`. If the NetBIOS domain name format is provided for a login, a mapping must exist to the DNS domain name. 

### Managing NetBIOS domain name to DNS domain name mapping
<a name="babelfish-active-directory-login-netbios"></a>

To manage mappings between the NetBIOS domain name and DNS domain name, Babelfish provides system stored procedures to add, remove, and truncate mappings. Only a user with a `sysadmin` role can run these procedures.

To create mapping between NetBIOS and DNS domain name, use the Babelfish provided system stored procedure `babelfish_add_domain_mapping_entry`. Both arguments must have a valid value and are not NULL.

**Example**  

```
EXEC babelfish_add_domain_mapping_entry 'netbios_domain_name', 'fully_qualified_domain_name'
```

The following example shows how to create the mapping between the NetBIOS name CORP and DNS domain name CORP.EXAMPLE.COM.

**Example**  

```
EXEC babelfish_add_domain_mapping_entry 'corp', 'corp.example.com'
```

To delete an existing mapping entry, use the system stored procedure babelfish\$1remove\$1domain\$1mapping\$1entry.

**Example**  

```
EXEC babelfish_remove_domain_mapping_entry 'netbios_domain_name'
```

The following example shows how to remove the mapping for the NetBIOS name CORP.

**Example**  

```
EXEC babelfish_remove_domain_mapping_entry 'corp'
```

To remove all existing mapping entries, use the system stored procedure babelfish\$1truncate\$1domain\$1mapping\$1table:

**Example**  

```
EXEC babelfish_truncate_domain_mapping_table
```

To view all mappings between NetBIOS and DNS domain name, use the following query.

**Example**  

```
SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;
```

### Managing Logins
<a name="babelfish-active-directory-login-managing"></a>

**Create logins**  
Connect to the DB through the TDS endpoint using a login that has the correct permissions. If there is no database user created for the login, then the login is mapped to guest user. If the guest user is not enabled, then the login attempt fails.

Create a Windows login using the following query. The `FROM WINDOWS` option allows authentication using Active Directory.

```
CREATE LOGIN login_name FROM WINDOWS [WITH DEFAULT_DATABASE=database]
```

**Example**  
The following example shows creating a login for the Active Directory user [corp\$1test1] with a default database of db1.

```
CREATE LOGIN [corp\test1] FROM WINDOWS WITH DEFAULT_DATABASE=db1
```

This example assumes that there is a mapping between the NetBIOS domain CORP and the DNS domain name CORP.EXAMPLE.COM. If there is no mapping, then you must provide the DNS domain name [CORP.EXAMPLE.COM\$1test1].

**Note**  
Logins based on Active Directory users, are limited to names of fewer than 21 characters.

**Drop login**  
To drop a login, use the same syntax as for any login, as shown in the following example:

```
DROP LOGIN [DNS domain name\login]
```

**Alter login**  
To alter a login, use the same syntax as for any login, as in the following example:

```
ALTER LOGIN [DNS domain name\login] { ENABLE|DISABLE|WITH DEFAULT_DATABASE=[master] }
```

The ALTER LOGIN command supports limited options for Windows logins, including the following:
+ DISABLE – To disable a login. You can't use a disabled login for authentication.
+ ENABLE – To enable a disabled login.
+ DEFAULT\$1DATABASE – To change the default database of a login.

**Note**  
All password management is performed through Directory Service, so the ALTER LOGIN command doesn't allow database administrators to change or set passwords for Windows logins.

### Connecting to Babelfish for Aurora PostgreSQL with Kerberos authentication
<a name="babelfish-active-directory-kerberos"></a>

Typically, the database users who authenticate using Kerberos are doing so from their client machines. These machines are members of the Active Directory domain. They use Windows Authentication from their client applications to access the Babelfish for Aurora PostgreSQL server on the TDS port.

### Connecting to Babelfish for Aurora PostgreSQL on the PostgreSQL port with Kerberos authentication
<a name="babelfish-active-directory-kerberos-pgport"></a>

 You can use logins created from the TDS port with either the TDS port or the PostgreSQL port. However, PostgreSQL uses case-sensitive comparisons by default for usernames. For Aurora PostgreSQL to interpret Kerberos usernames as case-insensitive, you must set the `krb_caseins_users` parameter as `true` in the custom Babelfish cluster parameter group. This parameter is set to `false` by default. For more information, see [ Configuring for case-insensitive user names](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-setting-up.html#postgresql-kerberos-setting-up.create-logins.set-case-insentive). In addition, you must specify the login username in the format <login@DNS domain name> from the PostgreSQL client applications. You can't use <DNS domain name\$1login> format.

### Frequently occurring errors
<a name="babelfish-active-directory-errors"></a>

You can configure forest trust relationships between your on-premises Microsoft Active Directory and the AWS Managed Microsoft AD. For more information, see [Create a trust relationship](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-setting-up.html#postgresql-kerberos-setting-up.create-trust). Then, you must connect using a specialized domain specific endpoint instead of using the Amazon domain `rds.amazonaws.com` in the host endpoint. If you don't use the correct domain specific endpoint, you might encounter the following error:

```
Error: “Authentication method "NTLMSSP" not supported (Microsoft SQL Server, Error: 514)"
```

 This error occurs when the TDS client can't cache the service ticket for the supplied endpoint URL. For more information, see [Connecting with Kerberos](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-kerberos-connecting.html). 

# Setting up Kerberos authentication using Active Directory security groups for Babelfish
<a name="babelfish-kerberos-securityad"></a>

Starting from Babelfish version 4.2.0, you can setup Kerberos authentication for Babelfish with Active Directory security groups. The following are prerequisites to complete for setting up Kerberos authentication using Active Directory: 
+  You must follow all the steps mentioned at [Kerberos authentication with Babelfish](babelfish-active-directory.md). 
+ Ensure that DB instance is associated with Active Directory. To verify this, you can view the status of the domain membership in the console or by running the [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI command.

  The status of the DB instance should be kerberos-enabled. For more information on understanding domain membership, see [Understanding Domain membership](postgresql-kerberos-managing.md#postgresql-kerberos-managing.understanding).
+ Verify mappings between NetBIOS domain name and DNS domain name using the following query:

  ```
  SELECT netbios_domain_name, fq_domain_name FROM babelfish_domain_mapping;
  ```
+ Before proceeding further, verify Kerberos authentication using individual login works as expected. The connection using Kerberos authentication as an Active Directory user should be successful. If you face any issues, see [Frequently occurring errors](babelfish-active-directory.md#babelfish-active-directory-errors).

## Setting up the pg\$1ad\$1mapping extension
<a name="babelfish-kerberos-securityad-setpgextn"></a>

 You must follow all the steps mentioned at [Setting up the pg\$1ad\$1mapping extension](AD.Security.Groups.md#AD.Security.Groups.Setup) . To verify that the extension is installed, run the following query from TDS endpoint: 

```
1> SELECT extname, extversion FROM pg_extension where extname like 'pg_ad_mapping';
2> GO
extname       extversion
------------- ----------
pg_ad_mapping 0.1

(1 rows affected)
```

## Managing Group Logins
<a name="babelfish-kerberos-securityad-managing"></a>

 Create group logins by following the steps mentioned at [Managing Logins](babelfish-active-directory.md#babelfish-active-directory-login-managing). We recommend that the login name be the same as the Active Directory (AD) security group name for easier maintenance, although it's not mandatory. For example: 

```
CREATE LOGIN [corp\accounts-group] FROM WINDOWS [WITH DEFAULT_DATABASE=database]
```

# Mapping T-SQL group logins with AD security group
<a name="babelfish-kerberos-securityad-maptsql"></a>

 You need to explicitly provision T-SQL Windows Group Login for each AD security group that requires access to the database server. An AD user, who is part of at least one provisioned AD security group, will get access to the database server.

**Note**  
This T-SQL login can no longer authenticate using a password based authentication.

 For example, accounts-group is a security group in AD and if you would like to provision this security group in Babelfish, you must use the format [corp\$1accounts-group].
+ AD Security Group : accounts-group
+ TSQL Login : [corp\$1accounts-group]
+ Equivalent PG role for given TSQL Login : accounts-group@CORP.EXAMPLE.COM

 Admin can now proceed to create the mapping between AD security group and T-SQL login from PostgreSQL endpoint via following psql command. For more information on the function usage, see [Using functions from the `pg_ad_mapping` extension](AD.Security.Groups.md#AD.Security.Groups.functions). 

**Note**  
T-SQL login should be specified in login\$1name@FQDN format while adding the mapping. Weights are ignored when connecting through TDS endpoint. For more information about usage of weights, see [Connecting to Babelfish via PostgreSQL endpoint on the PostgreSQL port](babelfish-kerberos-securityad-connect-pgendpoint.md).

```
postgres=>select pgadmap_set_mapping('accounts-group', 'accounts-group@CORP.EXAMPLE.COM', <SID>, <Weight>);
```

For information on retrieving SID of AD security group, see [Retrieving Active Directory Group SID in PowerShell](AD.Security.Groups.md#AD.Security.Groups.retrieving).

The following table shows a sample mapping from AD security groups to T-SQL logins:


| AD Security Groups | TSQL Logins | Equivalent PG role for given TSQL Login | Weight | 
| --- | --- | --- | --- | 
| accounts-group | [corp\$1accounts-group] | accounts-group@CORP.EXAMPLE.COM | 7 | 
| sales-group | [corp\$1sales-group] | sales-group@CORP.EXAMPLE.COM | 10 | 
| dev-group | [corp\$1dev-group] | dev-group@CORP.EXAMPLE.COM | 7 | 

```
postgres=> select admap.ad_sid, admap.ad_grp, lgn.orig_loginname, lgn.rolname, admap.weight from pgadmap_read_mapping() as admap, sys.babelfish_authid_login_ext as lgn where admap.pg_role = lgn.rolname;
    ad_sid    |     ad_grp     |    orig_loginname   |             rolname             | weight
--------------+----------------+---------------------+---------------------------------+--------
 S-1-5-67-890 | accounts-group | corp\accounts-group  | accounts-group@CORP.EXAMPLE.COM |     7
 S-1-2-34-560 | sales-group    | corp\sales-group     | sales-group@CORP.EXAMPLE.COM    |     10
 S-1-8-43-612 | dev-group      | corp\dev-group       | dev-group@CORP.EXAMPLE.COM      |     7
 (7 rows)
```

# Connecting to Babelfish via TDS endpoint
<a name="babelfish-kerberos-securityad-connect"></a>

 In the following example, user1 is member of accounts-group and sales-group, user2 is member of accounts-group and dev-group. 


| Username | AD Security Groups membership | 
| --- | --- | 
| user1 | accounts-group, sales-group | 
| user2 | accounts-group, dev-group | 

 Connect to Babelfish database server using sqlcmd utility. You can verify if an user (user1 in this example) was authenticated using Kerberos by following the example below: 

```
1> select principal, gss_authenticated from pg_stat_gssapi where pid = pg_backend_pid();
2>  GO
principal               gss_authenticated
----------------------  -----------------
user1@CORP.EXAMPLE.COM  1 

((1 rows affected))
1> select suser_name();
2>  GO
suser_name
----------
corp\user1 

(1 rows affected)
```

 In this example, user1 will inherit the privileges of accounts-group and sales-group. You can verify the group membership using `sys.login_token` system view. 

```
1> SELECT name, type FROM sys.login_token;
2>  GO
name                type
------------------- ----
corp\accounts-group WINDOWS GROUP
corp\sales-group    WINDOWS GROUP

(2 rows affected)
```

## Auditing and Logging
<a name="babelfish-kerberos-securityad-audit"></a>

 To determine the AD security principal identity, use the following commands: 

```
1> select suser_name();
2> GO
suser_name
----------
corp\user1

(1 rows affected)
```

Currently, AD user identity isn't visible in the logs. You can turn on the `log_connections` parameter to log DB session establishment. For more information, see [log\$1connections](https://docs.aws.amazon.com/prescriptive-guidance/latest/tuning-postgresql-parameters/log-connections.html). The output includes the AD user identity as principal as shown in the following example. The backend PID associated with this output can then help attribute actions back to the actual AD user.

```
bbf_group_ad_login@babelfish_db:[615]:LOG: connection authorized: user=bbf_group_ad_login database=babelfish_db application_name=sqlcmd GSS (authenticated=yes, encrypted=yes, principal=user1@CORP.EXAMPLE.COM)
```

# Utilizing privileges of AD security group membership
<a name="babelfish-kerberos-securityad-privileges"></a>

## Inheriting server-level privileges
<a name="babelfish-kerberos-securityad-inheritpriv-server"></a>

 AD users that are members of given AD security group will inherit server-level privileges granted to the mapped Windows group login. For example, consider the `accounts-group` AD security group, that is granted membership to the `sysadmin` server role on the Babelfish. You can inherit the server-level privileges using the following command: 

```
1> ALTER SERVER ROLE sysadmin ADD MEMBER [corp\accounts-group];
```

 Consequently, any Active Directory user who is a member of the `accounts-group` AD security group will inherit the server-level privileges associated with the `sysadmin` role. This means that a user like `corp\user1`, being a member of `accounts-group`, will now have the ability to perform server-level operations within Babelfish.

**Note**  
 To perform server-level DDLs, Windows login for individual AD user must exist. For more information, see [Limitations](babelfish-kerberos-securityad-limitations.md). 

## Inheriting database-level privileges
<a name="babelfish-kerberos-securityad-inheritpriv-database"></a>

 To grant the database level privileges, a database user has to be created and mapped with Windows group login. AD users which are members of given AD security group will inherit database-level privileges granted to that database user. In the following example, you can see how database level privileges for Windows group [corp\$1accounts-group] are assigned. 

```
1> CREATE DATABASE db1; 
2> GO
1> USE db1;
2> GO
Changed database context to 'db1'.
1> CREATE TABLE dbo.t1(a int);
2> GO
```

 Create a database user [corp\$1sales-group] for Windows group login [corp\$1accounts-group]. To perform this step, connect through TDS endpoint using login who is a member of sysadmin. 

```
1> CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group];
2> GO
```

 Now, connect as AD user user1 to check access of table t1. Since we have not yet granted the database level privileges, it will result in permission denied error. 

```
1> SELECT * FROM dbo.t1;
2> GO
Msg 33557097, Level 16, State 1, Server db-inst, Line 1
permission denied for table t1
```

Grant SELECT on table t1 to database user [corp\$1accounts-group]. To perform this step, connect through TDS endpoint using login who is member of sysadmin.

```
1> GRANT SELECT ON dbo.t1 TO [corp\accounts-group];
2> GO
```

 Connect as AD user user1 to validate the access. 

```
1> SELECT * FROM dbo.t1;
2> GO
a
-----------

(0 rows affected)
```

# Handling DDL Statement behavior based on default or explicit schema
<a name="babelfish-kerberos-securityad-ddl"></a>

 When using an AD authenticated session, the default schema for the current session is determined by the following conditions: 
+ If an individual database user exists, the user's default schema is considered as current session’s default schema.
+ If the default schema for a group database user exists, the group database user's default schema is considered as current session’s default schema with the smallest principal id.

## Understanding CREATE DDL statement behavior
<a name="babelfish-kerberos-securityad-ddlcreate"></a>

 If there is no explicit schema specified in the CREATE DDL statement then object creation will take place in the default schema of current session. If the schema can't be determined whether default or explicit, then the DDL statement will throw following error: 

```
"Babelfish Unsupported Command : Schema required for CREATE DDLs when connecting with Active Directory Group authentication. Assign default schema to group user or specify schema in command."
```

**Example : Default schema doesn’t exist for Windows group user**  
Windows group user [corp\$1accounts-group] have NULL default schema and AD user user1 is trying to perform the DDL without specifying the schema explicitly. Since individual windows login and user doesn’t exist for user1, it will get the database level privileges of Windows group user [corp\$1accounts-group] only.  

```
1> create TABLE t2(a int);
2> GO

Msg 33557097, Level 16, State 1, Server db-inst, Line 1
Babelfish Unsupported Command : Schema required for CREATE DDLs when connecting with Active Directory Group authentication. Assign default schema to group user or specify schema in command.
```
Individual windows login and user doesn’t exist for AD user user1

**Example : Default schema exists for Windows group users**  
Create Windows group user for [corp\$1accounts-group] login with default schema using sysadmin.   

```
1> CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group] WITH DEFAULT_SCHEMA = sch_acc;
2> GO
1> CREATE SCHEMA sch_acc AUTHORIZATION [gad\accounts-group];
2> GO
1> SELECT name, principal_id, default_schema_name FROM sys.database_principals WHERE name = 'corp\accounts-group';
2> GO
                
name               principal_id default_schema_name
------------------ ------------ -------------------
corp\accounts-group 24162        sch_acc

(1 rows affected)
```
 Try creating object without specifying schema explicitly using AD user user1. Table t2 will be created in default schema of [corp\$1accounts-group] Windows group user Owner of this object will be same as owner of schema sch\$1acc.   

```
1> CREATE TABLE t_group(a int);
2> GO
1> SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't_group';
2> GO

name    schema_name
------- -----------
t_group sch_acc

(1 rows affected)
```
Individual windows login and user doesn’t exist for AD user user1

**Example : Individual database user also exists for an AD user**  
 If an individual database user also exists for an AD user then the objects will always be created in the schema associated with individual database user. If the schema doesn’t exist for the database user then dbo schema will be used. Create individual windows login and database user for AD user user1. Connect through TDS endpoint using a sysadmin login   

```
1> CREATE LOGIN [corp\user1] FROM WINDOWS;
2> GO
1> CREATE USER [corp\user1] FOR LOGIN [corp\user1] WITH DEFAULT_SCHEMA = sch1;
2> GO
1> CREATE SCHEMA sch1 AUTHORIZATION [corp\user1];
2> GO
1> SELECT name, default_schema_name FROM sys.database_principals WHERE name = 'corp\user1';
2> GO

name      default_schema_name
--------- -------------------
corp\user1 sch1

(1 rows affected)
```
 Connect using AD user user1 and try creating object without specifying schema explicitly. Table t2 will be created in schema sch1. Also note that owner of this object will be same as owner of schema sch1.   

```
1> CREATE TABLE t2(a int);
2> GO
1> SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't2';
2> GO
            
name schema_name
---- -----------
t2   sch1

(1 rows affected)
```

# Limitations
<a name="babelfish-kerberos-securityad-limitations"></a>
+ Dump/Restore utility doesn’t support dumping the pg\$1ad\$1mapping extension mappings. You will need to recreate those mappings after restore.
+ Blue-Green deployment isn't supported for Babelfish and Aurora PostgreSQL instances with `pg_ad_mapping`.
+ Implicit schema creation is not supported. DDL statements that requires implicit schema creation isn't supported. 
+ Server-level DDLs ALTER AUTHORIZATION ON DATABASE , CREATE DATABASE, CREATE LOGIN, ALTER LOGIN, ALTER SERVER ROLE, ALTER DATABASE are not supported in a Group AD authenticated session when individual Windows login doesn’t exist, only group Windows login exists. To workaround this limitation, It is recommended to perform these operations in a password authenticated session or create individual Windows login.
+ Implicit user creation isn't supported. Ideal T-SQL behavior [not yet supported in Babelfish]; In some cases like DDL and access-control statements like GRANT/REVOKE where AD user’s name is specified in the command but it doesn’t exist in database then database user named as AD user get implicitly created.
+ For DDLs in PL/pgSQL Procedures or Functions which are created from PSQL endpoint and gets executed from TDS endpoint in Group AD authenticated session:
  + ALTER/DROP statements will be supported.
  + CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE FUNCTION/PROC, CREATE TYPE, CREATE SEQUENCE, CREATE TRIGGER, SELECT INTO, CREATE FULLTEXT INDEX , CREATE UNIQUE INDEX will throw an error if schema is not provided explicitly and default schema is null for current session.
  + CREATE DATABASE , CREATE EXTENSION and all other CREATE statements for PG(not in T-SQL) specific objects CREATE subscription, CREATE tablespace, CREATE policy, CREATE conversion will not be supported.
+ DDLs from PostgreSQL endpoint is not supported in Group AD authenticated session. As a workaround, you can always connect using master user or any other user using password based authentication mechanism.
+ System objects like SUSER\$1SID(), IS\$1SRVROLEMEMBER(), IS\$1MEMBER(), sys.dm\$1exec\$1sessions has following limitations.
  + SUSER\$1SID() won’t return the SID when AD User or AD Security Group is supplied.
  + IS\$1SRVROLEMEMBER() won’t consider the role membership if current AD user is inheriting the server role membership from any Windows group login’s server role membership.
  + IS\$1MEMBER() will return false for any Windows Group related query.
  + sys.dm\$1exec\$1sessions won’t show expected values login\$1name, nt\$1user\$1name columns.

# Connecting to Babelfish via PostgreSQL endpoint on the PostgreSQL port
<a name="babelfish-kerberos-securityad-connect-pgendpoint"></a>

You can utilize group logins created from the TDS port to connect through PostgreSQL port as well. To connect through PostgreSQL port, you need to specify the AD user's name in the format `<ad_username@FQDN>` from the PostgreSQL client applications. You can't use the `<DNS domain name\ad_username>` format.

PostgreSQL uses case-sensitive comparisons by default for usernames. For Aurora PostgreSQL to interpret Kerberos usernames as case-insensitive, you must set the krb\$1caseins\$1users parameter as true in the custom Babelfish cluster parameter group. This parameter is set to false by default. For more information, see [Configuring your Aurora PostgreSQL DB cluster for case-insensitive user names](postgresql-kerberos-setting-up.md#postgresql-kerberos-setting-up.create-logins.set-case-insentive). 

## Behavior differences between T-SQL and PostgreSQL endpoints when an AD user is part of multiple groups
<a name="babelfish-kerberos-securityad-diff-tsql-pg"></a>

Consider that AD user user1 is part of two AD security groups [corp\$1accounts-group] and [corp\$1sales-group] and DB admin has set the user mapping in following way.

```
postgres=> select * from pgadmap_read_mapping();
            
ad_sid       | pg_role                         | weight | ad_grp 
-------------+---------------------------------+--------+---------------
S-1-5-67-980 | accounts-group@CORP.EXAMPLE.COM | 7      | accounts-group
S-1-2-34-560 | sales-group@CORP.EXAMPLE.COM    | 10     | sales-group
(2 rows)
```

If the user is connecting from the T-SQL endpoint then during the authorization, it will inherit the privileges from all the associated T-SQL logins. In this example user1 will inherit the union of privileges from both the T-SQL group login and weights will be ignored. This is inline with the standard T-SQL behavior. 

However if same user connects from the PostgreSQL endpoint then it can inherit privileges from only one associated T-SQL login with the highest weight. If the two T-SQL group login were assigned same weight then AD user will inherit the privileges of the T-SQL login corresponding to the mapping that was added most recently. For the PostgreSQL, the recommendation is to specify weights that reflect the relative permissions/privileges of individual DB roles to avoid the ambiguity. In below example, user1 connected through PSQL endpoint and inherited only sales-groups privileges.

```
babelfish_db=> select session_user, current_user;

   session_user               |   current_user
------------------------------+---------------------------
 sales-group@CORP.EXAMPLE.COM | sales-group@CORP.EXAMPLE.COM
(1 row)


babelfish_db=> select principal, gss_authenticated from pg_stat_gssapi where pid = pg_backend_pid();

     principal          | gss_authenticated
------------------------+-------------------
 user1@CORP.EXAMPLE.COM | t
(1 row)
```

# Connecting to a Babelfish DB cluster
<a name="babelfish-connect"></a>

To connect to Babelfish, you connect to the endpoint of the Aurora PostgreSQL cluster running Babelfish. Your client can use one of the following client drivers compliant with TDS version 7.1 through 7.4:
+ Open Database Connectivity (ODBC)
+ OLE DB Driver/MSOLEDBSQL
+ Java Database Connectivity (JDBC) version 8.2.2 (mssql-jdbc-8.2.2) and higher
+ Microsoft SqlClient Data Provider for SQL Server
+ .NET Data Provider for SQL Server
+ SQL Server Native Client 11.0 (deprecated)
+ OLE DB Provider/SQLOLEDB (deprecated)

With Babelfish, you run the following:
+ SQL Server tools, applications, and syntax on the TDS port, by default port 1433.
+ PostgreSQL tools, applications, and syntax on the PostgreSQL port, by default port 5432.

To learn more about connecting to Aurora PostgreSQL in general, see [Connecting to an Amazon Aurora PostgreSQL DB cluster](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL). 

**Note**  
Third-party developer tools using the SQL Server OLEDB provider to access metadata aren't supported. We recommend you to use SQL Server JDBC, ODBC, or SQL Native client connections for these tools.

Starting with Babelfish version 5.1.0, end-to-end connection encryption is enforced by default. To ensure continued connectivity:
+ Configure SSL/TLS encryption for your connections. For more information, see [Using SSL/TLS to encrypt a connection to a DB cluster](UsingWithRDS.SSL.md).
+ Import the required certificates on your client computers. For more information, see [Using SSL with a Microsoft SQL Server DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html).

If you want to continue using the encryption settings from a previous version of Babelfish (prior to version 5.1.0), you can set the `rds.force_ssl` parameter to `0` in your DB cluster parameter group.

**Topics**
+ [Finding the writer endpoint and port number](#babelfish-connect-endpoint)
+ [Creating C\$1 or JDBC client connections to Babelfish](babelfish-connect-configure.md)
+ [Using a SQL Server client to connect to your DB cluster](babelfish-connect-sqlserver.md)
+ [Using a PostgreSQL client to connect to your DB cluster](babelfish-connect-PostgreSQL.md)

## Finding the writer endpoint and port number
<a name="babelfish-connect-endpoint"></a>

To connect to your Babelfish DB cluster, you use the endpoint associated with the DB cluster's writer (primary) instance. The instance must have a status of **Available**. It can take up to 20 minutes for the instances to be available after creating the Babelfish for Aurora PostgreSQL DB cluster.

**To find your database endpoint**

1. Open the console for Babelfish.

1. Choose **Databases** from the navigation pane. 

1. Choose your Babelfish for Aurora PostgreSQL DB cluster from those listed to see its details. 

1. On the **Connectivity & security** tab, note the available cluster **Endpoints** values. Use the cluster endpoint for the writer instance in your connection strings for any applications that perform database write or read operations.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-database-endpoint.png)

For more information about Aurora DB cluster details, see [Creating an Amazon Aurora DB cluster](Aurora.CreateInstance.md).

# Creating C\$1 or JDBC client connections to Babelfish
<a name="babelfish-connect-configure"></a>

In the following you can find some examples of using C\$1 and JDBC classes to connect to an Babelfish for Aurora PostgreSQL. 

**Example : Using C\$1 code to connect to a DB cluster**  

```
string dataSource = 'babelfishServer_11_24';

//Create connection
connectionString = @"Data Source=" + dataSource
    +";Initial Catalog=your-DB-name"
    +";User ID=user-id;Password=password";
					
// [optional] To validate server certificate during TLS/SSL connection
connectionString = connectionString + ";ServerCertificate=/path/to/certificate.pem";					

SqlConnection cnn = new SqlConnection(connectionString);
cnn.Open();
```

**Example : Using generic JDBC API classes and interfaces to connect to a DB cluster**  

```
String dbServer = 
   "database-babelfish.cluster-123abc456def.us-east-1-rds.amazonaws.com";
String connectionUrl = "jdbc:sqlserver://" + dbServer + ":1433;" +
    "databaseName=your-DB-name;user=user-id;password=password";

// [optional] To validate server certificate during TLS/SSL connection
connectionUrl = connectionUrl + ";serverCertificate=/path/to/certificate.pem";

// Load the SQL Server JDBC driver and establish the connection.
System.out.print("Connecting Babelfish Server ... ");
Connection cnn = DriverManager.getConnection(connectionUrl);
```

**Example : Using SQL Server-specific JDBC classes and interfaces to connect to a DB cluster**  

```
// Create datasource.
SQLServerDataSource ds = new SQLServerDataSource();
ds.setUser("user-id");
ds.setPassword("password");
String babelfishServer = 
   "database-babelfish.cluster-123abc456def.us-east-1-rds.amazonaws.com";

ds.setServerName(babelfishServer);
ds.setPortNumber(1433);
ds.setDatabaseName("your-DB-name");

// [optional] To validate server certificate during TLS/SSL connection
ds.setServerCertificate("/path/to/certificate.pem"); 

Connection con = ds.getConnection();
```

**Important**  
Ensure the certificate matches the Certificate Authority shown in your DB cluster configuration on the AWS Management Console.

# Using a SQL Server client to connect to your DB cluster
<a name="babelfish-connect-sqlserver"></a>

You can use a SQL Server client to connect with Babelfish on the TDS port. As of Babelfish 2.1.0 and higher releases, you can use the SSMS Object Explorer or the SSMS Query Editor to connect to your Babelfish cluster. 

**Limitations**
+ Babelfish doesn't support MARS (Multiple Active Result Sets). Be sure that any client applications that you use to connect to Babelfish aren't set to use MARS. 

For more information about interoperability and behavioral differences between SQL Server and Babelfish, see [Differences between Babelfish for Aurora PostgreSQL and SQL Server](babelfish-compatibility.md).

## Using sqlcmd to connect to the DB cluster
<a name="babelfish-connect-sqlcmd"></a>

You can connect to and interact with an Aurora PostgreSQL DB cluster that supports Babelfish by SQL Server `sqlcmd` command line client. Use the following command to connect.

```
sqlcmd -S endpoint,port -U login-id -P password -d your-DB-name
```

The options are as follows:
+ `-S` is the endpoint and (optional) TDS port of the DB cluster.
+ `-U` is the login name of the user.
+ `-P` is the password associated with the user.
+ `-d` is the name of your Babelfish database.

After connecting, you can use many of the same commands that you use with SQL Server. For some examples, see [Getting information from the Babelfish system catalog](babelfish-query-database.md).

## Using SSMS to connect to the DB cluster
<a name="babelfish-connect-SSMS"></a>

You can connect to an Aurora PostgreSQL DB cluster running Babelfish by using Microsoft SQL Server Management Studio (SSMS). SSMS includes a variety of tools, including the SQL Server Import amd Export Wizard discussed in [Migrating a SQL Server database to Babelfish for Aurora PostgreSQL](babelfish-migration.md). For more information about SSMS, see [ Download SQL Server Management Studio (SSMS)](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16) in the Microsoft documentation. To configure SSL/TLS, see [Using SSL with a Microsoft SQL Server DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html). 

**Note**  
SSMS version 19.2 and later requires Babelfish version 3.5.0 (Aurora PostgreSQL 15.6) or higher to display databases in Object Explorer.

**To connect to your Babelfish database with SSMS**

1. Start SSMS.

1. Open the **Connect to Server** dialog box. To continue with the connection, do one of the following:
   + Choose **New Query**.
   + If the Query Editor is open, choose **Query**, **Connection**, **Connect**.

1. Provide the following information for your database:

   1. For **Server type**, choose **Database Engine**.

   1. For **Server name**, enter the DNS name. For example, your server name should look similar to the following.

      ```
      cluster-name.cluster-555555555555.aws-region.rds.amazonaws.com,1433
      ```

   1. For **Authentication**, choose **SQL Server Authentication**.

   1. For **Login**, enter the user name that you chose when you created your database.

   1. For **Password**, enter the password that you chose when you created your database.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-SSMS-connect-database1.png)
**Note**  
Babelfish 5.1.0 and later versions use TLS by default. You can either install the root CA certificate on the client or select the **Trust server certificate** checkbox on the Login tab.

1. (Optional) Choose **Options**, and then choose the **Connection Properties** tab.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-SSMS-connect-database2.png)

1. (Optional) For **Connect to database**, specify the name of the migrated SQL Server database to connect to, and choose **Connect**.

   If a message appears indicating that SSMS can't apply connection strings, choose **OK**.

   If you are having trouble connecting to Babelfish, see [Connection failure](babelfish-troubleshooting.md#babelfish-troubleshooting-connectivity).

   For more information about SQL Server connection issues, see [Troubleshooting connections to your SQL Server DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToMicrosoftSQLServerInstance.html#USER_ConnectToMicrosoftSQLServerInstance.Troubleshooting) in the *Amazon RDS User Guide*.

# Using a PostgreSQL client to connect to your DB cluster
<a name="babelfish-connect-PostgreSQL"></a>

You can use a PostgreSQL client to connect to Babelfish on the PostgreSQL port. Starting with version 5.1.0, the Babelfish server enforces end-to-end connection encryption by default. Update your application to work with SSL/TLS certificates. For more information about configuring SSL/TLS certificates, see [Securing Aurora PostgreSQL data with SSL/TLS](AuroraPostgreSQL.Security.md#AuroraPostgreSQL.Security.SSL).

## Using psql to connect to the DB cluster
<a name="babelfish-connect-psql"></a>

You can download the PostgreSQL client from the [PostgreSQL](https://www.postgresql.org/download/) website. Follow the instructions specific to your operating system version to install psql.

You can query an Aurora PostgreSQL DB cluster that supports Babelfish with the `psql` command line client. When connecting, use the PostgreSQL port (by default, port 5432). Typically, you don't need to specify the port number unless you changed it from the default. Use the following command to connect to Babelfish from the `psql` client:

```
psql -h bfish-db.cluster-123456789012.aws-region.rds.amazonaws.com
-p 5432 -U postgres -d babelfish_db
```

The parameters are as follows:
+ `-h` – The host name of the DB cluster (cluster endpoint) that you want to access.
+ `-p` – The PostgreSQL port number used to connect to your DB instance.
+ `-d` – The database that you want to connect to. The default is `babelfish_db`.
+ `-U` – The database user account that you want to access. (The example shows the default master username.)

When you run a SQL command on the psql client, you end the command with a semicolon. For example, the following SQL command queries the [pg\$1tables system view](https://www.postgresql.org/docs/current/view-pg-tables.html) to return information about each table in the database.

`SELECT * FROM pg_tables;`

The psql client also has a set of built-in metacommands. A *metacommand* is a shortcut that adjusts formatting or provides a shortcut that returns meta-data in an easy-to-use format. For example, the following metacommand returns similar information to the previous SQL command:

`\d`

Metacommands don't need to be terminated with a semicolon (;).

To exit the psql client, enter `\q`.

For more information about using the psql client to query an Aurora PostgreSQL cluster, see [the PostgreSQL documentation](https://www.postgresql.org/docs/14/app-psql.html).

## Using pgAdmin to connect to the DB cluster
<a name="babelfish-connect-pgadmin"></a>

You can use the pgAdmin client to access your data in native PostgreSQL dialect. 

**To connect to the cluster with the pgAdmin client**

1. Download and install the pgAdmin client from the [pgAdmin website](https://www.pgadmin.org/).

1. Open the client and authenticate with pgAdmin.

1. Open the context (right-click) menu for **Servers**, and then choose **Create**, **Server**.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/pgAdmin1.png)

1. Enter information in the **Create - Server** dialog box. 

   On the **Connection** tab, add the Aurora PostgreSQL cluster address for **Host** and the PostgreSQL port number (by default, 5432) for **Port**. Provide authentication details, and choose **Save**.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/pgAdmin2.png)

After connecting, you can use pgAdmin functionality to monitor and manage your Aurora PostgreSQL cluster on the PostgreSQL port.

![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/pgAdmin3.png)


To learn more, see the [pgAdmin](https://www.pgadmin.org/) web page.

# Working with Babelfish
<a name="working-with-babelfish-usage-notes-features"></a>

Following, you can find usage information for Babelfish, including some of the differences between working with Babelfish and SQL Server, and between Babelfish and PostgreSQL databases. 

**Topics**
+ [Getting information from the Babelfish system catalog](babelfish-query-database.md)
+ [Managing permissions and access control in Babelfish for Aurora PostgreSQL](babelfish-permissions.md)
+ [Differences between Babelfish for Aurora PostgreSQL and SQL Server](babelfish-compatibility.md)
+ [Using Babelfish features with limited implementation](babelfish-compatibility.tsql.limited-implementation.md)
+ [Improving Babelfish query performance](babelfish-query-performance.md)
+ [Using Aurora PostgreSQL extensions with Babelfish](babelfish-postgres-aws-extensions.md)
+ [Babelfish supports linked servers](babelfish-postgres-linkedservers.md)
+ [Using Full Text Search in Babelfish](babelfish-postgres-fulltextsearch.md)
+ [Babelfish supports Geospatial data types](babelfish-geospatial.md)
+ [Understanding partitioning in Babelfish](babelfish-partition.md)

# Getting information from the Babelfish system catalog
<a name="babelfish-query-database"></a>

You can obtain information about the database objects that are stored in your Babelfish cluster by querying many of the same system views as used in SQL Server. Each new release of Babelfish adds support for more system views. For a list of available views currently available, see the [SQL Server system catalog views](#system-catalog-table) table. 

These system views provide information from the system catalog (`sys.schemas`). In the case of Babelfish, these views contain both SQL Server and PostgreSQL system schemas. To query Babelfish for system catalog information, you can use the TDS port or the PostgreSQL port, as shown in the following examples.
+ **Query the T-SQL port using `sqlcmd` or another SQL Server client**.

  ```
  1> SELECT * FROM sys.schemas
  2> GO
  ```

  This query returns SQL Server and Aurora PostgreSQL system schemas, as shown in the following.

  ```
  name      
  ---------------------------------------------------------
  demographic_dbo          
  public                                                    
  sys                           
  master_dbo
  tempdb_dbo
  ...
  ```
+ **Query the PostgreSQL port using `psql` or `pgAdmin`**. This example uses the `psql` list schemas metacommand (`\dn`):

  ```
  babelfish_db=> \dn
  ```

  The query returns the same result set as that returned by `sqlcmd` on the T-SQL port.

  ```
          List of schemas
               Name              
  ------------------------------
  
   demographic_dbo           
  
   public                       
   sys                          
   master_dbo                   
   tempdb_dbo                   
  ...
  ```

## SQL Server system catalogs available in Babelfish
<a name="babelfish-query-database.system-catalogs"></a>

In the following table you can find the SQL Server views currently implemented in Babelfish. For more information about the system catalogs in SQL Server, see [System Catalog Views (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql?view=sql-server-ver16) in Microsoft documentation.<a name="system-catalog-table"></a>


| View name | Description or Babelfish limitation (if any) | 
| --- | --- | 
| `sys.all_columns` | All columns in all tables and views | 
| `sys.all_objects` | All objects in all schemas | 
| `sys.all_sql_modules` | The union of `sys.sql_modules` and `sys.system_sql_modules` | 
| `sys.all_views` | All views in all schemas | 
| `sys.columns` | All columns in user-defined tables and views | 
| `sys.configurations` | Babelfish support limited to a single read-only configuration. | 
| `sys.data_spaces` | Contains a row for each data space. This can be a filegroup, partition scheme, or FILESTREAM data filegroup. | 
| `sys.database_files` | A per-database view that contains one row for each file of a database as stored in the database itself. | 
| `sys.database_mirroring` | For information, see [sys.database\$1mirroring](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-mirroring-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation.  | 
| `sys.database_principals` | For information, see [sys.database\$1principals](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.database_role_members` | For information, see [sys.database\$1role\$1members](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-role-members-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.databases` | All databases in all schemas | 
| `sys.dm_exec_connections` | For information, see [sys.dm\$1exec\$1connections](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-connections-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.dm_exec_sessions` | For information, see [sys.dm\$1exec\$1sessions](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sessions-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation.  | 
| `sys.dm_hadr_database_replica_states` | For information, see [sys.dm\$1hadr\$1database\$1replica\$1states](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-hadr-database-replica-states-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.dm_os_host_info` | For information, see [sys.dm\$1os\$1host\$1info](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-host-info-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.endpoints` | For information, see [sys.endpoints](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.indexes` | For information, see [sys.indexes](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.languages` | For information, see [sys.languages](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation.  | 
| `sys.schemas` | All schemas | 
| `sys.server_principals` | All logins and roles | 
| `sys.sql_modules` | For information, see [sys.sql\$1modules](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.sysconfigures` | Babelfish support limited to a single read-only configuration. | 
| `sys.syscurconfigs` | Babelfish support limited to a single read-only configuration. | 
| `sys.sysprocesses` | For information, see [sys.sysprocesses](https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysprocesses-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.system_sql_modules` | For information, see [sys.system\$1sql\$1modules](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-sql-modules-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.table_types` | For information, see [sys.table\$1types](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-table-types-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 
| `sys.tables` | All tables in a schema | 
| `sys.xml_schema_collections` | For information, see [sys.xml\$1schema\$1collections](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-collections-transact-sql?view=sql-server-ver16) in Microsoft Transact-SQL documentation. | 

PostgreSQL implements system catalogs that are similar to the SQL Server object catalog views. For a complete list of system catalogs, see [System Catalogs](https://www.postgresql.org/docs/current/catalogs.html) in the PostgreSQL documentation.

## DDL exports supported by Babelfish
<a name="babelfish-ddl-exports"></a>

From Babelfish 2.4.0 and 3.1.0 versions, Babelfish supports DDL exports using various tools. For example, you can use this functionality from SQL Server Management Studio (SSMS) to generate the data definition scripts for various objects in a Babelfish for Aurora PostgreSQL database. You can then use the generated DDL commands in this script to create the same objects in another Babelfish for Aurora PostgreSQL or SQL Server database. 

Babelfish supports DDL exports for the following objects in the specified versions.


| List of objects | 2.4.0 | 3.1.0 | 
| --- | --- | --- | 
| User tables | Yes | Yes | 
| Primary keys | Yes | Yes | 
| Foreign keys | Yes | Yes | 
| Unique constraints | Yes | Yes | 
| Indexes | Yes | Yes | 
| Check constraints | Yes | Yes | 
| Views | Yes | Yes | 
| Stored procedures | Yes | Yes | 
| User-defined functions | Yes | Yes | 
| Table-valued functions | Yes | Yes | 
| Triggers | Yes | Yes | 
| User Defined Datatypes | No | No | 
| User Defined Table Types | No | No | 
| Users | No | No | 
| Logins | No | No | 
| Sequences | No | No | 
| Roles | No | No | 

### Limitations with the exported DDLs
<a name="babelfish-ddl-exports-limitations"></a>
+ **Use escape hatches before recreating the objects with the exported DDLs** – Babelfish doesn't support all the commands in the exported DDL script. Use escape hatches to avoid errors caused when recreating the objects from the DDL commands in Babelfish. For more information on escape hatches, see [Managing Babelfish error handling with escape hatches](babelfish-strict.md)
+ **Objects containing CHECK constraints with explicit COLLATE clauses** – The scripts with these objects generated from a SQL Server database have different but equivalent collations as in the Babelfish database. For example, a few collations, such as sql\$1latin1\$1general\$1cp1\$1cs\$1as, sql\$1latin1\$1general\$1cp1251\$1cs\$1as, and latin1\$1general\$1cs\$1as are generated as latin1\$1general\$1cs\$1as, which is the closest Windows collation.

# Managing permissions and access control in Babelfish for Aurora PostgreSQL
<a name="babelfish-permissions"></a>

 In Babelfish for Aurora PostgreSQL, you can manage permissions and access control for databases, schemas, and objects. The following tables will outline the specific SQL commands for granting permissions in Babelfish to achieve various access control scenarios. It will cover supported use cases that can be implemented as well as workarounds for currently unsupported cases. This will allow you to configure appropriate permissions to meet your security and compliance requirements when working with Babelfish databases.

## Supported use cases
<a name="babelfish-permissions-supported"></a>

 The following table explains the use cases that are supported in Babelfish. For each use case, the table shows the action needed to achieve it and sample SQL commands. 


|  Use case  |  Action  |  SQL commands  |  Comments  |  Babelfish version compatibility  | 
| --- | --- | --- | --- | --- | 
|   Allow login to do SELECTs/DMLs/DDLs in any database   |   Add login to sysadmin server role   |   ALTER SERVER ROLE sysadmin ADD MEMBER `login`   |   None   |   All versions   | 
|   Allow login to do SELECTs/DMLs/DDLs in a database   |   Make login the owner of the database   |   ALTER AUTHORIZATION ON DATABASE::`database` TO `login`   |   A database can have only one owner.   |   Version 3.4 and higher   | 
|   Allow database user to do SELECTs/DMLs on a schema   |   Grant permission to database user on schema   |   GRANT SELECT/EXECUTE/INSERT/UPDATE/DELETE ON SCHEMA::`schema` TO `user`   |   None   |   Version 3.6 and higher, 4.2 and higher   | 
|   Allow database user to do SELECTs/DMLs on a schema   |   Make database user owner of schema at schema creation time   |   CREATE SCHEMA `schema` AUTHORIZATION `user`   |   Changing schema ownership after creation isn't currently supported.   |   Version 1.2 and higher   | 
|   Allow database user to do SELECTs/DMLs on an object   |   Grant permission to database user on object   |   GRANT SELECT/EXECUTE/INSERT/UPDATE/DELETE ON OBJECT::`object` TO `user`   |   None   |   All versions   | 
|   Allow database user to do SELECTs/DMLs/DDLs in a database including dropping database   |   Add user to db\$1owner fixed database role   |   ALTER ROLE db\$1owner ADD MEMBER `user`   |   Only users can be added db\$1owner fixed database role. Adding roles to db\$1owner role is not yet supported.   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow user or members of a custom database role to do only SELECTs in a database   |   Add user or role to db\$1datareader fixed database role   |   ALTER ROLE db\$1datareader ADD MEMBER `user` / `role`   |   None   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow user or members of a custom database role to do only DMLs in a database   |   Add user or role to db\$1datawriter fixed database role   |   ALTER ROLE db\$1datawriter ADD MEMBER `user` / `role`   |   None   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow user or members of a custom database role to do only DDLs in a database   |   Add user or role to db\$1accessadmin fixed database role   |   ALTER ROLE db\$1accessadmin ADD MEMBER `user` / `role`   |   None   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow user or members of a custom database role to only CREATE/ALTER/DROP custom roles, GRANT/REVOKE permissions on objects in a database and/or CREATE SCHEMA in a database   |   Add user or role to db\$1securityadmin fixed database role   |   ALTER ROLE db\$1securityadmin ADD MEMBER `user` / `role`   |   None   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow user or members of a custom database role to only CREATE/ALTER/DROP any user, grant and revoke database access and map user accounts to logins and/or CREATE SCHEMA in a database   |   Add user or role to db\$1accessadmin fixed database role   |   ALTER ROLE db\$1accessadmin ADD MEMBER `user` / `role`   |   None   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow login to only CREATE/DROP/ALTER any database   |   Add login to dbcreator fixed server role   |   ALTER SERVER ROLE dbcreator ADD MEMBER `login`   |   Only those databases can be altered on which dbcreator login has access.   |   Version 4.5 and higher, 5.1 and higher   | 
|   Allow login to only CREATE/ALTER/DROP any login   |   Add login to securityadmin fixed server role   |   ALTER SERVER ROLE securityadmin ADD MEMBER `login`   |   None   |   Version 4.5 and higher, 5.1 and higher   | 

## Unsupported use cases with the workarounds
<a name="babelfish-permissions-unsupported"></a>

 The following table explains the use cases that aren't supported in Babelfish, but which can be achieved using a workaround. 


|  Use case  |  Action  |  SQL commands  |  Comments  |  Babelfish version compatibility for workarounds  | 
| --- | --- | --- | --- | --- | 
|   Allow user to do SELECTs/DMLs on an object/schema along with option to GRANT these permissions to other users   |   GRANT the permissions to all the other users directly   |   GRANT SELECT/EXECUTE/INSERT/UPDATE/DELETE ON OBJECT/SCHEMA::`object`/`schema` TO `user`   |   GRANT ... WITH GRANT OPTION isn't currently supported.   |   Version 3.6 and higher, 4.2 and higher   | 
|   Allow database user to do SELECTs/DMLs/DDLs in a database including dropping database   |   Add members of role to db\$1owner fixed database role   |   ALTER ROLE db\$1owner ADD MEMBER `user`   |   Adding roles to db\$1owner role isn't currently supported.   |   Version 4.5 and higher, 5.1 and higher   | 

## Unsupported use cases
<a name="babelfish-permissions-unsupported"></a>

 The following table explains the use cases that aren't supported in Babelfish. 


|  Use case  |  Comments  | 
| --- | --- | 
|  Deny user or members of a custom database role to do SELECTs in a database   |   db\$1denydatareader fixed database role is not yet supported   | 
|  Deny user or members of a custom database role to do DMLs in a database   |   db\$1denydatawriter fixed database role isn't currently supported.   | 
|  Allow login to only KILL any database connection   |   processadmin fixed server role isn't currently supported.   | 
|  Allow login to only add or remove linked servers   |   setupadmin fixed server role isn't currently supported.   | 

# Addressing object ownership differences after upgrade
<a name="babelfish-ownership-differences"></a>

Babelfish versions 4.6 and later, and 5.2 and later include a change to object ownership handling through the TDS endpoint. When you create new objects through the TDS endpoint, these objects are now owned by the schema owner instead of the current user. This ownership change might affect permissions behavior for new objects compared to existing objects when you upgrade from versions earlier than 4.6 or 5.2.

To resolve these ownership differences, Babelfish provides the `sys.generate_alter_ownership_statements()` function. This function generates SQL statements that align object ownership with schema ownership.

Be aware of the following limitations when addressing object ownership:
+ Users with CREATE permissions granted through the PostgreSQL endpoint can't create objects through the TDS endpoint in those schemas.
+ Modifying permissions on T-SQL objects through the PostgreSQL endpoint is not recommended and might cause incorrect T-SQL behavior.
+ Access permissions might differ between old and new objects because of their ownership mismatch. For example, consider a schema owned by `sch_own` that includes objects owned by `dbo`. In this case, objects owned by `dbo` that were created before the upgrade might have different access permissions compared to objects owned by `sch_own` that were created after the upgrade. This may affect operations like SELECT and INSERT.

If your DB cluster includes objects created in Babelfish versions earlier than 4.6 or 5.2, consider aligning their ownership.

**To address object ownership differences**

1. Connect to the `babelfish_db` database in your DB cluster using the PostgreSQL endpoint.

1. Run the following command:

   ```
   SELECT * from sys.generate_alter_ownership_statements();
   ```

   This generates a list of SQL statements intended to standardize ownership among the objects.

1. Execute the generated statements on a test environment first to validate their effect before applying on your production environment.

We recommend that you execute these statements to achieve a consistent object ownership model across your database.

# Differences between Babelfish for Aurora PostgreSQL and SQL Server
<a name="babelfish-compatibility"></a>

Babelfish is an evolving Aurora PostgreSQL feature, with new functionality added in each release since the initial offering in Aurora PostgreSQL 13.4. It's designed to provide T-SQL semantics on top of PostgreSQL through the T-SQL dialect using the TDS port. Each new version of Babelfish adds features and functions that better align with T-SQL functionality and behavior, as shown in the [Supported functionalities in Babelfish by version](babelfish-compatibility.supported-functionality-table.md) table. For best results when working with Babelfish, we recommend that you understand the differences that currently exist between the T-SQL supported by SQL Server and Babelfish for the latest version. To learn more, see [T-SQL differences in Babelfish](babelfish-compatibility.tsql.limitations.md).

In addition to the differences between T-SQL supported by Babelfish and SQL Server, you might also need to consider interoperability issues between Babelfish and PostgreSQL in the context of the Aurora PostgreSQL DB cluster. As mentioned previously, Babelfish supports T-SQL semantics on top of PostgreSQL through the T-SQL dialect using the TDS port. At the same time, the Babelfish database can also be accessed through the standard PostgreSQL port with PostgreSQL SQL statements. If you're considering using both PostgreSQL and Babelfish functionality in a production deployment, you need to be aware of the potential interoperability issues between schema names, identifiers, permissions, transactional semantics, multiple result sets, default collations, and so on. In simple terms, when PostgreSQL statements or PostgreSQL access occur in the context of Babelfish, interference between PostgreSQL and Babelfish can occur and can potentially affecting syntax, semantics, and compatibility when new versions of Babelfish are released. For complete information and guidance about all the considerations, see the [Guidance on Babelfish Interoperability](https://babelfishpg.org/docs/usage/interoperability/) in the Babelfish for PostgreSQL documentation. 

**Note**  
Before using both PostgreSQL native functionality and Babelfish functionality in the same application context, we strongly recommend that you consider the issues discussed in the [Guidance on Babelfish Interoperability](https://babelfishpg.org/docs/usage/interoperability/) in the Babelfish for PostgreSQL documentation. These interoperability issues (Aurora PostgreSQL and Babelfish) are relevant only if you plan to use the PostgreSQL database instance in the same application context as Babelfish. 

**Topics**
+ [Babelfish dump and restore](#babelfish-compatibility.dumprestore)
+ [T-SQL differences in Babelfish](babelfish-compatibility.tsql.limitations.md)
+ [Transaction isolation levels in Babelfish](babelfish-transaction.md)

## Babelfish dump and restore
<a name="babelfish-compatibility.dumprestore"></a>

Starting with version 4.0.0 and 3.4.0, Babelfish users can now utilize the dump and restore utilities to backup and restore their databases. For more information, see [Babelfish dump and restore](https://github.com/babelfish-for-postgresql/babelfish-for-postgresql/wiki/Babelfish-Dump-and-Restore). This feature is built on top of PostgreSQL dump and restore utilities. For more information, see [pg\$1dump](https://www.postgresql.org/docs/current/app-pgdump.html) and see [pg\$1restore](https://www.postgresql.org/docs/current/app-pgrestore.html). In order to effectively use this feature in Babelfish, you need to use PostgreSQL-based tools that are specifically adapted for Babelfish. The backup and restore feature for Babelfish differs significantly from that of SQL Server. For more information on these differences, see [Dump and restore functionality differences : Babelfish and SQL Server](https://github.com/babelfish-for-postgresql/babelfish-for-postgresql/wiki/Babelfish-Dump-and-Restore#differences). Babelfish for Aurora PostgreSQL provides additional capabilities for backing up and restoring Amazon Aurora PostgreSQL DB clusters. For more information, see [Backing up and restoring an Amazon Aurora DB cluster](BackupRestoreAurora.md).

# T-SQL differences in Babelfish
<a name="babelfish-compatibility.tsql.limitations"></a>

Following, you can find a table of T-SQL functionality as supported in the current release of Babelfish with some notes about differences in the behavior from that of SQL Server.

For more information about support in various versions, see [Supported functionalities in Babelfish by version](babelfish-compatibility.supported-functionality-table.md). For information about features that currently aren't supported, see [Unsupported functionalities in Babelfish](babelfish-compatibility.tsql.limitations-unsupported.md). 

Babelfish is available with Aurora PostgreSQL-Compatible Edition. For more information about Babelfish releases, see the [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html).


| Functionality or syntax | Description of behavior or difference | 
| --- | --- | 
| \$1 (line continuation character) | The line continuation character (a backslash prior to a newline) for character and hexadecimal strings isn't currently supported. For character strings, the backslash-newline is interpreted as characters in the string. For hexadecimal strings, backslash-newline results in a syntax error.  | 
| @@version | The format of the value returned by `@@version` is slightly different from the value returned by SQL Server. Your code might not work correctly if it depends on the formatting of `@@version`. | 
| Aggregate functions | Aggregate functions are partially supported (AVG, COUNT, COUNT\$1BIG, GROUPING, MAX, MIN, STRING\$1AGG, and SUM are supported). For a list of unsupported aggregate functions, see [Functions that aren't supported](babelfish-compatibility.tsql.limitations-unsupported.md#babelfish-compatibility.tsql.limitations-unsupported-list4). | 
|  ALTER TABLE  | Supports adding or dropping a single column or constraint only.  | 
|  ALTER TABLE..ALTER COLUMN  | NULL and NOT NULL can't currently be specified. To change the nullability of a column, use the postgreSQL statement ALTER TABLE..\$1SET\$1DROP\$1 NOT NULL.  | 
|  AT TIME ZONE  | During the transition from Daylight Saving Time (DST) to Standard Time, the overlapping period is displayed using the Standard Time offset. To clarify, consider the following example:  <pre>SELECT CONVERT(DATETIME2(0), '2022-10-30T02:00:00', 126) AT TIME ZONE 'Central European Standard Time';<br />GO;<br />Result: 2022-10-30 02:00:00 +01:00</pre>  | 
| Blank column names with no column alias | The `sqlcmd` and `psql` utilities handle columns with blank names differently: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-compatibility.tsql.limitations.html)  | 
| CHECKSUM function | Babelfish and SQL Server use different hashing algorithms for the CHECKSUM function. As a result, the hash values generated by CHECKSUM function in Babelfish might be different from those generated by CHECKSUM function in SQL Server. | 
| Column default | When creating a column default, the constraint name is ignored. To drop a column default, use the following syntax: `ALTER TABLE...ALTER COLUMN..DROP DEFAULT...` | 
| Constraint\$1name | In SQL Server, constraint names must be unique within the schema to which the table belongs. However, in Babelfish, this applies only to PRIMARY KEY and UNIQUE constraints. Other types of constraints are not subject to this restriction. | 
| Constraints | PostgreSQL doesn't support turning on and turning off individual constraints. The statement is ignored and a warning is raised. | 
| Constraints with IGNORE\$1DUP\$1KEY | Constraints are created without this property. | 
| CREATE, ALTER, DROP SERVER ROLE |  ALTER SERVER ROLE is supported only for `sysadmin`. All other syntax is unsupported. The T-SQL user in Babelfish has an experience that is similar to SQL Server for the concepts of a login (server principal), a database, and a database user (database principal).  | 
| CREATE, ALTER LOGIN clauses are supported with limited syntax | The CREATE LOGIN... PASSWORD clause, ...DEFAULT\$1DATABASE clause, and ...DEFAULT\$1LANGUAGE clause are supported. The ALTER LOGIN... PASSWORD clause is supported, but ALTER LOGIN... OLD\$1PASSWORD clause isn't supported. Only a login that is a sysadmin member can modify a password. | 
| CREATE DATABASE case-sensitive collation  | Case-sensitive collations aren't supported with the CREATE DATABASE statement. | 
| CREATE DATABASE keywords and clauses | Options except COLLATE and CONTAINMENT=NONE aren't supported. The COLLATE clause is accepted and is always set to the value of `babelfishpg_tsql.server_collation_name`. | 
| CREATE SCHEMA... supporting clauses | You can use the CREATE SCHEMA command to create an empty schema. Use additional commands to create schema objects. | 
| Database ID values are different on Babelfish  |  The master and tempdb databases won't be database IDs 1 and 2.  | 
|  FORMAT date type function is supported with the following limitations | Single character meridian isn't supported. "yyy" format in SQL server returns 4 digits for year above 1000, but only 3 digits for others. "g" and "R" formats aren't supported "vi-VN" locale translation is slightly different. | 
| Identifiers exceeding 63 characters | PostgreSQL supports a maximum of 63 characters for identifiers. Babelfish converts identifiers longer than 63 characters to a name that includes a hash of the original name. For example, a table created as "AB(ABC1234567890123456789012345678901234567890123456789012345678901234567890" might be converted to "ABC123456789012345678901234567890123456789012345678901234567890".  | 
| IDENTITY columns support | IDENTITY columns are supported for data types tinyint, smallint, int, bigint. numeric, and decimal. SQL Server supports precision to 38 places for data types `numeric` and `decimal` in IDENTITY columns.PostgreSQL supports precision to 19 places for data types `numeric` and `decimal` in IDENTITY columns. | 
| Indexes with IGNORE\$1DUP\$1KEY | Syntax that creates an index that includes IGNORE\$1DUP\$1KEY creates an index as if this property is omitted. | 
| Indexes with more than 32 columns | An index can't include more than 32 columns. Included index columns count toward the maximum in PostgreSQL but not in SQL Server. | 
| Indexes (clustered) | Clustered indexes are created as if NONCLUSTERED was specified. | 
| Index clauses | The following clauses are ignored: FILLFACTOR, ALLOW\$1PAGE\$1LOCKS, ALLOW\$1ROW\$1LOCKS, PAD\$1INDEX, STATISTICS\$1NORECOMPUTE, OPTIMIZE\$1FOR\$1SEQUENTIAL\$1KEY, SORT\$1IN\$1TEMPDB, DROP\$1EXISTING, ONLINE, COMPRESSION\$1DELAY, MAXDOP, and DATA\$1COMPRESSION | 
| JSON support |  Order of the name-value pairs isn't guaranteed. But the array type remains unaffected. | 
| LOGIN objects | All options for LOGIN objects are not supported except for PASSWORD, DEFAULT\$1DATABASE, DEFAULT\$1LANGUAGE, ENABLE, DISABLE. | 
| NEWSEQUENTIALID function | Implemented as NEWID; sequential behavior isn't guaranteed. When calling `NEWSEQUENTIALID`, PostgreSQL generates a new GUID value. | 
| OUTPUT clause is supported with the following limitations | OUTPUT and OUTPUT INTO aren't supported in the same DML query. References to non-target table of UPDATE or DELETE operations in an OUTPUT clause aren't supported. OUTPUT... DELETED \$1, INSERTED \$1 aren't supported in the same query. | 
| Procedure or function parameter limit | Babelfish supports a maximum of 100 parameters for a procedure or function. | 
| ROWGUIDCOL | This clause is currently ignored. Queries referencing `$GUIDGOL` cause a syntax error. | 
| SEQUENCE object support | SEQUENCE objects are supported for the data types tinyint, smallint, int, bigint, numeric, and decimal. Aurora PostgreSQL supports precision to 19 places for data types numeric and decimal in a SEQUENCE. | 
| Server-level roles | The `sysadmin` server-level role is supported. Other server-level roles (other than `sysadmin`) aren't supported. | 
| Database-level roles other than `db_owner` | The `db_owner` database-level roles and user-defined database-level roles are supported. Other database-level roles (other than db\$1owner) aren't supported. | 
| SQL keyword SPARSE | The keyword SPARSE is accepted and ignored. | 
| SQL keyword clause `ON filegroup` | This clause is currently ignored. | 
| SQL keywords `CLUSTERED` and `NONCLUSTERED` for indexes and constraints | Babelfish accepts and ignores the `CLUSTERED` and `NONCLUSTERED` keywords. | 
| `sysdatabases.cmptlevel` | `sysdatabases.cmptlevel` is always set to 120. | 
| tempdb isn't reinitialized at restart | Permanent objects (like tables and procedures) created in tempdb aren't removed when the database is restarted. | 
| TEXTIMAGE\$1ON filegroup | Babelfish ignores the `TEXTIMAGE_ON` *`filegroup`* clause. | 
| Time precision | Babelfish supports 6-digit precision for fractional seconds. No adverse effects are anticipated with this behavior. | 
| Transaction isolation levels | READUNCOMMITTED is treated the same as READCOMMITTED. | 
| Virtual computed columns (non-persistent) | Virtual computed columns are created as persistent. | 
| Without SCHEMABINDING clause | This clause isn't supported in functions, procedures, triggers, or views. The object is created, but as if WITH SCHEMABINDING was specified. | 

# Transaction isolation levels in Babelfish
<a name="babelfish-transaction"></a>

Babelfish supports transaction isolation levels `READ UNCOMMITTED`, `READ COMMITTED` and `SNAPSHOT`. Starting from Babelfish 3.4 version additional isolation levels `REPEATABLE READ` and `SERIALIZABLE` are supported. All the isolation levels in Babelfish are supported with the behavior of corresponding isolation levels in PostgreSQL. SQL Server and Babelfish use different underlying mechanisms for implementing transaction isolation levels (blocking for concurrent access, locks held by transactions, error handling etc). And, there are some subtle differences in how concurrent access may work out for different workloads. For more information on this PostgreSQL behavior, see [Transaction Isolation](https://www.postgresql.org/docs/current/transaction-iso.html). 

**Topics**
+ [Overview of the transaction isolation levels](#babelfish-transaction.overview)
+ [Setting up the transaction isolation levels](#babelfish-transaction.setting)
+ [Enabling or disabling transaction isolation levels](#babelfish-transaction.enabling)
+ [Comparing Babelfish and SQL Server isolation levels](babelfish-transaction.examples.md)

## Overview of the transaction isolation levels
<a name="babelfish-transaction.overview"></a>

 The original SQL Server transaction isolation levels are based on pessimistic locking where only one copy of data exists and queries must lock resources such as rows before accessing them. Later, a variation of the `READ COMMITTED` isolation level was introduced. This enables the use of row versions to provide better concurrency between readers and writers using non-blocking access. In addition, a new isolation level called `SNAPSHOT` is available. It also uses row versions to provide better concurrency than `REPEATABLE READ` isolation level by avoiding shared locks on read data that are held till the end of the transaction.

Unlike SQL Server, all transaction isolation levels in Babelfish are based on optimistic Locking (MVCC). Each transaction sees a snapshot of the data either at the beginning of the statement (`READ COMMITTED`) or at the beginning of the transaction (`REPEATABLE READ`, `SERIALIZABLE`), regardless of the current state of the underlying data. Therefore, the execution behavior of concurrent transactions in Babelfish might differ from SQL Server.

For example, consider a transaction with isolation level `SERIALIZABLE` that is initially blocked in SQL Server but succeeds later. It may end up failing in Babelfish due to a serialization conflict with a concurrent transaction that reads or updates the same rows. There could also be cases where executing multiple concurrent transactions yields a different final result in Babelfish as compared to SQL Server. Applications that use isolation levels, should be thoroughly tested for concurrency scenarios. 


| Isolation levels in SQL Server | Babelfish isolation level | PostgreSQL isolation level | Comments | 
| --- | --- | --- | --- | 
|  `READ UNCOMMITTED`  |  `READ UNCOMMITTED`  |  `READ UNCOMMITTED`  |  `READ UNCOMMITTED` is same as `READ COMMITTED` in Babelfish or PostgreSQL  | 
|  `READ COMMITTED`  |  `READ COMMITTED`  |  `READ COMMITTED`  |  SQL Server `READ COMMITTED` is pessimistic locking based, Babelfish `READ COMMITTED` is snapshot (MVCC) based.  | 
|  `READ COMMITTED SNAPSHOT`  |  `READ COMMITTED`  |  `READ COMMITTED`  |  Both are snapshot (MVCC) based but not exactly same.  | 
|  `SNAPSHOT`  |  `SNAPSHOT`  |  `REPEATABLE READ`  |  Exactly same.  | 
|  `REPEATABLE READ`  |  `REPEATABLE READ`  |  `REPEATABLE READ`  |  SQL Server `REPEATABLE READ` is pessimistic locking based, Babelfish `REPEATABLE READ` is snapshot (MVCC) based.  | 
|  `SERIALIZABLE`  |  `SERIALIZABLE`  |  `SERIALIZABLE`  |  SQL Server `SERIALIZABLE` is pessimistic isolation, Babelfish `SERIALIZABLE` is snapshot (MVCC) based.  | 

**Note**  
The table hints are not currently supported and their behavior is controlled by using the Babelfish predefined escape hatch `escape_hatch_table_hints`.

## Setting up the transaction isolation levels
<a name="babelfish-transaction.setting"></a>

Use the following command to set transaction isolation level:

**Example**  

```
SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }
```

## Enabling or disabling transaction isolation levels
<a name="babelfish-transaction.enabling"></a>

Transaction isolation levels `REPEATABLE READ` and `SERIALIZABLE` are disabled by default in Babelfish and you have to explicitly enable them by setting the `babelfishpg_tsql.isolation_level_serializable` or `babelfishpg_tsql.isolation_level_repeatable_read` escape hatch to `pg_isolation` using `sp_babelfish_configure`. For more information, see [Managing Babelfish error handling with escape hatches](babelfish-strict.md).

Below are examples for enabling or disabling the use of `REPEATABLE READ` and `SERIALIZABLE` in the current session by setting their respective escape hatches. Optionally include `server` parameter to set the escape hatch for the current session as well as for all subsequent new sessions.

 To enable the use of `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ` in current session only. 

**Example**  

```
EXECUTE sp_babelfish_configure 'isolation_level_repeatable_read', 'pg_isolation'
```

 To enable the use of `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ` in current session and all consequent new sessions. 

**Example**  

```
EXECUTE sp_babelfish_configure 'isolation_level_repeatable_read', 'pg_isolation', 'server'
```

 To disable the use of `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ` in current session and consequent new sessions. 

**Example**  

```
EXECUTE sp_babelfish_configure 'isolation_level_repeatable_read', 'off', 'server'
```

 To enable the use of `SET TRANSACTION ISOLATION LEVEL SERIALIZABLE` in current session only. 

**Example**  

```
EXECUTE sp_babelfish_configure 'isolation_level_serializable', 'pg_isolation'
```

 To enable the use of `SET TRANSACTION ISOLATION LEVEL SERIALIZABLE` in current session and all consequent new sessions. 

**Example**  

```
EXECUTE sp_babelfish_configure 'isolation_level_serializable', 'pg_isolation', 'server'
```

 To disable the use of `SET TRANSACTION ISOLATION LEVEL SERIALIZABLE` in current session and consequent new sessions. 

**Example**  

```
EXECUTE sp_babelfish_configure 'isolation_level_serializable', 'off', 'server'
```

# Comparing Babelfish and SQL Server isolation levels
<a name="babelfish-transaction.examples"></a>

 Below are a few examples on the nuances in how SQL Server and Babelfish implement the ANSI isolation levels. 

**Note**  
Isolation level `REPEATABLE READ` and `SNAPSHOT` are the same in Babelfish.
Isolation level `READ UNCOMMITTED` and `READ COMMITTED` are the same in Babelfish.

The following example shows how to create the base table for all the examples mentioned below:

```
CREATE TABLE employee (
    id sys.INT NOT NULL PRIMARY KEY,
    name sys.VARCHAR(255)NOT NULL,
    age sys.INT NOT NULL
);
INSERT INTO employee (id, name, age) VALUES (1, 'A', 10);
INSERT INTO employee (id, name, age) VALUES (2, 'B', 20);
INSERT INTO employee (id, name, age) VALUES (3, 'C', 30);
```

**Topics**
+ [Babelfish `READ UNCOMMITTED` compared with SQL Server `READ UNCOMMITTED` isolation level](#babelfish-transaction.examples.unc)
+ [Babelfish `READ COMMITTED` compared with SQL Server `READ COMMITTED` isolation level](#babelfish-transaction.examples.com)
+ [Babelfish `READ COMMITTED` compared with SQL Server `READ COMMITTED SNAPSHOT` isolation level](#babelfish-transaction.examples.snapshot)
+ [Babelfish `REPEATABLE READ` compared with SQL Server `REPEATABLE READ` isolation level](#babelfish-transaction.examples.read)
+ [Babelfish `SERIALIZABLE` compared with SQL Server `SERIALIZABLE` isolation level](#babelfish-transaction.examples.serialize)

## Babelfish `READ UNCOMMITTED` compared with SQL Server `READ UNCOMMITTED` isolation level
<a name="babelfish-transaction.examples.unc"></a>

The following table provides details on the dirty reads when concurrent transactions are executed. It shows observed results when using the `READ UNCOMMITTED` isolation level in SQL Server compared to the Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `READ UNCOMMITTED` | Babelfish `READ UNCOMMITTED` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;`  |  `SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;`  |  None  |  None  | 
|  Idle in transaction  |  `UPDATE employee SET age=0;`  |  Update successful.  |  Update successful.  | 
|  Idle in transaction  |  `INSERT INTO employee VALUES (4, 'D', 40);`  |  Insert successful.  |  Insert successful.  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Transaction 1 can see uncommitted changes from transaction 2.  |  Same as `READ COMMITTED` in Babelfish. Uncommitted changes from transaction 2 are not visible to transaction 1.   | 
|  Idle in transaction  |  `COMMIT`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Sees the changes committed by transaction 2.  |  Sees the changes committed by transaction 2.  | 

## Babelfish `READ COMMITTED` compared with SQL Server `READ COMMITTED` isolation level
<a name="babelfish-transaction.examples.com"></a>

The following table provides details on the read-write blocking behavior when concurrent transactions are executed. It shows observed results when using the `READ COMMITTED` isolation level in SQL Server compared to the Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `READ COMMITTED` | Babelfish `READ COMMITTED` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL READ COMMITTED;`  |  `SET TRANSACTION ISOLATION LEVEL READ COMMITTED;`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `UPDATE employee SET age=100 WHERE id = 1;`  |  Update successful.  |  Update successful.  | 
|  `UPDATE employee SET age = 0 WHERE age IN (SELECT MAX(age) FROM employee);`  |  Idle in transaction  |  Step blocked until transaction 2 commits.  |  Transaction 2 changes is not visible yet. Updates row with id=3.  | 
|  Idle in transaction  |  `COMMIT`  |  Transaction 2 commits successfully. Transaction 1 is now unblocked and sees the update from transaction 2.  |  Transaction 2 commits successfully.   | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Transaction 1 updates row with id = 1.  |  Transaction 1 updates row with id = 3.  | 

## Babelfish `READ COMMITTED` compared with SQL Server `READ COMMITTED SNAPSHOT` isolation level
<a name="babelfish-transaction.examples.snapshot"></a>

The following table provides details on the blocking behavior of the newly inserted rows when concurrent transactions are executed. It shows observed results when using the `READ COMMITTED SNAPSHOT` isolation level in SQL Server compared to the `READ COMMITTED` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `READ COMMITTED SNAPSHOT` | Babelfish `READ COMMITTED` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL READ COMMITTED;`  |  `SET TRANSACTION ISOLATION LEVEL READ COMMITTED;`  |  None  |  None  | 
|  `INSERT INTO employee VALUES (4, 'D', 40);`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `UPDATE employee SET age = 99;`  |  Step is blocked until transaction 1 commits. Inserted row is locked by transaction 1.  |  Updated three rows. The newly inserted row is not visible yet.  | 
|  `COMMIT`  |  Idle in transaction  |  Commit successful. Transaction 2 is now unblocked.  |  Commit successful.  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  All 4 rows have age=99.  |  Row with id = 4 has age value 40 since it was not visible to transaction 2 during update query. Other rows are updated to age=99.   | 

## Babelfish `REPEATABLE READ` compared with SQL Server `REPEATABLE READ` isolation level
<a name="babelfish-transaction.examples.read"></a>

The following table provides details on the read-write blocking behavior when concurrent transactions are executed. It shows observed results when using the `REPEATABLE READ` isolation level in SQL Server compared to the `REPEATABLE READ` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `REPEATABLE READ` | Babelfish `REPEATABLE READ` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  None  |  None  | 
|  `UPDATE employee SET name='A_TXN1' WHERE id=1;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `SELECT * FROM employee WHERE id != 1;`  |  None  |  None  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  Transaction 2 is blocked until transaction 1 commits.  |  Transaction 2 proceeds normally.   | 
|  `COMMIT`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  Update from transaction 1 is visible.  |  Update from transaction 1 is not visible.  | 
|  `COMMIT`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  sees the update from transaction 1.  |  sees the update from transaction 1.  | 

The following table provides details on the write-write blocking behavior when concurrent transactions are executed. It shows observed results when using the `REPEATABLE READ` isolation level in SQL Server compared to the `REPEATABLE READ` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `REPEATABLE READ` | Babelfish `REPEATABLE READ` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  None  |  None  | 
|  `UPDATE employee SET name='A_TXN1' WHERE id=1;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `UPDATE employee SET name='A_TXN2' WHERE id=1;`  |  Transaction 2 blocked.  |  Transaction 2 blocked.  | 
|  `COMMIT`  |  Idle in transaction  |  Commit successful and transaction 2 has been unblocked.  |  Commit successful and transaction 2 fails with error could not serialize access due to concurrent update.  | 
|  Idle in transaction  |  `COMMIT`  |  Commit successful.  |  Transaction 2 has already been aborted.  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  Row with id=1 has name='A\$1TX2'.  |  Row with id=1 has name='A\$1TX1'.  | 

The following table provides details on the phantom reads behavior when concurrent transactions are executed. It shows observed results when using the `REPEATABLE READ` isolation level in SQL Server compared to the `REPEATABLE READ` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `REPEATABLE READ` | Babelfish `REPEATABLE READ` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `INSERT INTO employee VALUES (4, 'NewRowName', 20);`  |  Transaction 2 proceeds without any blocking.  |  Transaction 2 proceeds without any blocking.  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  Newly inserted row is visible.  |  Newly inserted row is visible.  | 
|  Idle in transaction  |  `COMMIT`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  New row inserted by transaction 2 is visible.  |  New row inserted by transaction 2 is not visible.  | 
|  `COMMIT`  |  Idle in transaction  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Newly inserted row is visible.  |  Newly inserted row is visible.  | 

The following table provides details when concurrent transactions are executed and the different final results when using the `REPEATABLE READ` isolation level in SQL Server compared to the `REPEATABLE READ` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `REPEATABLE READ` | Babelfish `REPEATABLE READ` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  None  |  None  | 
|  `UPDATE employee SET age = 100 WHERE age IN (SELECT MIN(age) FROM employee);`  |  Idle in transaction  |  Transaction 1 updates row with id 1.  |  Transaction 1 updates row with id 1.  | 
|  Idle in transaction  |  `UPDATE employee SET age = 0 WHERE age IN (SELECT MAX(age) FROM employee);`  |  Transaction 2 is blocked since the SELECT statement tries to read rows locked by UPDATE query in transaction 1.  |  Transaction 2 proceeds without any blocking since read is never blocked, SELECT statement executes and finally row with id = 3 is updated since transaction 1 changes are not visible yet.  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  This step is executed after transaction 1 has committed. Row with id = 1 is updated by transaction 2 in previous step and is visible here.  |  Row with id = 3 is updated by Transaction 2.  | 
|  `COMMIT`  |  Idle in transaction  |  Transaction 2 is now unblocked.  |  Commit successful.  | 
|  Idle in transaction  |  `COMMIT`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Both transaction execute update on row with id = 1.  |  Different rows are updated by transaction 1 and 2.  | 

## Babelfish `SERIALIZABLE` compared with SQL Server `SERIALIZABLE` isolation level
<a name="babelfish-transaction.examples.serialize"></a>

The following table provides details on the range locks when concurrent transactions are executed. It shows observed results when using the `SERIALIZABLE` isolation level in SQL Server compared to the `SERIALIZABLE` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `SERIALIZABLE` | Babelfish `SERIALIZABLE` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `INSERT INTO employee VALUES (4, 'D', 35);`  |  Transaction 2 is blocked until transaction 1 commits.  |  Transaction 2 proceeds without any blocking.  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  None  |  None  | 
|  `COMMIT`  |  Idle in transaction  |  Transaction 1 commits successfully. Transaction 2 is now unblocked.  |  Transaction 1 commits successfully.   | 
|  Idle in transaction  |  `COMMIT`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Newly inserted row is visible.  |  Newly inserted row is visible.  | 

The following table provides details when concurrent transactions are executed and the different final results when using the `SERIALIZABLE` isolation level in SQL Server compared to the `SERIALIZABLE` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `SERIALIZABLE` | Babelfish `SERIALIZABLE` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  None  |  None  | 
|  Idle in transaction  |  `INSERT INTO employee VALUES (4, 'D', 40);`  |  None  |  None  | 
|  `UPDATE employee SET age =99 WHERE id = 4;`  |  Idle in transaction  |  Transaction 1 is blocked until transaction 2 commits.  |  Transaction 1 proceeds without any blocking.  | 
|  Idle in transaction  |  `COMMIT`  |  Transaction 2 commits successfully. Transaction 1 is now unblocked.  |  Transaction 2 commits successfully.  | 
|  `COMMIT`  |  Idle in transaction  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Newly inserted row is visible with age value = 99.  |  Newly inserted row is visible with age value = 40.  | 

The following table provides details when you `INSERT` into a table with unique constraint. It shows observed results when using the `SERIALIZABLE` isolation level in SQL Server compared to the `SERIALIZABLE` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `SERIALIZABLE` | Babelfish `SERIALIZABLE` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  None  |  None  | 
|  Idle in transaction  |  `INSERT INTO employee VALUES (4, 'D', 40);`  |  None  |  None  | 
|  `INSERT INTO employee VALUES ((SELECT MAX(id)+1 FROM employee), 'E', 50);`  |  Idle in transaction  |  Transaction 1 is blocked until transaction 2 commits.  |  Transaction 1 is blocked until transaction 2 commits.  | 
|  Idle in transaction  |  `COMMIT`  |  Transaction 2 commits successfully. Transaction 1 is now unblocked.  |  Transaction 2 commits successfully. Transaction 1 aborted with error duplicate key value violates unique constraint.  | 
|  `COMMIT`  |  Idle in transaction  |  Transaction 1 commits successfully.  |  Transaction 1 commits fails with could not serialize access due to read or write dependencies among transactions.  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  row (5, 'E', 50) is inserted.  |  Only 4 rows exists.  | 

In Babelfish, concurrent transactions running with Isolation Level serializable will fail with serialization anomaly error if the execution of these transaction is inconsistent with all possible serial (one at a time) executions of those transactions.

The following tables provides details on serialization anomaly when concurrent transactions are executed. It shows observed results when using the `SERIALIZABLE` isolation level in SQL Server compared to the `SERIALIZABLE` Babelfish implementation.


| Transaction 1 | Transaction 2 | SQL Server `SERIALIZABLE` | Babelfish `SERIALIZABLE` | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  None  |  None  | 
|  `UPDATE employee SET age=5 WHERE age=10;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  Transaction 2 is blocked until transaction 1 commits.  |  Transaction 2 proceeds without any blocking.  | 
|  Idle in transaction  |  `UPDATE employee SET age=35 WHERE age=30;`  |  None  |  None  | 
|  `COMMIT`  |  Idle in transaction  |  Transaction 1 commits successfully.  |  Transaction 1 is committed first and is able to commit successfully.  | 
|  Idle in transaction  |  `COMMIT`  |  Transaction 2 commits successfully.  |  Transaction 2 commit fails with serialization error, the whole transaction has been rolled back. Retry transaction 2.  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Changes from both transactions are visible.  |  Transaction 2 was rolled back. Only transaction 1 changes are seen.  | 

In Babelfish, serialization anomaly is only possible if all the concurrent transactions are executing at isolation level `SERIALIZABLE`. In the following table, lets take the above example but set transaction 2 to isolation level `REPEATABLE READ` instead.


| Transaction 1 | Transaction 2 | SQL Server isolation levels | Babelfish isolation levels | 
| --- | --- | --- | --- | 
|  `BEGIN TRANSACTION`  |  `BEGIN TRANSACTION`  |  None  |  None  | 
|  `SET TRANSACTION ISOLATION LEVEL SERILAIZABLE;`  |  `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;`  |  None  |  None  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  None  |  None  | 
|  `UPDATE employee SET age=5 WHERE age=10;`  |  Idle in transaction  |  None  |  None  | 
|  Idle in transaction  |  `SELECT * FROM employee;`  |  Transaction 2 is blocked until transaction 1 commits.  |  Transaction 2 proceeds without any blocking.  | 
|  Idle in transaction  |  `UPDATE employee SET age=35 WHERE age=30;`  |  None  |  None  | 
|  `COMMIT`  |  Idle in transaction  |  Transaction 1 commits successfully.  |  Transaction 1 commits successfully.  | 
|  Idle in transaction  |  `COMMIT`  |  Transaction 2 commits successfully.  |  Transaction 2 commits successfully.  | 
|  `SELECT * FROM employee;`  |  Idle in transaction  |  Changes from both transactions are visible.  |  Changes from both transactions are visible.  | 

# Using Babelfish features with limited implementation
<a name="babelfish-compatibility.tsql.limited-implementation"></a>

Each new version of Babelfish adds support for features that better align with T-SQL functionality and behavior. Still, there are some unsupported features and differences in the current implementation. In the following, you can find information about functional differences between Babelfish and T-SQL, with some workarounds or usage notes.

As of version 1.2.0 of Babelfish, the following features currently have limited implementations:
+ **SQL Server catalogs (system views)** – The catalogs `sys.sysconfigures`, `sys.syscurconfigs`, and `sys.configurations` support a single read-only configuration only. The `sp_configure` isn't currently supported. For more information about the other SQL Server views implemented by Babelfish, see [Getting information from the Babelfish system catalog](babelfish-query-database.md). 
+ **GRANT permissions** – GRANT…TO PUBLIC is supported, but GRANT..TO PUBLIC WITH GRANT OPTION is not currently supported. 
+ **SQL Server *ownership chain* and permission mechanism limitation** – In Babelfish, the SQL Server ownership chain works for views but not for stored procedures. This means that procedures must be granted explicit access to other objects owned by the same owner as the calling procedures. In SQL Server, granting the caller EXECUTE permissions on the procedure is sufficient to call other objects owned by same owner. In Babelfish, caller must also be granted permissions on the objects accessed by the procedure. 
+ **Resolution of unqualified (without schema name) object references** – When a SQL object (procedure, view, function or trigger) references an object without qualifying it with a schema name, SQL Server resolves the object's schema name by using the schema name of the SQL object in which the reference occurs. Currently, Babelfish resolves this differently, by using the default schema of the database user executing the procedure. 
+ **Default schema changes, sessions, and connections** – If users change their default schema with `ALTER USER...WITH DEFAULT SCHEMA`, the change takes effect immediately in that session. However, for other currently connected sessions belonging to the same user, the timing differs, as follows:
  + For SQL Server: – The change takes effect across all other connections for this user immediately.
  + For Babelfish: – The change takes effect for this user for new connections only.
+ **ROWVERSION and TIMESTAMP datatypes implementation and escape hatch setting** – The ROWVERSION and TIMESTAMP datatypes are now supported in Babelfish. To use ROWVERSION or TIMESTAMP in Babelfish, you must change the setting for the escape hatch `babelfishpg_tsql.escape_hatch_rowversion` from its default (strict) to `ignore`. The Babelfish implementation of the ROWVERSION and TIMESTAMP datatypes is mostly semantically identical to SQL Server, with the following exceptions: 
  + The built-in @@DBTS function behaves similarly to SQL Server, but with small differences. Rather than returning the last-used value for `SELECT @@DBTS`, Babelfish generates a new timestamp, due to the underlying PostgreSQL database engine and its multi-version concurrency control (MVCC) implementation.
  + In SQL Server, every inserted or updated row gets a unique ROWVERSION/TIMESTAMP value. In Babelfish, every inserted row updated by the same statement is assigned the same ROWVERSION/TIMESTAMP value.

    For example, when an UPDATE statement or INSERT-SELECT statement affects multiple rows, in SQL Server, the affected rows all have different values in their ROWVERSION/TIMESTAMP column. In Babelfish (PostgreSQL), the rows have the same value.
  + In SQL Server, when you create a new table with SELECT-INTO, you can cast an explicit value (such as NULL) to a to-be-created ROWVERSION/TIMESTAMP column. When you do the same thing in Babelfish, an actual ROWVERSION/TIMESTAMP value is assigned to each row in the new table for you, by Babelfish.

  These minor differences in ROWVERSION/TIMESTAMP datatypes shouldn't have an adverse impact on applications running on Babelfish. 
+ **TOP N PERCENT clause** – Babelfish provides support for the TOP N PERCENT clause with some limitations. SELECT operations are supported while UPDATE, DELETE and INSERT operations with TOP N PERCENT are not supported. The WITH TIES option and subqueries within the TOP clause are also not supported. When the expression value exceeds 100, behavior differs:
  + For SQL Server – Throws an error.
  + For Babelfish – Treats the value as valid and returns results.
+ **Schema creation, ownership, and permissions** – Permissions to create and access objects in a schema owned by a non-DBO user (using `CREATE SCHEMA schema name AUTHORIZATION user name`) differ for SQL Server and Babelfish non-DBO users, as shown in the following table:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-compatibility.tsql.limited-implementation.html)
+ **CREATE OR ALTER VIEW / ALTER VIEW syntax** – The support for these syntax in Babelfish has the following limitations:
  + These statements cannot be used on views that have an INSTEAD-OF trigger attached.
  + These statements cannot be used on views that have another view based on this view.

# Improving Babelfish query performance
<a name="babelfish-query-performance"></a>

 You can achieve faster query processing in Babelfish using query hints and the PostgreSQL optimizer. 

**Topics**
+ [Using explain plan to improve Babelfish query performance](working-with-babelfish-usage-notes-features.using.explain.md)
+ [Using T-SQL query hints to improve Babelfish query performance](babelfish-tsql-hints.md)

You can also improve the query performance using `sp_babelfish_volatility` procedure. For more information, see [sp\$1babelfish\$1volatility](sp_babelfish_volatility.md).

You can also improve the query performance using subquery transformation and subquery cache. For more information, see [Optimizing correlated subqueries in Aurora PostgreSQL](apg-correlated-subquery.md).

# Using explain plan to improve Babelfish query performance
<a name="working-with-babelfish-usage-notes-features.using.explain"></a>

Starting with version 2.1.0, Babelfish includes two functions that transparently use the PostgreSQL optimizer to generate estimated and actual query plans for T-SQL queries on the TDS port. These functions are similar to using SET STATISTICS PROFILE or SET SHOWPLAN\$1ALL with SQL Server databases to identify and improve slow running queries.

**Note**  
Getting query plans from functions, control flows, and cursors isn't currently supported. 

In the table you can find a comparison of query plan explain functions across SQL Server, Babelfish, and PostgreSQL. 


|  SQL Server  | Babelfish  | PostgreSQL  | 
| --- | --- | --- | 
| SHOWPLAN\$1ALL  | BABELFISH\$1SHOWPLAN\$1ALL  | EXPLAIN  | 
| STATISTICS PROFILE  | BABELFISH\$1STATISTICS PROFILE  | EXPLAIN ANALYZE  | 
| Uses the SQL Server optimizer  | Uses the PostgreSQL optimizer  | Uses the PostgreSQL optimizer  | 
| SQL Server input and output format  | SQL Server input and PostgreSQL output format  | PostgreSQL input and output format  | 
| Set for the session  | Set for the session  | Apply to a specific statement  | 
| Supports the following: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/working-with-babelfish-usage-notes-features.using.explain.html)  | Supports the following: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/working-with-babelfish-usage-notes-features.using.explain.html)  | Supports the following: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/working-with-babelfish-usage-notes-features.using.explain.html)  | 

Use the Babelfish functions as follows:
+ SET BABELFISH\$1SHOWPLAN\$1ALL [ON\$1OFF] – Set to ON to generate an estimated query execution plan. This function implements the behavior of the PostgreSQL `EXPLAIN` command. Use this command to obtain the explain plan for given query.
+ SET BABELFISH\$1STATISTICS PROFILE [ON\$1OFF] – Set to ON for actual query execution plans. This function implements the behavior of PostgreSQL's `EXPLAIN ANALYZE` command. 

For more information about PostgreSQL `EXPLAIN` and `EXPLAIN ANALYZE` see [EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html) in the PostgreSQL documentation.

**Note**  
Starting with version 2.2.0, you can set the `escape_hatch_showplan_all` parameter to *ignore* in order to avoid the use of *BABELFISH\$1* prefix in the SQL Server syntax for `SHOWPLAN_ALL` and `STATISTICS PROFILE` SET commands.

For example, the following command sequence turns on query planning and then returns an estimated query execution plan for the SELECT statement without running the query. This example uses the SQL Server sample `northwind` database using the `sqlcmd` command-line tool to query the TDS port: 

```
1> SET BABELFISH_SHOWPLAN_ALL ON
2> GO
1> SELECT t.territoryid, e.employeeid FROM
2> dbo.employeeterritories e, dbo.territories t
3> WHERE e.territoryid=e.territoryid ORDER BY t.territoryid;
4> GO

QUERY PLAN                                                                                                                                                                                                                                      
------------------------------------------------------------------------------------                                                                                                              
Query Text: SELECT t.territoryid, e.employeeid FROM
dbo.employeeterritories e, dbo.territories t
WHERE e.territoryid=e.territoryid ORDER BY t.territoryid
Sort  (cost=6231.74..6399.22 rows=66992 width=10)
  Sort Key: t.territoryid NULLS FIRST
  ->  Nested Loop  (cost=0.00..861.76 rows=66992 width=10)  
        ->  Seq Scan on employeeterritories e  (cost=0.00..22.70 rows=1264 width=4)
              Filter: ((territoryid)::"varchar" IS NOT NULL)
        ->  Materialize  (cost=0.00..1.79 rows=53 width=6)
              ->  Seq Scan on territories t  (cost=0.00..1.53 rows=53 width=6)
```

When you finish reviewing and adjusting your query, you turn off the function as shown following:

```
1> SET BABELFISH_SHOWPLAN_ALL OFF
```

With BABELFISH\$1STATISTICS PROFILE set to ON, each executed query returns its regular result set followed by an additional result set that shows actual query execution plans. Babelfish generates the query plan that provides the fastest result set when it invokes the SELECT statement. 

```
1> SET BABELFISH_STATISTICS PROFILE ON
1>
2> GO
1> SELECT e.employeeid, t.territoryid FROM
2> dbo.employeeterritories e, dbo.territories t
3> WHERE t.territoryid=e.territoryid ORDER BY t.territoryid;
4> GO
```

The result set and the query plan are returned (this example shows only the query plan). 

```
QUERY PLAN                                                                                                                                                                                                                                
---------------------------------------------------------------------------
Query Text: SELECT e.employeeid, t.territoryid FROM
dbo.employeeterritories e, dbo.territories t
WHERE t.territoryid=e.territoryid ORDER BY t.territoryid
Sort  (cost=42.44..43.28 rows=337 width=10)
  Sort Key: t.territoryid NULLS FIRST                                                                                                                                               
  ->  Hash Join  (cost=2.19..28.29 rows=337 width=10)
       Hash Cond: ((e.territoryid)::"varchar" = (t.territoryid)::"varchar")
        ->  Seq Scan on employeeterritories e  (cost=0.00..22.70 rows=1270 width=36)
        ->  Hash  (cost=1.53..1.53 rows=53 width=6)
             ->  Seq Scan on territories t  (cost=0.00..1.53 rows=53 width=6)
```

To learn more about how to analyze your queries and the results returned by the PostgreSQL optimizer, see [explain.depesz.com](https://www.depesz.com/2013/04/16/explaining-the-unexplainable/). For more information about PostgreSQL EXPLAIN and EXPLAIN ANALYZE, see [EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html) in the PostgreSQL documentation. 

## Parameters that control Babelfish explain options
<a name="working-with-babelfish-usage-notes-features.using.explain.parameters"></a>

You can use the parameters shown in the following table to control the type of information that's displayed by your query plan. 


| Parameter | Description | 
| --- | --- | 
| babelfishpg\$1tsql.explain\$1buffers | A boolean that turns on (and off) buffer usage information for the optimizer. (Default: off) (Allowable: off, on)  | 
| babelfishpg\$1tsql.explain\$1costs | A boolean that turns on (and off) estimated startup and total cost information for the optimizer. (Default: on) (Allowable: off, on)  | 
| babelfishpg\$1tsql.explain\$1format | Specifies the output format for the `EXPLAIN` plan. (Default: text) (Allowable: text, xml, json, yaml)  | 
| babelfishpg\$1tsql.explain\$1settings | A boolean that turns on (or off) the inclusion of information about configuration parameters in the EXPLAIN plan output. (Default: off) (Allowable: off, on)  | 
| babelfishpg\$1tsql.explain\$1summary | A boolean that turns on (or off) summary information such as total time after the query plan. (Default: on) (Allowable: off, on)  | 
| babelfishpg\$1tsql.explain\$1timing | A boolean that turns on (or off) actual startup time and time spent in each node in the output. (Default: on) (Allowable: off, on)  | 
| babelfishpg\$1tsql.explain\$1verbose | A boolean that turns on (or off) the most detailed version of an explain plan. (Default: off) (Allowable: off, on)  | 
| babelfishpg\$1tsql.explain\$1wal | A boolean that turns on (or off) generation of WAL record information as part of an explain plan. (Default: off) (Allowable: off, on)  | 

You can check the values of any Babelfish-related parameters on your system by using either PostgreSQL client or SQL Server client. Run the following command to get your current parameter values: 

```
1> execute sp_babelfish_configure '%explain%';
2> GO
```

In the following output, you can see that all settings on this particular Babelfish DB cluster are at their default values. Not all output is shown in this example.

```
             name                   setting                     short_desc
---------------------------------- -------- --------------------------------------------------------
babelfishpg_tsql.explain_buffers   off      Include information on buffer usage
babelfishpg_tsql.explain_costs     on       Include information on estimated startup and total cost
babelfishpg_tsql.explain_format    text     Specify the output format, which can be TEXT, XML, JSON, or YAML
babelfishpg_tsql.explain_settings  off      Include information on configuration parameters
babelfishpg_tsql.explain_summary   on       Include summary information (e.g.,totaled timing information) after the query plan 
babelfishpg_tsql.explain_timing    on       Include actual startup time and time spent in each node in the output
babelfishpg_tsql.explain_verbose   off      Display additional information regarding the plan
babelfishpg_tsql.explain_wal       off      Include information on WAL record generation

(8 rows affected)
```

You can change the setting for these parameters using `sp_babelfish_configure`, as shown in the following example. 

```
1> execute sp_babelfish_configure 'explain_verbose', 'on';
2> GO
```

If you want make the setting permanent on a cluster-wide level, include the keyword *server*, as shown in the following example. 

```
1> execute sp_babelfish_configure 'explain_verbose', 'on', 'server';
2> GO
```

# Using T-SQL query hints to improve Babelfish query performance
<a name="babelfish-tsql-hints"></a>

Starting with version 2.3.0, Babelfish supports the use of query hints using `pg_hint_plan`. In Aurora PostgreSQL, `pg_hint_plan` is installed by default. For more information about the PostgreSQL extension `pg_hint_plan`, see [https://github.com/ossc-db/pg_hint_plan](https://github.com/ossc-db/pg_hint_plan). For details about the version of this extension supported by Aurora PostgreSQL, see [Extension versions for Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html) in *Release Notes for Aurora PostgreSQL*. 

 The query optimizer is well-designed to find the optimal execution plan for a SQL statement. When selecting a plan, the query optimizer considers both the engine’s cost model, and column and table statistics. However, the suggested plan might not meet the needs of your datasets. Thus, query hints addresses the performance issues to improve execution plans. A `query hint` is syntax added to the SQL standard that instructs the database engine about how to execute the query. For example, a hint may instruct the engine to follow a sequential scan and override any plan that the query optimizer had selected. 

## Turning on T-SQL query hints in Babelfish
<a name="babelfish-tsql-hints-turningon"></a>

Currently, Babelfish ignores all T-SQL hints by default. To apply T-SQL hints, run the command `sp_babelfish_configure` with the enable\$1pg\$1hint value as ON.

```
EXECUTE sp_babelfish_configure 'enable_pg_hint', 'on' [, 'server']
```

You can make the settings permanent on a cluster-wide level by including the *server* keyword. To configure the setting for the current session only, don't use server. 

After `enable_pg_hint` is ON, Babelfish applies the following T-SQL hints.
+ INDEX hints
+ JOIN hints
+ FORCE ORDER hint
+ MAXDOP hint

For example, the following command sequence turns on `pg_hint_plan`.

```
1> CREATE TABLE t1 (a1 INT PRIMARY KEY, b1 INT);
2> CREATE TABLE t2 (a2 INT PRIMARY KEY, b2 INT);
3> GO    
1> EXECUTE sp_babelfish_configure 'enable_pg_hint', 'on';
2> GO
1> SET BABELFISH_SHOWPLAN_ALL ON;
2> GO
1> SELECT * FROM t1 JOIN t2 ON t1.a1 = t2.a2; --NO HINTS (HASH JOIN)
2> GO
```

No hint is applied to the SELECT statement. The query plan with no hint is returned.

```
QUERY PLAN                                                                                                                                                                                                                                
---------------------------------------------------------------------------
Query Text: SELECT * FROM t1 JOIN t2 ON t1.a1 = t2.a2
Hash Join (cost=60.85..99.39 rows=2260 width=16)
 Hash Cond: (t1.a1 = t2.a2)
 -> Seq Scan on t1 (cost=0.00..32.60 rows=2260 width=8)
 -> Hash (cost=32.60..32.60 rows=2260 width=8)
 -> Seq Scan on t2 (cost=0.00..32.60 rows=2260 width=8)
```

```
1> SELECT * FROM t1 INNER MERGE JOIN t2 ON t1.a1 = t2.a2;
2> GO
```

The query hint is applied to the SELECT statement. The following output shows that the query plan with merge join is returned.

```
QUERY PLAN                                                                                                                                                                                                                                
---------------------------------------------------------------------------
Query Text: SELECT/*+ MergeJoin(t1 t2) Leading(t1 t2)*/ * FROM t1 INNER JOIN t2 ON t1.a1 = t2.a2
Merge Join (cost=0.31..190.01 rows=2260 width=16)
 Merge Cond: (t1.a1 = t2.a2)
 -> Index Scan using t1_pkey on t1 (cost=0.15..78.06 rows=2260 width=8)
 -> Index Scan using t2_pkey on t2 (cost=0.15..78.06 rows=2260 width=8)
```

```
1> SET BABELFISH_SHOWPLAN_ALL OFF;
2> GO
```

## Limitations
<a name="babelfish-tsql-hints-limitations"></a>

While using the query hints, consider the following limitations:
+ If a query plan is cached before `enable_pg_hint` is turned on, hints won't be applied in the same session. It will be applied in the new session .
+ If schema names are explicitly given, then hints can't be applied. You can use table aliases as a workaround.
+ A query hint can't be applied to views and sub-queries.
+ Hints don't work for UPDATE/DELETE statements with JOINs.
+ An index hint for a non-existing index or table is ignored.
+ The FORCE ORDER hint doesn't work for HASH JOINs and non-ANSI JOINs.

# Using Aurora PostgreSQL extensions with Babelfish
<a name="babelfish-postgres-aws-extensions"></a>

Aurora PostgreSQL provides extensions for working with other AWS services. These are optional extensions that support various use cases, such as using Amazon S3 with your DB cluster for importing or exporting data. 
+ To import data from an Amazon S3 bucket to your Babelfish DB cluster, you set up the `aws_s3` Aurora PostgreSQL extension. This extension also lets you export data from your Aurora PostgreSQL DB cluster to an Amazon S3 bucket. 
+ AWS Lambda is a compute service that lets you run code without provisioning or managing servers. You can use Lambda functions to do things like process event notifications from your DB instance. To learn more about Lambda, see [What is AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) in the *AWS Lambda Developer Guide.* To invoke Lambda functions from your Babelfish DB cluster, you set up the `aws_lambda` Aurora PostgreSQL extension. 

To set up these extensions for your Babelfish cluster, you first need to grant permission to the internal Babelfish user to load the extensions. After granting permission, you can then load Aurora PostgreSQL extensions. 

## Enabling Aurora PostgreSQL extensions in your Babelfish DB cluster
<a name="babelfish-postgres-aws-extensions-enabling"></a>

Before you can load the `aws_s3` or the `aws_lambda` extensions, you grant the needed privileges to your Babelfish DB cluster. 

The procedure following uses the `psql` PostgreSQL command line tool to connect to the DB cluster. For more information, see [Using psql to connect to the DB cluster](babelfish-connect-PostgreSQL.md#babelfish-connect-psql). You can also use pgAdmin. For details, see [Using pgAdmin to connect to the DB cluster](babelfish-connect-PostgreSQL.md#babelfish-connect-pgadmin). 

This procedure loads both `aws_s3` and `aws_lambda`, one after the other. You don't need to load both if you want to use only one of these extensions. The `aws_commons` extension is required by each, and it's loaded by default as shown in the output. 

**To set up your Babelfish DB cluster with privileges for the Aurora PostgreSQL extensions**

1. Connect to your Babelfish DB cluster. Use the name for the "master" user (-U) that you specified when you created the Babelfish DB cluster. The default (`postgres`) is shown in the examples. 

   For Linux, macOS, or Unix:

   ```
   psql -h your-Babelfish.cluster.444455556666-us-east-1.rds.amazonaws.com \
   -U postgres \
   -d babelfish_db \
   -p 5432
   ```

   For Windows:

   ```
   psql -h your-Babelfish.cluster.444455556666-us-east-1.rds.amazonaws.com ^
   -U postgres ^
   -d babelfish_db ^
   -p 5432
   ```

   The command responds with a prompt to enter the password for the user name (-U).

   ```
   Password:
   ```

   Enter the password for the user name (-U) for the DB cluster. When you successfully connect, you see output similar to the following.

   ```
   psql (13.4)
   SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
   Type "help" for help.
   
   postgres=>
   ```

1. Grant privileges to the internal Babelfish user to create and load extensions.

   ```
   babelfish_db=> GRANT rds_superuser TO master_dbo;
   GRANT ROLE
   ```

1. Create and load the `aws_s3` extension. The `aws_commons` extension is required, and it's installed automatically when the `aws_s3` is installed.

   ```
   babelfish_db=> create extension aws_s3 cascade;
   NOTICE:  installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. Create and load the `aws_lambda` extension.

   ```
   babelfish_db=> create extension aws_lambda cascade;
   CREATE EXTENSION
   babelfish_db=>
   ```

## Using Babelfish with Amazon S3
<a name="babelfish-postgres-aws-extensions-using-aws_s3"></a>

If you don't already have an Amazon S3 bucket to use with your Babelfish DB cluster, you can create one. For any Amazon S3 bucket that you want to use, you provide access.

Before trying to import or export data using an Amazon S3 bucket, complete the following one-time steps. 

**To set up access for your Babelfish DB instance to your Amazon S3 bucket**

1. Create an Amazon S3 bucket for your Babelfish instance, if needed. To do so, follow the instructions in [Create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.htmlurl-s3-user;GetStartedWithS3.html#creating-bucket) in the *Amazon Simple Storage Service User Guideguide-s3-user;*. 

1. Upload files to your Amazon S3 bucket. To do so, follow the steps in [Add an object to a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PuttingAnObjectInABucket.htmlurl-s3-user;GetStartedWithS3.html#uploading-an-object-bucket) in the *Amazon Simple Storage Service User Guideguide-s3-user;.* 

1. Set up permissions as needed:
   + To import data from Amazon S3, the Babelfish DB cluster needs permission to access the bucket. We recommend using an AWS Identity and Access Management (IAM) role and attaching an IAM policy to that role for your cluster. To do so, follow the steps in [Using an IAM role to access an Amazon S3 bucket](USER_PostgreSQL.S3Import.AccessPermission.md#USER_PostgreSQL.S3Import.ARNRole). 
   + To export data from your Babelfish DB cluster, your cluster must be granted access to the Amazon S3 bucket. As with importing, we recommend using an IAM role and policy. To do so, follow the steps in [Setting up access to an Amazon S3 bucket](postgresql-s3-export-access-bucket.md).

You can now use Amazon S3 with the `aws_s3` extension with your Babelfish DB cluster. 

**To import data from Amazon S3 to Babelfish and to export Babelfish data to Amazon S3**

1. Use the `aws_s3` extension with your Babelfish DB cluster. 

   When you do, make sure to reference the tables as they exist in the context of PostgreSQL. That is, if you want to import into a Babelfish table named `[database].[schema].[tableA]`, refer to that table as `database_schema_tableA` in the `aws_s3` function:
   + For an example of using an `aws_s3` function to import data, see [Importing data from Amazon S3 to your Aurora PostgreSQL DB cluster ](USER_PostgreSQL.S3Import.FileFormats.md). 
   + For examples of using `aws_s3` functions to export data, see [Exporting query data using the aws\$1s3.query\$1export\$1to\$1s3 function](postgresql-s3-export-examples.md). 

1. Make sure to reference Babelfish tables using PostgreSQL naming when using the `aws_s3` extension and Amazon S3, as shown in the following table.


| Babelfish table | Aurora PostgreSQL table | 
| --- | --- | 
| `database.schema.table` | `database_schema_table` | 

To learn more about using Amazon S3 with Aurora PostgreSQL, see [Importing data from Amazon S3 into an Aurora PostgreSQL DB cluster](USER_PostgreSQL.S3Import.md) and [Exporting data from an Aurora PostgreSQL DB cluster to Amazon S3](postgresql-s3-export.md). 

## Using Babelfish with AWS Lambda
<a name="babelfish-postgres-aws-extensions-using-aws_lambda"></a>

After the `aws_lambda` extension is loaded in your Babelfish DB cluster but before you can invoke Lambda functions, you give Lambda access to your DB cluster by following this procedure. 

**To set up access for your Babelfish DB cluster to work with Lambda**

This procedure uses the AWS CLI to create the IAM policy and role, and associate these with the Babelfish DB cluster. 

1. Create an IAM policy that allows access to Lambda from your Babelfish DB cluster.

   ```
   aws iam create-policy  --policy-name rds-lambda-policy --policy-document '{
   	"Version": "2012-10-17",		 	 	 
       "Statement": [
           {
           "Sid": "AllowAccessToExampleFunction",
           "Effect": "Allow",
           "Action": "lambda:InvokeFunction",
           "Resource": "arn:aws:lambda:aws-region:444455556666:function:my-function"
           }
       ]
   }'
   ```

1. Create an IAM role that the policy can assume at runtime.

   ```
   aws iam create-role  --role-name rds-lambda-role --assume-role-policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Principal": {
               "Service": "rds.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
           }
       ]
   }'
   ```

1. Attach the policy to the role.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::444455556666:policy/rds-lambda-policy \
       --role-name rds-lambda-role --region aws-region
   ```

1. Attach the role to your Babelfish DB cluster

   ```
   aws rds add-role-to-db-cluster \
          --db-cluster-identifier my-cluster-name \
          --feature-name Lambda \
          --role-arn  arn:aws:iam::444455556666:role/rds-lambda-role   \
          --region aws-region
   ```

After you complete these tasks, you can invoke your Lambda functions. For more information and examples of setting up AWS Lambda for Aurora PostgreSQL DB cluster with AWS Lambda, see [Step 2: Configure IAM for your Aurora PostgreSQL DB cluster and AWS Lambda](PostgreSQL-Lambda.md#PostgreSQL-Lambda-access). 

**To invoke a Lambda function from your Babelfish DB cluster**

AWS Lambda supports functions written in Java, Node.js, Python, Ruby, and other languages. If the function returns text when invoked, you can invoke it from your Babelfish DB cluster. The following example is a placeholder python function that returns a greeting.

```
lambda_function.py
import json
def lambda_handler(event, context):
    #TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
```

Currently, Babelfish doesn't support JSON. If your function returns JSON, you use a wrapper to handle the JSON. For example, say that the `lambda_function.py` shown preceding is stored in Lambda as `my-function`.

1. Connect to your Babelfish DB cluster using the `psql` client (or the pgAdmin client). For more information, see [Using psql to connect to the DB cluster](babelfish-connect-PostgreSQL.md#babelfish-connect-psql). 

1. Create the wrapper. This example uses PostgreSQL's procedural language for SQL, `PL/pgSQL`. To learn more, see [PL/pgSQL–SQL Procedural Language](https://www.postgresql.org/docs/13/plpgsql.html).

   ```
   create or replace function master_dbo.lambda_wrapper()
   returns text
   language plpgsql
   as
   $$
   declare
      r_status_code integer;
      r_payload text;
   begin
      SELECT payload INTO r_payload
        FROM aws_lambda.invoke(  aws_commons.create_lambda_function_arn('my-function', 'us-east-1')
                               ,'{"body": "Hello from Postgres!"}'::json );
      return r_payload ;
   end;
   $$;
   ```

   The function can now be run from the Babelfish TDS port (1433) or from the PostgreSQL port (5433). 

   1. To invoke (call) this function from your PostgreSQL port:

      ```
      SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function', 'us-east-1'), '{"body": "Hello from Postgres!"}'::json );
      ```

      The output is similar to the following:

      ```
      status_code |                        payload                        | executed_version | log_result
      -------------+-------------------------------------------------------+------------------+------------
               200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST          |
      (1 row)
      ```

   1. To invoke (call) this function from the TDS port, connect to the port using the SQL Server `sqlcmd` command line client. For details, see [Using a SQL Server client to connect to your DB cluster](babelfish-connect-sqlserver.md). When connected, run the following:

      ```
      1> select lambda_wrapper();
      2> go
      ```

      The command returns output similar to the following:

      ```
      {"statusCode": 200, "body": "\"Hello from Lambda!\""}
      ```

To learn more about using Lambda with Aurora PostgreSQL, see [Invoking an AWS Lambda function from an Aurora PostgreSQL DB cluster ](PostgreSQL-Lambda.md). For more information about working with Lambda functions, see [Getting started with Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) in the *AWS Lambda Developer Guide.*

## Using pg\$1stat\$1statements in Babelfish
<a name="babelfish-postgres-aws-extensions-using-pgstat"></a>

Babelfish for Aurora PostgreSQL supports `pg_stat_statements` extension from 3.3.0. To learn more, see [pg\$1stat\$1statements](https://www.postgresql.org/docs/current/pgstatstatements.html).

For details about the version of this extension supported by Aurora PostgreSQL, see [Extension versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html).

### Creating pg\$1stat\$1statements extension
<a name="babelfish-postgres-aws-extensions-using-pgstat-install"></a>

To turn on `pg_stat_statements`, you must turn on the Query identifier calculation. This is done automatically if `compute_query_id` is set to `on` or `auto` in the parameter group. The default value of `compute_query_id` parameter is `auto`. You also need to create this extension to turn on this feature. Use the following command to install the extension from T-SQL endpoint:

```
				
1>EXEC sp_execute_postgresql 'CREATE EXTENSION pg_stat_statements WITH SCHEMA sys';
```

You can access the query statistics using the following query:

```
postgres=>select * from pg_stat_statements; 
```

**Note**  
During installation, if you don't provide the schema name for the extension then by default it will create it in public schema. To access it, you must use square brackets with schema qualifier as shown below: 

```
postgres=>select * from [public].pg_stat_statements;
```

You can also create the extension from PSQL endpoint. 

### Authorizing the extension
<a name="babelfish-postgres-aws-extensions-using-pgstat-authorization"></a>

By default, you can see the statistics for queries performed within your T-SQL database without the need of any authorization.

To access query statistics created by others, you need to have `pg_read_all_stats` PostgreSQL role. Follow the steps mentioned below to construct GRANT pg\$1read\$1all\$1stats command.

1. In T-SQL, use the following query that returns the internal PG role name.

   ```
   SELECT rolname FROM pg_roles WHERE oid = USER_ID();
   ```

1. Connect to Babelfish for Aurora PostgreSQL database with rds\$1superuser privilege and use the following command:

   ```
   GRANT pg_read_all_stats TO <rolname_from_above_query>
   ```

**Example**  
From T-SQL endpoint:

```
1>SELECT rolname FROM pg_roles WHERE oid = USER_ID();
2>go
```

```
rolname
-------
master_dbo
(1 rows affected)
```

From PSQL endpoint:

```
babelfish_db=# grant pg_read_all_stats to master_dbo;
```

```
GRANT ROLE
```

You can access the query statistics using the pg\$1stat\$1statements view:

```
1>create table t1(cola int);
2>go
1>insert into t1 values (1),(2),(3);
2>go
```

```
(3 rows affected)
```

```
1>select userid, dbid, queryid, query from pg_stat_statements;
2>go
```

```
userid dbid queryid             query
------ ---- -------             -----
37503 34582 6487973085327558478 select * from t1
37503 34582 6284378402749466286 SET QUOTED_IDENTIFIER OFF
37503 34582 2864302298511657420 insert into t1 values ($1),($2),($3)
10    34582 NULL                <insufficient privilege>
37503 34582 5615368793313871642 SET TEXTSIZE 4096
37503 34582 639400815330803392  create table t1(cola int)
(6 rows affected)
```

### Resetting query statistics
<a name="babelfish-postgres-aws-extensions-using-pgstat-reset"></a>

You can use `pg_stat_statements_reset()` to reset the statistics gathered so far by pg\$1stat\$1statements. To learn more, see [pg\$1stat\$1statements]( https://www.postgresql.org/docs/current/pgstatstatements.html). It is currently supported through PSQL endpoint only. Connect to Babelfish for Aurora PostgreSQL with `rds_superuser` privilege, use the following command: 

```
SELECT pg_stat_statements_reset();
```

### Limitations
<a name="babelfish-postgres-aws-extensions-using-pgstat-limitations"></a>
+ Currently, `pg_stat_statements()` is not supported through T-SQL endpoint. `pg_stat_statements` view is the recommended way to gather the statistics.
+ Some of the queries might be re-written by the T-SQL parser implemented by Aurora PostgreSQL engine, `pg_stat_statements` view will show the re-written query and not the original query.

  Example

  ```
  select next value for [dbo].[newCounter];
  ```

   The above query is re-written as the following in the pg\$1stat\$1statements view.

  ```
  select nextval($1);
  ```
+ Based on the execution flow of the statements, some of the queries might not be tracked by pg\$1stat\$1statements and will not be visible in the view. This includes the following statements: `use dbname`, `goto`, `print`, `raise error`, `set`, `throw`, `declare cursor`. 
+ For CREATE LOGIN and ALTER LOGIN statements, query and queryid will not be shown. It will show insufficient privileges.
+ `pg_stat_statements` view always contains the below two entries, as these are executed internally by `sqlcmd` client.
  + SET QUOTED\$1IDENTIFIER OFF
  + SET TEXTSIZE 4096

## Using pgvector in Babelfish
<a name="babelfish-postgres-aws-extensions-using-pgvector"></a>

pgvector, an open-source extension, lets you search for similar data directly within your Postgres database. Babelfish now supports this extension starting with versions 15.6 and 16.2. For more information, [pgvector Open source Documentation](https://github.com/pgvector/pgvector).

### Prerequisites
<a name="babelfish-postgres-aws-extensions-using-pgvector-prereq"></a>

To enable pgvector functionality, install the extension in sys schema using one of the following methods:
+ Run the following command in sqlcmd client:

  ```
  exec sys.sp_execute_postgresql 'CREATE EXTENSION vector WITH SCHEMA sys';
  ```
+ Connect to `babelfish_db` and run the following command in psql client:

  ```
  CREATE EXTENSION vector WITH SCHEMA sys;
  ```

**Note**  
After installing the pgvector extension, the vector data type will only be available in new database connections you establish. Existing connections won't recognize the new data type.

### Supported Functionality
<a name="babelfish-postgres-aws-extensions-using-pgvector-supported"></a>

Babelfish extends the T-SQL functionality to support the following:
+ **Storing**

  Babelfish now supports vector datatype compatible syntax, enhancing its T-SQL compatibility. To learn more about storing data with pgvector, see [Storing](https://github.com/pgvector/pgvector?tab=readme-ov-file#storing).
+ **Querying**

   Babelfish expands T-SQL expression support to include vector similarity operators. However, for all other queries, standard T-SQL syntax is still required.
**Note**  
T-SQL doesn't support Array type, and the database drivers do not have any interface to handle them. As a workaround, Babelfish uses text strings (varchar/nvarchar) to store vector data. For example, when you request a vector value [1,2,3], Babelfish will return a string '[1,2,3]' as the response. You can parse and split this string at application level as per your needs.

  To learn more about querying data with pgvector, see [Querying](https://github.com/pgvector/pgvector?tab=readme-ov-file#querying).
+ **Indexing**

  T-SQL `Create Index` now supports `USING INDEX_METHOD` syntax. You can now define similarity search operator to be used on a specific column when creating an index.

  The grammar is also extended to support Vector similarity operations on the required column (Check column\$1name\$1list\$1with\$1order\$1for\$1vector grammar).

  ```
  CREATE [UNIQUE] [clustered] [COLUMNSTORE] INDEX <index_name> ON <table_name> [USING vector_index_method] (<column_name_list_with_order_for_vector>)
  Where column_name_list_with_order_for_vector is:
      <column_name> [ASC | DESC] [VECTOR_COSINE_OPS | VECTOR_IP_OPS | VECTOR_L2_OPS] (COMMA simple_column_name [ASC | DESC] [VECTOR_COSINE_OPS | VECTOR_IP_OPS | VECTOR_L2_OPS])
  ```

  To learn more about indexing data with pgvector, see [Indexing](https://github.com/pgvector/pgvector?tab=readme-ov-file#indexing).
+ **Performance**
  + Use `SET BABELFISH_STATISTICS PROFILE ON` to debug Query Plans from T-SQL endpoint. 
  + Increase `max_parallel_workers_get_gather` using the `set_config` function supported in T-SQL.
  + Use `IVFFlat` for approximate searches. For more information, see [IVFFlat](https://github.com/pgvector/pgvector?tab=readme-ov-file#ivfflat).

  To improve performance with pgvector, see [Performance](https://github.com/pgvector/pgvector?tab=readme-ov-file#performance).

### Limitations
<a name="babelfish-postgres-aws-extensions-using-pgvector-unsupported"></a>
+ Babelfish doesn't support Full Text Search for Hybrid Search. For more information, see [Hybrid Search](https://github.com/pgvector/pgvector?tab=readme-ov-file#hybrid-search).
+ Babelfish doesn't currently support re-indexing functionality. However, you can still use PostgreSQL endpoint to re-index. For more information, see [Vacuuming](https://github.com/pgvector/pgvector?tab=readme-ov-file#vacuuming).

## Using Amazon Aurora machine learning with Babelfish
<a name="babelfish-postgres-aws-extensions-using-ml"></a>

You can extend the capabilities of your Babelfish for Aurora PostgreSQL DB cluster by integrating it with Amazon Aurora machine learning. This seamless integration grants you access to a range of powerful services like Amazon Comprehend or Amazon SageMaker AI or Amazon Bedrock, each tailored to address distinct machine learning needs.

As a Babelfish user, you can use existing knowledge of T-SQL syntax and semantics when working with Aurora machine learning. Follow the instructions provided in the AWS documentation for Aurora PostgreSQL. For more information, see [Using Amazon Aurora machine learning with Aurora PostgreSQL](postgresql-ml.md).

### Prerequisites
<a name="babelfish-postgres-aws-extensions-using-ml-prereq"></a>
+ Before trying to set up your Babelfish for Aurora PostgreSQL DB cluster to use Aurora machine learning, you must understand the related requirements and prerequisites. For more information, see [Requirements for using Aurora machine learning with Aurora PostgreSQL](postgresql-ml.md#postgresql-ml-prereqs).
+ Make sure you install the `aws_ml` extension either using Postgres endpoint or the `sp_execute_postgresql` store procedure.

  ```
  exec sys.sp_execute_postgresql 'Create Extension aws_ml'
  ```
**Note**  
Currently Babelfish doesn't support cascade operations with `sp_execute_postgresql` in Babelfish. Since `aws_ml` relies on `aws_commons`, you'll need to install it separately using Postgres endpoint.

  ```
  create extension aws_common;
  ```

### Handling T-SQL syntax and semantics with `aws_ml` functions
<a name="babelfish-postgres-aws-extensions-using-ml-examples"></a>

The following examples explains how T-SQL syntax and semantics are applied to the Amazon ML services:

**Example : aws\$1bedrock.invoke\$1model – A simple query using Amazon Bedrock functions**  

```
aws_bedrock.invoke_model(
   model_id      varchar,
   content_type  text,
   accept_type   text,
   model_input   text)
Returns Varchar(MAX)
```
The following example shows how to invoke a Anthropic Claude 2 model for Bedrock using invoke\$1model.  

```
SELECT aws_bedrock.invoke_model (
    'anthropic.claude-v2', -- model_id
    'application/json', -- content_type
    'application/json', -- accept_type
    '{"prompt": "\n\nHuman:
    You are a helpful assistant that answers questions directly
    and only using the information provided in the context below.
    \nDescribe the answerin detail.\n\nContext: %s \n\nQuestion:
    %s \n\nAssistant:","max_tokens_to_sample":4096,"temperature"
    :0.5,"top_k":250,"top_p":0.5,"stop_sequences":[]}' -- model_input
);
```

**Example : aws\$1comprehend.detect\$1sentiment – A simple query using Amazon Comprehend functions**  

```
aws_comprehend.detect_sentiment(
   input_text varchar,
   language_code varchar,
   max_rows_per_batch int)
Returns table (sentiment varchar, confidence real)
```
The following example shows how to invoke the Amazon Comprehend service.  

```
select sentiment from aws_comprehend.detect_sentiment('This is great', 'en');
```

**Example : aws\$1sagemaker.invoke\$1endpoint – A simple query using Amazon SageMaker functions**  

```
aws_sagemaker.invoke_endpoint(
  endpoint_name varchar,   
  max_rows_per_batch int,
  VARIADIC model_input "any") -- Babelfish inherits PG's variadic parameter type
Rerurns Varchar(MAX)
```

Since model\$1input is marked as VARIADIC and of type “any”, users can pass a list of any length and any datatype to the function which will act as the input the input to the model. The following example shows how to invoke the Amazon SageMaker service.

```
SELECT CAST (aws_sagemaker.invoke_endpoint(
    'sagemaker_model_endpoint_name',
    NULL,
    arg1, arg2 -- model inputs are separate arguments )
AS INT) -- cast the output to INT
```

For more detailed information on using Aurora machine learning with Aurora PostgreSQL, see [Using Amazon Aurora machine learning with Aurora PostgreSQL](postgresql-ml.md).

### Limitations
<a name="babelfish-postgres-aws-extensions-using-ml-limit"></a>
+ While Babelfish doesn't allow creating arrays, it can still handle data that represents arrays. When you use functions like `aws_bedrock.invoke_model_get_embeddings` that return arrays, the results is delivered as a string containing the array elements.

# Babelfish supports linked servers
<a name="babelfish-postgres-linkedservers"></a>

Babelfish for Aurora PostgreSQL supports linked servers by using the PostgreSQL `tds_fdw` extension in version 3.1.0. To work with linked servers, you must install the `tds_fdw` extension. For more information about the `tds_fdw` extension, see [Working with the supported foreign data wrappers for Amazon Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.Extensions.foreign-data-wrappers.md).

## Installing the `tds_fdw` extension
<a name="babelfish-postgres-linkedservers-tdsfdw"></a>

You can install `tds_fdw` extension using the following methods. 

**Using CREATE EXTENSION from PostgreSQL endpoint**

1. Connect to your PostgreSQL DB instance on the Babelfish database in the PostgreSQL port. Use an account that has the rds\$1superuser role.

   ```
   psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test --dbname=babelfish_db --password
   ```

1. Install the `tds_fdw` extension. This is a one-time installation process. You don't need to reinstall when the DB cluster restarts.

   ```
   babelfish_db=> CREATE EXTENSION tds_fdw;
   CREATE EXTENSION
   ```

**Calling `sp_execute_postgresql` stored procedure from TDS endpoint**

Babelfish supports installing `tds_fdw` extension by calling `sp_execute_postgresql` procedure from version 3.3.0. You can execute PostgreSQL statements from T-SQL endpoint without exiting the T-SQL port. For more information, see [Working with Babelfish for Aurora PostgreSQL procedures](Appendix.Babelfish.Functions.md)

1. Connect to your PostgreSQL DB instance on the Babelfish database in the T-SQL port.

   ```
   sqlcmd -S your-DB-instance.aws-region.rds.amazonaws.com -U test -P password
   ```

1. Install the `tds_fdw` extension.

   ```
   1>EXEC sp_execute_postgresql N'CREATE EXTENSION tds_fdw';
   2>go
   ```

## Supported functionality
<a name="babelfish-postgres-linkedservers-supportfunction"></a>

Babelfish supports adding remote RDS for SQL Server or Babelfish for Aurora PostgreSQL endpoints as the linked server. You can also add other remote SQL Server instances as linked servers. Then, use `OPENQUERY()` to retrieve data from these linked servers. Starting from Babelfish version 3.2.0, four-part names are also supported.

The following stored procedures and catalog views are supported in order to use the linked servers.

**Stored procedures**
+ **sp\$1addlinkedserver** – Babelfish doesn't support the `@provstr` parameter.
+ **sp\$1addlinkedsrvlogin**
  + You must provide an explicit remote username and password to connect to the remote data source. You can't connect with the user's self credentials. Babelfish supports only `@useself = false`.
  + Babelfish doesn't support the `@locallogin` parameter since configuring remote server access specific to local login isn't supported. 
+ **sp\$1linkedservers**
+ **sp\$1helplinkedsrvlogin**
+ **sp\$1dropserver**
+ **sp\$1droplinkedsrvlogin** – Babelfish doesn't support the `@locallogin` parameter since configuring remote server access specific to local login isn't supported.
+ **sp\$1serveroption** – Babelfish supports the following server options:
  + query timeout (from Babelfish version 3.2.0)
  + connect timeout (from Babelfish version 3.3.0) 
+ **sp\$1testlinkedserver** (from Babelfish version 3.3.0)
+ **sp\$1enum\$1oledb\$1providers** (from Babelfish version 3.3.0)

**Catalog views**
+ **sys.servers**
+ **sys.linked\$1logins**

## Using encryption in transit for the connection
<a name="babelfish-postgres-linkedservers-encrytion"></a>

The connection from the source Babelfish for Aurora PostgreSQL server to the target remote server uses encryption in transit (TLS/SSL), depending on the remote server database configuration. If the remote server isn't configured for encryption, the Babelfish server making the request to the remote database falls back to unencrypted.

**To enforce connection encryption**
+ If the target linked server is an RDS for SQL Server instance, set `rds.force_ssl = on` for the target SQL Server instance. For more information about SSL/TLS configuration for RDS for SQL Server, see [Using SSL with a Microsoft SQL Server DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html)
+ If the target linked server is a Babelfish for Aurora PostgreSQL cluster, set `babelfishpg_tds.tds_ssl_encrypt = on` and `ssl = on` for the target server. For more information about SSL/TLS, see [Babelfish SSL settings and client connections](babelfish-configuration.md#babelfish-ssl).

## Adding Babelfish as a linked server from SQL Server
<a name="babelfish-linkedserver-SQLserver"></a>

Babelfish for Aurora PostgreSQL can be added as a linked server from a SQL Server. On a SQL Server database, you can add Babelfish as a linked server using Microsoft OLE DB provider for ODBC : MSDASQL.

There are two ways to configure Babelfish as a linked server from SQL Server using MSDASQL provider:
+ Providing ODBC connection string as the provider string.
+ Provide the System DSN of ODBC data source while adding the linked server.

## Limitations
<a name="babelfish-postgres-linkedservers-limitations"></a>
+ OPENQUERY() works only for SELECT and doesn't work for DML.
+ Four-part object names work only for reading and doesn't work for modifying the remote table. An UPDATE can reference a remote table in the FROM clause without modifying it.
+ Executing stored procedures against Babelfish linked servers isn't supported.
+ Babelfish major version upgrade might not work if there are objects dependent on `OPENQUERY()` or objects referenced through four-part names. You must ensure that any objects referencing `OPENQUERY()` or four-part names are dropped before a major version upgrade.
+ The following datatypes don't work as expected against remote Babelfish server: `nvarchar(max)`, `varchar(max)`, `varbinary(max)`, `binary(max)` and `time`. We recommend using the CAST function to convert these to the supported datatypes.

## Example
<a name="babelfish-postgres-linkedservers-example"></a>

In the following example, a Babelfish for Aurora PostgreSQL instance is connecting to an instance of RDS for SQL Server in the cloud.

```
EXEC master.dbo.sp_addlinkedserver @server=N'rds_sqlserver', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'myserver.CB2XKFSFFMY7.US-WEST-2.RDS.AMAZONAWS.COM';
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'rds_sqlserver',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='password';
```

 When the linked server is in place, you can then use T-SQL OPENQUERY() or standard four-part naming to reference a table, view, or other supported objects, on the remote server: 

```
SELECT * FROM OPENQUERY(rds_sqlserver, 'SELECT * FROM TestDB.dbo.t1');
SELECT * FROM rds_sqlserver.TestDB.dbo.t1;
```

To drop the linked server and all associated logins:

```
EXEC master.dbo.sp_dropserver @server=N'rds_sqlserver', @droplogins=N'droplogins';
```

## Troubleshooting
<a name="babelfish-postgres-linkedservers-troubleshooting"></a>

You can use the same security group for both source and remote servers to allow them to communicate with each other. Security group should allow only inbound traffic on TDS port (1433 by default) and source IP in security group can be set as the security group ID itself. For more information on how to set the rules for connecting to an instance from another instance with the same security group, see [Rules to connect to instances from an instance with the same security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-other-instances).

If access isn't configured correctly, an error message similar to the following example appears when you try to query the remote server.

```
TDS client library error: DB #: 20009, DB Msg: Unable to connect: server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 110, OS Msg: Connection timed out, Level: 9                        
```

# Using Full Text Search in Babelfish
<a name="babelfish-postgres-fulltextsearch"></a>

Starting with version 4.0.0, Babelfish provides limited support for Full Text Search (FTS). FTS is a powerful feature in relational databases that enables efficient searching and indexing of text-heavy data. It allows you to perform complex text searches and retrieve relevant results quickly. FTS is particularly valuable for applications that deal with large volumes of textual data, such as content management systems, e-commerce platforms, and document archives.

## Understanding Babelfish Full Text Search supported features
<a name="babelfish-postgres-fulltextsearch-support"></a>

Babelfish supports the following Full Text Search features:
+ CONTAINS Clause:
  + Basic support for the CONTAINS clause. 

    ```
    CONTAINS (   
         {   
            column_name
         }   
         , '<contains_search_condition>'
    )
    ```
**Note**  
Currently, only English language is supported.
  + Comprehensive handling and translation of `simple_term` search strings.
+ `FULLTEXT INDEX` Clause:
  + Supports only `CREATE FULLTEXT INDEX ON table_name(column_name [...n]) KEY INDEX index_name` statement.
  + Supports full `DROP FULLTEXT INDEX` statement.
**Note**  
In order to re-index the Full Text Index, you need to drop the Full Text Index and create a new one on the same column.
+ Special characters in search condition:
  + Babelfish ensures that single occurrences of special characters in search strings are handled effectively.
**Note**  
While Babelfish now identifies special characters in search string, it's essential to recognize that the results obtained may vary compared to those obtained with T-SQL.
+ Table alias in column\$1name:
  + With table alias support, users can create more concise and readable SQL queries for Full-Text Search.

## Limitations in Babelfish Full Text Search
<a name="babelfish-postgres-fulltextsearch-unsupport"></a>
+ Currently, the following options aren't supported in Babelfish for `CONTAINS` Clause.
  + Special characters and Languages other than English aren't supported. You will receive the generic error message for unsupported characters and language

    ```
    Full-text search conditions with special characters or languages other than English are not currently supported in Babelfish
    ```
  + Multiple columns like `column_list`
  + PROPERTY attribute
  + `prefix_term`, `generation_term`, `generic_proximity_term`, `custom_proximity_term`, and `weighted_term`
  + Boolean operators aren't supported and you will receive the following error message when used:

    ```
    boolean operators not supported
    ```
  + Identifier names with dots aren't supported.
+ Currently, the following options aren't supported in Babelfish for `CREATE FULLTEXT INDEX` Clause.
  + [ TYPE COLUMN type\$1column\$1name ]
  + [ LANGUAGE language\$1term ]
  + [ STATISTICAL\$1SEMANTICS ]
  + catalog filegroup options
  + with options
+ Creating a full text catalog isn't supported. Creating a full text index doesn't require a full text catalog.
+ `CREATE FULLTEXT INDEX` doesn't support identifier names with dots.
+ Babelfish doesn't currently support consecutive special characters in search strings. You will receive the following error message when used:

  ```
  Consecutive special characters in the full-text search condition are not currently supported in Babelfish
  ```

# Babelfish supports Geospatial data types
<a name="babelfish-geospatial"></a>

Starting with versions 3.5.0 and 4.1.0, Babelfish includes support for the following two spatial data types:
+ **Geometry data type** – This data type is intended for storing planar or Euclidean (flat-earth) data.
+ **Geography data type** – This data type is intended for storing ellipsoidal or round-earth data, such as GPS latitude and longitude coordinates.

These data types allow for the storage and manipulation of spatial data, but with limitations.

## Understanding the Geospatial data types in Babelfish
<a name="babelfish-geospatial-overview"></a>
+ Geospatial data types are supported in various database objects such as views, procedures, and tables.
+ Supports point data type to store location data as points defined by latitude, longitude, and a valid Spatial Reference System Identifier (SRID). A point may contain Z (elevation), M (measure) values and can be empty.
+ Supports linestring data type (from version 5.4.0) defined by a sequence of points and the line segments connecting them and a valid Spatial Reference System Identifier (SRID). A linestring may contain points with Z (elevation), M (measure) values and can be empty.
+ Supports polygon data type (from version 5.5.0 and 6.0.0). A Polygon is a two-dimensional surface stored as a sequence of points defining an exterior bounding ring and zero or more interior rings.
+ Applications connecting to Babelfish through drivers like JDBC, ODBC, DOTNET, and PYTHON can utilize this Geospatial feature.

### Geometry data type functions supported in Babelfish
<a name="babelfish-geospatial-overview-geometry"></a>
+ **STGeomFromText (*geometry\$1tagged\$1text*, SRID )** – Creates a geometry instance using Well-Known Text (WKT) representation.
+ **STPointFromText (*point\$1tagged\$1text*, SRID )** – Creates a point instance using WKT representation.
+ **Point ( X, Y, SRID )** – Creates a point instance using float values of x and y coordinates.
+ **<geometry\$1instance>.STAsText ( )** – Extracts WKT representation from geometry instance.
+ **<geometry\$1instance>.STAsBinary ( )** – Extracts WKB representation from geometry instance.
+ **<geometry\$1instance>.STArea ( )** – Calculates the total surface area of geometry instance.
+ **<geometry\$1instance>.STSrid ( )** – Extracts the spatial reference identifier (SRID) of the geometry instance.
+ **<geometry\$1instance>.STDimension ( )** – Retrieves spatial dimension of geometry instance.
+ **<geometry\$1instance>.STIsEmpty ( )** – Checks if the geometry instance is empty.
+ **<geometry\$1instance>.STIsClosed ( )** – Checks if the geometry instance is closed.
+ **<geometry\$1instance>.STIsValid ( )** – Checks if the geometry instance is valid.
+ **<geometry\$1instance>.STDistance (other\$1geometry)** – Calculates the distance between two geometry instances.
+ **<geometry\$1instance>.STEquals (other\$1geometry)** – Checks if the geometry instance represents the same point set as another geometry instance.
+ **<geometry\$1instance>.STContains (other\$1geometry)** – Checks if the geometry instance contains the other\$1geometry instance.
+ **<geometry\$1instance>.STDisjoint (other\$1geometry)** – Checks if two geometry instances have no points in common.
+ **<geometry\$1instance>.STIntersects (other\$1geometry)** – Checks if two geometry instances spatially intersect.
+ **<geometry\$1instance>.STX** – Extracts the X coordinate (longitude) for geometry instance.
+ **<geometry\$1instance>.STY** – Extracts the Y coordinate (latitude) for geometry instance.

Starting with versions 4.7.0 and 5.3.0, Babelfish includes support for the following spatial data functions:
+ **<geometry\$1instance>.M** – Extracts the M coordinate of the geometry instance.
+ **<geometry\$1instance>.Z** – Extracts the Z coordinate of the geometry instance.
+ **<geometry\$1instance>.HasM** – Checks if the geometry instance has atleast one M value.
+ **<geometry\$1instance>.HasZ** – Checks if the geometry instance has atleast one Z value.

Starting with versions 5.4.0, Babelfish includes support for the following spatial data function:
+ **STLineFromText (*linestring\$1tagged\$1text*, SRID )** – Creates a linestring instance using WKT representation.

Starting with versions 5.5.0 and 6.0.0, Babelfish includes support for the following spatial data function:
+ **STPolyFromText (*polygon\$1tagged\$1text*, SRID )** – Creates a polygon instance using WKT representation.

### Geography data type functions supported in Babelfish
<a name="babelfish-geospatial-overview-geography"></a>
+ **STGeomFromText (*geography\$1tagged\$1text*, SRID )** – Creates a geography instance using WKT representation.
+ **STPointFromText (*point\$1tagged\$1text*, SRID )** – Creates a point instance using WKT representation.
+ **Point (Lat, Long, SRID)** – Creates a point instance using float values of Latitude and Longitude.
+ **<geography\$1instance>.STAsText ( )** – Extracts WKT representation from geography instance.
+ **<geography\$1instance>.STAsBinary ( )** – Extracts WKB representation from geography instance.
+ **<geography\$1instance>.STArea ( )** – Calculates the total surface area of geography instance.
+ **<geography\$1instance>.STSrid ( )** – Extracts the spatial reference identifier (SRID) of the geography instance.
+ **<geography\$1instance>.STDimension ( )** – Retrieves spatial dimension of geography instance.
+ **<geography\$1instance>.STIsEmpty ( )** – Checks if the geography instance is empty.
+ **<geography\$1instance>.STIsClosed ( )** – Checks if the geography instance is closed.
+ **<geography\$1instance>.STIsValid( )** – Checks if the geography instance is valid.
+ **<geography\$1instance>.STDistance (other\$1geography)** – Calculates the distance between two geography instances.
+ **<geography\$1instance>.STEquals (other\$1geography)** – Checks if the geography instance represents the same point set as another geography instance.
+ **<geography\$1instance>.STContains (other\$1geography)** – Checks if the geography instance contains the other\$1geography instance.
+ **<geography\$1instance>.STDisjoint (other\$1geography)** – Checks if two geography instances have no points in common.
+ **<geography\$1instance>.STIntersects (other\$1geography)** – Checks if two geography instances spatially intersect.
+ **<geography\$1instance>.Lat** – Extracts the Latitude value for geography instance.
+ **<geography\$1instance>.Long** – Extracts the Longitude value for geography instance.

Starting with versions 4.7.0 and 5.3.0, Babelfish includes support for the following spatial data functions:
+ **<geography\$1instance>.M** – Extracts the M coordinate of the geography instance.
+ **<geography\$1instance>.Z** – Extracts the Z coordinate of the geography instance.
+ **<geography\$1instance>.HasM** – Checks if the geography instance has atleast one M value.
+ **<geography\$1instance>.HasZ** – Checks if the geography instance has atleast one Z value.

Starting with versions 5.4.0, Babelfish includes support for the following spatial data function:
+ **STLineFromText (*linestring\$1tagged\$1text*, SRID )** – Creates a linestring instance using WKT representation.

Starting with versions 5.5.0 and 6.0.0, Babelfish includes support for the following spatial data function:
+ **STPolyFromText (*polygon\$1tagged\$1text*, SRID )** – Creates a polygon instance using WKT representation.

## Limitations in Babelfish for Geospatial data types
<a name="babelfish-geospatial-limitations"></a>
+ Geometry and Geography types other than point, linestring and polygon instances aren't currently supported:
  + CircularString
  + CompoundCurve
  + CurvePolygon
  + MultiPoint
  + MultiLineString
  + MultiPolygon
  + GeometryCollection
+ Currently, spatial indexing isn't supported for Geospatial data types.
+ Only the listed functions are currently supported for these data types. For more information, see [Geometry data type functions supported in Babelfish](#babelfish-geospatial-overview-geometry) and [Geography data type functions supported in Babelfish](#babelfish-geospatial-overview-geography).
+ STDistance function output for Geography data might have minor precision variations compared to T-SQL. This is due to the underlying PostGIS implementation. For more information, see [ST\$1Distance](https://postgis.net/docs/ST_Distance.html)
+ STIsValid function output for both Geometry and Geography data might have some deviations compared to T-SQL. Due to this, the functions - STDistance, STContains, STInstersects, STDisjoint, STDimension, STArea, STEquals may also deviate from T-SQL for some cases ( returns output instead of throwing error ). This is due to the underlying PostGIS implementation. For more information, see [ST\$1IsValid](https://postgis.net/docs/ST_IsValid.html).
+ For optimal performance, use built-in Geospatial data types, without creating additional layers of abstraction in Babelfish.
+ In Babelfish, Geospatial function names are used as keywords and will perform spatial operations only if used in the intended way.

# Understanding partitioning in Babelfish
<a name="babelfish-partition"></a>

Starting with version 4.3.0, Babelfish introduces table and index partitioning with limited support. The following sections provide details on creating partition functions, defining partition schemes, and implementing partitioned tables and indexes in Babelfish. 

**Topics**
+ [Introducing to partitioning in Babelfish](#babelfish-partition-function-views)
+ [Limitations and workarounds](#babelfish-partition-limitations)

## Introducing to partitioning in Babelfish
<a name="babelfish-partition-function-views"></a>
+ **Partition functions:**
  + `CREATE PARTITION FUNCTION:` Defines how a table or index is partitioned by specifying the partitioning column type and the range of values for each partition.
  + `DROP PARTITION FUNCTION:` Removes an existing partition function.
+ **Partition schemes:**
  + `CREATE PARTITION SCHEME:` Defines the mapping between partitions and filegroups.
**Note**  
In Babelfish, filegroups are treated as dummy objects and do not represent physical storage locations.
  + `DROP PARTITION SCHEME:` Removes an existing partition scheme.
+ **System function:**
  + `$PARTITION:` This system function returns the partition number to which a specified value in a partitioning column would belong in a specified partitioned table.
+ **Partitioned tables and indexes:**
  + `CREATE TABLE ... ON partition_scheme_name (partition_column_name):` Creates a partitioned table based on a specified partition scheme and partitioning column.
  + `CREATE INDEX ... ON partition_scheme_name (partition_column_name):` Creates a partitioned index based on a specified partition scheme and partitioning column.
+ **System views for partitioning metadata:**

  The following system views are added to provide metadata related to partitioning:
  + `sys.destination_data_spaces`
  + `sys.partitions`
  + `sys.partition_functions`
  + `sys.partition_parameters`
  + `sys.partition_range_values`
  + `sys.partition_schemes`

## Limitations and workarounds
<a name="babelfish-partition-limitations"></a>

The following SQL Server partitioning capabilities aren't yet supported by Babelfish:
+ `ALTER PARTITION FUNCTION` and `ALTER PARTITION SCHEME`.
**Note**  
Babelfish doesn't support split and merge operations. Define all partitions in the partition functions during creation because you can't add or remove partitions later.
+ Computed columns as partitioning columns.
+ `INSERT BULK` and `BCP` utility for partitioned tables.
+ `LEFT` boundary option for partition functions.
+ `SQL_VARIANT` data type for partition functions.
+ `TRUNCATE TABLE ... WITH PARTITION`.
+ `ALTER TABLE ... SWITCH PARTITION`.
+ Un-aligned partitioned indexes such as partition scheme and partition column that differs from the partitioned table.
+ DMS migration from Babelfish source is supported only for Full Load tasks on partitioned tables.
+ Babelfish doesn't support these syntax options but provides workarounds: 
  + Usage of partition scheme with constraints or indexes in the CREATE TABLE statement.
  + ALTER TABLE ... ADD CONSTRAINT ... ON partition\$1scheme\$1name (partition\$1column\$1name).
**Note**  
You can set the `babelfishpg_tsql.escape_hatch_storage_on_partition` escape hatch to ignore. This will allow the parser to ignore the partition scheme option used with constraints or indexes, and the backend will create individual constraints or indexes for each partition.

# Troubleshooting Babelfish
<a name="babelfish-troubleshooting"></a>

Following, you can find troubleshooting ideas and workarounds for some Babelfish DB cluster issues. 

**Topics**
+ [Connection failure](#babelfish-troubleshooting-connectivity)

## Connection failure
<a name="babelfish-troubleshooting-connectivity"></a>

Common causes of connection failures to a new Aurora DB cluster with Babelfish include the following:
+ **Security group doesn't allow access** – If you're having trouble connecting to a Babelfish, make sure that you added your IP address to the default Amazon EC2 security group. You can use [https://checkip.amazonaws.com/](https://checkip.amazonaws.com/) to determine your IP address and then add it to your in-bound rule for the TDS port and the PostgreSQL port. For more information, see [Add rules to a security group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#adding-security-group-rule.html) in the *Amazon EC2 User Guide*.
+ **Mismatching SSL configurations** – If the `rds.force_ssl` parameter is turned on (set to 1) on Aurora PostgreSQL, then clients must connect to Babelfish over SSL. If your client isn't set up correctly, you see an error message such as the following:

  ```
  Cannot connect to your-Babelfish-DB-cluster, 1433
  ---------------------
  ADDITIONAL INFORMATION:
  no pg_hba_conf entry for host "256.256.256.256", user "your-user-name",
  "database babelfish_db", SSL off (Microsoft SQL Server, Error: 33557097)
  ...
  ```

  This error indicates a possible SSL configuration issue between your local client and the Babelfish DB cluster, and that the cluster requires clients to use SSL (its `rds.force_ssl` parameter is set to 1). For more information about configuring SSL, see [Using SSL with a PostgreSQL DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/PostgreSQL.Concepts.General.SSL.html#PostgreSQL.Concepts.General.SSL.Status) in the *Amazon RDS User Guide*. 

  If you are using SQL Server Management Studio (SSMS) to connect to Babelfish and you see this error, you can choose **Encrypt connection** and **Trust server certificate** connection options on the Connection Properties pane and try again. These settings handle the SSL connection requirement for SSMS. 

For more information about troubleshooting Aurora connection issues, see [Can't connect to Amazon RDS DB instance](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting). 

# Managing Babelfish for Aurora PostgreSQL version updates
<a name="babelfish-information"></a>

Babelfish is an option available with Aurora PostgreSQL version 13.4 and higher releases. Updates to Babelfish become available with certain new releases of the Aurora PostgreSQL database engine. For more information, see the [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html). 

**Note**  
Babelfish DB clusters running on any version of Aurora PostgreSQL 13 can't be upgraded to Aurora PostgreSQL 14.3, 14.4, and 14.5. Also, Babelfish doesn't support a direct upgrade from 13.x to 15.x. You must first upgrade your 13.x DB cluster to 14.6 and higher version and then upgrade to 15.x version.

For a list of supported functionality across different Babelfish releases, see [Supported functionalities in Babelfish by version](babelfish-compatibility.supported-functionality-table.md). 

For a list of currently unsupported functionality, see [Unsupported functionalities in Babelfish](babelfish-compatibility.tsql.limitations-unsupported.md).

You can get a list of Aurora PostgreSQL versions that support Babelfish by querying your AWS Region using the [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI command, as follows. 

For Linux, macOS, or Unix:

```
$ aws rds describe-db-engine-versions --region us-east-1 \
    --engine aurora-postgresql \
    --query '*[]|[?SupportsBabelfish==`true`].[EngineVersion]' \
    --output text
```

For more information, see [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) in the *AWS CLI Command Reference*.

In the following topics, you can learn how to identify the version of Babelfish running on your Aurora PostgreSQL DB cluster, and how to upgrade to a new version.

**Contents**
+ [Identifying your version of Babelfish](babelfish-information-identify-version.md)
+ [Upgrading your Babelfish cluster to a new version](babelfish-information-upgrading.md)
  + [Upgrading Babelfish to a new minor version](babelfish-information-upgrading-minor.md)
  + [Upgrading Babelfish to a new major version](babelfish-information-upgrading-major.md)
    + [Before upgrading Babelfish to a new major version](babelfish-information-upgrading-major.md#babelfish-information-upgrading-preliminary)
    + [Performing major version upgrade](babelfish-information-upgrading-major.md#babelfish-performing-major-version-upgrade)
    + [After upgrading to a new major version](babelfish-information-upgrading-major.md#babelfish-information-upgrading-post-upgrade)
    + [Example: Upgrading the Babelfish DB cluster to a major release](babelfish-information-upgrading-major.md#babelfish-information-upgrading-example)
+ [Using Babelfish product version parameter](babelfish-guc-version.md)
  + [Configuring Babelfish product version parameter](babelfish-guc-version.md#babelfish-guc-version-setvalues)
  + [Affected queries and parameter](babelfish-guc-version.md#babelfish-guc-version-affects)
  + [Interface with babelfishpg\$1tsql.version parameter](babelfish-guc-version.md#babelfish-guc-version-tsql)

# Identifying your version of Babelfish
<a name="babelfish-information-identify-version"></a>

You can query Babelfish to find details about the Babelfish version, the Aurora PostgreSQL version, and the compatible Microsoft SQL Server version. You can use the TDS port or the PostgreSQL port. 
+ [To use the TDS port to query for version information](#apg-version-info-tds)
+ [To use the PostgreSQL port to query for version information](#apg-version-info-psql)

**To use the TDS port to query for version information**

1. Use `sqlcmd` or `ssms` to connect to the endpoint for your Babelfish DB cluster.

   ```
   sqlcmd -S bfish_db.cluster-123456789012.aws-region.rds.amazonaws.com,1433 -U
       login-id -P password -d db_name
   ```

1. To identify the Babelfish version, run the following query:

   ```
   1> SELECT CAST(serverproperty('babelfishversion') AS VARCHAR)
   2> GO
   ```

   The query returns results similar to the following:

   ```
   serverproperty
   ------------------------------
   3.4.0
   
   (1 rows affected)
   ```

1. To identify the version of the Aurora PostgreSQL DB cluster, run the following query:

   ```
   1> SELECT aurora_version() AS aurora_version
   2> GO
   ```

   The query returns results similar to the following:

   ```
   aurora_version                                                                                                                                                                                                                                  
   -------------------------------------------------
   15.5.0
   
   (1 rows affected)
   ```

1. To identify the compatible Microsoft SQL Server version, run the following query:

   ```
   1> SELECT @@VERSION AS version
   2> GO
   ```

   The query returns results similar to the following:

   ```
   Babelfish for Aurora PostgreSQL with SQL Server Compatibility - 12.0.2000.8
   Dec 7 2023 09:43:06
   Copyright (c) Amazon Web Services
   PostgreSQL 15.5 on x86_64-pc-linux-gnu (Babelfish 3.4.0)
   
   (1 rows affected)
   ```

As an example that shows one minor difference between Babelfish and Microsoft SQL Server, you can run the following query. On Babelfish, the query returns `1`, while on Microsoft SQL Server, the query returns `NULL`. 

```
SELECT CAST(serverproperty('babelfish') AS VARCHAR) AS runs_on_babelfish
```

You can also use the PostgreSQL port to obtain version information, as shown in the following procedure.

**To use the PostgreSQL port to query for version information**

1. Use `psql` or `pgAdmin` to connect to the endpoint for your Babelfish DB cluster. 

   ```
   psql host=bfish_db.cluster-123456789012.aws-region.rds.amazonaws.com
        port=5432 dbname=babelfish_db user=sa
   ```

1. Turn on the extended feature (`\x`) of `psql` for more readable output.

   ```
   babelfish_db=> \x
   babelfish_db=> SELECT
   babelfish_db=> aurora_version() AS aurora_version,
   babelfish_db=> version() AS postgresql_version,
   babelfish_db=> sys.version() AS Babelfish_compatibility,
   babelfish_db=> sys.SERVERPROPERTY('BabelfishVersion') AS Babelfish_Version;
   ```

   The query returns output similar to the following:

   ```
   -[ RECORD 1 ]-----------+-----------------------------------------------------------------------------------------------
   aurora_version          | 15.5.0
   postgresql_version      | PostgreSQL 15.5 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 9.5.0, 64-bit
   babelfish_compatibility | Babelfish for Aurora Postgres with SQL Server Compatibility - 12.0.2000.8                     +
                           | Dec 7 2023 09:43:06                                                                          +
                           | Copyright (c) Amazon Web Services                                                             +
                           | PostgreSQL 15.5 on x86_64-pc-linux-gnu (Babelfish 3.4.0)
   babelfish_version       | 3.4.0
   ```

# Upgrading your Babelfish cluster to a new version
<a name="babelfish-information-upgrading"></a>

New versions of Babelfish become available with some new releases of the Aurora PostgreSQL database engine after version 13.4. Each new release of Babelfish has its own version number. As with Aurora PostgreSQL, Babelfish uses the *major*.*minor*.*patch* naming scheme for versions. For example, the first Babelfish release, Babelfish version 1.0.0, became available as part of Aurora PostgreSQL 13.4.0. 

Babelfish doesn't require a separate installation process. As discussed in [Creating a Babelfish for Aurora PostgreSQL DB cluster](babelfish-create.md), **Turn on Babelfish** is an option that you choose when you create an Aurora PostgreSQL DB cluster. 

Likewise, you can't upgrade Babelfish independently from the supporting Aurora DB cluster. To upgrade an existing Babelfish for Aurora PostgreSQL DB cluster to a new version of Babelfish, you upgrade the Aurora PostgreSQL DB cluster to a new version that supports the version of Babelfish that you want to use. The procedure that you follow for the upgrade depends on the version of Aurora PostgreSQL that's supporting your Babelfish deployment, as follows. 

**Major version upgrades**  
You must upgrade the following Aurora PostgreSQL versions to Aurora PostgreSQL 14.6 and higher version before upgrading to Aurora PostgreSQL 15.2 version.  
+ Aurora PostgreSQL 13.8 and all higher versions
+ Aurora PostgreSQL 13.7.1 and all higher minor versions
+ Aurora PostgreSQL 13.6.4 and all higher minor versions
You can upgrade Aurora PostgreSQL 14.6 and higher versions to Aurora PostgreSQL 15.2 and higher versions.  
Upgrading an Aurora PostgreSQL DB cluster to a new major version involves several preliminary tasks. For more information, see [Performing a major version upgrade](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md). To successfully upgrade your Babelfish for Aurora PostgreSQL DB cluster, you need to create a custom DB cluster parameter group for the new Aurora PostgreSQL version. This new parameter group must contain the same Babelfish parameter settings as that of the cluster that you're upgrading. For more information and for a table of major version upgrade sources and targets, see [Upgrading Babelfish to a new major version](babelfish-information-upgrading-major.md).

**Minor version upgrades and patches**  
Minor versions and patches don't require the creation of a new DB cluster parameter group for the upgrade. Minor versions and patches can use the minor version upgrade process, whether that's applied automatically or manually. For more information and a table of version sources and targets, see [Upgrading Babelfish to a new minor version](babelfish-information-upgrading-minor.md). 

**Note**  
Before performing a major or a minor upgrade, apply all pending maintenance tasks to your Babelfish for Aurora PostgreSQL cluster.

**Topics**
+ [Upgrading Babelfish to a new minor version](babelfish-information-upgrading-minor.md)
+ [Upgrading Babelfish to a new major version](babelfish-information-upgrading-major.md)

# Upgrading Babelfish to a new minor version
<a name="babelfish-information-upgrading-minor"></a>

A minor version update aims to maintain backward compatibility. However, in some cases, critical security fixes or important bug fixes may not be fully backward compatible. A *patch* version includes important fixes for a minor version after its release. For example, the version label for the first release of Aurora PostgreSQL 13.4 was Aurora PostgreSQL 13.4.0. Several patches for that minor version have been released to date, including Aurora PostgreSQL 13.4.1, 13.4.2, and 13.4.4. You can find the patches available for each Aurora PostgreSQL version in the **Patch releases** list at the top of the Aurora PostgreSQL release notes for that version. For an example, see [PostgreSQL 14.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.143X) in the *Release Notes for Aurora PostgreSQL*. 

If your Aurora PostgreSQL DB cluster is configured with the **Auto minor version upgrade** option, your Babelfish for Aurora PostgreSQL DB cluster is upgraded automatically during the cluster's maintenance window. To learn more about auto minor version upgrade (AmVU) and how to use it, see [Automatic minor version upgrades for Aurora DB clusters](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU). If your cluster isn't using AmVU, you can manually upgrade your Babelfish for Aurora PostgreSQL DB cluster to new minor versions either by responding to maintenance tasks, or by modifying the cluster to use the new version. 

When you choose an Aurora PostgreSQL version to install and when you view an existing Aurora PostgreSQL DB cluster in the AWS Management Console, the version displays the *major*.*minor* digits only. For example, the following image from the Console for an existing Babelfish for Aurora PostgreSQL DB cluster with Aurora PostgreSQL 13.4 recommends upgrading the cluster to version 13.7, a new minor release of Aurora PostgreSQL. 

![\[Minor version upgrade available for an Aurora PostgreSQL DB cluster with Babelfish.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-minor-upgrade-available-bfish-cluster.png)


To get complete version details, including the *patch* level, you can query the Aurora PostgreSQL DB cluster using the `aurora_version` Aurora PostgreSQL function. For more information, see [aurora\$1version](aurora_version.md) in the [Aurora PostgreSQL functions reference](Appendix.AuroraPostgreSQL.Functions.md). You can find an example of using the function in the [To use the PostgreSQL port to query for version information](babelfish-information-identify-version.md#apg-version-info-psql) procedure in [Identifying your version of Babelfish](babelfish-information-identify-version.md). 

The following table shows Aurora PostgreSQL and Babelfish version and the available target versions that can support the minor version upgrade process.


| Current source versions | Newest upgrade targets | 
| --- | --- | 
| Aurora PostgreSQL (Babelfish)  | Aurora PostgreSQL (Babelfish)  | 
|  17.7 (5.4.0)  |  17.9 (5.5.0)  | 
|  17.6 (5.3.0)  |  17.9 (5.5.0), 17.7 (5.4.0)  | 
|  17.5 (5.2.0)  |  17.9 (5.5.0), 17.7 (5.4.0), 17.6.0 (5.3.0)  | 
|  17.4 (5.1.0)  |  17.9 (5.5.0), 17.7 (5.4.0), 17.6.0 (5.3.0), 17.5 (5.2.0)  | 
|  16.11 (4.8.0)  |  16.13 (4.9.0)  | 
|  16.10 (4.7.0)  |  16.13 (4.9.0), 16.11 (4.8.0)  | 
|  16.9 (4.6.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0)  | 
|  16.8 (4.5.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0), 16.9 (4.6.0)  | 
|  16.6 (4.4.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0), 16.9 (4.6.0), 16.8 (4.5.0)  | 
|  16.4 (4.3.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0), 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0)  | 
|  16.3 (4.2.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0), 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0)  | 
|  16.2 (4.1.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0), 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0)  | 
|  16.1 (4.0.0)  |  16.13 (4.9.0), 16.11 (4.8.0), 16.10 (4.7.0), 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0)  | 
|  15.15 (3.12.0)  |  15.17 (3.13.0)  | 
|  15.14 (3.11.0)  |  15.17 (3.13.0), 15.15 (3.12.0)  | 
|  15.13 (3.10.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0)  | 
|  15.12 (3.9.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0)  | 
|  15.10 (3.8.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0)  | 
|  15.8 (3.7.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0)  | 
|  15.7 (3.6.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0)  | 
|  15.6 (3.5.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0)  | 
|  15.5 (3.4.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0)  | 
|  15.4 (3.3.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0)  | 
|  15.12 (3.9.0), 15.3 (3.2.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0), 15.4 (3.3.0)  | 
|  15.2 (3.1.0)  |  15.17 (3.13.0), 15.15 (3.12.0), 15.14 (3.11.0), 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0), 15.4 (3.3.0), 15.3 (3.2.0)  | 
|  14.20 (2.15.0)  |  14.22 (2.16.0)  | 
|  14.19 (2.14.0)  |  14.22 (2.16.0), 14.20 (2.15.0)  | 
|  14.18 (2.13.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0)  | 
|  14.17 (2.12.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0)  | 
|  14.15 (2.11.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0)  | 
|  14.13 (2.10.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0)  | 
|  14.12 (2.9.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0)  | 
|  14.11 (2.8.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0)  | 
|  14.10 (2.7.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0), 14.11 (2.8.0)  | 
|  14.9 (2.6.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0), 14.11 (2.8.0), 14.10 (2.7.0)  | 
|  14.8 (2.5.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0), 14.11 (2.8.0), 14.10 (2.7.0), 14.9 (2.6.0)  | 
|  14.7 (2.4.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0), 14.11 (2.8.0), 14.10 (2.7.0), 14.9 (2.6.0), 14.8 (2.5.0)  | 
|  14.6 (2.3.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0), 14.11 (2.8.0), 14.10 (2.7.0), 14.9 (2.6.0), 14.8 (2.5.0), 14.7 (2.4.0)  | 
|  14.5 (2.2.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.17 (2.12.0), 14.15 (2.11.0), 14.13 (2.10.0), 14.12 (2.9.0), 14.11 (2.8.0), 14.10 (2.7.0), 14.9 (2.6.0), 14.8 (2.5.0), 14.7 (2.4.0), 14.6 (2.3.0)  | 
|  14.3 (2.1.0)  |  14.22 (2.16.0), 14.20 (2.15.0), 14.19 (2.14.0), 14.18 (2.13.0), 14.6 (2.3.0)  | 
|  13.8 (1.4.0)  |  13.9 (1.5.0)  | 
|  13.7 (1.3.0)  |  13.9 (1.5.0), 13.8 (1.4.0)  | 

# Upgrading Babelfish to a new major version
<a name="babelfish-information-upgrading-major"></a>

For a major version upgrade, you need to first upgrade your Babelfish for Aurora PostgreSQL DB cluster to a version that supports the major version upgrade. To achieve this, apply patch updates or minor version upgrades to your DB cluster. For more information,see [Upgrading Babelfish to a new minor version](babelfish-information-upgrading-minor.md).

The following table shows Aurora PostgreSQL version and Babelfish version that can support a major version upgrade.


| Current source versions | Newest upgrade targets | 
| --- | --- | 
| Aurora PostgreSQL (Babelfish)  | Aurora PostgreSQL (Babelfish)  | 
|  16.9 (4.6.0)  |  17.5 (5.2.0)  | 
|  16.8 (4.5.0)  |  17.5 (5.2.0), 17.4 (5.1.0)  | 
|  16.6 (4.4.0)  |  17.5 (5.2.0), 17.4 (5.1.0)  | 
|  16.4 (4.3.0)  |  17.5 (5.2.0), 17.4 (5.1.0)  | 
|  16.3 (4.2.0)  |  17.5 (5.2.0), 17.4 (5.1.0)  | 
|  16.2 (4.1.0)  |  17.5 (5.2.0), 17.4 (5.1.0)  | 
|  16.1 (4.0.0)  |  17.5 (5.2.0), 17.4 (5.1.0)  | 
|  15.13 (3.10)  |  17.5 (5.2.0) 16.9 (4.6.0)  | 
|  15.12 (3.9.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0)  | 
|  15.10 (3.8.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0)  | 
|  15.8 (3.7.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0)  | 
|  15.7 (3.6.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0)  | 
|  15.6 (3.5.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0)  | 
|  15.5 (3.4.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0)  | 
|  15.4 (3.3.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0)  | 
|  15.3 (3.2.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0)  | 
|  15.2 (3.1.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0)  | 
|  14.18 (2.13.0)  |  17.5 (5.2.0) 16.9 (4.6.0) 15.13 (3.10.0)  | 
|  14.17 (2.12.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0) 15.13 (3.10.0), 15.12 (3.9.0)  | 
|  14.15 (2.11.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0)  | 
|  14.13 (2.10.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0)  | 
|  14.12 (2.9.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0)  | 
|  14.11 (2.8.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0)  | 
|  14.10 (2.7.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0)  | 
|  14.9 (2.6.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0), 15.4 (3.3.0)  | 
|  14.8 (2.5.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0), 15.4 (3.3.0), 15.3 (3.2.0)  | 
|  14.7 (2.4.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0), 15.4 (3.3.0), 15.3 (3.2.0), 15.2 (3.1.0)  | 
|  14.6 (2.3.0)  |  17.5 (5.2.0), 17.4 (5.1.0) 16.9 (4.6.0), 16.8 (4.5.0), 16.6 (4.4.0), 16.4 (4.3.0), 16.3 (4.2.0), 16.2 (4.1.0), 16.1 (4.0.0) 15.13 (3.10.0), 15.12 (3.9.0), 15.10 (3.8.0), 15.8 (3.7.0), 15.7 (3.6.0), 15.6 (3.5.0), 15.5 (3.4.0), 15.4 (3.3.0), 15.3 (3.2.0), 15.2 (3.1.0)  | 
|  13.9 (1.5.0)  |  14.6 (2.3.0)  | 
|  13.8 (1.4.0)  | 14.6 (2.3.0) | 
|  13.7 (1.3.0)  |  14.6 (2.3.0)  | 

## Before upgrading Babelfish to a new major version
<a name="babelfish-information-upgrading-preliminary"></a>

An upgrade might involve brief outages. For that reason, we recommend that you perform or schedule upgrades during your maintenance window or during other periods of low usage.

**Before you perform a major version upgrade**

 

1. Identify the Babelfish version of your existing Aurora PostgreSQL DB cluster by using the commands outlined in [Identifying your version of Babelfish](babelfish-information-identify-version.md). The Aurora PostgreSQL version and Babelfish version information is handled by PostgreSQL, so follow the steps detailed in the [To use the PostgreSQL port to query for version information](babelfish-information-identify-version.md#apg-version-info-psql) procedure to get the details. 

1. Verify if your version supports the major version upgrade. For the list of versions that support the major version upgrade feature, see [Upgrading Babelfish to a new minor version](babelfish-information-upgrading-minor.md) and perform the necessary pre-upgrade tasks.

    For example, if your Babelfish version is running on an Aurora PostgreSQL 13.5 DB cluster and you want to upgrade to Aurora PostgreSQL 15.2, then first apply all the minor releases and patches to upgrade your cluster to Aurora PostgreSQL 14.6 or higher version. When your cluster is at version 14.6 or higher, continue with the major version upgrade process. 

1. Create a manual snapshot of your current Babelfish DB cluster as a backup. The backup lets you restore the cluster to its Aurora PostgreSQL version, Babelfish version, and restore all data to the state before the upgrade. For more information, see [Creating a DB cluster snapshot](USER_CreateSnapshotCluster.md). Be sure to keep your existing custom DB cluster parameter group to use again if you decide to restore this cluster to its pre-upgraded state. For more information, see [Restoring from a DB cluster snapshot](aurora-restore-snapshot.md) and [Parameter group considerations](aurora-restore-snapshot.md#aurora-restore-snapshot.Parameters). 

1. Prepare a custom DB cluster parameter group for the target Aurora PostgreSQL DB version. Duplicate the settings for the Babelfish parameters from your current Babelfish for Aurora PostgreSQL DB cluster. To find a list of all Babelfish parameters, see [DB cluster parameter group settings for Babelfish](babelfish-configuration.md). For a major version upgrade, the following parameters require the same settings as the source DB cluster. For the upgrade to succeed, all the settings must be the same.
   + rds.babelfish\$1status
   + babelfishpg\$1tds.tds\$1default\$1numeric\$1precision
   + babelfishpg\$1tds.tds\$1default\$1numeric\$1scale
   + babelfishpg\$1tsql.database\$1name
   + babelfishpg\$1tsql.default\$1locale
   + babelfishpg\$1tsql.migration\$1mode
   + babelfishpg\$1tsql.server\$1collation\$1name
**Warning**  
If the settings for the Babelfish parameters in the custom DB cluster parameter group for the new Aurora PostgreSQL version don't match the parameter values of the cluster that you're upgrading, the `ModifyDBCluster` operation fails. An `InvalidParameterCombination` error message appears in the AWS Management Console or in the output from the `modify-db-cluster` AWS CLI command.

1. Use the AWS Management Console or the AWS CLI to create the custom DB cluster parameter group. Choose the applicable Aurora PostgreSQL family for the version of Aurora PostgreSQL that you want for the upgrade. 
**Tip**  
Parameter groups are managed at the AWS Region level. When you work with AWS CLI, you can configure with a default Region instead of specifying the `--region` in the command. To learn more about using the AWS CLI, see [Quick setup](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html) in the *AWS Command Line Interface User Guide*. 

## Performing major version upgrade
<a name="babelfish-performing-major-version-upgrade"></a>

1. Upgrade Aurora PostgreSQL DB cluster to a new major version. For more information, see [Upgrading the Aurora PostgreSQL engine to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.Upgrading.Manual).

1. Reboot the writer instance of the cluster, so that the parameter settings can take effect.

## After upgrading to a new major version
<a name="babelfish-information-upgrading-post-upgrade"></a>

After a major version upgrade to a new Aurora PostgreSQL version, the `IDENTITY` value in tables with an `IDENTITY` column might be larger (\$132) than the value was before the upgrade. The result is that when the next row is inserted into such tables, the generated identity column value jumps to the \$132 number and starts the sequence from there. This condition won't negatively affect the functions of your Babelfish DB cluster. However, if you want, you can reset the sequence object based on the maximum value of the column. To do so, connect to the T-SQL port on your Babelfish writer instance using `sqlcmd` or another SQL Server client. For more information, see [Using a SQL Server client to connect to your DB cluster](babelfish-connect-sqlserver.md). 

```
sqlcmd -S bfish-db.cluster-123456789012.aws-region.rds.amazonaws.com,1433 -U
     sa -P ******** -d dbname
```

When connected, use the following SQL command to generate statements that you can use to seed the associated sequence object. This SQL command works for both single database and multiple database Babelfish configurations. For more information about these two deployment models, see [Using Babelfish with a single database or multiple databases](babelfish-architecture.md#babelfish-single_vs_multi_db). 

```
DECLARE @schema_prefix NVARCHAR(200) = ''
IF current_setting('babelfishpg_tsql.migration_mode') = 'multi-db'
    SET @schema_prefix = db_name() + '_'
SELECT 'SELECT setval(pg_get_serial_sequence(''' + @schema_prefix + schema_name(tables.schema_id)
    + '.' + tables.name + ''', ''' + columns.name + '''),(select max(' + columns.name + ')
    FROM ' + schema_name(tables.schema_id) + '.' + tables.name + '));
    'FROM sys.tables tables JOIN sys.columns
    columns ON tables.object_id = columns.object_id
    WHERE columns.is_identity = 1
GO
```

The query generates a series of SELECT statements that you can then run to reset the maximum IDENTITY value and close any gap. The following shows the output when using the sample SQL Server database, Northwind, running on a Babelfish cluster. 

```
--------------------------------------------------------
SELECT setval(pg_get_serial_sequence('northwind_dbo.categories', 'categoryid'),(select max(categoryid)
    FROM dbo.categories));

SELECT setval(pg_get_serial_sequence('northwind_dbo.orders', 'orderid'),(select max(orderid)
    FROM dbo.orders));
                                                                                                                        
SELECT setval(pg_get_serial_sequence('northwind_dbo.products', 'productid'),(select max(productid)
    FROM dbo.products));
                                                                                                                        
SELECT setval(pg_get_serial_sequence('northwind_dbo.shippers', 'shipperid'),(select max(shipperid)
    FROM dbo.shippers));
                                                                                                                        
SELECT setval(pg_get_serial_sequence('northwind_dbo.suppliers', 'supplierid'),(select max(supplierid)
    FROM dbo.suppliers));
                                                                                                                        
(5 rows affected)
```

Run the statements one by one to reset the sequence values. 

## Example: Upgrading the Babelfish DB cluster to a major release
<a name="babelfish-information-upgrading-example"></a>

 In this example, you can find the series of AWS CLI commands that explains how to upgrade an Aurora PostgreSQL 13.6.4 DB cluster running Babelfish version 1.2.2 to Aurora PostgreSQL 14.6. First, you create a custom DB cluster parameter group for Aurora PostgreSQL 14. Next, you modify the parameter values to match those of your Aurora PostgreSQL version 13 source. Finally, you perform the upgrade by modifying the source cluster. For more information, see [DB cluster parameter group settings for Babelfish](babelfish-configuration.md). In that topic, you can also find information about using the AWS Management Console to perform the upgrade.

Use the [create-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster-parameter-group.html) CLI command to create the DB cluster parameter group for the new version.

For Linux, macOS, or Unix:

```
aws rds create-db-cluster-parameter-group \
    --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 \
    --db-parameter-group-family aurora-postgresql14 \
    --description 'New custom parameter group for upgrade to new major version' \
    --region us-west-1
```

When you issue this command, the custom DB cluster parameter group is created in the AWS Region. You see output similar to the following.

```
{
    "DBClusterParameterGroup": {
        "DBClusterParameterGroupName": "docs-lab-babelfish-apg-14",
        "DBParameterGroupFamily": "aurora-postgresql14",
        "Description": "New custom parameter group for upgrade to new major version",
        "DBClusterParameterGroupArn": "arn:aws:rds:us-west-1:111122223333:cluster-pg:docs-lab-babelfish-apg-14"
    }
}
```

For more information, see [Creating a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md). 

Use the [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) CLI command to modify the settings so that they match the source cluster.

For Windows:

```
aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name docs-lab-babelfish-apg-14 ^
  --parameters "ParameterName=rds.babelfish_status,ParameterValue=on,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tds.tds_default_numeric_precision,ParameterValue=38,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tds.tds_default_numeric_scale,ParameterValue=8,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.database_name,ParameterValue=babelfish_db,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.default_locale,ParameterValue=en-US,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.migration_mode,ParameterValue=single-db,ApplyMethod=pending-reboot" ^
 "ParameterName=babelfishpg_tsql.server_collation_name,ParameterValue=sql_latin1_general_cp1_ci_as,ApplyMethod=pending-reboot"
```

The response looks similar to the following.

```
{
    "DBClusterParameterGroupName": "docs-lab-babelfish-apg-14"
}
```

Use the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) CLI command to modify the cluster to use the new version and the new custom DB cluster parameter group. You also specify the `--allow-major-version-upgrade` argument, as shown in the following sample. 

```
aws rds modify-db-cluster \
--db-cluster-identifier docs-lab-bfish-apg-14 \
--engine-version 14.6 \
--db-cluster-parameter-group-name docs-lab-babelfish-apg-14 \
--allow-major-version-upgrade \
--region us-west-1 \
--apply-immediately
```

Use the [reboot-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance.html) CLI command to reboot the writer instance of the cluster, so that the parameter settings can take effect.

```
aws rds reboot-db-instance \
--db-instance-identifier docs-lab-bfish-apg-14-instance-1\
--region us-west-1
```

# Using Babelfish product version parameter
<a name="babelfish-guc-version"></a>

 A new Grand Unified Configuration (GUC) parameter called `babelfishpg_tds.product_version` is introduced from Babelfish 2.4.0 and 3.1.0 versions. This parameter allows you to set the SQL Server product version number as the output of Babelfish. 

The parameter is a 4-part version ID string, and each part should be separated by “.”. 

Syntax  

```
Major.Minor.Build.Revision
```
+ Major Version: A number between 11 and 16.
+ Minor Version: A number between 0 and 255. 
+ Build Version: A number between 0 and 65535.
+ Revision: 0 and any positive number.

## Configuring Babelfish product version parameter
<a name="babelfish-guc-version-setvalues"></a>

You must use the cluster parameter group to set the babelfishpg\$1tds.product\$1version parameter in the console. For more information on how to modify the DB cluster parameter, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md).

When you set the product version parameter to an invalid value, the change will not take effect. Although the console might show you the new value, the parameter retains the previous value. Check the engine log file for details about the error messages. 

For Linux, macOS, or Unix:

```
aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name mydbparametergroup \
--parameters "ParameterName=babelfishpg_tds.product_version,ParameterValue=15.2.4000.1,ApplyMethod=immediate"
```

For Windows:

```
aws rds modify-db-cluster-parameter-group ^
--db-cluster-parameter-group-name mydbparametergroup ^
--parameters "ParameterName=babelfishpg_tds.product_version,ParameterValue=15.2.4000.1,ApplyMethod=immediate"
```

## Affected queries and parameter
<a name="babelfish-guc-version-affects"></a>


|  Query/Parameter  |  Result  |  Effective time  | 
| --- | --- | --- | 
|   SELECT @@VERSION   |   Returns user defined SQL Server version (babelfishpg\$1tsql.version value = Default)   |   Immediately   | 
|   SELECT SERVERPROPERTY('ProductVersion')   |   Returns user defined SQL Server version   |   Immediately   | 
|   SELECT SERVERPROPERTY('ProductMajorVersion')   |   Returns Major Version of the user defined SQL Server version   |   Immediately   | 
|   VERSION tokens in PRELOGIN Response Message   |   Server returns PRELOGIN messages with user defined SQL Server version   |   Takes effect when a user creates a new session   | 
|   SQLServerVersion in LoginAck when using JDBC   |   DatabaseMetaData.getDatabaseProductVersion() returns user defined SQL Server version   |   Takes effect when a user creates a new session   | 

## Interface with babelfishpg\$1tsql.version parameter
<a name="babelfish-guc-version-tsql"></a>

You can set the output of the @@VERSION using the parameters babelfishpg\$1tsql.version and babelfishpg\$1tds.product\$1version. The following examples show how these two parameters interface.
+ When babelfishpg\$1tsql.version parameter is "default" and babelfishpg\$1tds.product\$1version is 15.0.2000.8.
  +  Output of @@version – 15.0.2000.8.
+ When babelfishpg\$1tsql.version parameter is set to 13.0.2000.8 and babelfishpg\$1tds.product\$1version parameter is 15.0.2000.8.
  + Output of @@version – 13.0.2000.8.

# Babelfish for Aurora PostgreSQL reference
<a name="USER_AuroraPostgreSQL_Babelfish_Reference"></a>

**Topics**
+ [Supported functionalities in Babelfish by version](babelfish-compatibility.supported-functionality-table.md)
+ [Unsupported functionalities in Babelfish](babelfish-compatibility.tsql.limitations-unsupported.md)
+ [Working with Babelfish for Aurora PostgreSQL procedures](Appendix.Babelfish.Functions.md)
+ [Babelfish supports XML datatype methods](babelfish-xml-datatype-methods.md)

# Supported functionalities in Babelfish by version
<a name="babelfish-compatibility.supported-functionality-table"></a>

In the following tables, you can find the list of all the functionalities supported by different Babelfish versions. For lists of unsupported functionality, see [Unsupported functionalities in Babelfish](babelfish-compatibility.tsql.limitations-unsupported.md). For information about various Babelfish releases, see the [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html).

## Aurora and PostgreSQL features
<a name="babelfish-compatibility.supported-functionality-table-apg"></a>

In the following table, you can find Aurora and PostgreSQL features supported by different Babelfish versions.


| Aurora and PostgreSQL features | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Aurora ML services | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Database authentication with Kerberos using Directory Service | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Dump and restore | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| pg\$1stat\$1statement extension | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| pgvector | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Zero-downtime patching (ZDP) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 

## T-SQL Functionality or syntax
<a name="babelfish-compatibility.supported-functionality-table-tsql"></a>

In the following table, you can find T-SQL functionality or syntax supported by different Babelfish versions.


| T-SQL Functionality or syntax | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 4 parts object name references for SELECT statements | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ALTER AUTHORIZATION syntax to change database owner | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ALTER DATABASE <db\$1name> MODIFY NAME = <new\$1db\$1name> | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ALTER FUNCTION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png) No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ALTER PROCEDURE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ALTER ROLE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ALTER USER...WITH LOGIN | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ALTER VIEW | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| AS keyword in CREATE FUNCTION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| AT TIME ZONE clause | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Babelfish instance as a linked server | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Comparison operators \$1< and \$1> | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CREATE INDEX ... ON partition\$1scheme\$1name (partition\$1column\$1name) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CREATE Instead of Triggers (DML) on SQL Server Views | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CREATE PARTITION FUNCTION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CREATE PARTITION SCHEME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CREATE ROLE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CREATE TABLE ... ON partition\$1scheme\$1name (partition\$1column\$1name) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CREATE TRIGGER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CREATE OR ALTER VIEW | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Create unique indexes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Cross–database procedure execution | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Cross–database references SELECT, INSERT, UPDATE, DELETE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Cursor-typed parameters for input parameters only (not output) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Data migration using the bcp client utility | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Datatypes TIMESTAMP, ROWVERSION (for usage information, see Features with limited implementation | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| DEFAULT keyword in calls to stored procedures and functions | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DBCC CHECKIDENT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DROP DATABASE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DROP IF EXISTS (for SCHEMA, DATABASE, and USER objects) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| DROP INDEX index ON schema.table | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DROP INDEX schema.table.index | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DROP PARTITION FUNCTION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DROP PARTITION SCHEME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DROP ROLE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ENABLE/DISABLE TRIGGER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| FULL TEXT SEARCH | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Full Text Search with CONTAINS clause | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Geometry and Geography spatial datatypes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| GRANT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| GRANT permission [ ,...n ] ON SCHEMA | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| GUC babelfishpg\$1tds.product\$1version | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Identifiers with leading dot character | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| INSTEAD OF triggers on tables | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| INSTEAD OF triggers on views | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| KILL | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| \$1PARTITION.partition\$1function\$1name(partition\$1column\$1value) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| PIVOT(use in view definition from 4.4.0 and 3.8.0, common table expression from 3.4.0 , join from 3.4.0) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| REVOKE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| REVOKE permission [ ,...n ] ON SCHEMA | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SELECT...OFFSET...FETCH clauses | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SELECT FOR JSON AUTO | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET BABELFISH\$1SHOWPLAN\$1ALL ON (and OFF) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SET BABELFISH\$1STATISTICS PROFILE ON (OFF) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SET CONTEXT\$1INFO | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET LOCK\$1TIMEOUT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SET NO\$1BROWSETABLE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET rowcount | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET SHOWPLAN\$1ALL | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET STATISTICS IO | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET TRANSACTION ISOLATION LEVEL REPEATABLE READ | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET TRANSACTION ISOLATION LEVEL SERIALIZABLE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SET TRANSACTION ISOLATION LEVEL syntax | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SSMS: Connecting with the object explorer connection dialog | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SSMS: Data migration with the Import/Export Wizard | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SSMS: Partial support for the object explorer | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| STDEV | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| STDEVP | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Triggers with multiple DML actions can reference transition tables | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| T-SQL hints (join methods, index usage, MAXDOP) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| T-SQL square bracket syntax with the LIKE predicate | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| UNPIVOT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| Unquoted string values in stored procedure calls and default values | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| VAR | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| VARP | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 

## T-SQL Built-in functions
<a name="babelfish-compatibility.supported-functionality-table-builtin"></a>

In the following table, you can find T-SQL Built-in functions supported by different Babelfish versions.


| T-SQL Built-in functions | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| APP\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ATN2 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CHARINDEX | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CHOOSE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| COL\$1LENGTH | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| COL\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| COLUMNS\$1UPDATED | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| COLUMNPROPERTY (CharMaxLen, AllowsNull only) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CONCAT\$1WS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CONTEXT\$1INFO | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| CURSOR\$1STATUS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| DATABASE\$1PRINCIPAL\$1ID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATEADD | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATEDIFF | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATEDIFF\$1BIG | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATEFROMPARTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| DATENAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATEPART | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATETIMEFROMPARTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| DATETIME2FROMPARTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATETIMEOFFSETFROMPARTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATETRUNC | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| DATE\$1BUCKET | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| EOMONTH | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| EXECUTE AS CALLER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| fn\$1listextendedproperty | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| FOR JSON | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| FULLTEXTSERVICEPROPERTY | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| HAS\$1DBACCESS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| HAS\$1PERMS\$1BY\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| HOST\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| HOST\$1ID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| IDENTITY | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| IS\$1MEMBER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IS\$1ROLEMEMBER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IS\$1SRVROLEMEMBER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ISJSON | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| JSON\$1MODIFY | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| JSON\$1QUERY | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| JSON\$1VALUE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| NEXT VALUE FOR | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| OBJECT\$1DEFINITION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| OBJECT\$1SCHEMA\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| OPENJSON | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| OPENQUERY | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ORIGINAL\$1LOGIN | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| PARSENAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| PATINDEX | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ROWCOUNT\$1BIG | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SCHEMA\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SESSION\$1CONTEXT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SESSION\$1USER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SID\$1BINARY (returns NULL always) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SMALLDATETIMEFROMPARTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SQUARE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| STR | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| STRING\$1AGG | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| STRING\$1SPLIT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SUSER\$1SID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SUSER\$1SNAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| SWITCHOFFSET | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| SYSTEM\$1USER | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TIMEFROMPARTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TODATETIMEOFFSET | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TO\$1CHAR | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TRIGGER\$1NESTLEVEL (without arguments only) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| TRY\$1CONVERT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TYPE\$1ID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TYPE\$1NAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| UPDATE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## T-SQL INFORMATION\$1SCHEMA catalogs
<a name="babelfish-compatibility.supported-functionality-table-schema"></a>

In the following table, you can find T-SQL INFORMATION\$1SCHEMA catalogs supported by different Babelfish versions.


| T-SQL INFORMATION\$1SCHEMA catalogs | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| CHECK\$1CONSTRAINTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| COLUMN\$1DOMAIN\$1USAGE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| COLUMNS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CONSTRAINT\$1COLUMN\$1USAGE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| DOMAINS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| KEY\$1COLUMN\$1USAGE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ROUTINES | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| TABLES | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| TABLE\$1CONSTRAINTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| VIEWS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## T-SQL System-defined @@ variables
<a name="babelfish-compatibility.supported-functionality-table-var"></a>

In the following table, you can find T-SQL System-defined @@ variables supported by different Babelfish versions.


| T-SQL System-defined @@ variables | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| @@CURSOR\$1ROWS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@DATEFIRST | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@DBTS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@ERROR | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@ERROR=213 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@FETCH\$1STATUS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@IDENTITY | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@LANGUAGE | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@LOCK\$1TIMEOUT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@MAX\$1CONNECTIONS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@MAX\$1PRECISION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@MICROSOFTVERSION | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@NESTLEVEL | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@PROCID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@ROWCOUNT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@SERVERNAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@SERVICENAME | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@SPID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@TRANCOUNT | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| @@VERSION (note format difference as described in [T-SQL differences in Babelfish](babelfish-compatibility.tsql.limitations.md). | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## T-SQL System stored procedures
<a name="babelfish-compatibility.supported-functionality-table-proc"></a>

In the following table, you can find T-SQL System stored procedures supported by different Babelfish versions.


| T-SQL System stored procedures | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| sp\$1addextendedproperty | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1addlinkedserver | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1addlinkedsrvlogin | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1addrole | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1addrolemember | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1babelfish\$1volatility | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1column\$1privileges | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1columns | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1columns\$1100 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1columns\$1managed | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursor | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursor\$1list | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursorclose | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursorexecute | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursorfetch | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursoropen | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursoroption | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursorprepare | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursorprepexec | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1cursorunprepare | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1databases | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1datatype\$1info | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1datatype\$1info\$1100 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1describe\$1cursor | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1describe\$1first\$1result\$1set | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1describe\$1undeclared\$1parameters | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1dropextendedproperty | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1droplinkedsrvlogin | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1droprole | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1droprolemember | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1dropserver | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1enum\$1oledb\$1providers | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1execute | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1execute\$1postgresql(CREATE, ALTER, DROP) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1executesql | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1fkeys | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1getapplock | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1helpdb | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1helpdbfixedrole | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1helplinkedsrvlogin | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1helprole | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1helprolemember | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1helpsrvrolemember | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1helpuser | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1linkedservers | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1oledb\$1ro\$1usrname | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1pkeys | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1prefix | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1prepare | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1procedure\$1params\$1100\$1managed | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1releaseapplock | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1rename | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1renamedb | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1rename (for object\$1type 'DATABASE') | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1reset\$1connection | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1serveroption(connect\$1timeout option) | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1set\$1session\$1context | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1special\$1columns | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1sproc\$1columns | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1sproc\$1columns\$1100 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1statistics | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1statistics\$1100 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1stored\$1procedures | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1table\$1privileges | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1tablecollations\$1100 | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1tables | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1testlinkedserver | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1unprepare | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sp\$1updateextendedproperty | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sp\$1who | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| xp\$1qv | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## T-SQL Properties supported on the CONNECTIONPROPERTY system function
<a name="babelfish-compatibility.supported-functionality-table-connprop"></a>

In the following table, you can find T-SQL Properties supported on the CONNECTIONPROPERTY system functions supported by different Babelfish versions.


| T-SQL Properties supported on the CONNECTIONPROPERTY system function | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| auth\$1scheme | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| client\$1net\$1address | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| local\$1net\$1address | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| local\$1tcp\$1port | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| net\$1transport | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| protocol\$1type | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| physical\$1net\$1transport | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## T-SQL Properties supported on the OBJECTPROPERTY system function
<a name="babelfish-compatibility.supported-functionality-table-objprop"></a>

In the following table, you can find T-SQL Properties supported on the OBJECTPROPERTY system functions supported by different Babelfish versions.


| T-SQL Properties supported on the OBJECTPROPERTY system function | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| IsInlineFunction | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsScalarFunction | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsTableFunction | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## T-SQL Properties supported on the SERVERPROPERTY function
<a name="babelfish-compatibility.supported-functionality-table-servprop"></a>

In the following table, you can find T-SQL Properties supported on the SERVERPROPERTY functions supported by different Babelfish versions.


| T-SQL Properties supported on the SERVERPROPERTY function | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Babelfish | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Collation | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| CollationID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Edition | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| EditionID | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| EngineEdition | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| InstanceName | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| IsAdvancedAnalyticsInstalled | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsBigDataCluster | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsFullTextInstalled | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsIntegratedSecurityOnly | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsLocalDB | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsPolyBaseInstalled | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsSingleUser | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| IsXTPSupported | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Japanese\$1CI\$1AI | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Japanese\$1CI\$1AS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| Japanese\$1CS\$1AS | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| LicenseType | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| MachineName | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ProductLevel | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ProductMajorVersion | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ProductMinorVersion | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ProductUpdateLevel  | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| ProductVersion | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| ServerName | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 

## SQL Server views supported by Babelfish
<a name="babelfish-compatibility.supported-functionality-table-sqlserv"></a>

In the following table, you can find SQL Server views supported by different Babelfish versions.


| SQL Server views supported by Babelfish | 5.2.0 | 5.1.0 | 4.6.0 | 4.5.0 | 4.4.0 | 4.3.0 | 4.2.0 | 4.1.0 | 4.0.0 | 3.10.0 | 3.9.0 | 3.8.0 | 3.7.0 | 3.6.0 | 3.5.0 | 3.4.0 | 3.3.0 | 3.2.0 | 3.1.0 | 2.13.0 | 2.12.0 | 2.11.0 | 2.10.0 | 2.9.0 | 2.8.0 | 2.7.0 | 2.6.0 | 2.5.0 | 2.4.0 | 2.3.0 | 2.2.0 | 2.1.0 | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| information\$1schema.key\$1column\$1usage | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| information\$1schema.routines | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| information\$1schema.schemata | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| information\$1schema.sequences | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.all\$1columns | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.all\$1objects | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.all\$1parameters | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.all\$1sql\$1modules | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.all\$1views | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.columns | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.configurations | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.data\$1spaces | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.database\$1files | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.database\$1mirroring | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.database\$1principals | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.database\$1role\$1members | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.databases | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.destination\$1data\$1spaces | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.dm\$1exec\$1connections | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.dm\$1exec\$1sessions | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.dm\$1hadr\$1database\$1replica\$1states | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.dm\$1os\$1host\$1info | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.dm\$1os\$1sys\$1info | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png) No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.endpoints | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.extended\$1properties | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.indexes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.partitions | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.partition\$1functions | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.partition\$1parameters | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.partition\$1range\$1values | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.partition\$1schemes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.schemas | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.server\$1principals | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.server\$1role\$1members | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.sql\$1modules | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.sysconfigures | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.syscurconfigs | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.syslogins | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.sysprocesses  | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.sysusers | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.table\$1types | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.tables | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sys.types | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 
| sys.xml\$1schema\$1collections | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| syslanguages | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | 
| sysobjects.crdate | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/success_icon.png)Yes | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | ![\[alt text not found\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/negative_icon.png)No | 

# Unsupported functionalities in Babelfish
<a name="babelfish-compatibility.tsql.limitations-unsupported"></a>

In the following table and lists, you can find functionality that isn't currently supported in Babelfish. Updates to Babelfish are included in Aurora PostgreSQL versions. For more information, see the [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html). 

**Topics**
+ [Functionality that isn't currently supported](#babelfish-compatibility.tsql.limitations-unsupported-table)
+ [Settings that aren't supported](#babelfish-compatibility.tsql.limitations-unsupported-list8)
+ [Commands that aren't supported](#babelfish-compatibility.tsql.limitations-unsupported-list1)
+ [Column names or attributes that aren't supported](#babelfish-compatibility.tsql.limitations-unsupported-list7)
+ [Data types that aren't supported](#babelfish-compatibility.tsql.limitations-unsupported-list9)
+ [Object types that aren't supported](#babelfish-compatibility.tsql.limitations-unsupported-list3)
+ [Functions that aren't supported](#babelfish-compatibility.tsql.limitations-unsupported-list4)
+ [Syntax that isn't supported](#babelfish-compatibility.tsql.limitations-unsupported-list5)

## Functionality that isn't currently supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-table"></a>

In the table you can find information about certain functionality that isn't currently supported. 


| Functionality or syntax | Description | 
| --- | --- | 
| Assembly modules and SQL Common Language Runtime (CLR) routines  | Functionality related to assembly modules and CLR routines isn't supported. | 
| Column attributes | ROWGUIDCOL, SPARSE, FILESTREAM, and MASKED aren't supported. | 
| Contained databases | Contained databases with logins authenticated at the database level rather than at the server level aren't supported. | 
| Cross-database DDL | Performing DDL statements that reference or operate on objects across multiple databases isn't yet supported. | 
| Cursors (updatable) | Updatable cursors aren't supported. | 
| Cursors (global) | GLOBAL cursors aren't supported. | 
| Cursor (fetch behaviors) | The following cursor fetch behaviors aren't supported: FETCH PRIOR, FIRST, LAST, ABSOLUTE, abd RELATIVE | 
| Cursor-typed output parameters | Cursor-typed variables and parameters aren't supported for output parameters (an error is raised).  | 
| Cursor options | SCROLL, KEYSET, DYNAMIC, FAST\$1FORWARD, SCROLL\$1LOCKS, OPTIMISTIC, TYPE\$1WARNING, and FOR UPDATE | 
| Data encryption | Data encryption isn't supported. | 
| Data-tier applications (DAC) | Data-tier applications (DAC) import or export operations with DAC package (.dacpac) or DAC backup (.bacpac) files aren't supported. | 
| DBCC commands  | Microsoft SQL Server Database Console Commands (DBCC) aren't supported. DBCC CHECKIDENT is supported in Babelfish 3.4.0 and higher releases. | 
| DROP IF EXISTS | This syntax isn't supported for USER and SCHEMA objects. It's supported for the objects TABLE, VIEW, PROCEDURE, FUNCTION, and DATABASE. | 
| Encryption | Built-in functions and statements don't support encryption. | 
| ENCRYPT\$1CLIENT\$1CERT connections | Client certificate connections aren't supported. | 
| EXECUTE AS statement | This statement isn't supported. | 
| EXECUTE AS SELF clause | This clause isn't supported in functions, procedures, or triggers. | 
| EXECUTE AS USER clause | This clause isn't supported in functions, procedures, or triggers. | 
| Foreign key constraints referencing database name | Foreign key constraints that reference the database name aren't supported. | 
| FORMAT | User-defined types aren't supported. | 
| Function declarations with greater than 100 parameters | Function declarations that contain more than 100 parameters aren't supported. | 
| Function calls that include DEFAULT as a parameter value | DEFAULT isn't a supported parameter value for a function call. DEFAULT as a parameter value for a function call is supported from Babelfish 3.4.0 and higher releases. | 
| Functions, externally defined | External functions, including SQL CLR functions, aren't supported. | 
| Global temporary tables (tables with names that start with \$1\$1) | Global temporary tables aren't supported. | 
| Graph functionality | All SQL graph functionality isn't supported. | 
| General Extended stored procedures | System stored procedures that provide an interface from an instance of SQL Server to external programs, for various maintenance activities aren't supported. This includes `xp_cmdshell` and other system stored procedures. For more information, see [ General Extended stored procedures](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/general-extended-stored-procedures-transact-sql?view=sql-server-ver16). | 
| Identifiers (variables or parameters) with multiple leading @ characters | Identifiers that start with more than one leading `@` aren't supported. | 
| Identifiers, table or column names that contain @ or ]] characters | Table or column names that contain an `@` sign or square brackets aren't supported. | 
| Inline indexes | Inline indexes aren't supported. | 
| Invoking a procedure whose name is in a variable | Using a variable as a procedure name isn't supported. | 
| Materialized views | Materialized views aren't supported. | 
| NOT FOR REPLICATION clause | This syntax is accepted and ignored.  | 
| ODBC escape functions | ODBC escape functions aren't supported. | 
| Procedure calls that includes DEFAULT as a parameter value | DEFAULT isn't a supported parameter value. DEFAULT as a parameter value for a function call is supported from Babelfish 3.4.0 and higher releases. | 
| Procedure declarations with more than 100 parameters | Declarations with more than 100 parameters aren't supported. | 
| Procedures, externally defined | Externally defined procedures, including SQL CLR procedures, aren't supported. | 
| Procedure versioning | Procedure versioning isn't supported. | 
| Procedures WITH RECOMPILE | WITH RECOMPILE (when used in conjunction with the DECLARE and EXECUTE statements) isn't supported. | 
| Remote object references | Executing stored procedures against Babelfish linked servers isn’t supported. Four-part object names work only for reading and doesn’t work for modifying the remote table. An UPDATE can reference a remote table in the FROM clause without modifying it. For more information, see [Babelfish supports linked servers](babelfish-postgres-linkedservers.md). | 
| Row-level security | Row-level security with CREATE SECURITY POLICY and inline table-valued functions isn't supported. | 
| Service broker functionality | Service broker functionality isn't supported. | 
| SESSIONPROPERTY | Unsupported properties: ANSI\$1NULLS, ANSI\$1PADDING, ANSI\$1WARNINGS, ARITHABORT, CONCAT\$1NULL\$1YIELDS\$1NULL, and NUMERIC\$1ROUNDABORT | 
| SET LANGUAGE | This syntax isn't supported with any value other than `english` or `us_english`. | 
| SP\$1CONFIGURE | This system stored procedure isn't supported. | 
| SQL keyword SPARSE | The keyword SPARSE is accepted and ignored. | 
| Table value constructor syntax (FROM clause) | The unsupported syntax is for a derived table constructed with the FROM clause. | 
| Temporal tables | Temporal tables aren't supported. | 
| Temporary procedures aren't dropped automatically | This functionality isn't supported. | 
| Triggers, externally defined | These triggers aren't supported, including SQL Common Language Runtime (CLR). | 

## Settings that aren't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list8"></a>

The following settings aren't supported:
+ SET ANSI\$1NULL\$1DFLT\$1OFF ON
+ SET ANSI\$1NULL\$1DFLT\$1ON OFF
+ SET ANSI\$1PADDING OFF
+ SET ANSI\$1WARNINGS OFF
+ SET ARITHABORT OFF
+ SET ARITHIGNORE ON
+ SET CURSOR\$1CLOSE\$1ON\$1COMMIT ON
+ SET NUMERIC\$1ROUNDABORT ON
+ SET PARSEONLY ON (command doesn't work as expected)
+ SET FMTONLY ON (command doesn't work as expected. It suppresses only the execution of SELECT statements but not others.)

## Commands that aren't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list1"></a>

Certain functionality for the following commands isn't supported:
+ ADD SIGNATURE
+ ALTER DATABASE, ALTER DATABASE SET
+ BACKUP/RESTORE DATABASE/LOG
+ BACPAC and DACPAC FILES RESTORE
+ CREATE, ALTER, DROP AUTHORIZATION. ALTER AUTHORIZATION is supported for database objects.
+ CREATE, ALTER, DROP AVAILABILITY GROUP
+ CREATE, ALTER, DROP BROKER PRIORITY
+ CREATE, ALTER, DROP COLUMN ENCRYPTION KEY
+ CREATE, ALTER, DROP DATABASE ENCRYPTION KEY
+ CREATE, ALTER, DROP, BACKUP CERTIFICATE
+ CREATE AGGREGATE
+ CREATE CONTRACT
+ CHECKPOINT

## Column names or attributes that aren't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list7"></a>

The following column names aren't supported:
+ \$1IDENTITY
+ \$1ROWGUID
+ IDENTITYCOL

## Data types that aren't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list9"></a>

The following data types aren't supported:
+ HIERARCHYID

## Object types that aren't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list3"></a>

The following object types aren't supported:
+ COLUMN MASTER KEY
+ CREATE, ALTER EXTERNAL DATA SOURCE
+ CREATE, ALTER, DROP DATABASE AUDIT SPECIFICATION
+ CREATE, ALTER, DROP EXTERNAL LIBRARY
+ CREATE, ALTER, DROP SERVER AUDIT
+ CREATE, ALTER, DROP SERVER AUDIT SPECIFICATION
+ CREATE, ALTER, DROP, OPEN/CLOSE SYMMETRIC KEY
+ CREATE, DROP DEFAULT
+ CREDENTIAL
+ CRYPTOGRAPHIC PROVIDER
+ DIAGNOSTIC SESSION
+ Indexed views
+ SERVICE MASTER KEY
+ SYNONYM

## Functions that aren't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list4"></a>

The following built-in functions aren't supported:

**Aggregate functions**
+ APPROX\$1COUNT\$1DISTINCT
+ CHECKSUM\$1AGG
+ GROUPING\$1ID
+ STRING\$1AGG using the WITHIN GROUP clause

**Cryptographic functions**
+ CERTENCODED function
+ CERTID function
+ CERTPROPERTY function

**Metadata functions**
+ COLUMNPROPERTY
+ TYPEPROPERTY
+ SERVERPROPERTY function – The following properties aren't supported:
  + BuildClrVersion
  + ComparisonStyle
  + ComputerNamePhysicalNetBIOS
  + HadrManagerStatus
  + InstanceDefaultDataPath
  + InstanceDefaultLogPath
  + IsClustered
  + IsHadrEnabled
  + LCID
  + NumLicenses
  + ProcessID
  + ProductBuild
  + ProductBuildType
  + ProductUpdateReference
  + ResourceLastUpdateDateTime
  + ResourceVersion
  + ServerName
  + SqlCharSet
  + SqlCharSetName
  + SqlSortOrder
  + SqlSortOrderName
  + FilestreamShareName
  + FilestreamConfiguredLevel
  + FilestreamEffectiveLevel

**Security functions**
+ CERTPRIVATEKEY
+ LOGINPROPERTY

**Statements, operators, other functions**
+ EVENTDATA function
+ GET\$1TRANSMISSION\$1STATUS
+ OPENXML

## Syntax that isn't supported
<a name="babelfish-compatibility.tsql.limitations-unsupported-list5"></a>

The following syntax isn't supported:
+ ALTER DATABASE
+ ALTER DATABASE SCOPED CONFIGURATION
+ ALTER DATABASE SCOPED CREDENTIAL
+ ALTER DATABASE SET HADR
+ ALTER INDEX
+ ALTER PARTITION FUNCTION
+ ALTER PARTITION SCHEME
+ ALTER SCHEMA
+ ALTER SERVER CONFIGURATION
+ ALTER SERVICE, BACKUP/RESTORE SERVICE MASTER KEY clause
+ BEGIN CONVERSATION TIMER
+ BEGIN DISTRIBUTED TRANSACTION
+ BEGIN DIALOG CONVERSATION
+ BULK INSERT
+ CREATE COLUMNSTORE INDEX
+ CREATE EXTERNAL FILE FORMAT
+ CREATE EXTERNAL TABLE
+ CREATE, ALTER, DROP APPLICATION ROLE
+ CREATE, ALTER, DROP ASSEMBLY
+ CREATE, ALTER, DROP ASYMMETRIC KEY
+ CREATE, ALTER, DROP CREDENTIAL
+ CREATE, ALTER, DROP CRYPTOGRAPHIC PROVIDER
+ CREATE, ALTER, DROP ENDPOINT
+ CREATE, ALTER, DROP EVENT SESSION
+ CREATE, ALTER, DROP EXTERNAL LANGUAGE
+ CREATE, ALTER, DROP EXTERNAL RESOURCE POOL
+ CREATE, ALTER, DROP FULLTEXT CATALOG
+ CREATE, ALTER, DROP FULLTEXT INDEX
+ CREATE, ALTER, DROP FULLTEXT STOPLIST
+ CREATE, ALTER, DROP MESSAGE TYPE
+ CREATE, ALTER, DROP, OPEN/CLOSE, BACKUP/RESTORE MASTER KEY
+ CREATE, ALTER, DROP QUEUE
+ CREATE, ALTER, DROP RESOURCE GOVERNOR
+ CREATE, ALTER, DROP RESOURCE POOL
+ CREATE, ALTER, DROP ROUTE
+ CREATE, ALTER, DROP SEARCH PROPERTY LIST
+ CREATE, ALTER, DROP SECURITY POLICY
+ CREATE, ALTER, DROP SELECTIVE XML INDEX clause
+ CREATE, ALTER, DROP SERVICE
+ CREATE, ALTER, DROP SPATIAL INDEX
+ CREATE, ALTER, DROP TYPE
+ CREATE, ALTER, DROP XML INDEX
+ CREATE, ALTER, DROP XML SCHEMA COLLECTION
+ CREATE/DROP RULE
+ CREATE, DROP WORKLOAD CLASSIFIER
+ CREATE, ALTER, DROP WORKLOAD GROUP
+ ALTER TRIGGER
+ CREATE TABLE... GRANT clause
+ CREATE TABLE... IDENTITY clause
+ CREATE USER – This syntax isn't supported. The PostgreSQL statement CREATE USER doesn't create a user that is equivalent to the SQL Server CREATE USER syntax. For more information, see [T-SQL differences in Babelfish](babelfish-compatibility.tsql.limitations.md).
+ DENY
+ END, MOVE CONVERSATION
+ EXECUTE with AS LOGIN or AT option
+ GET CONVERSATION GROUP
+ GROUP BY ALL clause
+ GROUP BY CUBE clause
+ GROUP BY ROLLUP clause
+ INSERT... DEFAULT VALUES
+ MERGE
+ READTEXT
+ REVERT
+ SELECT TOP... WITH TIES
+ SELECT... FOR BROWSE
+ SELECT... FOR XML AUTO
+ SELECT... FOR XML EXPLICIT
+ SELECT... FOR XML PATH
+ SEND
+ SET DATEFORMAT
+ SET DEADLOCK\$1PRIORITY
+ SET FMTONLY
+ SET FORCEPLAN
+ SET NUMERIC\$1ROUNDABORT ON
+ SET OFFSETS
+ SET REMOTE\$1PROC\$1TRANSACTIONS
+ SET SHOWPLAN\$1TEXT
+ SET SHOWPLAN\$1XML
+ SET STATISTICS
+ SET STATISTICS PROFILE
+ SET STATISTICS TIME
+ SET STATISTICS XML
+ SHUTDOWN statement
+ UPDATE STATISTICS
+ UPDATETEXT
+ Using EXECUTE to call a SQL function
+ VIEW... CHECK OPTION clause
+ VIEW... VIEW\$1METADATA clause
+ WAITFOR DELAY
+ WAITFOR TIME
+ WAITFOR, RECEIVE
+ WITH XMLNAMESPACES construct
+ WRITETEXT
+ XPATH expressions

# Working with Babelfish for Aurora PostgreSQL procedures
<a name="Appendix.Babelfish.Functions"></a>

## Overview
<a name="Appendix.Babelfish.Functions.Overview"></a>

You can use the following procedure for Amazon RDS DB instances running Babelfish for Aurora PostgreSQL for a better query performance:
+ [sp\$1babelfish\$1volatility](sp_babelfish_volatility.md)
+ [sp\$1execute\$1postgresql](sp_execute_postgresql.md)

# sp\$1babelfish\$1volatility
<a name="sp_babelfish_volatility"></a>

PostgreSQL function volatility helps the optimizer for a better query execution which when used in parts of certain clauses has a significant impact on query performance. 

## Syntax
<a name="sp_babelfish_volatility-syntax"></a>

 

```
sp_babelfish_volatility ‘function_name’, ‘volatility’
```

## Arguments
<a name="sp_babelfish_volatility-arguments"></a>

 *function\$1name (optional)*   
You can either specify the value of this argument with a two-part name as `schema_name.function_name`or only the `function_name`. If you specify only the `function_name`, the schema name is the default schema for the current user.

 *volatility (optional)*   
The valid PostgreSQL values of volatility are `stable`, `volatile`, or `immutable`. For more information, see [https://www.postgresql.org/docs/current/xfunc-volatility.html](https://www.postgresql.org/docs/current/xfunc-volatility.html)

**Note**  
When `sp_babelfish_volatility` is called with `function_name` which has multiple definitions, it will throw an error.

## Result set
<a name="sp_babelfish_volatility-return-type"></a>

If the parameters are not mentioned then the result set is displayed under the following columns: `schemaname`, `functionname`, `volatility`.

## Usage notes
<a name="sp_babelfish_volatility-usage-notes"></a>

PostgreSQL function volatility helps the optimizer for a better query execution which when used in parts of certain clauses has a significant impact on query performance. 

## Examples
<a name="sp_babelfish_volatility-examples"></a>

The following examples shows how to create simple functions and later explains how to use `sp_babelfish_volatility` on these functions using different methods.

```
1> create function f1() returns int as begin return 0 end
2> go
```

```
1> create schema test_schema
2> go
```

```
1> create function test_schema.f1() returns int as begin return 0 end
2> go
```

The following example displays volatility of the functions:

```
1> exec sp_babelfish_volatility
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           volatile
test_schema f1           volatile
```

The following example shows how to change the volatility of the functions:

```
1> exec sp_babelfish_volatility 'f1','stable'
2> go
1> exec sp_babelfish_volatility 'test_schema.f1','immutable'
2> go
```

When you specify only the function\$1name, it displays the schema name, function name and volatility of that function. The following example displays volatility of functions after changing the values:

```
1> exec sp_babelfish_volatility 'test_schema.f1'
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
test_schema f1           immutable
```

```
1> exec sp_babelfish_volatility 'f1'
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           stable
```

When you don't specify any argument, it displays a list of functions (schema name, function name, volatility of the functions) present in the current database:

```
1> exec sp_babelfish_volatility 
2> go
            
schemaname  functionname volatility
----------- ------------ ----------
dbo         f1           stable
test_schema f1           immutable
```

# sp\$1execute\$1postgresql
<a name="sp_execute_postgresql"></a>

You can execute PostgreSQL statements from T-SQL endpoint. This simplifies your applications as you don’t need to exit T-SQL port to execute these statements. 

## Syntax
<a name="sp_execute_postgresql-syntax"></a>

 

```
sp_execute_postgresql [ @stmt = ] statement
```

## Arguments
<a name="sp_execute_postgresql-arguments"></a>

 *[ @stmt ] statement*   
The argument is of datatype varchar. This argument accept PG dialect statements.

**Note**  
You can only pass one PG dialect statement as an argument otherwise it will raise the following error.

```
1>exec sp_execute_postgresql 'create extension pg_stat_statements; drop extension pg_stat_statements'
2>go
```

```
Msg 33557097, Level 16, State 1, Server BABELFISH, Line 1
expected 1 statement but got 2 statements after parsing
```

## Usage notes
<a name="sp_execute_postgresql-statements"></a>

### CREATE EXTENSION
<a name="sp_execute_postgresql-statements-create"></a>

Creates and loads a new extension into the current database. 

```
1>EXEC sp_execute_postgresql 'create extension [ IF NOT EXISTS ] <extension name> [ WITH ] [SCHEMA schema_name] [VERSION version]';
2>go
```

The following example shows how to create an extension:

```
1>EXEC sp_execute_postgresql 'create extension pg_stat_statements with schema sys version "1.10"';
2>go
```

Use the following command to access extension objects:

```
1>select * from pg_stat_statements;
2>go
```

**Note**  
 If schema name is not provided explicitly during extension creation, by default the extensions are installed in the public schema. You must provide the schema qualifier to access the extension objects as mentioned below:

```
1>select * from [public].pg_stat_statements;
2>go
```

**Supported extensions**

The following extensions available with Aurora PostgreSQL works with Babelfish.
+ `pg_stat_statements`
+ `tds_fdw`
+ `fuzzystrmatch`

**Limitations**
+ Users need to have sysadmin role on T-SQL and rds\$1superuser on postgres to install the extenstions.
+ Extensions cannot be installed in user created schemas and also in dbo and guest schemas for master, tempdb and msdb database. 
+ CASCADE option is not supported.

## ALTER EXTENSION
<a name="sp_execute_postgresql-alter"></a>

You can upgrade to a new extension version using ALTER extension. 

```
1>EXEC sp_execute_postgresql 'alter extension <extension name> UPDATE TO <new_version>';
2>go
```

**Limitations**
+ You can upgrade the version of your extension only using the ALTER Extension statement. Other operations aren't supported.

## DROP EXTENSION
<a name="sp_execute_postgresql-drop"></a>

Drops the specified extension. You can also use `if exists` or `restrict` options to drop the extension. 

```
1>EXEC sp_execute_postgresql 'drop extension <extension name>';
2>go
```

**Limitations**
+ CASCADE option is not supported.

# Babelfish supports XML datatype methods
<a name="babelfish-xml-datatype-methods"></a>

Starting with version 5.4.0, Babelfish now supports stored procedures sp\$1xml\$1preparedocument and sp\$1xml\$1removedocument, rowset function OPENXML() and xml dataype method .VALUE(). With these functions and procedures querying on XML data becomes much easier.

## Understanding XML procedures and methods
<a name="babelfish-xml-datatype-methods-overview"></a>
+ **sp\$1xml\$1preparedocument** – The procedure sp\$1xml\$1preparedocument parses an XML text given as input and returns a handle to this document. This handle is valid during the session or until it is removed by sp\$1xml\$1removedocument.
+ **sp\$1xml\$1removedocument** – The procedure sp\$1xml\$1removedocument invalidates the handle which was created by procedure sp\$1xml\$1preparedocument.
+ **OPENXML()** – OPENXML provides a rowset view over an XML document. Since OPENXML is a rowset provider and it returns a set of rows, we can use OPENXML in the FROM clause just as we can use any other table, view, or table-valued function.
+ **VALUE()** – XML Datatype method VALUE() is used to extract a value from an XML instance stored in an xml type column, parameter, or variable.

## Limitations in Babelfish XML procedures and methods
<a name="babelfish-xml-datatype-methods-limitations"></a>
+ Babelfish only supports XPATH 1.0 syntax for second argument (i.e. ROWPATTERN) of OPENXML().
+ The meta-properties and flag 8 are not currently not supported in OPENXML().
+ Babelfish only supports XPATH 1.0 syntax for first argument (i.e. XQuery) of VALUE() datatype method.

# Performance and scaling for Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Managing"></a>

The following section discusses managing performance and scaling for an Amazon Aurora PostgreSQL DB cluster. It also includes information about other maintenance tasks.

**Topics**
+ [Scaling Aurora PostgreSQL DB instances](#AuroraPostgreSQL.Managing.Performance.InstanceScaling)
+ [Maximum connections to an Aurora PostgreSQL DB instance](#AuroraPostgreSQL.Managing.MaxConnections)
+ [Temporary storage limits for Aurora PostgreSQL](#AuroraPostgreSQL.Managing.TempStorage)
+ [Huge pages for Aurora PostgreSQL](#AuroraPostgreSQL.Managing.HugePages)
+ [Testing Amazon Aurora PostgreSQL by using fault injection queries](AuroraPostgreSQL.Managing.FaultInjectionQueries.md)
+ [Displaying volume status for an Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Managing.VolumeStatus.md)
+ [Specifying the RAM disk for the stats\$1temp\$1directory](AuroraPostgreSQL.Managing.RamDisk.md)
+ [Managing temporary files with PostgreSQL](PostgreSQL.ManagingTempFiles.md)

## Scaling Aurora PostgreSQL DB instances
<a name="AuroraPostgreSQL.Managing.Performance.InstanceScaling"></a>

You can scale Aurora PostgreSQL DB instances in two ways, instance scaling and read scaling. For more information about read scaling, see [Read scaling](Aurora.Managing.Performance.md#Aurora.Managing.Performance.ReadScaling).

You can scale your Aurora PostgreSQL DB cluster by modifying the DB instance class for each DB instance in the DB cluster. Aurora PostgreSQL supports several DB instance classes optimized for Aurora. Don't use db.t2 or db.t3 instance classes for larger Aurora clusters of size greater than 40 terabytes (TB).

**Note**  
We recommend using the T DB instance classes only for development and test servers, or other non-production servers. For more details on the T instance classes, see [DB instance class types](Concepts.DBInstanceClass.Types.md).

Scaling isn't instantaneous. It can take 15 minutes or more to complete the change to a different DB instance class. If you use this approach to modify the DB instance class, you apply the change during the next scheduled maintenance window (rather than immediately) to avoid affecting users. 

As an alternative to modifying the DB instance class directly, you can minimize downtime by using the high availability features of Amazon Aurora. First, add an Aurora Replica to your cluster. When creating the replica, choose the DB instance class size that you want to use for your cluster. When the Aurora Replica is synchronized with the cluster, you then failover to the newly added Replica. To learn more, see [Aurora Replicas](Aurora.Replication.md#Aurora.Replication.Replicas) and [Fast failover with Amazon Aurora PostgreSQL](AuroraPostgreSQL.BestPractices.FastFailover.md). 

For detailed specifications of the DB instance classes supported by Aurora PostgreSQL, see [Supported DB engines for DB instance classes](Concepts.DBInstanceClass.SupportAurora.md).

## Maximum connections to an Aurora PostgreSQL DB instance
<a name="AuroraPostgreSQL.Managing.MaxConnections"></a>

An Aurora PostgreSQL DB cluster allocates resources based on the DB instance class and its available memory. Each connection to the DB cluster consumes incremental amounts of these resources, such as memory and CPU. Memory consumed per connection varies based on query type, count, and whether temporary tables are used. Even an idle connection consumes memory and CPU. That's because when queries run on a connection, more memory is allocated for each query and it's not released completely, even when processing stops. Thus, we recommend that you make sure your applications aren't holding on to idle connections: each one of these wastes resources and affects performance negatively. For more information, see [Resources consumed by idle PostgreSQL connections](https://aws.amazon.com/blogs/database/resources-consumed-by-idle-postgresql-connections/). 

The maximum number of connections allowed by an Aurora PostgreSQL DB instance is determined by the `max_connections` parameter value specified in the parameter group for that DB instance. The ideal setting for the `max_connections` parameter is one that supports all the client connections your application needs, without an excess of unused connections, plus at least 3 more connections to support AWS automation. Before modifying the `max_connections` parameter setting, we recommend that you consider the following:
+ If the `max_connections` value is too low, the Aurora PostgreSQL DB instance might not have sufficient connections available when clients attempt to connect. If this happens, attempts to connect using `psql` raise error messages such as the following: 

  ```
  psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
  ```
+ If the `max_connections` value exceeds the number of connections that are actually needed, the unused connections can cause performance to degrade.

The default value of `max_connections` is derived from the following Aurora PostgreSQL `LEAST` function:

`LEAST({DBInstanceClassMemory/9531392},5000)`.

If you want to change the value for `max_connections`, you need to create a custom DB cluster parameter group and change its value there. After applying your custom DB parameter group to your cluster, be sure to reboot the primary instance so the new value takes effect. For more information, see [Amazon Aurora PostgreSQL parameters](AuroraPostgreSQL.Reference.ParameterGroups.md) and [Creating a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md). 

**Tip**  
If your applications frequently open and close connections, or keep a large number of long-lived connections open, we recommend that you use Amazon RDS Proxy. RDS Proxy is a fully managed, highly available database proxy that uses connection pooling to share database connections securely and efficiently. To learn more about RDS Proxy, see [Amazon RDS Proxyfor Aurora](rds-proxy.md).

 For details about how Aurora Serverless v2 instances handle this parameter, see [Maximum connections for Aurora Serverless v2](aurora-serverless-v2.setting-capacity.md#aurora-serverless-v2.max-connections). 

## Temporary storage limits for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Managing.TempStorage"></a>

Aurora PostgreSQL stores tables and indexes in the Aurora storage subsystem. Aurora PostgreSQL uses separate temporary storage for non-persistent temporary files. This includes files that are used for such purposes as sorting large data sets during query processing or for index build operations. For more information, see the article [How can I troubleshoot local storage issues in Aurora PostgreSQL-Compatible instances?](https://repost.aws/knowledge-center/postgresql-aurora-storage-issue).

These local storage volumes are backed by Amazon Elastic Block Store and can be extended by using a larger DB instance class. For more information about storage, see [Amazon Aurora storage](Aurora.Overview.StorageReliability.md). You can also increase your local storage for temporary objects by using an NVMe enabled instance type and Aurora Optimized Reads-enabled temporary objects. For more information, see [Improving query performance for Aurora PostgreSQL with Aurora Optimized Reads](AuroraPostgreSQL.optimized.reads.md).

**Note**  
You might see `storage-optimization` events when scaling DB instances, for example, from db.r5.2xlarge to db.r5.4xlarge. 

The following table shows the maximum amount of temporary storage available for each Aurora PostgreSQL DB instance class. For more information on DB instance class support for Aurora, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md).


| DB instance class | Maximum temporary storage available (GiB) | 
| --- | --- | 
| db.x2g.16xlarge | 1829 | 
| db.x2g.12xlarge | 1606 | 
| db.x2g.8xlarge | 1071 | 
| db.x2g.4xlarge | 535 | 
| db.x2g.2xlarge | 268 | 
| db.x2g.xlarge | 134 | 
| db.x2g.large | 67 | 
| db.r8g.48xlarge | 3072 | 
| db.r8g.24xlarge | 1536 | 
| db.r8g.16xlarge | 998 | 
| db.r8g.12xlarge | 749 | 
| db.r8g.8xlarge | 499 | 
| db.r8g.4xlarge | 250 | 
| db.r8g.2xlarge | 125 | 
| db.r8g.xlarge | 63 | 
| db.r8g.large | 31 | 
| db.r7g.16xlarge | 1008 | 
| db.r7g.12xlarge | 756 | 
| db.r7g.8xlarge | 504 | 
| db.r7g.4xlarge | 252 | 
| db.r7g.2xlarge | 126 | 
| db.r7g.xlarge | 63 | 
| db.r7g.large | 32 | 
| db.r7i.48xlarge | 3072 | 
| db.r7i.24xlarge | 1500 | 
| db.r7i.16xlarge | 1008 | 
| db.r7i.12xlarge | 748 | 
| db.r7i.8xlarge | 504 | 
| db.r7i.4xlarge | 249 | 
| db.r7i.2xlarge | 124 | 
| db.r7i.xlarge | 62 | 
| db.r7i.large | 31 | 
| db.r6g.16xlarge | 1008 | 
| db.r6g.12xlarge | 756 | 
| db.r6g.8xlarge | 504 | 
| db.r6g.4xlarge | 252 | 
| db.r6g.2xlarge | 126 | 
| db.r6g.xlarge | 63 | 
| db.r6g.large | 32 | 
| db.r6i.32xlarge | 1829 | 
| db.r6i.24xlarge | 1500 | 
| db.r6i.16xlarge | 1008 | 
| db.r6i.12xlarge | 748 | 
| db.r6i.8xlarge | 504 | 
| db.r6i.4xlarge | 249 | 
| db.r6i.2xlarge | 124 | 
| db.r6i.xlarge | 62 | 
| db.r6i.large | 31 | 
| db.r5.24xlarge | 1500 | 
| db.r5.16xlarge | 1008 | 
| db.r5.12xlarge | 748 | 
| db.r5.8xlarge | 504 | 
| db.r5.4xlarge | 249 | 
| db.r5.2xlarge | 124 | 
| db.r5.xlarge | 62 | 
| db.r5.large | 31 | 
| db.r4.16xlarge | 960 | 
| db.r4.8xlarge | 480 | 
| db.r4.4xlarge | 240 | 
| db.r4.2xlarge | 120 | 
| db.r4.xlarge | 60 | 
| db.r4.large | 30 | 
| db.t4g.large | 16.5 | 
| db.t4g.medium | 8.13 | 
| db.t3.large | 16 | 
| db.t3.medium | 7.5 | 

**Note**  
NVMe enabled instance types can increase the temporary space available by up to the total NVMe size. For more information, see [Improving query performance for Aurora PostgreSQL with Aurora Optimized Reads](AuroraPostgreSQL.optimized.reads.md).

You can monitor the temporary storage available for a DB instance with the `FreeLocalStorage` CloudWatch metric, described in [Amazon CloudWatch metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md). (This doesn't apply to Aurora Serverless v2.)

For some workloads, you can reduce the amount of temporary storage by allocating more memory to the processes that are performing the operation. To increase the memory available to an operation, increasing the values of the [work\$1mem](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM) or [maintenance\$1work\$1mem](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) PostgreSQL parameters.

## Huge pages for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Managing.HugePages"></a>

*Huge pages* are a memory management feature that reduces overhead when a DB instance is working with large contiguous chunks of memory, such as that used by shared buffers. This PostgreSQL feature is supported by all currently available Aurora PostgreSQL versions.

`Huge_pages` parameter is turned on by default for all DB instance classes other than t3.medium,db.t3.large,db.t4g.medium,db.t4g.large instance classes. You can't change the `huge_pages` parameter value or turn off this feature in the supported instance classes of Aurora PostgreSQL.

On Aurora PostgreSQL DB instances that don't support the huge pages memory feature, specific process memory usage might increase without corresponding workload changes.

The system allocates shared memory segments like the buffer cache during server startup. When huge memory pages aren't available, the system doesn't charge these allocations to the postmaster process. Instead, it includes the memory in the process that first accessed each 4KB page in the shared memory segment.

**Note**  
Active connections share allocated memory as needed, regardless of how shared memory usage is tracked across processes.

# Testing Amazon Aurora PostgreSQL by using fault injection queries
<a name="AuroraPostgreSQL.Managing.FaultInjectionQueries"></a>

You can test the fault tolerance of your Aurora PostgreSQL DB cluster by using fault injection queries. Fault injection queries are issued as SQL commands to an Amazon Aurora instance. Fault injection queries let you crash the instance so that you can test failover and recovery. You can also simulate Aurora Replica failure, disk failure, and disk congestion. Fault injection queries are supported by all available Aurora PostgreSQL versions, as follows. 
+ Aurora PostgreSQL versions 12, 13, 14, and higher
+ Aurora PostgreSQL version 11.7 and higher
+ Aurora PostgreSQL version 10.11 and higher

**Topics**
+ [Testing an instance crash](#AuroraPostgreSQL.Managing.FaultInjectionQueries.Crash)
+ [Testing an Aurora Replica failure](#AuroraPostgreSQL.Managing.FaultInjectionQueries.ReplicaFailure)
+ [Testing a disk failure](#AuroraPostgreSQL.Managing.FaultInjectionQueries.DiskFailure)
+ [Testing disk congestion](#AuroraPostgreSQL.Managing.FaultInjectionQueries.DiskCongestion)

When a fault injection query specifies a crash, it forces a crash of the Aurora PostgreSQL DB instance. The other fault injection queries result in simulations of failure events, but don't cause the event to occur. When you submit a fault injection query, you also specify an amount of time for the failure event simulation to occur.

You can submit a fault injection query to one of your Aurora Replica instances by connecting to the endpoint for the Aurora Replica. For more information, see [Amazon Aurora endpoint connections](Aurora.Overview.Endpoints.md).

## Testing an instance crash
<a name="AuroraPostgreSQL.Managing.FaultInjectionQueries.Crash"></a>

You can force a crash of an Aurora PostgreSQL instance by using the fault injection query function `aurora_inject_crash()`.

For this fault injection query, a failover does not occur. If you want to test a failover, then you can choose the **Failover** instance action for your DB cluster in the RDS console, or use the [failover-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/failover-db-cluster.html) AWS CLI command or the [FailoverDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_FailoverDBCluster.html) RDS API operation. 

**Syntax**

```
1. SELECT aurora_inject_crash ('instance' | 'dispatcher' | 'node');
```Options

This fault injection query takes one of the following crash types. The crash type is not case sensitive:

*'instance'*  
A crash of the PostgreSQL-compatible database for the Amazon Aurora instance is simulated.

*'dispatcher'*  
A crash of the dispatcher on the primary instance for the Aurora DB cluster is simulated. The *dispatcher* writes updates to the cluster volume for an Amazon Aurora DB cluster.

*'node'*  
A crash of both the PostgreSQL-compatible database and the dispatcher for the Amazon Aurora instance is simulated.

## Testing an Aurora Replica failure
<a name="AuroraPostgreSQL.Managing.FaultInjectionQueries.ReplicaFailure"></a>

You can simulate the failure of an Aurora Replica by using the fault injection query function `aurora_inject_replica_failure()`.

An Aurora Replica failure blocks replication to the Aurora Replica or all Aurora Replicas in the DB cluster by the specified percentage for the specified time interval. When the time interval completes, the affected Aurora Replicas are automatically synchronized with the primary instance.

**Syntax**

```
1. SELECT aurora_inject_replica_failure(
2.    percentage_of_failure, 
3.    time_interval, 
4.    'replica_name'
5. );
```Options

This fault injection query takes the following parameters:

*percentage\$1of\$1failure*  
The percentage of replication to block during the failure event. This value can be a double between 0 and 100. If you specify 0, then no replication is blocked. If you specify 100, then all replication is blocked.

*time\$1interval*  
The amount of time to simulate the Aurora Replica failure. The interval is in seconds. For example, if the value is 20, the simulation runs for 20 seconds.  
Take care when specifying the time interval for your Aurora Replica failure event. If you specify too long an interval, and your writer instance writes a large amount of data during the failure event, then your Aurora DB cluster might assume that your Aurora Replica has crashed and replace it.

*replica\$1name*  
The Aurora Replica in which to inject the failure simulation. Specify the name of an Aurora Replica to simulate a failure of the single Aurora Replica. Specify an empty string to simulate failures for all Aurora Replicas in the DB cluster.   
To identify replica names, see the `server_id` column from the `aurora_replica_status()` function. For example:  

```
postgres=> SELECT server_id FROM aurora_replica_status();
```

## Testing a disk failure
<a name="AuroraPostgreSQL.Managing.FaultInjectionQueries.DiskFailure"></a>

You can simulate a disk failure for an Aurora PostgreSQL DB cluster by using the fault injection query function `aurora_inject_disk_failure()`.

During a disk failure simulation, the Aurora PostgreSQL DB cluster randomly marks disk segments as faulting. Requests to those segments are blocked for the duration of the simulation.

**Syntax**

```
1. SELECT aurora_inject_disk_failure(
2.    percentage_of_failure, 
3.    index, 
4.    is_disk, 
5.    time_interval
6. );
```Options

This fault injection query takes the following parameters:

*percentage\$1of\$1failure*  
The percentage of the disk to mark as faulting during the failure event. This value can be a double between 0 and 100. If you specify 0, then none of the disk is marked as faulting. If you specify 100, then the entire disk is marked as faulting.

*index*  
A specific logical block of data in which to simulate the failure event. If you exceed the range of available logical blocks or storage nodes data, you receive an error that tells you the maximum index value that you can specify. To avoid this error, see [Displaying volume status for an Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Managing.VolumeStatus.md).

*is\$1disk*  
Indicates whether the injection failure is to a logical block or a storage node. Specifying true means injection failures are to a logical block. Specifying false means injection failures are to a storage node.

*time\$1interval*  
The amount of time to simulate the disk failure. The interval is in seconds. For example, if the value is 20, the simulation runs for 20 seconds.

## Testing disk congestion
<a name="AuroraPostgreSQL.Managing.FaultInjectionQueries.DiskCongestion"></a>

You can simulate a disk congestion for an Aurora PostgreSQL DB cluster by using the fault injection query function `aurora_inject_disk_congestion()`.

During a disk congestion simulation, the Aurora PostgreSQL DB cluster randomly marks disk segments as congested. Requests to those segments are delayed between the specified minimum and maximum delay time for the duration of the simulation.

**Syntax**

```
1. SELECT aurora_inject_disk_congestion(
2.    percentage_of_failure, 
3.    index, 
4.    is_disk, 
5.    time_interval, 
6.    minimum, 
7.    maximum
8. );
```Options

This fault injection query takes the following parameters:

*percentage\$1of\$1failure*  
The percentage of the disk to mark as congested during the failure event. This is a double value between 0 and 100. If you specify 0, then none of the disk is marked as congested. If you specify 100, then the entire disk is marked as congested.

*index*  
A specific logical block of data or storage node to use to simulate the failure event.  
If you exceed the range of available logical blocks or storage nodes of data, you receive an error that tells you the maximum index value that you can specify. To avoid this error, see [Displaying volume status for an Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Managing.VolumeStatus.md).

*is\$1disk*  
Indicates whether the injection failure is to a logical block or a storage node. Specifying true means injection failures are to a logical block. Specifying false means injection failures are to a storage node.

*time\$1interval*  
The amount of time to simulate the disk congestion. The interval is in seconds. For example, if the value is 20, the simulation runs for 20 seconds.

*minimum, maximum*  
The minimum and maximum amount of congestion delay, in milliseconds. Valid values range from 0.0 to 100.0 milliseconds. Disk segments marked as congested are delayed for a random amount of time within the minimum and maximum range for the duration of the simulation. The maximum value must be greater than the minimum value.

# Displaying volume status for an Aurora PostgreSQL DB cluster
<a name="AuroraPostgreSQL.Managing.VolumeStatus"></a>

In Amazon Aurora, a DB cluster volume consists of a collection of logical blocks. Each of these represents 10 gigabytes of allocated storage. These blocks are called *protection groups*. 

The data in each protection group is replicated across six physical storage devices, called *storage nodes*. These storage nodes are allocated across three Availability Zones (AZs) in the region where the DB cluster resides. In turn, each storage node contains one or more logical blocks of data for the DB cluster volume. For more information about protection groups and storage nodes, see [ Introducing the Aurora storage engine](https://aws.amazon.com/blogs/database/introducing-the-aurora-storage-engine/) on the AWS Database Blog. To learn more about Aurora cluster volumes in general, see [Amazon Aurora storage](Aurora.Overview.StorageReliability.md). 

Use the `aurora_show_volume_status()` function to return the following server status variables:
+ `Disks` — The total number of logical blocks of data for the DB cluster volume.
+ `Nodes` **—** The total number of storage nodes for the DB cluster volume.

You can use the `aurora_show_volume_status()` function to help avoid an error when using the `aurora_inject_disk_failure()` fault injection function. The `aurora_inject_disk_failure()` fault injection function simulates the failure of an entire storage node, or a single logical block of data within a storage node. In the function, you specify the index value of a specific logical block of data or storage node. However, the statement returns an error if you specify an index value greater than the number of logical blocks of data or storage nodes used by the DB cluster volume. For more information about fault injection queries, see [Testing Amazon Aurora PostgreSQL by using fault injection queries](AuroraPostgreSQL.Managing.FaultInjectionQueries.md).

**Note**  
The `aurora_show_volume_status()` function is available for Aurora PostgreSQL version 10.11. For more information about Aurora PostgreSQL versions, see [Amazon Aurora PostgreSQL releases and engine versions](AuroraPostgreSQL.Updates.20180305.md).

**Syntax**

```
1. SELECT * FROM aurora_show_volume_status();
```

**Example**

```
customer_database=> SELECT * FROM aurora_show_volume_status();
 disks | nodes 
-------+-------
    96 |    45
```

# Specifying the RAM disk for the stats\$1temp\$1directory
<a name="AuroraPostgreSQL.Managing.RamDisk"></a>

You can use the Aurora PostgreSQL parameter, `rds.pg_stat_ramdisk_size`, to specify the system memory allocated to a RAM disk for storing the PostgreSQL `stats_temp_directory`. The RAM disk parameter is only available in Aurora PostgreSQL 14 and lower versions.

Under certain workloads, setting this parameter can improve performance and decrease IO requirements. For more information about the `stats_temp_directory`, see [Run-time Statistics](https://www.postgresql.org/docs/current/static/runtime-config-statistics.html#GUC-STATS-TEMP-DIRECTORY) in the PostgreSQL documentation. From PostgreSQL version 15, the PostgreSQL community switched to use dynamic shared memory. So, there is no need to set `stats_temp_directory`.

To enable a RAM disk for your `stats_temp_directory`, set the `rds.pg_stat_ramdisk_size` parameter to a non-zero value in the DB cluster parameter group used by your DB cluster. This parameter denotes MB, so you must use an integer value. Expressions, formulas, and functions aren't valid for the `rds.pg_stat_ramdisk_size` parameter. Be sure to restart the DB cluster so that the change takes effect. For information about setting parameters, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md). For more information about restarting the DB cluster, see [Rebooting an Amazon Aurora DB cluster or Amazon Aurora DB instance](USER_RebootCluster.md).

As an example, the following AWS CLI command sets the RAM disk parameter to 256 MB.

```
aws rds modify-db-cluster-parameter-group \
    --db-cluster-parameter-group-name db-cl-pg-ramdisk-testing \
    --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"
```

After you restart the DB cluster, run the following command to see the status of the `stats_temp_directory`:

```
postgres=> SHOW stats_temp_directory;
```

The command should return the following: 

```
stats_temp_directory
---------------------------
/rdsdbramdisk/pg_stat_tmp
(1 row)
```

# Managing temporary files with PostgreSQL
<a name="PostgreSQL.ManagingTempFiles"></a>

In PostgreSQL, a complex query might perform several sort or hash operations at the same time, with each operation using instance memory to store results up to the value specified in the [https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM) parameter. When the instance memory is not sufficient, temporary files are created to store the results. These are written to disk to complete the query execution. Later, these files are automatically removed after the query completes. In Aurora PostgreSQL, these files share local storage with other log files. You can monitor your Aurora PostgreSQL DB cluster's local storage space by watching the Amazon CloudWatch metric for `FreeLocalStorage`. For more information, see [ Troubleshoot local storage issues](https://aws.amazon.com/premiumsupport/knowledge-center/postgresql-aurora-storage-issue/).

We recommend using Aurora Optimized Read clusters for workloads involving multiple concurrent queries that increase the usage of temporary files. These clusters use local Non-Volatile Memory Express (NVMe) based solid state drive (SSD) block-level storage to place the temporary files. For more information, see [Improving query performance for Aurora PostgreSQL with Aurora Optimized Reads](AuroraPostgreSQL.optimized.reads.md).

You can use the following parameters and functions to manage the temporary files in your instance.
+ **[https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-DISK](https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-DISK)** – This parameter cancels any query exceeding the size of temp\$1files in KB. This limit prevents any query from running endlessly and consuming disk space with temporary files. You can estimate the value using the results from the `log_temp_files` parameter. As a best practice, examine the workload behavior and set the limit according to the estimation. The following example shows how a query is canceled when it exceeds the limit.

  ```
  postgres=>select * from pgbench_accounts, pg_class, big_table;
  ```

  ```
  ERROR: temporary file size exceeds temp_file_limit (64kB)
  ```
+ **[https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-TEMP-FILES](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-TEMP-FILES)** – This parameter sends messages to the postgresql.log when the temporary files of a session are removed. This parameter produces logs after a query successfully completes. Therefore, it might not help in troubleshooting active, long-running queries. 

  The following example shows that when the query successfully completes, the entries are logged in the postgresql.log file while the temporary files are cleaned up.

  ```
                      
  2023-02-06 23:48:35 UTC:205.251.233.182(12456):adminuser@postgres:[31236]:LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp31236.5", size 140353536
  2023-02-06 23:48:35 UTC:205.251.233.182(12456):adminuser@postgres:[31236]:STATEMENT:  select a.aid from pgbench_accounts a, pgbench_accounts b where a.bid=b.bid order by a.bid limit 10;
  2023-02-06 23:48:35 UTC:205.251.233.182(12456):adminuser@postgres:[31236]:LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp31236.4", size 180428800
  2023-02-06 23:48:35 UTC:205.251.233.182(12456):adminuser@postgres:[31236]:STATEMENT:  select a.aid from pgbench_accounts a, pgbench_accounts b where a.bid=b.bid order by a.bid limit 10;
  ```
+ **[https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-GENFILE](https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADMIN-GENFILE)** – This function that is available from RDS for PostgreSQL 13 and above provides visibility into the current temporary file usage. The completed query doesn't appear in the results of the function. In the following example, you can view the results of this function.

  ```
  postgres=>select * from pg_ls_tmpdir();
  ```

  ```
        name       |    size    |      modification
  -----------------+------------+------------------------
   pgsql_tmp8355.1 | 1072250880 | 2023-02-06 22:54:56+00
   pgsql_tmp8351.0 | 1072250880 | 2023-02-06 22:54:43+00
   pgsql_tmp8327.0 | 1072250880 | 2023-02-06 22:54:56+00
   pgsql_tmp8351.1 |  703168512 | 2023-02-06 22:54:56+00
   pgsql_tmp8355.0 | 1072250880 | 2023-02-06 22:54:00+00
   pgsql_tmp8328.1 |  835031040 | 2023-02-06 22:54:56+00
   pgsql_tmp8328.0 | 1072250880 | 2023-02-06 22:54:40+00
  (7 rows)
  ```

  ```
  postgres=>select query from pg_stat_activity where pid = 8355;
                  
  query
  ----------------------------------------------------------------------------------------
  select a.aid from pgbench_accounts a, pgbench_accounts b where a.bid=b.bid order by a.bid
  (1 row)
  ```

  The file name includes the processing ID (PID) of the session that generated the temporary file. A more advanced query, such as in the following example, performs a sum of the temporary files for each PID.

  ```
  postgres=>select replace(left(name, strpos(name, '.')-1),'pgsql_tmp','') as pid, count(*), sum(size) from pg_ls_tmpdir() group by pid;
  ```

  ```
   pid  | count |   sum
  ------+-------------------
   8355 |     2 | 2144501760
   8351 |     2 | 2090770432
   8327 |     1 | 1072250880
   8328 |     2 | 2144501760
  (4 rows)
  ```
+ **`[ pg\$1stat\$1statements](https://www.postgresql.org/docs/current/pgstatstatements.html)`** – If you activate the pg\$1stat\$1statements parameter, then you can view the average temporary file usage per call. You can identify the query\$1id of the query and use it to examine the temporary file usage as shown in the following example.

  ```
  postgres=>select queryid from pg_stat_statements where query like 'select a.aid from pgbench%';
  ```

  ```
         queryid
  ----------------------
   -7170349228837045701
  (1 row)
  ```

  ```
  postgres=>select queryid, substr(query,1,25), calls, temp_blks_read/calls temp_blks_read_per_call, temp_blks_written/calls temp_blks_written_per_call from pg_stat_statements where queryid = -7170349228837045701;
  ```

  ```
         queryid        |          substr           | calls | temp_blks_read_per_call | temp_blks_written_per_call
  ----------------------+---------------------------+-------+-------------------------+----------------------------
   -7170349228837045701 | select a.aid from pgbench |    50 |                  239226 |                     388678
  (1 row)
  ```
+ **`[Performance Insights](https://aws.amazon.com/rds/performance-insights/)`** – In the Performance Insights dashboard, you can view temporary file usage by turning on the metrics **temp\$1bytes** and **temp\$1files**. Then, you can see the average of both of these metrics and see how they correspond to the query workload. The view within Performance Insights doesn't show specifically the queries that are generating the temporary files. However, when you combine Performance Insights with the query shown for `pg_ls_tmpdir`, you can troubleshoot, analyze, and determine the changes in your query workload. 

  For more information about how to analyze metrics and queries with Performance Insights, see [Analyzing metrics with the Performance Insights dashboard](USER_PerfInsights.UsingDashboard.md).

  For an example of viewing temporary file usage with Performance Insights, see [Viewing temporary file usage with Performance Insights](PostgreSQL.ManagingTempFiles.Example.md)

# Viewing temporary file usage with Performance Insights
<a name="PostgreSQL.ManagingTempFiles.Example"></a>

You can use Performance Insights to view temporary file usage by turning on the metrics **temp\$1bytes** and **temp\$1files**. The view in Performance Insights doesn't show the specific queries that generate temporary files, however, when you combine Performance Insights with the query shown for `pg_ls_tmpdir`, you can troubleshoot, analyze, and determine the changes in your query workload.

1. In the Performance Insights dashboard, choose **Manage Metrics**.

1. Choose **Database metrics**, and select the **temp\$1bytes** and **temp\$1files** metrics as shown in the following image.  
![\[Metrics displayed in the graph.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/rpg_mantempfiles_metrics.png)

1. In the **Top SQL** tab, choose the **Preferences** icon.

1. In the **Preferences** window, turn on the following statistics to appear in the **Top SQL**tab and choose **Continue**.
   + Temp writes/sec
   + Temp reads/sec
   + Tmp blk write/call
   + Tmp blk read/call

1. The temporary file is broken out when combined with the query shown for `pg_ls_tmpdir`, as shown in the following example.  
![\[Query that displays the temporary file usage.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/rpg_mantempfiles_query.png)

The `IO:BufFileRead` and `IO:BufFileWrite` events occur when the top queries in your workload often create temporary files. You can use Performance Insights to identify top queries waiting on `IO:BufFileRead` and `IO:BufFileWrite` by reviewing Average Active Session (AAS) in Database Load and Top SQL sections. 

![\[IO:BufFileRead and IO:BufFileWrite in the graph.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/perfinsights_IOBufFile.png)


For more information on how to analyze top queries and load by wait event with Performance Insights, see [Overview of the Top SQL tab](USER_PerfInsights.UsingDashboard.AnalyzeDBLoad.AdditionalMetrics.md#USER_PerfInsights.UsingDashboard.Components.AvgActiveSessions.TopLoadItemsTable.TopSQL). You should identify and tune the queries that cause increase in temporary file usage and related wait events. For more information on these wait events and remediation, see [IO:BufFileRead and IO:BufFileWrite](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/apg-waits.iobuffile.html).

**Note**  
The [https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM) parameter controls when the sort operation runs out of memory and results are written into temporary files. We recommend that you don't change the setting of this parameter higher than the default value because it would permit every database session to consume more memory. Also, a single session that performs complex joins and sorts can perform parallel operations in which each operation consumes memory.   
As a best practice, when you have a large report with multiple joins and sorts, set this parameter at the session level by using the `SET work_mem` command. Then the change is only applied to the current session and doesn't change the value globally.

# Tuning with wait events for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Tuning"></a>

Wait events are an important tuning tool for Aurora PostgreSQL. When you can find out why sessions are waiting for resources and what they are doing, you're better able to reduce bottlenecks. You can use the information in this section to find possible causes and corrective actions. Before delving into this section, we strongly recommend that you understand basic Aurora concepts, especially the following topics:
+ [Amazon Aurora storage](Aurora.Overview.StorageReliability.md)
+ [Managing performance and scaling for Aurora DB clusters](Aurora.Managing.Performance.md) 

**Important**  
The wait events in this section are specific to Aurora PostgreSQL. Use the information in this section to tune Amazon Aurora only, not RDS for PostgreSQL.  
Some wait events in this section have no analogs in the open source versions of these database engines. Other wait events have the same names as events in open source engines, but behave differently. For example, Amazon Aurora storage works differently from open source storage, so storage-related wait events indicate different resource conditions.

**Topics**
+ [Essential concepts for Aurora PostgreSQL tuning](AuroraPostgreSQL.Tuning.concepts.md)
+ [Aurora PostgreSQL wait events](AuroraPostgreSQL.Tuning.concepts.summary.md)
+ [Client:ClientRead](apg-waits.clientread.md)
+ [Client:ClientWrite](apg-waits.clientwrite.md)
+ [CPU](apg-waits.cpu.md)
+ [IO:BufFileRead and IO:BufFileWrite](apg-waits.iobuffile.md)
+ [IO:DataFileRead](apg-waits.iodatafileread.md)
+ [IO:XactSync](apg-waits.xactsync.md)
+ [IPC:DamRecordTxAck](apg-waits.ipcdamrecordtxac.md)
+ [IPC:parallel wait events](apg-ipc-parallel.md)
+ [IPC:ProcArrayGroupUpdate](apg-rpg-ipcprocarraygroup.md)
+ [Lock:advisory](apg-waits.lockadvisory.md)
+ [Lock:extend](apg-waits.lockextend.md)
+ [Lock:Relation](apg-waits.lockrelation.md)
+ [Lock:transactionid](apg-waits.locktransactionid.md)
+ [Lock:tuple](apg-waits.locktuple.md)
+ [LWLock:buffer\$1content (BufferContent)](apg-waits.lockbuffercontent.md)
+ [LWLock:buffer\$1mapping](apg-waits.lwl-buffer-mapping.md)
+ [LWLock:BufferIO (IPC:BufferIO)](apg-waits.lwlockbufferio.md)
+ [LWLock:lock\$1manager](apg-waits.lw-lock-manager.md)
+ [LWLock:MultiXact](apg-waits.lwlockmultixact.md)
+ [LWLock:pg\$1stat\$1statements](apg-rpg-lwlockpgstat.md)
+ [Timeout:PgSleep](apg-waits.timeoutpgsleep.md)

# Essential concepts for Aurora PostgreSQL tuning
<a name="AuroraPostgreSQL.Tuning.concepts"></a>

Before you tune your Aurora PostgreSQL database, make sure to learn what wait events are and why they occur. Also review the basic memory and disk architecture of Aurora PostgreSQL. For a helpful architecture diagram, see the [PostgreSQL](https://en.wikibooks.org/wiki/PostgreSQL/Architecture) wikibook.

**Topics**
+ [Aurora PostgreSQL wait events](#AuroraPostgreSQL.Tuning.concepts.waits)
+ [Aurora PostgreSQL memory](#AuroraPostgreSQL.Tuning.concepts.memory)
+ [Aurora PostgreSQL processes](#AuroraPostgreSQL.Tuning.concepts.processes)

## Aurora PostgreSQL wait events
<a name="AuroraPostgreSQL.Tuning.concepts.waits"></a>

A *wait event* indicates a resource for which a session is waiting. For example, the wait event `Client:ClientRead` occurs when Aurora PostgreSQL is waiting to receive data from the client. Typical resources that a session waits for include the following:
+ Single-threaded access to a buffer, for example, when a session is attempting to modify a buffer
+ A row that is currently locked by another session
+ A data file read
+ A log file write

For example, to satisfy a query, the session might perform a full table scan. If the data isn't already in memory, the session waits for the disk I/O to complete. When the buffers are read into memory, the session might need to wait because other sessions are accessing the same buffers. The database records the waits by using a predefined wait event. These events are grouped into categories.

A wait event doesn't by itself show a performance problem. For example, if requested data isn't in memory, reading data from disk is necessary. If one session locks a row for an update, another session waits for the row to be unlocked so that it can update it. A commit requires waiting for the write to a log file to complete. Waits are integral to the normal functioning of a database. 

Large numbers of wait events typically show a performance problem. In such cases, you can use wait event data to determine where sessions are spending time. For example, if a report that typically runs in minutes now runs for hours, you can identify the wait events that contribute the most to total wait time. If you can determine the causes of the top wait events, you can sometimes make changes that improve performance. For example, if your session is waiting on a row that has been locked by another session, you can end the locking session. 

## Aurora PostgreSQL memory
<a name="AuroraPostgreSQL.Tuning.concepts.memory"></a>

Aurora PostgreSQL memory is divided into shared and local.

**Topics**
+ [Shared memory in Aurora PostgreSQL](#AuroraPostgreSQL.Tuning.concepts.shared)
+ [Local memory in Aurora PostgreSQL](#AuroraPostgreSQL.Tuning.concepts.local)

### Shared memory in Aurora PostgreSQL
<a name="AuroraPostgreSQL.Tuning.concepts.shared"></a>

Aurora PostgreSQL allocates shared memory when the instance starts. Shared memory is divided into multiple subareas. Following, you can find a description of the most important ones.

**Topics**
+ [Shared buffers](#AuroraPostgreSQL.Tuning.concepts.buffer-pool)
+ [Write ahead log (WAL) buffers](#AuroraPostgreSQL.Tuning.concepts.WAL)

#### Shared buffers
<a name="AuroraPostgreSQL.Tuning.concepts.buffer-pool"></a>

The *shared buffer pool* is an Aurora PostgreSQL memory area that holds all pages that are or were being used by application connections. A *page* is the memory version of a disk block. The shared buffer pool caches the data blocks read from disk. The pool reduces the need to reread data from disk, making the database operate more efficiently.

Every table and index is stored as an array of pages of a fixed size. Each block contains multiple tuples, which correspond to rows. A tuple can be stored in any page.

The shared buffer pool has finite memory. If a new request requires a page that isn't in memory, and no more memory exists, Aurora PostgreSQL evicts a less frequently used page to accommodate the request. The eviction policy is implemented by a clock sweep algorithm.

The `shared_buffers` parameter determines how much memory the server dedicates to caching data.

#### Write ahead log (WAL) buffers
<a name="AuroraPostgreSQL.Tuning.concepts.WAL"></a>

A *write-ahead log (WAL) buffer* holds transaction data that Aurora PostgreSQL later writes to persistent storage. Using the WAL mechanism, Aurora PostgreSQL can do the following:
+ Recover data after a failure
+ Reduce disk I/O by avoiding frequent writes to disk

When a client changes data, Aurora PostgreSQL writes the changes to the WAL buffer. When the client issues a `COMMIT`, the WAL writer process writes transaction data to the WAL file.

The `wal_level` parameter determines how much information is written to the WAL.

### Local memory in Aurora PostgreSQL
<a name="AuroraPostgreSQL.Tuning.concepts.local"></a>

Every backend process allocates local memory for query processing.

**Topics**
+ [Work memory area](#AuroraPostgreSQL.Tuning.concepts.local.work_mem)
+ [Maintenance work memory area](#AuroraPostgreSQL.Tuning.concepts.local.maintenance_work_mem)
+ [Temporary buffer area](#AuroraPostgreSQL.Tuning.concepts.temp)

#### Work memory area
<a name="AuroraPostgreSQL.Tuning.concepts.local.work_mem"></a>

The *work memory area* holds temporary data for queries that performs sorts and hashes. For example, a query with an `ORDER BY` clause performs a sort. Queries use hash tables in hash joins and aggregations.

The `work_mem` parameter the amount of memory to be used by internal sort operations and hash tables before writing to temporary disk files. The default value is 4 MB. Multiple sessions can run simultaneously, and each session can run maintenance operations in parallel. For this reason, the total work memory used can be multiples of the `work_mem` setting. 

#### Maintenance work memory area
<a name="AuroraPostgreSQL.Tuning.concepts.local.maintenance_work_mem"></a>

The *maintenance work memory area* caches data for maintenance operations. These operations include vacuuming, creating an index, and adding foreign keys.

The `maintenance_work_mem` parameter specifies the maximum amount of memory to be used by maintenance operations. The default value is 64 MB. A database session can only run one maintenance operation at a time.

#### Temporary buffer area
<a name="AuroraPostgreSQL.Tuning.concepts.temp"></a>

The *temporary buffer area* caches temporary tables for each database session.

Each session allocates temporary buffers as needed up to the limit you specify. When the session ends, the server clears the buffers.

The `temp_buffers` parameter sets the maximum number of temporary buffers used by each session. Before the first use of temporary tables within a session, you can change the `temp_buffers` value.

## Aurora PostgreSQL processes
<a name="AuroraPostgreSQL.Tuning.concepts.processes"></a>

Aurora PostgreSQL uses multiple processes.

**Topics**
+ [Postmaster process](#AuroraPostgreSQL.Tuning.concepts.postmaster)
+ [Backend processes](#AuroraPostgreSQL.Tuning.concepts.backend)
+ [Background processes](#AuroraPostgreSQL.Tuning.concepts.vacuum)

### Postmaster process
<a name="AuroraPostgreSQL.Tuning.concepts.postmaster"></a>

The *postmaster process* is the first process started when you start Aurora PostgreSQL. The postmaster process has the following primary responsibilities:
+ Fork and monitor background processes
+ Receive authentication requests from client processes, and authenticate them before allowing the database to service requests

### Backend processes
<a name="AuroraPostgreSQL.Tuning.concepts.backend"></a>

If the postmaster authenticates a client request, the postmaster forks a new backend process, also called a postgres process. One client process connects to exactly one backend process. The client process and the backend process communicate directly without intervention by the postmaster process.

### Background processes
<a name="AuroraPostgreSQL.Tuning.concepts.vacuum"></a>

The postmaster process forks several processes that perform different backend tasks. Some of the more important include the following:
+ WAL writer

  Aurora PostgreSQL writes data in the WAL (write ahead logging) buffer to the log files. The principle of write ahead logging is that the database can't write changes to the data files until after the database writes log records describing those changes to disk. The WAL mechanism reduces disk I/O, and allows Aurora PostgreSQL to use the logs to recover the database after a failure.
+ Background writer

  This process periodically write dirty (modified) pages from the memory buffers to the data files. A page becomes dirty when a backend process modifies it in memory.
+ Autovacuum daemon

  The daemon consists of the following:
  + The autovacuum launcher
  + The autovacuum worker processes

  When autovacuum is turned on, it checks for tables that have had a large number of inserted, updated, or deleted tuples. The daemon has the following responsibilities:
  + Recover or reuse disk space occupied by updated or deleted rows
  + Update statistics used by the planner
  + Protect against loss of old data because of transaction ID wraparound

  The autovacuum feature automates the execution of `VACUUM` and `ANALYZE` commands. `VACUUM` has the following variants: standard and full. Standard vacuum runs in parallel with other database operations. `VACUUM FULL` requires an exclusive lock on the table it is working on. Thus, it can't run in parallel with operations that access the same table. `VACUUM` creates a substantial amount of I/O traffic, which can cause poor performance for other active sessions.

# Aurora PostgreSQL wait events
<a name="AuroraPostgreSQL.Tuning.concepts.summary"></a>

The following table lists the wait events for Aurora PostgreSQL that most commonly indicate performance problems, and summarizes the most common causes and corrective actions. The following wait events are a subset of the list in [Amazon Aurora PostgreSQL wait events](AuroraPostgreSQL.Reference.Waitevents.md).


| Wait event | Definition | 
| --- | --- | 
|  [Client:ClientRead](apg-waits.clientread.md)  |  This event occurs when Aurora PostgreSQL is waiting to receive data from the client.  | 
|  [Client:ClientWrite](apg-waits.clientwrite.md)  |  This event occurs when Aurora PostgreSQL is waiting to write data to the client.  | 
|  [CPU](apg-waits.cpu.md)  |  This event occurs when a thread is active in CPU or is waiting for CPU.  | 
|  [IO:BufFileRead and IO:BufFileWrite](apg-waits.iobuffile.md)  |  These events occur when Aurora PostgreSQL creates temporary files.  | 
|  [IO:DataFileRead](apg-waits.iodatafileread.md)  |  This event occurs when a connection waits on a backend process to read a required page from storage because the page isn't available in shared memory.   | 
|  [IO:XactSync](apg-waits.xactsync.md)  |  This event occurs when the database is waiting for the Aurora storage subsystem to acknowledge the commit of a regular transaction, or the commit or rollback of a prepared transaction.   | 
|  [IPC:DamRecordTxAck](apg-waits.ipcdamrecordtxac.md)  |  This event occurs when Aurora PostgreSQL in a session using database activity streams generates an activity stream event, then waits for that event to become durable.  | 
|  [IPC:parallel wait events](apg-ipc-parallel.md)  |  These wait events indicate that a session is waiting for inter-process communication related to parallel query execution operations.  | 
|  [IPC:ProcArrayGroupUpdate](apg-rpg-ipcprocarraygroup.md)  |  This event occurs when a session is waiting for the group leader to update the transaction status at the end of the transaction.  | 
|  [Lock:advisory](apg-waits.lockadvisory.md)  |  This event occurs when a PostgreSQL application uses a lock to coordinate activity across multiple sessions.  | 
|  [Lock:extend](apg-waits.lockextend.md) |  This event occurs when a backend process is waiting to lock a relation to extend it while another process has a lock on that relation for the same purpose.  | 
|  [Lock:Relation](apg-waits.lockrelation.md)  |  This event occurs when a query is waiting to acquire a lock on a table or view that's currently locked by another transaction.  | 
|  [Lock:transactionid](apg-waits.locktransactionid.md)  | This event occurs when a transaction is waiting for a row-level lock. | 
|  [Lock:tuple](apg-waits.locktuple.md)  |  This event occurs when a backend process is waiting to acquire a lock on a tuple.  | 
|  [LWLock:buffer\$1content (BufferContent)](apg-waits.lockbuffercontent.md)  |  This event occurs when a session is waiting to read or write a data page in memory while another session has that page locked for writing.  | 
|  [LWLock:buffer\$1mapping](apg-waits.lwl-buffer-mapping.md)  |  This event occurs when a session is waiting to associate a data block with a buffer in the shared buffer pool.  | 
|  [LWLock:BufferIO (IPC:BufferIO)](apg-waits.lwlockbufferio.md)  |  This event occurs when Aurora PostgreSQL or RDS for PostgreSQL is waiting for other processes to finish their input/output (I/O) operations when concurrently trying to access a page.  | 
|  [LWLock:lock\$1manager](apg-waits.lw-lock-manager.md)  | This event occurs when the Aurora PostgreSQL engine maintains the shared lock's memory area to allocate, check, and deallocate a lock when a fast path lock isn't possible. | 
| [LWLock:MultiXact](apg-waits.lwlockmultixact.md)  | This type of event occurs when Aurora PostgreSQL is keeping a session open to complete multiple transactions that involve the same row in a table. The wait event denotes which aspect of multiple transaction processing is generating the wait event, that is, LWLock:MultiXactOffsetSLRU, LWLock:MultiXactOffsetBuffer, LWLock:MultiXactMemberSLRU, or LWLock:MultiXactMemberBuffer. | 
|  [LWLock:pg\$1stat\$1statements](apg-rpg-lwlockpgstat.md)  |  This event occurs when the `pg_stat_statements` extension takes an exclusive lock on the hash table that tracks SQL statements.  | 
|  [Timeout:PgSleep](apg-waits.timeoutpgsleep.md)  |  This event occurs when a server process has called the `pg_sleep` function and is waiting for the sleep timeout to expire.   | 

# Client:ClientRead
<a name="apg-waits.clientread"></a>

The `Client:ClientRead` event occurs when Aurora PostgreSQL is waiting to receive data from the client.

**Topics**
+ [Supported engine versions](#apg-waits.clientread.context.supported)
+ [Context](#apg-waits.clientread.context)
+ [Likely causes of increased waits](#apg-waits.clientread.causes)
+ [Actions](#apg-waits.clientread.actions)

## Supported engine versions
<a name="apg-waits.clientread.context.supported"></a>

This wait event information is supported for Aurora PostgreSQL version 10 and higher.

## Context
<a name="apg-waits.clientread.context"></a>

An Aurora PostgreSQL DB cluster is waiting to receive data from the client. The Aurora PostgreSQL DB cluster must receive the data from the client before it can send more data to the client. The time that the cluster waits before receiving data from the client is a `Client:ClientRead` event.

## Likely causes of increased waits
<a name="apg-waits.clientread.causes"></a>

Common causes for the `Client:ClientRead` event to appear in top waits include the following: 

**Increased network latency**  
There might be increased network latency between the Aurora PostgreSQL DB cluster and client. Higher network latency increases the time required for DB cluster to receive data from the client.

**Increased load on the client**  
There might be CPU pressure or network saturation on the client. An increase in load on the client can delay transmission of data from the client to the Aurora PostgreSQL DB cluster.

**Excessive network round trips**  
A large number of network round trips between the Aurora PostgreSQL DB cluster and the client can delay transmission of data from the client to the Aurora PostgreSQL DB cluster.

**Large copy operation**  
During a copy operation, the data is transferred from the client's file system to the Aurora PostgreSQL DB cluster. Sending a large amount of data to the DB cluster can delay transmission of data from the client to the DB cluster.

**Idle client connection**  
A connection to an Aurora PostgreSQL DB instance is in idle in transaction state and is waiting for a client to send more data or issue a command. This state can lead to an increase in `Client:ClientRead` events.

**PgBouncer used for connection pooling**  
PgBouncer has a low-level network configuration setting called `pkt_buf`, which is set to 4,096 by default. If the workload is sending query packets larger than 4,096 bytes through PgBouncer, we recommend increasing the `pkt_buf` setting to 8,192. If the new setting doesn't decrease the number of `Client:ClientRead` events, we recommend increasing the `pkt_buf` setting to larger values, such as 16,384 or 32,768. If the query text is large, the larger setting can be particularly helpful.

## Actions
<a name="apg-waits.clientread.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Place the clients in the same Availability Zone and VPC subnet as the cluster](#apg-waits.clientread.actions.az-vpc-subnet)
+ [Scale your client](#apg-waits.clientread.actions.scale-client)
+ [Use current generation instances](#apg-waits.clientread.actions.db-instance-class)
+ [Increase network bandwidth](#apg-waits.clientread.actions.increase-network-bandwidth)
+ [Monitor maximums for network performance](#apg-waits.clientread.actions.monitor-network-performance)
+ [Monitor for transactions in the "idle in transaction" state](#apg-waits.clientread.actions.check-idle-in-transaction)

### Place the clients in the same Availability Zone and VPC subnet as the cluster
<a name="apg-waits.clientread.actions.az-vpc-subnet"></a>

To reduce network latency and increase network throughput, place clients in the same Availability Zone and virtual private cloud (VPC) subnet as the Aurora PostgreSQL DB cluster. Make sure that the clients are as geographically close to the DB cluster as possible.

### Scale your client
<a name="apg-waits.clientread.actions.scale-client"></a>

Using Amazon CloudWatch or other host metrics, determine if your client is currently constrained by CPU or network bandwidth, or both. If the client is constrained, scale your client accordingly.

### Use current generation instances
<a name="apg-waits.clientread.actions.db-instance-class"></a>

In some cases, you might not be using a DB instance class that supports jumbo frames. If you're running your application on Amazon EC2, consider using a current generation instance for the client. Also, configure the maximum transmission unit (MTU) on the client operating system. This technique might reduce the number of network round trips and increase network throughput. For more information, see [ Jumbo frames (9001 MTU)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#jumbo_frame_instances) in the *Amazon EC2 User Guide*.

For information about DB instance classes, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md). To determine the DB instance class that is equivalent to an Amazon EC2 instance type, place `db.` before the Amazon EC2 instance type name. For example, the `r5.8xlarge` Amazon EC2 instance is equivalent to the `db.r5.8xlarge` DB instance class.

### Increase network bandwidth
<a name="apg-waits.clientread.actions.increase-network-bandwidth"></a>

Use `NetworkReceiveThroughput` and `NetworkTransmitThroughput` Amazon CloudWatch metrics to monitor incoming and outgoing network traffic on the DB cluster. These metrics can help you to determine if network bandwidth is sufficient for your workload. 

If your network bandwidth isn't enough, increase it. If the AWS client or your DB instance is reaching the network bandwidth limits, the only way to increase the bandwidth is to increase your DB instance size.

For more information about CloudWatch metrics, see [Amazon CloudWatch metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md).

### Monitor maximums for network performance
<a name="apg-waits.clientread.actions.monitor-network-performance"></a>

If you are using Amazon EC2 clients, Amazon EC2 provides maximums for network performance metrics, including aggregate inbound and outbound network bandwidth. It also provides connection tracking to ensure that packets are returned as expected and link-local services access for services such as the Domain Name System (DNS). To monitor these maximums, use a current enhanced networking driver and monitor network performance for your client. 

For more information, see [ Monitor network performance for your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html) in the *Amazon EC2 User Guide* and [Monitor network performance for your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitoring-network-performance-ena.html) in the *Amazon EC2 User Guide*.

### Monitor for transactions in the "idle in transaction" state
<a name="apg-waits.clientread.actions.check-idle-in-transaction"></a>

Check whether you have an increasing number of `idle in transaction` connections. To do this, monitor the `state` column in the `pg_stat_activity` table. You might be able to identify the connection source by running a query similar to the following.

```
select client_addr, state, count(1) from pg_stat_activity 
where state like 'idle in transaction%' 
group by 1,2 
order by 3 desc
```

# Client:ClientWrite
<a name="apg-waits.clientwrite"></a>

The `Client:ClientWrite` event occurs when Aurora PostgreSQL is waiting to write data to the client.

**Topics**
+ [Supported engine versions](#apg-waits.clientwrite.context.supported)
+ [Context](#apg-waits.clientwrite.context)
+ [Likely causes of increased waits](#apg-waits.clientwrite.causes)
+ [Actions](#apg-waits.clientwrite.actions)

## Supported engine versions
<a name="apg-waits.clientwrite.context.supported"></a>

This wait event information is supported for Aurora PostgreSQL version 10 and higher.

## Context
<a name="apg-waits.clientwrite.context"></a>

A client process must read all of the data received from an Aurora PostgreSQL DB cluster before the cluster can send more data. The time that the cluster waits before sending more data to the client is a `Client:ClientWrite` event.

Reduced network throughput between the Aurora PostgreSQL DB cluster and the client can cause this event. CPU pressure and network saturation on the client can also cause this event. *CPU pressure* is when the CPU is fully utilized and there are tasks waiting for CPU time. *Network saturation* is when the network between the database and client is carrying more data than it can handle. 

## Likely causes of increased waits
<a name="apg-waits.clientwrite.causes"></a>

Common causes for the `Client:ClientWrite` event to appear in top waits include the following: 

**Increased network latency**  
There might be increased network latency between the Aurora PostgreSQL DB cluster and client. Higher network latency increases the time required for the client to receive the data.

**Increased load on the client**  
There might be CPU pressure or network saturation on the client. An increase in load on the client delays the reception of data from the Aurora PostgreSQL DB cluster.

**Large volume of data sent to the client**  
The Aurora PostgreSQL DB cluster might be sending a large amount of data to the client. A client might not be able to receive the data as fast as the cluster is sending it. Activities such as a copy of a large table can result in an increase in `Client:ClientWrite` events.

## Actions
<a name="apg-waits.clientwrite.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Place the clients in the same Availability Zone and VPC subnet as the cluster](#apg-waits.clientwrite.actions.az-vpc-subnet)
+ [Use current generation instances](#apg-waits.clientwrite.actions.db-instance-class)
+ [Reduce the amount of data sent to the client](#apg-waits.clientwrite.actions.reduce-data)
+ [Scale your client](#apg-waits.clientwrite.actions.scale-client)

### Place the clients in the same Availability Zone and VPC subnet as the cluster
<a name="apg-waits.clientwrite.actions.az-vpc-subnet"></a>

To reduce network latency and increase network throughput, place clients in the same Availability Zone and virtual private cloud (VPC) subnet as the Aurora PostgreSQL DB cluster.

### Use current generation instances
<a name="apg-waits.clientwrite.actions.db-instance-class"></a>

In some cases, you might not be using a DB instance class that supports jumbo frames. If you're running your application on Amazon EC2, consider using a current generation instance for the client. Also, configure the maximum transmission unit (MTU) on the client operating system. This technique might reduce the number of network round trips and increase network throughput. For more information, see [ Jumbo frames (9001 MTU)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#jumbo_frame_instances) in the *Amazon EC2 User Guide*.

For information about DB instance classes, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md). To determine the DB instance class that is equivalent to an Amazon EC2 instance type, place `db.` before the Amazon EC2 instance type name. For example, the `r5.8xlarge` Amazon EC2 instance is equivalent to the `db.r5.8xlarge` DB instance class.

### Reduce the amount of data sent to the client
<a name="apg-waits.clientwrite.actions.reduce-data"></a>

When possible, adjust your application to reduce the amount of data that the Aurora PostgreSQL DB cluster sends to the client. Making such adjustments relieves CPU and network contention on the client.

### Scale your client
<a name="apg-waits.clientwrite.actions.scale-client"></a>

Using Amazon CloudWatch or other host metrics, determine if your client is currently constrained by CPU or network bandwidth, or both. If the client is constrained, scale your client accordingly.

# CPU
<a name="apg-waits.cpu"></a>

This event occurs when a thread is active in CPU or is waiting for CPU.

**Topics**
+ [Supported engine versions](#apg-waits.cpu.context.supported)
+ [Context](#apg-waits.cpu.context)
+ [Likely causes of increased waits](#apg-waits.cpu.causes)
+ [Actions](#apg-waits.cpu.actions)

## Supported engine versions
<a name="apg-waits.cpu.context.supported"></a>

This wait event information is relevant for Aurora PostgreSQL version 9.6 and higher. 

## Context
<a name="apg-waits.cpu.context"></a>

The *central processing unit (CPU)* is the component of a computer that runs instructions. For example, CPU instructions perform arithmetic operations and exchange data in memory. If a query increases the number of instructions that it performs through the database engine, the time spent running the query increases. *CPU scheduling* is giving CPU time to a process. Scheduling is orchestrated by the kernel of the operating system.

**Topics**
+ [How to tell when this wait occurs](#apg-waits.cpu.when-it-occurs)
+ [DBLoadCPU metric](#apg-waits.cpu.context.dbloadcpu)
+ [os.cpuUtilization metrics](#apg-waits.cpu.context.osmetrics)
+ [Likely cause of CPU scheduling](#apg-waits.cpu.context.scheduling)

### How to tell when this wait occurs
<a name="apg-waits.cpu.when-it-occurs"></a>

This `CPU` wait event indicates that a backend process is active in CPU or is waiting for CPU. You know that it's occurring when a query shows the following information:
+ The `pg_stat_activity.state` column has the value `active`.
+ The `wait_event_type` and `wait_event` columns in `pg_stat_activity` are both `null`.

To see the backend processes that are using or waiting on CPU, run the following query.

```
SELECT * 
FROM   pg_stat_activity
WHERE  state = 'active'
AND    wait_event_type IS NULL
AND    wait_event IS NULL;
```

### DBLoadCPU metric
<a name="apg-waits.cpu.context.dbloadcpu"></a>

The Performance Insights metric for CPU is `DBLoadCPU`. The value for `DBLoadCPU` can differ from the value for the Amazon CloudWatch metric `CPUUtilization`. The latter metric is collected from the HyperVisor for a database instance.

### os.cpuUtilization metrics
<a name="apg-waits.cpu.context.osmetrics"></a>

Performance Insights operating-system metrics provide detailed information about CPU utilization. For example, you can display the following metrics:
+ `os.cpuUtilization.nice.avg`
+ `os.cpuUtilization.total.avg`
+ `os.cpuUtilization.wait.avg`
+ `os.cpuUtilization.idle.avg`

Performance Insights reports the CPU usage by the database engine as `os.cpuUtilization.nice.avg`.

### Likely cause of CPU scheduling
<a name="apg-waits.cpu.context.scheduling"></a>

From an operating system perspective, the CPU is active when it isn't running the idle thread. The CPU is active while it performs a computation, but it's also active when it waits on memory I/O. This type of I/O dominates a typical database workload.

Processes are likely to wait to get scheduled on a CPU when the following conditions are met:
+ The CloudWatch `CPUUtilization` metric is near 100 percent.
+ The average load is greater than the number of vCPUs, indicating a heavy load. You can find the `loadAverageMinute` metric in the OS metrics section in Performance Insights.

## Likely causes of increased waits
<a name="apg-waits.cpu.causes"></a>

When the CPU wait event occurs more than normal, possibly indicating a performance problem, typical causes include the following.

**Topics**
+ [Likely causes of sudden spikes](#apg-waits.cpu.causes.spikes)
+ [Likely causes of long-term high frequency](#apg-waits.cpu.causes.long-term)
+ [Corner cases](#apg-waits.cpu.causes.corner-cases)

### Likely causes of sudden spikes
<a name="apg-waits.cpu.causes.spikes"></a>

The most likely causes of sudden spikes are as follows:
+ Your application has opened too many simultaneous connections to the database. This scenario is known as a "connection storm."
+ Your application workload changed in any of the following ways:
  + New queries
  + An increase in the size of your dataset
  + Index maintenance or creation
  + New functions
  + New operators
  + An increase in parallel query execution
+ Your query execution plans have changed. In some cases, a change can cause an increase in buffers. For example, the query is now using a sequential scan when it previously used an index. In this case, the queries need more CPU to accomplish the same goal.

### Likely causes of long-term high frequency
<a name="apg-waits.cpu.causes.long-term"></a>

The most likely causes of events that recur over a long period:
+ Too many backend processes are running concurrently on CPU. These processes can be parallel workers.
+ Queries are performing suboptimally because they need a large number of buffers.

### Corner cases
<a name="apg-waits.cpu.causes.corner-cases"></a>

If none of the likely causes turn out to be actual causes, the following situations might be occurring:
+ The CPU is swapping processes in and out.
+ CPU context switching has increased.
+ Aurora PostgreSQL code is missing wait events.

## Actions
<a name="apg-waits.cpu.actions"></a>

If the `CPU` wait event dominates database activity, it doesn't necessarily indicate a performance problem. Respond to this event only when performance degrades.

**Topics**
+ [Investigate whether the database is causing the CPU increase](#apg-waits.cpu.actions.db-CPU)
+ [Determine whether the number of connections increased](#apg-waits.cpu.actions.connections)
+ [Respond to workload changes](#apg-waits.cpu.actions.workload)

### Investigate whether the database is causing the CPU increase
<a name="apg-waits.cpu.actions.db-CPU"></a>

Examine the `os.cpuUtilization.nice.avg` metric in Performance Insights. If this value is far less than the CPU usage, nondatabase processes are the main contributor to CPU.

### Determine whether the number of connections increased
<a name="apg-waits.cpu.actions.connections"></a>

Examine the `DatabaseConnections` metric in Amazon CloudWatch. Your action depends on whether the number increased or decreased during the period of increased CPU wait events.

#### The connections increased
<a name="apg-waits.cpu.actions.connections.increased"></a>

If the number of connections went up, compare the number of backend processes consuming CPU to the number of vCPUs. The following scenarios are possible:
+ The number of backend processes consuming CPU is less than the number of vCPUs.

  In this case, the number of connections isn't an issue. However, you might still try to reduce CPU utilization.
+ The number of backend processes consuming CPU is greater than the number of vCPUs.

  In this case, consider the following options:
  + Decrease the number of backend processes connected to your database. For example, implement a connection pooling solution such as RDS Proxy. To learn more, see [Amazon RDS Proxyfor Aurora](rds-proxy.md).
  + Upgrade your instance size to get a higher number of vCPUs.
  + Redirect some read-only workloads to reader nodes, if applicable.

#### The connections didn't increase
<a name="apg-waits.cpu.actions.connections.decreased"></a>

Examine the `blks_hit` metrics in Performance Insights. Look for a correlation between an increase in `blks_hit` and CPU usage. The following scenarios are possible:
+ CPU usage and `blks_hit` are correlated.

  In this case, find the top SQL statements that are linked to the CPU usage, and look for plan changes. You can use either of the following techniques:
  + Explain the plans manually and compare them to the expected execution plan.
  + Look for an increase in block hits per second and local block hits per second. In the **Top SQL** section of Performance Insights dashboard, choose **Preferences**.
+ CPU usage and `blks_hit` aren't correlated.

  In this case, determine whether any of the following occurs:
  + The application is rapidly connecting to and disconnecting from the database. 

    Diagnose this behavior by turning on `log_connections` and `log_disconnections`, then analyzing the PostgreSQL logs. Consider using the `pgbadger` log analyzer. For more information, see [https://github.com/darold/pgbadger](https://github.com/darold/pgbadger).
  + The OS is overloaded.

    In this case, Performance Insights shows that backend processes are consuming CPU for a longer time than usual. Look for evidence in the Performance Insights `os.cpuUtilization` metrics or the CloudWatch `CPUUtilization` metric. If the operating system is overloaded, look at Enhanced Monitoring metrics to diagnose further. Specifically, look at the process list and the percentage of CPU consumed by each process.
  + Top SQL statements are consuming too much CPU.

    Examine statements that are linked to the CPU usage to see whether they can use less CPU. Run an `EXPLAIN` command, and focus on the plan nodes that have the most impact. Consider using a PostgreSQL execution plan visualizer. To try out this tool, see [http://explain.dalibo.com/](http://explain.dalibo.com/).

### Respond to workload changes
<a name="apg-waits.cpu.actions.workload"></a>

If your workload has changed, look for the following types of changes:

New queries  
Check whether the new queries are expected. If so, ensure that their execution plans and the number of executions per second are expected.

An increase in the size of the data set  
Determine whether partitioning, if it's not already implemented, might help. This strategy might reduce the number of pages that a query needs to retrieve.

Index maintenance or creation  
Check whether the schedule for the maintenance is expected. A best practice is to schedule maintenance activities outside of peak activities.

New functions  
Check whether these functions perform as expected during testing. Specifically, check whether the number of executions per second is expected.

New operators  
Check whether they perform as expected during the testing.

An increase in running parallel queries  
Determine whether any of the following situations has occurred:  
+ The relations or indexes involved have suddenly grown in size so that they differ significantly from `min_parallel_table_scan_size` or `min_parallel_index_scan_size`.
+ Recent changes have been made to `parallel_setup_cost` or `parallel_tuple_cost`.
+ Recent changes have been made to `max_parallel_workers` or `max_parallel_workers_per_gather`.

# IO:BufFileRead and IO:BufFileWrite
<a name="apg-waits.iobuffile"></a>

The `IO:BufFileRead` and `IO:BufFileWrite` events occur when Aurora PostgreSQL creates temporary files. When operations require more memory than the working memory parameters currently define, they write temporary data to persistent storage. This operation is sometimes called *spilling to disk*. For more information about the temporary files and their usage, see [Managing temporary files with PostgreSQL](PostgreSQL.ManagingTempFiles.md).

**Topics**
+ [Supported engine versions](#apg-waits.iobuffile.context.supported)
+ [Context](#apg-waits.iobuffile.context)
+ [Likely causes of increased waits](#apg-waits.iobuffile.causes)
+ [Actions](#apg-waits.iobuffile.actions)

## Supported engine versions
<a name="apg-waits.iobuffile.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.iobuffile.context"></a>

`IO:BufFileRead` and `IO:BufFileWrite` relate to the work memory area and maintenance work memory area. For more information about these local memory areas, see [Work memory area](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.local.work_mem) and [Maintenance work memory area](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.local.maintenance_work_mem).

The default value for `work_mem` is 4 MB. If one session performs operations in parallel, each worker handling the parallelism uses 4 MB of memory. For this reason, set `work_mem` carefully. If you increase the value too much, a database running many sessions might consume too much memory. If you set the value too low, Aurora PostgreSQL creates temporary files in local storage. The disk I/O for these temporary files can reduce performance.

If you observe the following sequence of events, your database might be generating temporary files:

1. Sudden and sharp decreases in availability

1. Fast recovery for the free space

You might also see a "chainsaw" pattern. This pattern can indicate that your database is creating small files constantly.

## Likely causes of increased waits
<a name="apg-waits.iobuffile.causes"></a>

In general, these wait events are caused by operations that consume more memory than the `work_mem` or `maintenance_work_mem` parameters allocate. To compensate, the operations write to temporary files. Common causes for the `IO:BufFileRead` and `IO:BufFileWrite` events include the following:

**Queries that need more memory than exists in the work memory area**  
Queries with the following characteristics use the work memory area:  
+ Hash joins
+ `ORDER BY` clause
+ `GROUP BY` clause
+ `DISTINCT`
+ Window functions
+ `CREATE TABLE AS SELECT`
+ Materialized view refresh

**Statements that need more memory than exists in the maintenance work memory area**  
The following statements use the maintenance work memory area:  
+ `CREATE INDEX`
+ `CLUSTER`

## Actions
<a name="apg-waits.iobuffile.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Identify the problem](#apg-waits.iobuffile.actions.problem)
+ [Examine your join queries](#apg-waits.iobuffile.actions.joins)
+ [Examine your ORDER BY and GROUP BY queries](#apg-waits.iobuffile.actions.order-by)
+ [Avoid using the DISTINCT operation](#apg-waits.iobuffile.actions.distinct)
+ [Consider using window functions instead of GROUP BY functions](#apg-waits.iobuffile.actions.window)
+ [Investigate materialized views and CTAS statements](#apg-waits.iobuffile.actions.mv-refresh)
+ [Use pg\$1repack when you create indexes](#apg-waits.iobuffile.actions.pg_repack)
+ [Increase maintenance\$1work\$1mem when you cluster tables](#apg-waits.iobuffile.actions.cluster)
+ [Tune memory to prevent IO:BufFileRead and IO:BufFileWrite](#apg-waits.iobuffile.actions.tuning-memory)

### Identify the problem
<a name="apg-waits.iobuffile.actions.problem"></a>

You can view temporary file usage directly in Performance Insights. For more information, see [Viewing temporary file usage with Performance Insights](PostgreSQL.ManagingTempFiles.Example.md). When Performance Insights is disabled, you might notice increased `IO:BufFileRead` and `IO:BufFileWrite` operations. To troubleshoot, do the following:

1. Examine the `FreeLocalStorage` metric in Amazon CloudWatch.

1. Look for a chainsaw pattern, which is a series of jagged spikes.

A chainsaw pattern indicates a quick consumption and release of storage, often associated with temporary files. If you notice this pattern, turn on Performance Insights. When using Performance Insights, you can identify when the wait events occur and which queries are associated with them. Your solution depends on the specific query causing the events.

Or set the parameter `log_temp_files`. This parameter logs all queries generating more than threshold KB of temporary files. If the value is `0`, Aurora PostgreSQL logs all temporary files. If the value is `1024`, Aurora PostgreSQL logs all queries that produces temporary files larger than 1 MB. For more information about `log_temp_files`, see [Error Reporting and Logging](https://www.postgresql.org/docs/10/runtime-config-logging.html) in the PostgreSQL documentation.

### Examine your join queries
<a name="apg-waits.iobuffile.actions.joins"></a>

Your application probably use joins. For example, the following query joins four tables.

```
SELECT * 
       FROM order 
 INNER JOIN order_item 
       ON (order.id = order_item.order_id)
 INNER JOIN customer 
       ON (customer.id = order.customer_id)
 INNER JOIN customer_address 
       ON (customer_address.customer_id = customer.id AND 
           order.customer_address_id = customer_address.id)
 WHERE customer.id = 1234567890;
```

A possible cause of spikes in temporary file usage is a problem in the query itself. For example, a broken clause might not filter the joins properly. Consider the second inner join in the following example.

```
SELECT * 
       FROM order
 INNER JOIN order_item 
       ON (order.id = order_item.order_id)
 INNER JOIN customer 
       ON (customer.id = customer.id)
 INNER JOIN customer_address 
       ON (customer_address.customer_id = customer.id AND 
           order.customer_address_id = customer_address.id)
 WHERE customer.id = 1234567890;
```

The preceding query mistakenly joins `customer.id` to `customer.id`, generating a Cartesian product between every customer and every order. This type of accidental join generates large temporary files. Depending on the size of the tables, a Cartesian query can even fill up storage. Your application might have Cartesian joins when the following conditions are met:
+ You see large, sharp decreases in storage availability, followed by fast recovery.
+ No indexes are being created.
+ No `CREATE TABLE FROM SELECT` statements are being issued.
+ No materialized views are being refreshed.

To see whether the tables are being joined using the proper keys, inspect your query and object-relational mapping directives. Bear in mind that certain queries of your application are not called all the time, and some queries are dynamically generated.

### Examine your ORDER BY and GROUP BY queries
<a name="apg-waits.iobuffile.actions.order-by"></a>

In some cases, an `ORDER BY` clause can result in excessive temporary files. Consider the following guidelines:
+ Only include columns in an `ORDER BY` clause when they need to be ordered. This guideline is especially important for queries that return thousands of rows and specify many columns in the `ORDER BY` clause.
+ Considering creating indexes to accelerate `ORDER BY` clauses when they match columns that have the same ascending or descending order. Partial indexes are preferable because they are smaller. Smaller indexes are read and traversed more quickly.
+ If you create indexes for columns that can accept null values, consider whether you want the null values stored at the end or at the beginning of the indexes.

  If possible, reduce the number of rows that need to be ordered by filtering the result set. If you use `WITH` clause statements or subqueries, remember that an inner query generates a result set and passes it to the outside query. The more rows that a query can filter out, the less ordering the query needs to do.
+ If you don't need to obtain the full result set, use the `LIMIT` clause. For example, if you only want the top five rows, a query using the `LIMIT` clause doesn't keep generating results. In this way, the query requires less memory and temporary files.

A query that uses a `GROUP BY` clause can also require temporary files. `GROUP BY` queries summarize values by using functions such as the following:
+ `COUNT`
+ `AVG`
+ `MIN`
+ `MAX`
+ `SUM`
+ `STDDEV`

To tune `GROUP BY` queries, follow the recommendations for `ORDER BY` queries.

### Avoid using the DISTINCT operation
<a name="apg-waits.iobuffile.actions.distinct"></a>

If possible, avoid using the `DISTINCT` operation to remove duplicated rows. The more unnecessary and duplicated rows that your query returns, the more expensive the `DISTINCT` operation becomes. If possible, add filters in the `WHERE` clause even if you use the same filters for different tables. Filtering the query and joining correctly improves your performance and reduces resource use. It also prevents incorrect reports and results.

If you need to use `DISTINCT` for multiple rows of a same table, consider creating a composite index. Grouping multiple columns in an index can improve the time to evaluate distinct rows. Also, if you use Amazon Aurora PostgreSQL version 10 or higher, you can correlate statistics among multiple columns by using the `CREATE STATISTICS` command.

### Consider using window functions instead of GROUP BY functions
<a name="apg-waits.iobuffile.actions.window"></a>

Using `GROUP BY`, you change the result set, and then retrieve the aggregated result. Using window functions, you aggregate data without changing the result set. A window function uses the `OVER` clause to perform calculations across the sets defined by the query, correlating one row with another. You can use all the `GROUP BY` functions in window functions, but also use functions such as the following:
+ `RANK`
+ `ARRAY_AGG`
+ `ROW_NUMBER`
+ `LAG`
+ `LEAD`

To minimize the number of temporary files generated by a window function, remove duplications for the same result set when you need two distinct aggregations. Consider the following query.

```
SELECT sum(salary) OVER (PARTITION BY dept ORDER BY salary DESC) as sum_salary
     , avg(salary) OVER (PARTITION BY dept ORDER BY salary ASC) as avg_salary
  FROM empsalary;
```

You can rewrite the query with the `WINDOW` clause as follows.

```
SELECT sum(salary) OVER w as sum_salary
         , avg(salary) OVER w as_avg_salary
    FROM empsalary
  WINDOW w AS (PARTITION BY dept ORDER BY salary DESC);
```

By default, the Aurora PostgreSQL execution planner consolidates similar nodes so that it doesn't duplicate operations. However, by using an explicit declaration for the window block, you can maintain the query more easily. You might also improve performance by preventing duplication.

### Investigate materialized views and CTAS statements
<a name="apg-waits.iobuffile.actions.mv-refresh"></a>

When a materialized view refreshes, it runs a query. This query can contain an operation such as `GROUP BY`, `ORDER BY`, or `DISTINCT`. During a refresh, you might observe large numbers of temporary files and the wait events `IO:BufFileWrite` and `IO:BufFileRead`. Similarly, when you create a table based on a `SELECT` statement, the `CREATE TABLE` statement runs a query. To reduce the temporary files needed, optimize the query.

### Use pg\$1repack when you create indexes
<a name="apg-waits.iobuffile.actions.pg_repack"></a>

When you create an index, the engine orders the result set. As tables grow in size, and as values in the indexed column become more diverse, the temporary files require more space. In most cases, you can't prevent the creation of temporary files for large tables without modifying the maintenance work memory area. For more information, see [Maintenance work memory area](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.local.maintenance_work_mem). 

A possible workaround when recreating a large index is to use the pg\$1repack tool. For more information, see [Reorganize tables in PostgreSQL databases with minimal locks](https://reorg.github.io/pg_repack/) in the pg\$1repack documentation.

### Increase maintenance\$1work\$1mem when you cluster tables
<a name="apg-waits.iobuffile.actions.cluster"></a>

The `CLUSTER` command clusters the table specified by *table\$1name* based on an existing index specified by *index\$1name*. Aurora PostgreSQL physically recreates the table to match the order of a given index.

When magnetic storage was prevalent, clustering was common because storage throughput was limited. Now that SSD-based storage is common, clustering is less popular. However, if you cluster tables, you can still increase performance slightly depending on the table size, index, query, and so on. 

If you run the `CLUSTER` command and observe the wait events `IO:BufFileWrite` and `IO:BufFileRead`, tune `maintenance_work_mem`. Increase the memory size to a fairly large amount. A high value means that the engine can use more memory for the clustering operation.

### Tune memory to prevent IO:BufFileRead and IO:BufFileWrite
<a name="apg-waits.iobuffile.actions.tuning-memory"></a>

In some situation, you need to tune memory. Your goal is to balance the following requirements:
+ The `work_mem` value (see [Work memory area](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.local.work_mem))
+ The memory remaining after discounting the `shared_buffers` value (see [Buffer pool](AuroraMySQL.Managing.Tuning.concepts.md#AuroraMySQL.Managing.Tuning.concepts.memory.buffer-pool))
+ The maximum connections opened and in use, which is limited by `max_connections`

#### Increase the size of the work memory area
<a name="apg-waits.iobuffile.actions.tuning-memory.work-mem"></a>

In some situations, your only option is to increase the memory used by your session. If your queries are correctly written and are using the correct keys for joins, consider increasing the `work_mem` value. For more information, see [Work memory area](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.local.work_mem).

To find out how many temporary files a query generates, set `log_temp_files` to `0`. If you increase the `work_mem` value to the maximum value identified in the logs, you prevent the query from generating temporary files. However, `work_mem` sets the maximum per plan node for each connection or parallel worker. If the database has 5,000 connections, and if each one uses 256 MiB memory, the engine needs 1.2 TiB of RAM. Thus, your instance might run out of memory.

#### Reserve sufficient memory for the shared buffer pool
<a name="apg-waits.iobuffile.actions.tuning-memory.shared-pool"></a>

Your database uses memory areas such as the shared buffer pool, not just the work memory area. Consider the requirements of these additional memory areas before you increase `work_mem`. For more information about the buffer pool, see [Buffer pool](AuroraMySQL.Managing.Tuning.concepts.md#AuroraMySQL.Managing.Tuning.concepts.memory.buffer-pool).

For example, assume that your Aurora PostgreSQL instance class is db.r5.2xlarge. This class has 64 GiB of memory. By default, 75 percent of the memory is reserved for the shared buffer pool. After you subtract the amount allocated to the shared memory area, 16,384 MB remains. Don't allocate the remaining memory exclusively to the work memory area because the operating system and the engine also require memory.

The memory that you can allocate to `work_mem` depends on the instance class. If you use a larger instance class, more memory is available. However, in the preceding example, you can't use more than 16 GiB. Otherwise, your instance becomes unavailable when it runs out of memory. To recover the instance from the unavailable state, the Aurora PostgreSQL automation services automatically restart.

#### Manage the number of connections
<a name="apg-waits.iobuffile.actions.tuning-memory.connections"></a>

Suppose that your database instance has 5,000 simultaneous connections. Each connection uses at least 4 MiB of `work_mem`. The high memory consumption of the connections is likely to degrade performance. In response, you have the following options:
+ Upgrade to a larger instance class.
+ Decrease the number of simultaneous database connections by using a connection proxy or pooler.

For proxies, consider Amazon RDS Proxy, pgBouncer, or a connection pooler based on your application. This solution alleviates the CPU load. It also reduces the risk when all connections require the work memory area. When fewer database connections exist, you can increase the value of `work_mem`. In this way, you reduce the occurrence of the `IO:BufFileRead` and `IO:BufFileWrite` wait events. Also, the queries waiting for the work memory area speed up significantly.

# IO:DataFileRead
<a name="apg-waits.iodatafileread"></a>

The `IO:DataFileRead` event occurs when a connection waits on a backend process to read a required page from storage because the page isn't available in shared memory.

**Topics**
+ [Supported engine versions](#apg-waits.iodatafileread.context.supported)
+ [Context](#apg-waits.iodatafileread.context)
+ [Likely causes of increased waits](#apg-waits.iodatafileread.causes)
+ [Actions](#apg-waits.iodatafileread.actions)

## Supported engine versions
<a name="apg-waits.iodatafileread.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.iodatafileread.context"></a>

All queries and data manipulation (DML) operations access pages in the buffer pool. Statements that can induce reads include `SELECT`, `UPDATE`, and `DELETE`. For example, an `UPDATE` can read pages from tables or indexes. If the page being requested or updated isn't in the shared buffer pool, this read can lead to the `IO:DataFileRead` event.

Because the shared buffer pool is finite, it can fill up. In this case, requests for pages that aren't in memory force the database to read blocks from disk. If the `IO:DataFileRead` event occurs frequently, your shared buffer pool might be too small to accommodate your workload. This problem is acute for `SELECT` queries that read a large number of rows that don't fit in the buffer pool. For more information about the buffer pool, see [Buffer pool](AuroraMySQL.Managing.Tuning.concepts.md#AuroraMySQL.Managing.Tuning.concepts.memory.buffer-pool).

## Likely causes of increased waits
<a name="apg-waits.iodatafileread.causes"></a>

Common causes for the `IO:DataFileRead` event include the following:

**Connection spikes**  
You might find multiple connections generating the same number of IO:DataFileRead wait events. In this case, a spike (sudden and large increase) in `IO:DataFileRead` events can occur. 

**SELECT and DML statements performing sequential scans**  
Your application might be performing a new operation. Or an existing operation might change because of a new execution plan. In such cases, look for tables (particularly large tables) that have a greater `seq_scan` value. Find them by querying `pg_stat_user_tables`. To track queries that are generating more read operations, use the extension `pg_stat_statements`.

**CTAS and CREATE INDEX for large data sets**  
A *CTAS* is a `CREATE TABLE AS SELECT` statement. If you run a CTAS using a large data set as a source, or create an index on a large table, the `IO:DataFileRead` event can occur. When you create an index, the database might need to read the entire object using a sequential scan. A CTAS generates `IO:DataFile` reads when pages aren't in memory.

**Multiple vacuum workers running at the same time**  
Vacuum workers can be triggered manually or automatically. We recommend adopting an aggressive vacuum strategy. However, when a table has many updated or deleted rows, the `IO:DataFileRead` waits increase. After space is reclaimed, the vacuum time spent on `IO:DataFileRead` decreases.

**Ingesting large amounts of data**  
When your application ingests large amounts of data, `ANALYZE` operations might occur more often. The `ANALYZE` process can be triggered by an autovacuum launcher or invoked manually.  
The `ANALYZE` operation reads a subset of the table. The number of pages that must be scanned is calculated by multiplying 30 by the `default_statistics_target` value. For more information, see the [PostgreSQL documentation](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-DEFAULT-STATISTICS-TARGET). The `default_statistics_target` parameter accepts values between 1 and 10,000, where the default is 100.

**Resource starvation**  
If instance network bandwidth or CPU are consumed, the `IO:DataFileRead` event might occur more frequently.

## Actions
<a name="apg-waits.iodatafileread.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Check predicate filters for queries that generate waits](#apg-waits.iodatafileread.actions.filters)
+ [Minimize the effect of maintenance operations](#apg-waits.iodatafileread.actions.maintenance)
+ [Respond to high numbers of connections](#apg-waits.iodatafileread.actions.connections)

### Check predicate filters for queries that generate waits
<a name="apg-waits.iodatafileread.actions.filters"></a>

Assume that you identify specific queries that are generating `IO:DataFileRead` wait events. You might identify them using the following techniques:
+ Performance Insights
+ Catalog views such as the one provided by the extension `pg_stat_statements`
+ The catalog view `pg_stat_all_tables`, if it periodically shows an increased number of physical reads
+ The `pg_statio_all_tables` view, if it shows that `_read` counters are increasing

We recommend that you determine which filters are used in the predicate (`WHERE` clause) of these queries. Follow these guidelines:
+ Run the `EXPLAIN` command. In the output, identify which types of scans are used. A sequential scan doesn't necessarily indicate a problem. Queries that use sequential scans naturally produce more `IO:DataFileRead` events when compared to queries that use filters.

  Find out whether the column listed in the `WHERE` clause is indexed. If not, consider creating an index for this column. This approach avoids the sequential scans and reduces the `IO:DataFileRead` events. If a query has restrictive filters and still produces sequential scans, evaluate whether the proper indexes are being used.
+ Find out whether the query is accessing a very large table. In some cases, partitioning a table can improve performance, allowing the query to only read necessary partitions.
+ Examine the cardinality (total number of rows) from your join operations. Note how restrictive the values are that you're passing in the filters for your `WHERE` clause. If possible, tune your query to reduce the number of rows that are passed in each step of the plan.

### Minimize the effect of maintenance operations
<a name="apg-waits.iodatafileread.actions.maintenance"></a>

Maintenance operations such as `VACUUM` and `ANALYZE` are important. We recommend that you don't turn them off because you find `IO:DataFileRead` wait events related to these maintenance operations. The following approaches can minimize the effect of these operations:
+ Run maintenance operations manually during off-peak hours. This technique prevents the database from reaching the threshold for automatic operations.
+ For very large tables, consider partitioning the table. This technique reduces the overhead of maintenance operations. The database only accesses the partitions that require maintenance.
+ When you ingest large amounts of data, consider disabling the autoanalyze feature.

The autovacuum feature is automatically triggered for a table when the following formula is true.

```
pg_stat_user_tables.n_dead_tup > (pg_class.reltuples x autovacuum_vacuum_scale_factor) + autovacuum_vacuum_threshold
```

The view `pg_stat_user_tables` and catalog `pg_class` have multiple rows. One row can correspond to one row in your table. This formula assumes that the `reltuples` are for a specific table. The parameters `autovacuum_vacuum_scale_factor` (0.20 by default) and `autovacuum_vacuum_threshold` (50 tuples by default) are usually set globally for the whole instance. However, you can set different values for a specific table.

**Topics**
+ [Find tables consuming space unnecessarily](#apg-waits.iodatafileread.actions.maintenance.tables)
+ [Find indexes consuming unnecessary space](#apg-waits.iodatafileread.actions.maintenance.indexes)
+ [Find tables that are eligible to be autovacuumed](#apg-waits.iodatafileread.actions.maintenance.autovacuumed)

#### Find tables consuming space unnecessarily
<a name="apg-waits.iodatafileread.actions.maintenance.tables"></a>

To find tables consuming more space than necessary, run the following query. When this query is run by a database user role that doesn't have the `rds_superuser` role, it returns information about only those tables that the user role has permissions to read. This query is supported by PostgreSQL version 12 and later versions. 

```
WITH report AS (
   SELECT   schemaname
           ,tblname
           ,n_dead_tup
           ,n_live_tup
           ,block_size*tblpages AS real_size
           ,(tblpages-est_tblpages)*block_size AS extra_size
           ,CASE WHEN tblpages - est_tblpages > 0
              THEN 100 * (tblpages - est_tblpages)/tblpages::float
              ELSE 0
            END AS extra_ratio, fillfactor, (tblpages-est_tblpages_ff)*block_size AS bloat_size
           ,CASE WHEN tblpages - est_tblpages_ff > 0
              THEN 100 * (tblpages - est_tblpages_ff)/tblpages::float
              ELSE 0
            END AS bloat_ratio
           ,is_na
    FROM (
           SELECT  ceil( reltuples / ( (block_size-page_hdr)/tpl_size ) ) + ceil( toasttuples / 4 ) AS est_tblpages
                  ,ceil( reltuples / ( (block_size-page_hdr)*fillfactor/(tpl_size*100) ) ) + ceil( toasttuples / 4 ) AS est_tblpages_ff
                  ,tblpages
                  ,fillfactor
                  ,block_size
                  ,tblid
                  ,schemaname
                  ,tblname
                  ,n_dead_tup
                  ,n_live_tup
                  ,heappages
                  ,toastpages
                  ,is_na
             FROM (
                    SELECT ( 4 + tpl_hdr_size + tpl_data_size + (2*ma)
                               - CASE WHEN tpl_hdr_size%ma = 0 THEN ma ELSE tpl_hdr_size%ma END
                               - CASE WHEN ceil(tpl_data_size)::int%ma = 0 THEN ma ELSE ceil(tpl_data_size)::int%ma END
                           ) AS tpl_size
                           ,block_size - page_hdr AS size_per_block
                           ,(heappages + toastpages) AS tblpages
                           ,heappages
                           ,toastpages
                           ,reltuples
                           ,toasttuples
                           ,block_size
                           ,page_hdr
                           ,tblid
                           ,schemaname
                           ,tblname
                           ,fillfactor
                           ,is_na
                           ,n_dead_tup
                           ,n_live_tup
                          FROM (
                                SELECT  tbl.oid                       AS tblid
                                       ,ns.nspname                    AS schemaname
                                       ,tbl.relname                   AS tblname
                                       ,tbl.reltuples                 AS reltuples
                                       ,tbl.relpages                  AS heappages
                                       ,coalesce(toast.relpages, 0)   AS toastpages
                                       ,coalesce(toast.reltuples, 0)  AS toasttuples
                                       ,psat.n_dead_tup               AS n_dead_tup
                                       ,psat.n_live_tup               AS n_live_tup
                                       ,24                            AS page_hdr
                                       ,current_setting('block_size')::numeric AS block_size
                                       ,coalesce(substring( array_to_string(tbl.reloptions, ' ') FROM 'fillfactor=([0-9]+)')::smallint, 100) AS fillfactor
                                       ,CASE WHEN version()~'mingw32' OR version()~'64-bit|x86_64|ppc64|ia64|amd64' THEN 8 ELSE 4 END        AS ma
                                       ,23 + CASE WHEN MAX(coalesce(null_frac,0)) > 0 THEN ( 7 + count(*) ) / 8 ELSE 0::int END              AS tpl_hdr_size
                                       ,sum( (1-coalesce(s.null_frac, 0)) * coalesce(s.avg_width, 1024) )                                    AS tpl_data_size
                                       ,bool_or(att.atttypid = 'pg_catalog.name'::regtype) OR count(att.attname) <> count(s.attname)         AS is_na
                                  FROM  pg_attribute       AS att
                                  JOIN  pg_class           AS tbl    ON (att.attrelid = tbl.oid)
                                  JOIN  pg_stat_all_tables AS psat   ON (tbl.oid = psat.relid)
                                  JOIN  pg_namespace       AS ns     ON (ns.oid = tbl.relnamespace)
                             LEFT JOIN  pg_stats           AS s      ON (s.schemaname=ns.nspname AND s.tablename = tbl.relname AND s.inherited=false AND s.attname=att.attname)
                             LEFT JOIN  pg_class           AS toast  ON (tbl.reltoastrelid = toast.oid)
                                 WHERE  att.attnum > 0
                                   AND  NOT att.attisdropped
                                   AND  tbl.relkind = 'r'
                              GROUP BY  tbl.oid, ns.nspname, tbl.relname, tbl.reltuples, tbl.relpages, toastpages, toasttuples, fillfactor, block_size, ma, n_dead_tup, n_live_tup
                              ORDER BY  schemaname, tblname
                           ) AS s
                 ) AS s2
       ) AS s3
 ORDER BY bloat_size DESC
)
  SELECT * 
    FROM report 
   WHERE bloat_ratio != 0
 -- AND schemaname = 'public'
 -- AND tblname = 'pgbench_accounts'
;

-- WHERE NOT is_na
--   AND tblpages*((pst).free_percent + (pst).dead_tuple_percent)::float4/100 >= 1
```

You can check for table and index bloat in your application. For more information, see [Diagnosing table and index bloat](AuroraPostgreSQL.diag-table-ind-bloat.md).

#### Find indexes consuming unnecessary space
<a name="apg-waits.iodatafileread.actions.maintenance.indexes"></a>

To find indexes consuming unnecessary space, run the following query.

```
-- WARNING: run with a nonsuperuser role, the query inspects
-- only indexes on tables you have permissions to read.
-- WARNING: rows with is_na = 't' are known to have bad statistics ("name" type is not supported).
-- This query is compatible with PostgreSQL 8.2 and later.

SELECT current_database(), nspname AS schemaname, tblname, idxname, bs*(relpages)::bigint AS real_size,
  bs*(relpages-est_pages)::bigint AS extra_size,
  100 * (relpages-est_pages)::float / relpages AS extra_ratio,
  fillfactor, bs*(relpages-est_pages_ff) AS bloat_size,
  100 * (relpages-est_pages_ff)::float / relpages AS bloat_ratio,
  is_na
  -- , 100-(sub.pst).avg_leaf_density, est_pages, index_tuple_hdr_bm, 
  -- maxalign, pagehdr, nulldatawidth, nulldatahdrwidth, sub.reltuples, sub.relpages 
  -- (DEBUG INFO)
FROM (
  SELECT coalesce(1 +
       ceil(reltuples/floor((bs-pageopqdata-pagehdr)/(4+nulldatahdrwidth)::float)), 0 
       -- ItemIdData size + computed avg size of a tuple (nulldatahdrwidth)
    ) AS est_pages,
    coalesce(1 +
       ceil(reltuples/floor((bs-pageopqdata-pagehdr)*fillfactor/(100*(4+nulldatahdrwidth)::float))), 0
    ) AS est_pages_ff,
    bs, nspname, table_oid, tblname, idxname, relpages, fillfactor, is_na
    -- , stattuple.pgstatindex(quote_ident(nspname)||'.'||quote_ident(idxname)) AS pst, 
    -- index_tuple_hdr_bm, maxalign, pagehdr, nulldatawidth, nulldatahdrwidth, reltuples 
    -- (DEBUG INFO)
  FROM (
    SELECT maxalign, bs, nspname, tblname, idxname, reltuples, relpages, relam, table_oid, fillfactor,
      ( index_tuple_hdr_bm +
          maxalign - CASE -- Add padding to the index tuple header to align on MAXALIGN
            WHEN index_tuple_hdr_bm%maxalign = 0 THEN maxalign
            ELSE index_tuple_hdr_bm%maxalign
          END
        + nulldatawidth + maxalign - CASE -- Add padding to the data to align on MAXALIGN
            WHEN nulldatawidth = 0 THEN 0
            WHEN nulldatawidth::integer%maxalign = 0 THEN maxalign
            ELSE nulldatawidth::integer%maxalign
          END
      )::numeric AS nulldatahdrwidth, pagehdr, pageopqdata, is_na
      -- , index_tuple_hdr_bm, nulldatawidth -- (DEBUG INFO)
    FROM (
      SELECT
        i.nspname, i.tblname, i.idxname, i.reltuples, i.relpages, i.relam, a.attrelid AS table_oid,
        current_setting('block_size')::numeric AS bs, fillfactor,
        CASE -- MAXALIGN: 4 on 32bits, 8 on 64bits (and mingw32 ?)
          WHEN version() ~ 'mingw32' OR version() ~ '64-bit|x86_64|ppc64|ia64|amd64' THEN 8
          ELSE 4
        END AS maxalign,
        /* per page header, fixed size: 20 for 7.X, 24 for others */
        24 AS pagehdr,
        /* per page btree opaque data */
        16 AS pageopqdata,
        /* per tuple header: add IndexAttributeBitMapData if some cols are null-able */
        CASE WHEN max(coalesce(s.null_frac,0)) = 0
          THEN 2 -- IndexTupleData size
          ELSE 2 + (( 32 + 8 - 1 ) / 8) 
          -- IndexTupleData size + IndexAttributeBitMapData size ( max num filed per index + 8 - 1 /8)
        END AS index_tuple_hdr_bm,
        /* data len: we remove null values save space using it fractionnal part from stats */
        sum( (1-coalesce(s.null_frac, 0)) * coalesce(s.avg_width, 1024)) AS nulldatawidth,
        max( CASE WHEN a.atttypid = 'pg_catalog.name'::regtype THEN 1 ELSE 0 END ) > 0 AS is_na
      FROM pg_attribute AS a
        JOIN (
          SELECT nspname, tbl.relname AS tblname, idx.relname AS idxname, 
            idx.reltuples, idx.relpages, idx.relam,
            indrelid, indexrelid, indkey::smallint[] AS attnum,
            coalesce(substring(
              array_to_string(idx.reloptions, ' ')
               from 'fillfactor=([0-9]+)')::smallint, 90) AS fillfactor
          FROM pg_index
            JOIN pg_class idx ON idx.oid=pg_index.indexrelid
            JOIN pg_class tbl ON tbl.oid=pg_index.indrelid
            JOIN pg_namespace ON pg_namespace.oid = idx.relnamespace
          WHERE pg_index.indisvalid AND tbl.relkind = 'r' AND idx.relpages > 0
        ) AS i ON a.attrelid = i.indexrelid
        JOIN pg_stats AS s ON s.schemaname = i.nspname
          AND ((s.tablename = i.tblname AND s.attname = pg_catalog.pg_get_indexdef(a.attrelid, a.attnum, TRUE)) 
          -- stats from tbl
          OR  (s.tablename = i.idxname AND s.attname = a.attname))
          -- stats from functionnal cols
        JOIN pg_type AS t ON a.atttypid = t.oid
      WHERE a.attnum > 0
      GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9
    ) AS s1
  ) AS s2
    JOIN pg_am am ON s2.relam = am.oid WHERE am.amname = 'btree'
) AS sub
-- WHERE NOT is_na
ORDER BY 2,3,4;
```

#### Find tables that are eligible to be autovacuumed
<a name="apg-waits.iodatafileread.actions.maintenance.autovacuumed"></a>

To find tables that are eligible to be autovacuumed, run the following query.

```
--This query shows tables that need vacuuming and are eligible candidates.
--The following query lists all tables that are due to be processed by autovacuum. 
-- During normal operation, this query should return very little.
WITH  vbt AS (SELECT setting AS autovacuum_vacuum_threshold 
              FROM pg_settings WHERE name = 'autovacuum_vacuum_threshold')
    , vsf AS (SELECT setting AS autovacuum_vacuum_scale_factor 
              FROM pg_settings WHERE name = 'autovacuum_vacuum_scale_factor')
    , fma AS (SELECT setting AS autovacuum_freeze_max_age 
              FROM pg_settings WHERE name = 'autovacuum_freeze_max_age')
    , sto AS (SELECT opt_oid, split_part(setting, '=', 1) as param, 
                split_part(setting, '=', 2) as value 
              FROM (SELECT oid opt_oid, unnest(reloptions) setting FROM pg_class) opt)
SELECT
    '"'||ns.nspname||'"."'||c.relname||'"' as relation
    , pg_size_pretty(pg_table_size(c.oid)) as table_size
    , age(relfrozenxid) as xid_age
    , coalesce(cfma.value::float, autovacuum_freeze_max_age::float) autovacuum_freeze_max_age
    , (coalesce(cvbt.value::float, autovacuum_vacuum_threshold::float) + 
         coalesce(cvsf.value::float,autovacuum_vacuum_scale_factor::float) * c.reltuples) 
         as autovacuum_vacuum_tuples
    , n_dead_tup as dead_tuples
FROM pg_class c 
JOIN pg_namespace ns ON ns.oid = c.relnamespace
JOIN pg_stat_all_tables stat ON stat.relid = c.oid
JOIN vbt on (1=1) 
JOIN vsf ON (1=1) 
JOIN fma on (1=1)
LEFT JOIN sto cvbt ON cvbt.param = 'autovacuum_vacuum_threshold' AND c.oid = cvbt.opt_oid
LEFT JOIN sto cvsf ON cvsf.param = 'autovacuum_vacuum_scale_factor' AND c.oid = cvsf.opt_oid
LEFT JOIN sto cfma ON cfma.param = 'autovacuum_freeze_max_age' AND c.oid = cfma.opt_oid
WHERE c.relkind = 'r' 
AND nspname <> 'pg_catalog'
AND (
    age(relfrozenxid) >= coalesce(cfma.value::float, autovacuum_freeze_max_age::float)
    or
    coalesce(cvbt.value::float, autovacuum_vacuum_threshold::float) + 
      coalesce(cvsf.value::float,autovacuum_vacuum_scale_factor::float) * c.reltuples <= n_dead_tup
    -- or 1 = 1
)
ORDER BY age(relfrozenxid) DESC;
```

### Respond to high numbers of connections
<a name="apg-waits.iodatafileread.actions.connections"></a>

When you monitor Amazon CloudWatch, you might find that the `DatabaseConnections` metric spikes. This increase indicates an increased number of connections to your database. We recommend the following approach:
+ Limit the number of connections that the application can open with each instance. If your application has an embedded connection pool feature, set a reasonable number of connections. Base the number on what the vCPUs in your instance can parallelize effectively.

  If your application doesn't use a connection pool feature, considering using Amazon RDS Proxy or an alternative. This approach lets your application open multiple connections with the load balancer. The balancer can then open a restricted number of connections with the database. As fewer connections are running in parallel, your DB instance performs less context switching in the kernel. Queries should progress faster, leading to fewer wait events. For more information, see [Amazon RDS Proxyfor Aurora](rds-proxy.md).
+ Whenever possible, take advantage of reader nodes for Aurora PostgreSQL and read replicas for RDS for PostgreSQL. When your application runs a read-only operation, send these requests to the reader-only endpoint. This technique spreads application requests across all reader nodes, reducing the I/O pressure on the writer node.
+ Consider scaling up your DB instance. A higher-capacity instance class gives more memory, which gives Aurora PostgreSQL a larger shared buffer pool to hold pages. The larger size also gives the DB instance more vCPUs to handle connections. More vCPUs are particularly helpful when the operations that are generating `IO:DataFileRead` wait events are writes.

# IO:XactSync
<a name="apg-waits.xactsync"></a>

The `IO:XactSync` event occurs when the database is waiting for the Aurora storage subsystem to acknowledge the commit of a regular transaction, or the commit or rollback of a prepared transaction. A prepared transaction is part of PostgreSQL's support for a two-phase commit. This event can also occur when a query is waiting for another transaction to commit, particularly in cases where auto-commit is turned off. In such scenarios, updates might appear to be waiting on XactSync even though they haven't been committed yet.

**Topics**
+ [Supported engine versions](#apg-waits.xactsync.context.supported)
+ [Context](#apg-waits.xactsync.context)
+ [Likely causes of increased waits](#apg-waits.xactsync.causes)
+ [Actions](#apg-waits.xactsync.actions)

## Supported engine versions
<a name="apg-waits.xactsync.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.xactsync.context"></a>

The event `IO:XactSync` indicates that the instance is spending time waiting for the Aurora storage subsystem to confirm that transaction data was processed.

## Likely causes of increased waits
<a name="apg-waits.xactsync.causes"></a>

When the `IO:XactSync` event appears more than normal, possibly indicating a performance problem, typical causes include the following:

**Network saturation**  
Traffic between clients and the DB instance or traffic to the storage subsystem might be too heavy for the network bandwidth.

**CPU pressure**  
A heavy workload might be preventing the Aurora storage daemon from getting sufficient CPU time.

## Actions
<a name="apg-waits.xactsync.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Monitor your resources](#apg-waits.xactsync.actions.monitor)
+ [Scale up the CPU](#apg-waits.xactsync.actions.scalecpu)
+ [Increase network bandwidth](#apg-waits.xactsync.actions.scalenetwork)
+ [Reduce the number of commits](#apg-waits.xactsync.actions.commits)

### Monitor your resources
<a name="apg-waits.xactsync.actions.monitor"></a>

To determine the cause of the increased `IO:XactSync` events, check the following metrics:
+ `WriteThroughput` and `CommitThroughput` – Changes in write throughput or commit throughput can show an increase in workload.
+ `WriteLatency` and `CommitLatency` – Changes in write latency or commit latency can show that the storage subsystem is being asked to do more work.
+ `CPUUtilization` – If the instance's CPU utilization is above 90 percent, the Aurora storage daemon might not be getting sufficient time on the CPU. In this case, I/O performance degrades.

For information about these metrics, see [Instance-level metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances).

### Scale up the CPU
<a name="apg-waits.xactsync.actions.scalecpu"></a>

To address CPU starvation issues, consider changing to an instance type with more CPU capacity. For information about CPU capacity for a DB instance class, see [Hardware specifications for DB instance classesfor Aurora](Concepts.DBInstanceClass.Summary.md).

### Increase network bandwidth
<a name="apg-waits.xactsync.actions.scalenetwork"></a>

To determine whether the instance is reaching its network bandwidth limits, check for the following other wait events: 
+ `IO:DataFileRead`, `IO:BufferRead`, `IO:BufferWrite`, and `IO:XactWrite` – Queries using large amounts of I/O can generate more of these wait events.
+ `Client:ClientRead` and `Client:ClientWrite` – Queries with large amounts of client communication can generate more of these wait events.

If network bandwidth is an issue, consider changing to an instance type with more network bandwidth. For information about network performance for a DB instance class, see [Hardware specifications for DB instance classesfor Aurora](Concepts.DBInstanceClass.Summary.md).

### Reduce the number of commits
<a name="apg-waits.xactsync.actions.commits"></a>

To reduce the number of commits, combine statements into transaction blocks.

# IPC:DamRecordTxAck
<a name="apg-waits.ipcdamrecordtxac"></a>

The `IPC:DamRecordTxAck` event occurs when Aurora PostgreSQL in a session using database activity streams generates an activity stream event, then waits for that event to become durable. 

**Topics**
+ [Relevant engine versions](#apg-waits.ipcdamrecordtxac.context.supported)
+ [Context](#apg-waits.ipcdamrecordtxac.context)
+ [Causes](#apg-waits.ipcdamrecordtxac.causes)
+ [Actions](#apg-waits.ipcdamrecordtxac.actions)

## Relevant engine versions
<a name="apg-waits.ipcdamrecordtxac.context.supported"></a>

This wait event information is relevant for all Aurora PostgreSQL 10.7 and higher 10 versions, 11.4 and higher 11 versions, and all 12 and 13 versions.

## Context
<a name="apg-waits.ipcdamrecordtxac.context"></a>

In synchronous mode, durability of activity stream events is favored over database performance. While waiting for a durable write of the event, the session blocks other database activity, causing the `IPC:DamRecordTxAck` wait event.

## Causes
<a name="apg-waits.ipcdamrecordtxac.causes"></a>

The most common cause for the `IPC:DamRecordTxAck` event to appear in top waits is that the Database Activity Streams (DAS) feature is a holistic audit. Higher SQL activity generates activity stream events that need to be recorded.

## Actions
<a name="apg-waits.ipcdamrecordtxac.actions"></a>

We recommend different actions depending on the causes of your wait event:
+ Reduce the number of SQL statements or turn off database activity streams. Doing this reduces the number of events that require durable writes.
+ Change to asynchronous mode. Doing this helps to reduce contention on the `IPC:DamRecordTxAck` wait event.

  However, the DAS feature can't guarantee the durability of every event in asynchronous mode.

# IPC:parallel wait events
<a name="apg-ipc-parallel"></a>

The following `IPC:parallel wait events` indicate that a session is waiting for inter-process communication related to parallel query execution operations.
+ `IPC:BgWorkerStartup` - A process is waiting for a parallel worker process to complete its startup sequence. This happens when initializing workers for parallel query execution.
+ `IPC:BgWorkerShutdown` - A process is waiting for a parallel worker process to complete its shutdown sequence. This occurs during the cleanup phase of parallel query execution.
+ `IPC:ExecuteGather` - A process is waiting to receive data from parallel worker processes during query execution. This occurs when the leader process needs to gather results from its workers.
+ `IPC:ParallelFinish` - A process is waiting for parallel workers to finish their execution and report their final results. This happens during the completion phase of parallel query execution.

**Topics**
+ [Supported engine versions](#apg-ipc-parallel-context-supported)
+ [Context](#apg-ipc-parallel-context)
+ [Likely causes of increased waits](#apg-ipc-parallel-causes)
+ [Actions](#apg-ipc-parallel-actions)

## Supported engine versions
<a name="apg-ipc-parallel-context-supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-ipc-parallel-context"></a>

Parallel query execution in PostgreSQL involves multiple processes working together to process a single query. When a query is determined to be suitable for parallelization, a leader process coordinates with one or more parallel worker processes based on the `max_parallel_workers_per_gather` parameter setting. The leader process divides the work among workers, each worker processes its portion of data independently, and results are gathered back to the leader process.

**Note**  
Each parallel worker operates as a separate process with resource requirements similar to a full user session. This means a parallel query with 4 workers can consume up to 5 times the resources (CPU, memory, I/O bandwidth) compared to a non-parallel query, as both the leader process and each worker process maintain their own resource allocations. For instance, settings like `work_mem` are applied individually to each worker, potentially multiplying the total memory usage across all processes.

The parallel query architecture consists of three main components:
+ Leader process: The main process that initiates the parallel operation, divides the workload, and coordinates with worker processes.
+ Worker processes: Background processes that execute portions of the query in parallel.
+ Gather/Gather merge: Operations that combine results from multiple worker processes back to the leader

During parallel execution, processes need to communicate with each other through Inter-Process Communication (IPC) mechanisms. These IPC wait events occur during different phases:
+ Worker startup: When parallel workers are being initialized
+ Data exchange: When workers are processing data and sending results to the leader
+ Worker shutdown: When parallel execution completes and workers are being terminated
+ Synchronization points: When processes need to coordinate or wait for other processes to complete their tasks

Understanding these wait events is crucial for diagnosing performance issues related to parallel query execution, especially in high-concurrency environments where multiple parallel queries may be executing simultaneously.

## Likely causes of increased waits
<a name="apg-ipc-parallel-causes"></a>

Several factors can contribute to an increase in parallel-related IPC wait events:

**High concurrency of parallel queries**  
When many parallel queries are running simultaneously, it can lead to resource contention and increased waiting times for IPC operations. This is particularly common in systems with high transaction volumes or analytical workloads.

**Suboptimal parallel query plans**  
If the query planner chooses inefficient parallel plans, it may result in unnecessary parallelization or poor work distribution among workers. This can lead to increased IPC waits, especially for IPC:ExecuteGather and IPC:ParallelFinish events. These planning issues often stem from outdated statistics and table/index bloat.

**Frequent startup and shutdown of parallel workers**  
Short-lived queries that frequently initiate and terminate parallel workers can cause an increase in `IPC:BgWorkerStartup` and `IPC:BgWorkerShutdown` events. This is often seen in OLTP workloads with many small, parallelizable queries.

**Resource constraints**  
Limited CPU, memory, or I/O capacity can cause bottlenecks in parallel execution, leading to increased wait times across all IPC events. For example, if CPU is saturated, worker processes may take longer to start up or process their portion of work.

**Complex query structures**  
Queries with multiple levels of parallelism (e.g., parallel joins followed by parallel aggregations) can lead to more complex IPC patterns and potentially increased wait times, especially for `IPC:ExecuteGather` events.

**Large result sets**  
Queries that produce large result sets may cause increased `IPC:ExecuteGather` wait times as the leader process spends more time collecting and processing results from worker processes.

Understanding these factors can help in diagnosing and addressing performance issues related to parallel query execution in Aurora PostgreSQL.

## Actions
<a name="apg-ipc-parallel-actions"></a>

When you see waits related to parallel query, it typically means that a backend process is coordinating or waiting on parallel worker processes. These waits are common during execution of parallel plans. You can investigate and mitigate the impact of these waits by monitoring parallel worker usage, reviewing the parameter settings, and tuning query execution and resource allocation.

**Topics**
+ [Analyze query plans for inefficient parallelism](#apg-ipc-parallel-analyze-plans)
+ [Monitor parallel query usage](#apg-ipc-parallel-monitor)
+ [Review and adjust parallel query settings](#apg-ipc-parallel-adjust-settings)
+ [Optimize resource allocation](#apg-ipc-parallel-optimize-resources)
+ [Investigate connection management](#apg-ipc-parallel-connection-management)
+ [Review and optimize maintenance operations](#apg-ipc-parallel-maintenance)
+ [Utilize Query Plan Management (QPM)](#apg-ipc-parallel-query-plan-management)

### Analyze query plans for inefficient parallelism
<a name="apg-ipc-parallel-analyze-plans"></a>

Parallel query execution can often lead to system instability, CPU spikes, and unpredictable query performance variance. It's crucial to thoroughly analyze whether parallelism actually improves your specific workload. Use EXPLAIN ANALYZE to review parallel query execution plans.

Temporarily disable parallelism at the session level to compare plan efficiency:

```
SET max_parallel_workers_per_gather = 0;
EXPLAIN ANALYZE <your_query>;
```

Re-enable parallelism and compare:

```
RESET max_parallel_workers_per_gather;
EXPLAIN ANALYZE <your_query>;
```

If disabling parallelism yields better or more consistent results, consider disabling it for specific queries at the session level using SET commands. For a broader impact, you might want to disable parallelism at the instance level by adjusting the relevant parameters in your cluster or instance parameter group. For more information, see [Amazon Aurora PostgreSQL parameters](AuroraPostgreSQL.Reference.ParameterGroups.md).

### Monitor parallel query usage
<a name="apg-ipc-parallel-monitor"></a>

Use the following queries to gain visibility into parallel query activity and capacity:

Check active parallel worker processes:

```
SELECT
    COUNT(*)
FROM
    pg_stat_activity
WHERE
    backend_type = 'parallel worker';
```

This query shows the number of active parallel worker processes. A high value may indicate that your `max\$1parallel\$1workers` is configured with a high value and you might want to consider reducing it.

Check concurrent parallel queries:

```
SELECT
    COUNT(DISTINCT leader_pid)
FROM
    pg_stat_activity
WHERE
    leader_pid IS NOT NULL;
```

This query returns the number of distinct leader processes that have launched parallel queries. A high number here indicates that multiple sessions are running parallel queries concurrently, which can increase demand on CPU and memory.

### Review and adjust parallel query settings
<a name="apg-ipc-parallel-adjust-settings"></a>

Review the following parameters to ensure they align with your workload:
+ `max_parallel_workers`: Total number of parallel workers across all sessions.
+ `max_parallel_workers_per_gather`: Max workers per query.

For OLAP workloads, increasing these values can improve performance. For OLTP workloads, lower values are generally preferred.

```
SHOW max_parallel_workers;
SHOW max_parallel_workers_per_gather;
```

### Optimize resource allocation
<a name="apg-ipc-parallel-optimize-resources"></a>

Monitor CPU utilization and consider adjusting the number of vCPUs if consistently high and if your application benefits from parallel queries. Ensure adequate memory is available for parallel operations.
+ Use Performance Insights metrics to determine if the system is CPU-bound.
+ Each parallel worker uses its own `work_mem`. Ensure total memory usage is within instance limits.

The parallel queries may consume very substantially more resources than non-parallel queries, because each worker process is a completely separate process which has roughly the same impact on the system as an additional user session. This should be taken into account when choosing a value for this setting, as well as when configuring other settings that control resource utilization, such as `work_mem`. For more information, see the [PostgreSQL documentation](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM). Resource limits such as `work_mem` are applied individually to each worker, which means the total utilization may be much higher across all processes than it would normally be for any single process.

Consider increasing vCPUs or tuning memory parameters if your workload is heavily parallelized.

### Investigate connection management
<a name="apg-ipc-parallel-connection-management"></a>

If experiencing connection exhaustion, review application connection pooling strategies. Consider implementing connection pooling at the application level if not already in use.

### Review and optimize maintenance operations
<a name="apg-ipc-parallel-maintenance"></a>

Coordinate index creation and other maintenance tasks to prevent resource contention. Consider scheduling these operations during off-peak hours. Avoid scheduling heavy maintenance (e.g., parallel index builds) during periods of high user query load. These operations can consume parallel workers and impact performance for regular queries.

### Utilize Query Plan Management (QPM)
<a name="apg-ipc-parallel-query-plan-management"></a>

In Aurora PostgreSQL, the Query Plan Management (QPM) feature is designed to ensure plan adaptability and stability, regardless of database environment changes that might cause query plan regression. For more information, see [Overview of Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.overview.md).QPM provides some control over the optimizer. Review approved plans in QPM to ensure they align with current parallelism settings. Update or remove outdated plans that may be forcing suboptimal parallel execution.

You can also fix the plans using pg\$1hint\$1plan. For more information, see [Fixing plans using pg\$1hint\$1plan](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan). You can use the hint named `Parallel` to enforce parallel execution. For more information, see the [Hints for parallel plans](https://github.com/ossc-db/pg_hint_plan/blob/master/docs/hint_table.md#hints-for-parallel-plans).

# IPC:ProcArrayGroupUpdate
<a name="apg-rpg-ipcprocarraygroup"></a>

The `IPC:ProcArrayGroupUpdate` event occurs when a session is waiting for the group leader to update the transaction status at the end of that operation. While PostgreSQL generally associates IPC type wait events with parallel query operations, this particular wait event is not specific to parallel queries.

**Topics**
+ [Supported engine versions](#apg-rpg-ipcprocarraygroup.supported)
+ [Context](#apg-rpg-ipcprocarraygroup.context)
+ [Likely causes of increased waits](#apg-rpg-ipcprocarraygroup.causes)
+ [Actions](#apg-rpg-ipcprocarraygroup.actions)

## Supported engine versions
<a name="apg-rpg-ipcprocarraygroup.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-rpg-ipcprocarraygroup.context"></a>

**Understanding the process array** – The process (proc) array is a shared memory structure in PostgreSQL. It holds information about all running processes, including transaction details. During transaction completion (`COMMIT` or `ROLLBACK`), the ProcArray needs to be updated to reflect the change and clear the transactionID from the array. The session attempting to finish its transaction must acquire an exclusive lock on the ProcArray. This prevents other processes from obtaining shared or exclusive locks on it.

**Group update mechanism** – While performing a COMMIT or ROLLBACK, if a backend process cannot obtain a ProcArrayLock in exclusive mode, it updates a special field called ProcArrayGroupMember. This adds the transaction to the list of sessions that intend to end. This backend process then sleeps and the time it sleeps is instrumented as the ProcArrayGroupUpdate wait event. The first process in the ProcArray with procArrayGroupMember, referred to as the leader process, acquires the ProcArrayLock in exclusive mode. It then clears the list of processes waiting for group transactionID clearing. Once this completes, the leader releases the ProcArrayLock and then wakes up all processes in this list, notifying them that their transaction is completed.

## Likely causes of increased waits
<a name="apg-rpg-ipcprocarraygroup.causes"></a>

The more processes that are running, the longer a leader will hold on to a procArrayLock in exclusive mode. Consequently, the more write transactions end up in a group update scenario causing a potential pile up of processes waiting on the `ProcArrayGroupUpdate` wait event. In Database Insights' Top SQL view, you will see that COMMIT is the statement with the majority of this wait event. This is expected but will require deeper investigation into the specific write SQL being run to determine what appropriate action to take.

## Actions
<a name="apg-rpg-ipcprocarraygroup.actions"></a>

We recommend different actions depending on the causes of your wait event. Identify `IPC:ProcArrayGroupUpdate` events by using Amazon RDS Performance Insights or by querying the PostgreSQL system view `pg_stat_activity`.

**Topics**
+ [Monitoring transaction commit and rollback operations](#apg-rpg-ipcprocarraygroup.actions.monitor)
+ [Reducing concurrency](#apg-rpg-ipcprocarraygroup.actions.concurrency)
+ [Implementing connection pooling](#apg-rpg-ipcprocarraygroup.actions.pooling)

### Monitoring transaction commit and rollback operations
<a name="apg-rpg-ipcprocarraygroup.actions.monitor"></a>

**Monitor commits and rollbacks** – An increased number of commits and rollbacks can lead to increased pressure on the ProcArray. For example, if a SQL statement begins to fail due to increased duplicate key violations, you may see an increase in rollbacks which can increase ProcArray contention and table bloat.

Amazon RDS Database Insights provides the PostgreSQL metrics `xact_commit` and `xact_rollback` to report the number of commits and rollbacks per second.

### Reducing concurrency
<a name="apg-rpg-ipcprocarraygroup.actions.concurrency"></a>

**Batching transactions** – Where possible, batch operations in single transactions to reduce commit/rollback operations.

**Limit concurrency** – Reduce the number of concurrently active transactions to alleviate lock contention on the ProcArray. While it will require some testing, reducing the total number of concurrent connections can reduce contention and maintain throughput.

### Implementing connection pooling
<a name="apg-rpg-ipcprocarraygroup.actions.pooling"></a>

**Connection pooling solutions** – Use connection pooling to manage database connections efficiently, reducing the total number of backends and therefore the workload on the ProcArray. While it will require some testing, reducing the total number of concurrent connections can reduce contention and maintain throughput.

For more information, see [Connection pooling for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.BestPractices.connection_pooling.html).

**Reduce connection storms** – Similarly, a pattern of frequently creating and terminating connections causes additional pressure on the ProcArray. By reducing this pattern, overall contention is reduced.

# Lock:advisory
<a name="apg-waits.lockadvisory"></a>

The `Lock:advisory` event occurs when a PostgreSQL application uses a lock to coordinate activity across multiple sessions.

**Topics**
+ [Relevant engine versions](#apg-waits.lockadvisory.context.supported)
+ [Context](#apg-waits.lockadvisory.context)
+ [Causes](#apg-waits.lockadvisory.causes)
+ [Actions](#apg-waits.lockadvisory.actions)

## Relevant engine versions
<a name="apg-waits.lockadvisory.context.supported"></a>

This wait event information is relevant for Aurora PostgreSQL versions 9.6 and higher.

## Context
<a name="apg-waits.lockadvisory.context"></a>

PostgreSQL advisory locks are application-level, cooperative locks explicitly locked and unlocked by the user's application code. An application can use PostgreSQL advisory locks to coordinate activity across multiple sessions. Unlike regular, object- or row-level locks, the application has full control over the lifetime of the lock. For more information, see [Advisory Locks](https://www.postgresql.org/docs/12/explicit-locking.html#ADVISORY-LOCKS) in the PostgreSQL documentation.

Advisory locks can be released before a transaction ends or be held by a session across transactions. This isn't true for implicit, system-enforced locks, such as an access-exclusive lock on a table acquired by a `CREATE INDEX` statement.

For a description of the functions used to acquire (lock) and release (unlock) advisory locks, see [Advisory Lock Functions](https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS) in the PostgreSQL documentation.

Advisory locks are implemented on top of the regular PostgreSQL locking system and are visible in the `pg_locks` system view.

## Causes
<a name="apg-waits.lockadvisory.causes"></a>

This lock type is exclusively controlled by an application explicitly using it. Advisory locks that are acquired for each row as part of a query can cause a spike in locks or a long-term buildup.

These effects happen when the query is run in a way that acquires locks on more rows than are returned by the query. The application must eventually release every lock, but if locks are acquired on rows that aren't returned, the application can't find all of the locks.

The following example is from [Advisory Locks](https://www.postgresql.org/docs/12/explicit-locking.html#ADVISORY-LOCKS) in the PostgreSQL documentation.

```
SELECT pg_advisory_lock(id) FROM foo WHERE id > 12345 LIMIT 100;
```

In this example, the `LIMIT` clause can only stop the query's output after the rows have already been internally selected and their ID values locked. This can happen suddenly when a growing data volume causes the planner to choose a different execution plan that wasn't tested during development. The buildup in this case happens because the application explicitly calls `pg_advisory_unlock` for every ID value that was locked. However, in this case it can't find the set of locks acquired on rows that weren't returned. Because the locks are acquired on the session level, they aren't released automatically at the end of the transaction.

Another possible cause for spikes in blocked lock attempts is unintended conflicts. In these conflicts, unrelated parts of the application share the same lock ID space by mistake.

## Actions
<a name="apg-waits.lockadvisory.actions"></a>

Review application usage of advisory locks and detail where and when in the application flow each type of advisory lock is acquired and released.

Determine whether a session is acquiring too many locks or a long-running session isn't releasing locks early enough, leading to a slow buildup of locks. You can correct a slow buildup of session-level locks by ending the session using `pg_terminate_backend(pid)`. 

A client waiting for an advisory lock appears in `pg_stat_activity` with `wait_event_type=Lock` and `wait_event=advisory`. You can obtain specific lock values by querying the `pg_locks` system view for the same `pid`, looking for `locktype=advisory` and `granted=f`.

You can then identify the blocking session by querying `pg_locks` for the same advisory lock having `granted=t`, as shown in the following example.

```
SELECT blocked_locks.pid AS blocked_pid,
         blocking_locks.pid AS blocking_pid,
         blocked_activity.usename AS blocked_user,
         blocking_activity.usename AS blocking_user,
         now() - blocked_activity.xact_start AS blocked_transaction_duration,
         now() - blocking_activity.xact_start AS blocking_transaction_duration,
         concat(blocked_activity.wait_event_type,':',blocked_activity.wait_event) AS blocked_wait_event,
         concat(blocking_activity.wait_event_type,':',blocking_activity.wait_event) AS blocking_wait_event,
         blocked_activity.state AS blocked_state,
         blocking_activity.state AS blocking_state,
         blocked_locks.locktype AS blocked_locktype,
         blocking_locks.locktype AS blocking_locktype,
         blocked_activity.query AS blocked_statement,
         blocking_activity.query AS blocking_statement
    FROM pg_catalog.pg_locks blocked_locks
    JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid
    JOIN pg_catalog.pg_locks blocking_locks
        ON blocking_locks.locktype = blocked_locks.locktype
        AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE
        AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation
        AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page
        AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple
        AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid
        AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid
        AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid
        AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid
        AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid
        AND blocking_locks.pid != blocked_locks.pid
    JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
    WHERE NOT blocked_locks.GRANTED;
```

All of the advisory lock API functions have two sets of arguments, either one `bigint` argument or two `integer` arguments:
+ For the API functions with one `bigint` argument, the upper 32 bits are in `pg_locks.classid` and the lower 32 bits are in `pg_locks.objid`.
+ For the API functions with two `integer` arguments, the first argument is `pg_locks.classid` and the second argument is `pg_locks.objid`.

The `pg_locks.objsubid` value indicates which API form was used: `1` means one `bigint` argument; `2` means two `integer` arguments.

# Lock:extend
<a name="apg-waits.lockextend"></a>

The `Lock:extend` event occurs when a backend process is waiting to lock a relation to extend it while another process has a lock on that relation for the same purpose.

**Topics**
+ [Supported engine versions](#apg-waits.lockextend.context.supported)
+ [Context](#apg-waits.lockextend.context)
+ [Likely causes of increased waits](#apg-waits.lockextend.causes)
+ [Actions](#apg-waits.lockextend.actions)

## Supported engine versions
<a name="apg-waits.lockextend.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.lockextend.context"></a>

The event `Lock:extend` indicates that a backend process is waiting to extend a relation that another backend process holds a lock on while it's extending that relation. Because only one process at a time can extend a relation, the system generates a `Lock:extend` wait event. `INSERT`, `COPY`, and `UPDATE` operations can generate this event.

## Likely causes of increased waits
<a name="apg-waits.lockextend.causes"></a>

When the `Lock:extend` event appears more than normal, possibly indicating a performance problem, typical causes include the following:

**Surge in concurrent inserts or updates to the same table **  
There might be an increase in the number of concurrent sessions with queries that insert into or update the same table.

**Insufficient network bandwidth**  
The network bandwidth on the DB instance might be insufficient for the storage communication needs of the current workload. This can contribute to storage latency that causes an increase in `Lock:extend` events.

## Actions
<a name="apg-waits.lockextend.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Reduce concurrent inserts and updates to the same relation](#apg-waits.lockextend.actions.action1)
+ [Increase network bandwidth](#apg-waits.lockextend.actions.increase-network-bandwidth)

### Reduce concurrent inserts and updates to the same relation
<a name="apg-waits.lockextend.actions.action1"></a>

First, determine whether there's an increase in `tup_inserted` and `tup_updated` metrics and an accompanying increase in this wait event. If so, check which relations are in high contention for insert and update operations. To determine this, query the `pg_stat_all_tables` view for the values in `n_tup_ins` and `n_tup_upd` fields. For information about the `pg_stat_all_tables` view, see [pg\$1stat\$1all\$1tables](https://www.postgresql.org/docs/13/monitoring-stats.html#MONITORING-PG-STAT-ALL-TABLES-VIEW) in the PostgreSQL documentation. 

To get more information about blocking and blocked queries, query `pg_stat_activity` as in the following example:

```
SELECT
    blocked.pid,
    blocked.usename,
    blocked.query,
    blocking.pid AS blocking_id,
    blocking.query AS blocking_query,
    blocking.wait_event AS blocking_wait_event,
    blocking.wait_event_type AS blocking_wait_event_type
FROM pg_stat_activity AS blocked
JOIN pg_stat_activity AS blocking ON blocking.pid = ANY(pg_blocking_pids(blocked.pid))
where
blocked.wait_event = 'extend'
and blocked.wait_event_type = 'Lock';
 
   pid  | usename  |            query             | blocking_id |                         blocking_query                           | blocking_wait_event | blocking_wait_event_type
  ------+----------+------------------------------+-------------+------------------------------------------------------------------+---------------------+--------------------------
   7143 |  myuser  | insert into tab1 values (1); |        4600 | INSERT INTO tab1 (a) SELECT s FROM generate_series(1,1000000) s; | DataFileExtend      | IO
```

After you identify relations that contribute to increase `Lock:extend` events, use the following techniques to reduce the contention:
+ Find out whether you can use partitioning to reduce contention for the same table. Separating inserted or updated tuples into different partitions can reduce contention. For information about partitioning, see [Managing PostgreSQL partitions with the pg\$1partman extension](PostgreSQL_Partitions.md).
+ If the wait event is mainly due to update activity, consider reducing the relation's fillfactor value. This can reduce requests for new blocks during the update. The fillfactor is a storage parameter for a table that determines the maximum amount of space for packing a table page. It's expressed as a percentage of the total space for a page. For more information about the fillfactor parameter, see [CREATE TABLE](https://www.postgresql.org/docs/13/sql-createtable.html) in the PostgreSQL documentation. 
**Important**  
We highly recommend that you test your system if you change the fillfactor because changing this value can negatively impact performance, depending on your workload.

### Increase network bandwidth
<a name="apg-waits.lockextend.actions.increase-network-bandwidth"></a>

To see whether there's an increase in write latency, check the `WriteLatency` metric in CloudWatch. If there is, use the `WriteThroughput` and `ReadThroughput` Amazon CloudWatch metrics to monitor the storage related traffic on the DB cluster. These metrics can help you to determine if network bandwidth is sufficient for the storage activity of your workload.

If your network bandwidth isn't enough, increase it. If your DB instance is reaching the network bandwidth limits, the only way to increase the bandwidth is to increase your DB instance size.

For more information about CloudWatch metrics, see [Amazon CloudWatch metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md). For information about network performance for each DB instance class, see [Hardware specifications for DB instance classesfor Aurora](Concepts.DBInstanceClass.Summary.md).

# Lock:Relation
<a name="apg-waits.lockrelation"></a>

The `Lock:Relation` event occurs when a query is waiting to acquire a lock on a table or view (relation) that's currently locked by another transaction.

**Topics**
+ [Supported engine versions](#apg-waits.lockrelation.context.supported)
+ [Context](#apg-waits.lockrelation.context)
+ [Likely causes of increased waits](#apg-waits.lockrelation.causes)
+ [Actions](#apg-waits.lockrelation.actions)

## Supported engine versions
<a name="apg-waits.lockrelation.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.lockrelation.context"></a>

Most PostgreSQL commands implicitly use locks to control concurrent access to data in tables. You can also use these locks explicitly in your application code with the `LOCK` command. Many lock modes aren't compatible with each other, and they can block transactions when they're trying to access the same object. When this happens, Aurora PostgreSQL generates a `Lock:Relation` event. Some common examples are the following:
+ Exclusive locks such as `ACCESS EXCLUSIVE` can block all concurrent access. Data definition language (DDL) operations such as `DROP TABLE`, `TRUNCATE`, `VACUUM FULL`, and `CLUSTER` acquire `ACCESS EXCLUSIVE` locks implicitly. `ACCESS EXCLUSIVE` is also the default lock mode for `LOCK TABLE` statements that don't specify a mode explicitly.
+ Using `CREATE INDEX (without CONCURRENT)` on a table conflicts with data manipulation language (DML) statements `UPDATE`, `DELETE`, and `INSERT`, which acquire `ROW EXCLUSIVE` locks.

For more information about table-level locks and conflicting lock modes, see [Explicit Locking](https://www.postgresql.org/docs/13/explicit-locking.html) in the PostgreSQL documentation.

Blocking queries and transactions typically unblock in one of the following ways:
+ Blocking query – The application can cancel the query or the user can end the process. The engine can also force the query to end because of a session's statement-timeout or a deadlock detection mechanism.
+ Blocking transaction – A transaction stops blocking when it runs a `ROLLBACK` or `COMMIT` statement. Rollbacks also happen automatically when sessions are disconnected by a client or by network issues, or are ended. Sessions can be ended when the database engine is shut down, when the system is out of memory, and so forth.

## Likely causes of increased waits
<a name="apg-waits.lockrelation.causes"></a>

When the `Lock:Relation` event occurs more frequently than normal, it can indicate a performance issue. Typical causes include the following:

**Increased concurrent sessions with conflicting table locks**  
There might be an increase in the number of concurrent sessions with queries that lock the same table with conflicting locking modes.

**Maintenance operations**  
Health maintenance operations such as `VACUUM` and `ANALYZE` can significantly increase the number of conflicting locks. `VACUUM FULL` acquires an `ACCESS EXCLUSIVE` lock, and `ANALYZE` acquires a `SHARE UPDATE EXCLUSIVE` lock. Both types of locks can cause a `Lock:Relation` wait event. Application data maintenance operations such as refreshing a materialized view can also increase blocked queries and transactions.

**Locks on reader instances**  
There might be a conflict between the relation locks held by the writer and readers. Currently, only `ACCESS EXCLUSIVE` relation locks are replicated to reader instances. However, the `ACCESS EXCLUSIVE` relation lock will conflict with any `ACCESS SHARE` relation locks held by the reader. This can cause an increase in lock relation wait events on the reader. 

## Actions
<a name="apg-waits.lockrelation.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Reduce the impact of blocking SQL statements](#apg-waits.lockrelation.actions.reduce-blocks)
+ [Minimize the effect of maintenance operations](#apg-waits.lockrelation.actions.maintenance)
+ [Check for reader locks](#apg-waits.lockrelation.actions.readerlocks)

### Reduce the impact of blocking SQL statements
<a name="apg-waits.lockrelation.actions.reduce-blocks"></a>

To reduce the impact of blocking SQL statements, modify your application code where possible. Following are two common techniques for reducing blocks:
+ Use the `NOWAIT` option – Some SQL commands, such as `SELECT` and `LOCK` statements, support this option. The `NOWAIT` directive cancels the lock-requesting query if the lock can't be acquired immediately. This technique can help prevent a blocking session from causing a pile-up of blocked sessions behind it.

  For example: Assume that transaction A is waiting on a lock held by transaction B. Now, if B requests a lock on a table that’s locked by transaction C, transaction A might be blocked until transaction C completes. But if transaction B uses a `NOWAIT` when it requests the lock on C, it can fail fast and ensure that transaction A doesn't have to wait indefinitely.
+ Use `SET lock_timeout` – Set a `lock_timeout` value to limit the time a SQL statement waits to acquire a lock on a relation. If the lock isn't acquired within the timeout specified, the transaction requesting the lock is canceled. Set this value at the session level.

### Minimize the effect of maintenance operations
<a name="apg-waits.lockrelation.actions.maintenance"></a>

Maintenance operations such as `VACUUM` and `ANALYZE` are important. We recommend that you don't turn them off because you find `Lock:Relation` wait events related to these maintenance operations. The following approaches can minimize the effect of these operations:
+ Run maintenance operations manually during off-peak hours.
+ To reduce `Lock:Relation` waits caused by autovacuum tasks, perform any needed autovacuum tuning. For information about tuning autovacuum, see [ Working with PostgreSQL autovacuum on Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Autovacuum.html) in the * Amazon RDS User Guide*.

### Check for reader locks
<a name="apg-waits.lockrelation.actions.readerlocks"></a>

You can see how concurrent sessions on a writer and readers might be holding locks that block each other. One way to do this is by running queries that return the lock type and relation. In the table, you can find a sequence of queries to two such concurrent sessions, a writer session and a reader session.

The replay process waits for the duration of `max_standby_streaming_delay` before canceling the reader query. As shown in the example, the lock timeout of 100ms is well below the default `max_standby_streaming_delay` of 30 seconds. The lock times out before it's an issue. 


| Sequence event | Session | Command or Output | 
| --- | --- | --- | 
|  Sets an environment variable called READER with the specified value and tries to connect to the DB instance with this endpoint.  |  Reader session  |  CLI command: <pre>export READER=aurorapg2.12345678910.us-west-1.rds.amazonaws.com<br /><br />psql -h $READER</pre> Output: 

```
psql (15devel, server 10.14)
Type "help" for help.
```  | 
|  Sets an environment variable called WRITER and tries to connect to the DB instance with this endpoint .  |  Writer session  |  CLI command: <pre>export WRITER=aurorapg1.12345678910.us-west-1.rds.amazonaws.com<br />psql -h $WRITER</pre> Output: 

```
psql (15devel, server 10.14) 
Type "help" for help.
```  | 
|  The writer session creates table t1 on the writer instance.  |  Writer session  |  PostgreSQL query: <pre>postgres=> CREATE TABLE t1(b integer);<br />CREATE TABLE</pre>  | 
|  If there are no conflicting queries on the writer, the ACCESS EXCLUSIVE lock is acquired on the writer immediately.  |  Writer session  |  `ACCESS EXCLUSIVE` lock enabled  | 
|  The reader session sets a lock timeout interval of 100 milliseconds.  |  Reader session  |  PostgreSQL query: <pre>postgres=> SET lock_timeout=100;<br />SET</pre>  | 
|  The reader session tries to read data from table t1 on the reader instance.  |  Reader session  |  PostgreSQL query: <pre>postgres=> SELECT * FROM t1;</pre> Sample output: 

```
b
---
(0 rows)
```  | 
|  The writer session drops t1.  |  Writer session  |  PostgreSQL query: <pre>postgres=> BEGIN;<br />BEGIN<br />postgres=> DROP TABLE t1;<br />DROP TABLE<br />postgres=></pre>  | 
|  The query times out and is canceled on the reader.  |  Reader session  |  PostgreSQL query: <pre>postgres=> SELECT * FROM t1;</pre> Sample output: 

```
ERROR:  canceling statement due to lock timeout
LINE 1: SELECT * FROM t1;
                      ^
```  | 
|  To determine the cause of the error. the reader session queries `pg_locks` and `pg_stat_activity`  |  Reader session  |  PostgreSQL query: <pre>postgres=> SELECT locktype, relation, mode, backend_type<br />postgres=> FROM pg_locks l, pg_stat_activity t1<br />postgres=> WHERE l.pid=t1.pid AND relation = 't1'::regclass::oid;</pre>  | 
|  The result indicates that the `aurora wal replay` process is holding an `ACCESS EXCLUSIVE` lock on table t1.  |  Reader session  |  Query result: <pre> locktype | relation |        mode         |   backend_type<br />----------+----------+---------------------+-------------------<br /> relation | 68628525 | AccessExclusiveLock | aurora wal replay<br />(1 row)</pre>  | 

# Lock:transactionid
<a name="apg-waits.locktransactionid"></a>

The `Lock:transactionid` event occurs when a transaction is waiting for a row-level lock.

**Topics**
+ [Supported engine versions](#apg-waits.locktransactionid.context.supported)
+ [Context](#apg-waits.locktransactionid.context)
+ [Likely causes of increased waits](#apg-waits.locktransactionid.causes)
+ [Actions](#apg-waits.locktransactionid.actions)

## Supported engine versions
<a name="apg-waits.locktransactionid.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.locktransactionid.context"></a>

The event `Lock:transactionid` occurs when a transaction is trying to acquire a row-level lock that has already been granted to a transaction that is running at the same time. The session that shows the `Lock:transactionid` wait event is blocked because of this lock. After the blocking transaction ends in either a `COMMIT` or `ROLLBACK` statement, the blocked transaction can proceed.

The multiversion concurrency control semantics of Aurora PostgreSQL guarantee that readers don't block writers and writers don't block readers. For row-level conflicts to occur, blocking and blocked transactions must issue conflicting statements of the following types:
+ `UPDATE`
+ `SELECT … FOR UPDATE`
+ `SELECT … FOR KEY SHARE`

The statement `SELECT … FOR KEY SHARE` is a special case. The database uses the clause `FOR KEY SHARE` to optimize the performance of referential integrity. A row-level lock on a row can block `INSERT`, `UPDATE`, and `DELETE` commands on other tables that reference the row.

## Likely causes of increased waits
<a name="apg-waits.locktransactionid.causes"></a>

When this event appears more than normal, the cause is typically `UPDATE`, `SELECT … FOR UPDATE`, or `SELECT … FOR KEY SHARE` statements combined with the following conditions.

**Topics**
+ [High concurrency](#apg-waits.locktransactionid.concurrency)
+ [Idle in transaction](#apg-waits.locktransactionid.idle)
+ [Long-running transactions](#apg-waits.locktransactionid.long-running)

### High concurrency
<a name="apg-waits.locktransactionid.concurrency"></a>

Aurora PostgreSQL can use granular row-level locking semantics. The probability of row-level conflicts increases when the following conditions are met:
+ A highly concurrent workload contends for the same rows.
+ Concurrency increases.

### Idle in transaction
<a name="apg-waits.locktransactionid.idle"></a>

Sometimes the `pg_stat_activity.state` column shows the value `idle in transaction`. This value appears for sessions that have started a transaction, but haven't yet issued a `COMMIT` or `ROLLBACK`. If the `pg_stat_activity.state` value isn't `active`, the query shown in `pg_stat_activity` is the most recent one to finish running. The blocking session isn't actively processing a query because an open transaction is holding a lock.

If an idle transaction acquired a row-level lock, it might be preventing other sessions from acquiring it. This condition leads to frequent occurrence of the wait event `Lock:transactionid`. To diagnose the issue, examine the output from `pg_stat_activity` and `pg_locks`.

### Long-running transactions
<a name="apg-waits.locktransactionid.long-running"></a>

Transactions that run for a long time get locks for a long time. These long-held locks can block other transactions from running.

## Actions
<a name="apg-waits.locktransactionid.actions"></a>

Row-locking is a conflict among `UPDATE`, `SELECT … FOR UPDATE`, or `SELECT … FOR KEY SHARE` statements. Before attempting a solution, find out when these statements are running on the same row. Use this information to choose a strategy described in the following sections.

**Topics**
+ [Respond to high concurrency](#apg-waits.locktransactionid.actions.problem)
+ [Respond to idle transactions](#apg-waits.locktransactionid.actions.find-blocker)
+ [Respond to long-running transactions](#apg-waits.locktransactionid.actions.concurrency)

### Respond to high concurrency
<a name="apg-waits.locktransactionid.actions.problem"></a>

If concurrency is the issue, try one of the following techniques:
+ Lower the concurrency in the application. For example, decrease the number of active sessions.
+ Implement a connection pool. To learn how to pool connections with RDS Proxy, see [Amazon RDS Proxyfor Aurora](rds-proxy.md).
+ Design the application or data model to avoid contending `UPDATE` and `SELECT … FOR UPDATE` statements. You can also decrease the number of foreign keys accessed by `SELECT … FOR KEY SHARE` statements.

### Respond to idle transactions
<a name="apg-waits.locktransactionid.actions.find-blocker"></a>

If `pg_stat_activity.state` shows `idle in transaction`, use the following strategies:
+ Turn on autocommit wherever possible. This approach prevents transactions from blocking other transactions while waiting for a `COMMIT` or `ROLLBACK`.
+ Search for code paths that are missing `COMMIT`, `ROLLBACK`, or `END`.
+ Make sure that the exception handling logic in your application always has a path to a valid `end of transaction`.
+ Make sure that your application processes query results after ending the transaction with `COMMIT` or `ROLLBACK`.

### Respond to long-running transactions
<a name="apg-waits.locktransactionid.actions.concurrency"></a>

If long-running transactions are causing the frequent occurrence of `Lock:transactionid`, try the following strategies:
+ Keep row locks out of long-running transactions.
+ Limit the length of queries by implementing autocommit whenever possible.

# Lock:tuple
<a name="apg-waits.locktuple"></a>

The `Lock:tuple` event occurs when a backend process is waiting to acquire a lock on a tuple.

**Topics**
+ [Supported engine versions](#apg-waits.locktuple.context.supported)
+ [Context](#apg-waits.locktuple.context)
+ [Likely causes of increased waits](#apg-waits.locktuple.causes)
+ [Actions](#apg-waits.locktuple.actions)

## Supported engine versions
<a name="apg-waits.locktuple.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.locktuple.context"></a>

The event `Lock:tuple` indicates that a backend is waiting to acquire a lock on a tuple while another backend holds a conflicting lock on the same tuple. The following table illustrates a scenario in which sessions generate the `Lock:tuple` event.


|  Time  |  Session 1  |  Session 2  |  Session 3  | 
| --- | --- | --- | --- | 
|  t1  |  Starts a transaction.  |    |    | 
|  t2  |  Updates row 1.  |    |    | 
|  t3  |    |  Updates row 1. The session acquires an exclusive lock on the tuple and then waits for session 1 to release the lock by committing or rolling back.  |    | 
|  t4  |    |    |  Updates row 1. The session waits for session 2 to release the exclusive lock on the tuple.  | 

Or you can simulate this wait event by using the benchmarking tool `pgbench`. Configure a high number of concurrent sessions to update the same row in a table with a custom SQL file.

To learn more about conflicting lock modes, see [Explicit Locking](https://www.postgresql.org/docs/current/explicit-locking.html) in the PostgreSQL documentation. To learn more about `pgbench`, see [pgbench](https://www.postgresql.org/docs/current/pgbench.html) in the PostgreSQL documentation.

## Likely causes of increased waits
<a name="apg-waits.locktuple.causes"></a>

When this event appears more than normal, possibly indicating a performance problem, typical causes include the following:
+ A high number of concurrent sessions are trying to acquire a conflicting lock for the same tuple by running `UPDATE` or `DELETE` statements.
+ Highly concurrent sessions are running a `SELECT` statement using the `FOR UPDATE` or `FOR NO KEY UPDATE` lock modes.
+ Various factors drive application or connection pools to open more sessions to execute the same operations. As new sessions are trying to modify the same rows, DB load can spike, and `Lock:tuple` can appear.

For more information, see [Row-Level Locks](https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-ROWS) in the PostgreSQL documentation.

## Actions
<a name="apg-waits.locktuple.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Investigate your application logic](#apg-waits.locktuple.actions.problem)
+ [Find the blocker session](#apg-waits.locktuple.actions.find-blocker)
+ [Reduce concurrency when it is high](#apg-waits.locktuple.actions.concurrency)
+ [Troubleshoot bottlenecks](#apg-waits.locktuple.actions.bottlenecks)

### Investigate your application logic
<a name="apg-waits.locktuple.actions.problem"></a>

Find out whether a blocker session has been in the `idle in transaction` state for long time. If so, consider ending the blocker session as a short-term solution. You can use the `pg_terminate_backend` function. For more information about this function, see [Server Signaling Functions](https://www.postgresql.org/docs/13/functions-admin.html#FUNCTIONS-ADMIN-SIGNAL) in the PostgreSQL documentation.

For a long-term solution, do the following:
+ Adjust the application logic.
+ Use the `idle_in_transaction_session_timeout` parameter. This parameter ends any session with an open transaction that has been idle for longer than the specified amount of time. For more information, see [Client Connection Defaults](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-IDLE-IN-TRANSACTION-SESSION-TIMEOUT) in the PostgreSQL documentation.
+ Use autocommit as much as possible. For more information, see [SET AUTOCOMMIT](https://www.postgresql.org/docs/current/ecpg-sql-set-autocommit.html) in the PostgreSQL documentation.

### Find the blocker session
<a name="apg-waits.locktuple.actions.find-blocker"></a>

While the `Lock:tuple` wait event is occurring, identify the blocker and blocked session by finding out which locks depend on one another. For more information, see [Lock dependency information](https://wiki.postgresql.org/wiki/Lock_dependency_information) in the PostgreSQL wiki. To analyze past `Lock:tuple` events, use the Aurora function `aurora_stat_backend_waits`. 

The following example queries all sessions, filtering on `tuple` and ordering by `wait_time`.

```
--AURORA_STAT_BACKEND_WAITS
      SELECT a.pid, 
             a.usename, 
             a.app_name, 
             a.current_query,
             a.current_wait_type, 
             a.current_wait_event, 
             a.current_state, 
             wt.type_name AS wait_type, 
             we.event_name AS wait_event, 
             a.waits, 
             a.wait_time
        FROM (SELECT pid, 
                     usename, 
                     left(application_name,16) AS app_name,
                     coalesce(wait_event_type,'CPU') AS current_wait_type,
                     coalesce(wait_event,'CPU') AS current_wait_event, 
                     state AS current_state,
                     left(query,80) as current_query,
                     (aurora_stat_backend_waits(pid)).* 
                FROM pg_stat_activity 
               WHERE pid <> pg_backend_pid()
                 AND usename<>'rdsadmin') a
NATURAL JOIN aurora_stat_wait_type() wt 
NATURAL JOIN aurora_stat_wait_event() we
WHERE we.event_name = 'tuple'
    ORDER BY a.wait_time;

  pid  | usename | app_name |                 current_query                  | current_wait_type | current_wait_event | current_state | wait_type | wait_event | waits | wait_time
-------+---------+----------+------------------------------------------------+-------------------+--------------------+---------------+-----------+------------+-------+-----------
 32136 | sys     | psql     | /*session3*/ update tab set col=1 where col=1; | Lock              | tuple              | active        | Lock      | tuple      |     1 |   1000018
 11999 | sys     | psql     | /*session4*/ update tab set col=1 where col=1; | Lock              | tuple              | active        | Lock      | tuple      |     1 |   1000024
```

### Reduce concurrency when it is high
<a name="apg-waits.locktuple.actions.concurrency"></a>

The `Lock:tuple` event might occur constantly, especially in a busy workload time. In this situation, consider reducing the high concurrency for very busy rows. Often, just a few rows control a queue or the Boolean logic, which makes these rows very busy.

You can reduce concurrency by using different approaches based in the business requirement, application logic, and workload type. For example, you can do the following:
+ Redesign your table and data logic to reduce high concurrency.
+ Change the application logic to reduce high concurrency at the row level.
+ Leverage and redesign queries with row-level locks.
+ Use the `NOWAIT` clause with retry operations.
+ Consider using optimistic and hybrid-locking logic concurrency control.
+ Consider changing the database isolation level.

### Troubleshoot bottlenecks
<a name="apg-waits.locktuple.actions.bottlenecks"></a>

The `Lock:tuple` can occur with bottlenecks such as CPU starvation or maximum usage of Amazon EBS bandwidth. To reduce bottlenecks, consider the following approaches:
+ Scale up your instance class type.
+ Optimize resource-intensive queries.
+ Change the application logic.
+ Archive data that is rarely accessed.

# LWLock:buffer\$1content (BufferContent)
<a name="apg-waits.lockbuffercontent"></a>

The `LWLock:buffer_content` event occurs when a session is waiting to read or write a data page in memory while another session has that page locked for writing. In Aurora PostgreSQL 13 and higher, this wait event is called `BufferContent`.

**Topics**
+ [Supported engine versions](#apg-waits.lockbuffercontent.context.supported)
+ [Context](#apg-waits.lockbuffercontent.context)
+ [Likely causes of increased waits](#apg-waits.lockbuffercontent.causes)
+ [Actions](#apg-waits.lockbuffercontent.actions)

## Supported engine versions
<a name="apg-waits.lockbuffercontent.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.lockbuffercontent.context"></a>

To read or manipulate data, PostgreSQL accesses it through shared memory buffers. To read from the buffer, a process gets a lightweight lock (LWLock) on the buffer content in shared mode. To write to the buffer, it gets that lock in exclusive mode. Shared locks allow other processes to concurrently acquire shared locks on that content. Exclusive locks prevent other processes from getting any type of lock on it.

The `LWLock:buffer_content` (`BufferContent`) event indicates that multiple processes are attempting to get lightweight locks (LWLocks) on contents of a specific buffer.

## Likely causes of increased waits
<a name="apg-waits.lockbuffercontent.causes"></a>

When the `LWLock:buffer_content` (`BufferContent`) event appears more than normal, possibly indicating a performance problem, typical causes include the following:

**Increased concurrent updates to the same data**  
There might be an increase in the number of concurrent sessions with queries that update the same buffer content. This contention can be more pronounced on tables with a lot of indexes.

**Workload data is not in memory**  
When data that the active workload is processing is not in memory, these wait events can increase. This effect is because processes holding locks can keep them longer while they perform disk I/O operations.

**Excessive use of foreign key constraints**  
Foreign key constraints can increase the amount of time a process holds onto a buffer content lock. This effect is because read operations require a shared buffer content lock on the referenced key while that key is being updated.

## Actions
<a name="apg-waits.lockbuffercontent.actions"></a>

We recommend different actions depending on the causes of your wait event. You might identify `LWLock:buffer_content` (`BufferContent`) events by using Amazon RDS Performance Insights or by querying the view `pg_stat_activity`.

**Topics**
+ [Improve in-memory efficiency](#apg-waits.lockbuffercontent.actions.in-memory)
+ [Reduce usage of foreign key constraints](#apg-waits.lockbuffercontent.actions.foreignkey)
+ [Remove unused indexes](#apg-waits.lockbuffercontent.actions.indexes)
+ [Remove duplicate indexes](#apg-waits.lockbuffercontent.actions.duplicate-indexes)
+ [Drop or REINDEX invalid indexes](#apg-waits.lockbuffercontent.actions.invalid-indexes)
+ [Use partial indexes](#apg-waits.lockbuffercontent.actions.partial-indexes)
+ [Remove table and index bloat](#apg-waits.lockbuffercontent.actions.bloat)

### Improve in-memory efficiency
<a name="apg-waits.lockbuffercontent.actions.in-memory"></a>

To increase the chance that active workload data is in memory, partition tables or scale up your instance class. For information about DB instance classes, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md).

Monitor the `BufferCacheHitRatio` metric, which measures the percentage of requests served by the buffer cache of a DB instance in your DB cluster. This metric provides insight into the amount of data being served from memory. A high hit ratio indicates that your DB instance has sufficient memory available for your working data set, while a low ratio suggests that your queries are frequently accessing data from storage.

The cache read hit per table and cache read hit per index under Memory setting section of the [PG Collector](https://github.com/awslabs/pg-collector) report can provide insights into the tables and indexes cache hit ratio.

### Reduce usage of foreign key constraints
<a name="apg-waits.lockbuffercontent.actions.foreignkey"></a>

Investigate workloads experiencing high numbers of `LWLock:buffer_content` (`BufferContent`) wait events for usage of foreign key constraints. Remove unnecessary foreign key constraints.

### Remove unused indexes
<a name="apg-waits.lockbuffercontent.actions.indexes"></a>

For workloads experiencing high numbers of `LWLock:buffer_content` (`BufferContent`) wait events, identify unused indexes and remove them.

The unused indexes section of the [PG Collector](https://github.com/awslabs/pg-collector) report can provide insights into the unused indexes in the database.

### Remove duplicate indexes
<a name="apg-waits.lockbuffercontent.actions.duplicate-indexes"></a>

Identify duplicate indexes and remove them.

The duplicate indexes section of the [PG Collector](https://github.com/awslabs/pg-collector) report can provide insights into the duplicate indexes in the database.

### Drop or REINDEX invalid indexes
<a name="apg-waits.lockbuffercontent.actions.invalid-indexes"></a>

Invalid indexes typically occur when using `CREATE INDEX CONCURRENTLY` or `REINDEX CONCURRENTLY` and the command fails or is aborted.

Invalid indexes can't be used for queries, though they will still be updated and take up disk space.

The Invalid indexes section of the [PG Collector](https://github.com/awslabs/pg-collector) report can provide insights into the invalid indexes in the database.

### Use partial indexes
<a name="apg-waits.lockbuffercontent.actions.partial-indexes"></a>

Partial indexes can be leveraged to enhance query performance and reduce index size. A partial index is an index built over a subset of a table, with the subset defined by a conditional expression. As detailed in the [partial index](https://www.postgresql.org/docs/current/indexes-partial.html) documentation, partial indexes can reduce the overhead of maintaining indexes, as PostgreSQL does not need to update the index in all cases.

### Remove table and index bloat
<a name="apg-waits.lockbuffercontent.actions.bloat"></a>

Excessive table and index bloat can negatively impact database performance. Bloated tables and indexes increase the active working set size, degrading in-memory efficiency. Additionally, bloat increases storage costs and slows query execution. To diagnose bloat, refer to the [Diagnosing table and index bloat](AuroraPostgreSQL.diag-table-ind-bloat.md). Further, the Fragmentation (Bloat) section of the [PG Collector](https://github.com/awslabs/pg-collector) report can provide insights into tables and indexes bloat.

To address table and index bloat, there are a few options:

**VACUUM FULL**  
`VACUUM FULL` creates a new copy of the table, copying over only the live tuples, and then replaces the old table with the new one while holding an `ACCESS EXCLUSIVE` lock. This prevents any reading or writing to the table, which can cause an outage. Additionally, `VACUUM FULL` will take longer if the table is large.

**pg\$1repack**  
The `pg_repack` is helpful in situations where `VACUUM FULL` might not be suitable. It creates a new table that contains the data of the bloated table, tracks the changes from the original table, and then replaces the original table with the new one. It doesn't lock the original table for read or write operations while it's building the new table. For more information, for how to use `pg_repack`, see [Removing bloat with pg\$1repack](https://docs.aws.amazon.com/prescriptive-guidance/latest/postgresql-maintenance-rds-aurora/pg-repack.html) and [pg\$1repack](https://reorg.github.io/pg_repack/).

**REINDEX**  
The `REINDEX` command can be leveraged to address index bloat. `REINDEX` writes a new version of the index without the dead pages or the empty or nearly-empty pages, thereby reducing the space consumption of the index. For detailed information about the [https://www.postgresql.org/docs/current/sql-reindex.html](https://www.postgresql.org/docs/current/sql-reindex.html) command, please refer to the REINDEX documentation.

After removing bloat from tables and indexes, it may be necessary to increase the autovacuum frequency on those tables. Implementing aggressive autovacuum settings at the table level can help prevent future bloat from occurring. For more information, please refer to the documentation on [https://docs.aws.amazon.com/prescriptive-guidance/latest/postgresql-maintenance-rds-aurora/autovacuum.html](https://docs.aws.amazon.com/prescriptive-guidance/latest/postgresql-maintenance-rds-aurora/autovacuum.html).

# LWLock:buffer\$1mapping
<a name="apg-waits.lwl-buffer-mapping"></a>

This event occurs when a session is waiting to associate a data block with a buffer in the shared buffer pool.

**Note**  
This event appears as `LWLock:buffer_mapping` in Aurora PostgreSQL version 12 and lower, and `LWLock:BufferMapping` in version 13 and higher.

**Topics**
+ [Supported engine versions](#apg-waits.lwl-buffer-mapping.context.supported)
+ [Context](#apg-waits.lwl-buffer-mapping.context)
+ [Causes](#apg-waits.lwl-buffer-mapping.causes)
+ [Actions](#apg-waits.lwl-buffer-mapping.actions)

## Supported engine versions
<a name="apg-waits.lwl-buffer-mapping.context.supported"></a>

This wait event information is relevant for Aurora PostgreSQL version 9.6 and higher.

## Context
<a name="apg-waits.lwl-buffer-mapping.context"></a>

The *shared buffer pool* is an Aurora PostgreSQL memory area that holds all pages that are or were being used by processes. When a process needs a page, it reads the page into the shared buffer pool. The `shared_buffers` parameter sets the shared buffer size and reserves a memory area to store the table and index pages. If you change this parameter, make sure to restart the database. For more information, see [Shared buffers](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.buffer-pool).

The `LWLock:buffer_mapping` wait event occurs in the following scenarios:
+ A process searches the buffer table for a page and acquires a shared buffer mapping lock.
+ A process loads a page into the buffer pool and acquires an exclusive buffer mapping lock.
+ A process removes a page from the pool and acquires an exclusive buffer mapping lock.

## Causes
<a name="apg-waits.lwl-buffer-mapping.causes"></a>

When this event appears more than normal, possibly indicating a performance problem, the database is paging in and out of the shared buffer pool. Typical causes include the following:
+ Large queries
+ Bloated indexes and tables
+ Full table scans
+ A shared pool size that is smaller than the working set

## Actions
<a name="apg-waits.lwl-buffer-mapping.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Monitor buffer-related metrics](#apg-waits.lwl-buffer-mapping.actions.monitor-metrics)
+ [Assess your indexing strategy](#apg-waits.lwl-buffer-mapping.actions.indexes)
+ [Reduce the number of buffers that must be allocated quickly](#apg-waits.lwl-buffer-mapping.actions.buffers)

### Monitor buffer-related metrics
<a name="apg-waits.lwl-buffer-mapping.actions.monitor-metrics"></a>

When `LWLock:buffer_mapping` waits spike, investigate the buffer hit ratio. You can use these metrics to get a better understanding of what is happening in the buffer cache. Examine the following metrics:

`BufferCacheHitRatio`  
This Amazon CloudWatch metric measures the percentage of requests that are served by the buffer cache of a DB instance in your DB cluster. You might see this metric decrease in the lead-up to the `LWLock:buffer_mapping` wait event.

`blks_hit`  
This Performance Insights counter metric indicates the number of blocks that were retrieved from the shared buffer pool. After the `LWLock:buffer_mapping` wait event appears, you might observe a spike in `blks_hit`.

`blks_read`  
This Performance Insights counter metric indicates the number of blocks that required I/O to be read into the shared buffer pool. You might observe a spike in `blks_read` in the lead-up to the `LWLock:buffer_mapping` wait event.

### Assess your indexing strategy
<a name="apg-waits.lwl-buffer-mapping.actions.indexes"></a>

To confirm that your indexing strategy is not degrading performance, check the following:

Index bloat  
Ensure that index and table bloat aren't leading to unnecessary pages being read into the shared buffer. If your tables contain unused rows, consider archiving the data and removing the rows from the tables. You can then rebuild the indexes for the resized tables.

Indexes for frequently used queries  
To determine whether you have the optimal indexes, monitor DB engine metrics in Performance Insights. The `tup_returned` metric shows the number of rows read. The `tup_fetched` metric shows the number of rows returned to the client. If `tup_returned` is significantly larger than `tup_fetched`, the data might not be properly indexed. Also, your table statistics might not be current.

### Reduce the number of buffers that must be allocated quickly
<a name="apg-waits.lwl-buffer-mapping.actions.buffers"></a>

To reduce the `LWLock:buffer_mapping` wait events, try to reduce the number of buffers that must be allocated quickly. One strategy is to perform smaller batch operations. You might be able to achieve smaller batches by partitioning your tables.

# LWLock:BufferIO (IPC:BufferIO)
<a name="apg-waits.lwlockbufferio"></a>

The `LWLock:BufferIO` event occurs when Aurora PostgreSQL or RDS for PostgreSQL is waiting for other processes to finish their input/output (I/O) operations when concurrently trying to access a page. Its purpose is for the same page to be read into the shared buffer.

**Topics**
+ [Relevant engine versions](#apg-waits.lwlockbufferio.context.supported)
+ [Context](#apg-waits.lwlockbufferio.context)
+ [Causes](#apg-waits.lwlockbufferio.causes)
+ [Actions](#apg-waits.lwlockbufferio.actions)

## Relevant engine versions
<a name="apg-waits.lwlockbufferio.context.supported"></a>

This wait event information is relevant for all Aurora PostgreSQL versions. For Aurora PostgreSQL 12 and earlier versions this wait event is named as lwlock:buffer\$1io whereas in Aurora PostgreSQL 13 version it is named as lwlock:bufferio. From Aurora PostgreSQL 14 version BufferIO wait event moved from `LWLock` to `IPC` wait event type (IPC:BufferIO). 

## Context
<a name="apg-waits.lwlockbufferio.context"></a>

Each shared buffer has an I/O lock that is associated with the `LWLock:BufferIO` wait event, each time a block (or a page) has to be retrieved outside the shared buffer pool.

This lock is used to handle multiple sessions that all require access to the same block. This block has to be read from outside the shared buffer pool, defined by the `shared_buffers` parameter.

As soon as the page is read inside the shared buffer pool, the `LWLock:BufferIO` lock is released.

**Note**  
The `LWLock:BufferIO` wait event precedes the [IO:DataFileRead](apg-waits.iodatafileread.md) wait event. The `IO:DataFileRead` wait event occurs while data is being read from storage.

For more information on lightweight locks, see [Locking Overview](https://github.com/postgres/postgres/blob/65dc30ced64cd17f3800ff1b73ab1d358e92efd8/src/backend/storage/lmgr/README#L20).

## Causes
<a name="apg-waits.lwlockbufferio.causes"></a>

Common causes for the `LWLock:BufferIO` event to appear in top waits include the following:
+ Multiple backends or connections trying to access the same page that's also pending an I/O operation
+ The ratio between the size of the shared buffer pool (defined by the `shared_buffers` parameter) and the number of buffers needed by the current workload
+ The size of the shared buffer pool not being well balanced with the number of pages being evicted by other operations
+ Large or bloated indexes that require the engine to read more pages than necessary into the shared buffer pool
+ Lack of indexes that forces the DB engine to read more pages from the tables than necessary
+ Sudden spikes for database connections trying to perform operations on the same page

## Actions
<a name="apg-waits.lwlockbufferio.actions"></a>

We recommend different actions depending on the causes of your wait event:
+ Observe Amazon CloudWatch metrics for correlation between sharp decreases in the `BufferCacheHitRatio` and `LWLock:BufferIO` wait events. This effect can mean that you have a small shared buffers setting. You might need to increase it or scale up your DB instance class. You can split your workload into more reader nodes.
+ Verify whether you have unused indexes, then remove them.
+ Use partitioned tables (which also have partitioned indexes). Doing this helps to keep index reordering low and reduces its impact.
+ Avoid indexing columns unnecessarily.
+ Prevent sudden database connection spikes by using a connection pool.
+ Restrict the maximum number of connections to the database as a best practice.

# LWLock:lock\$1manager
<a name="apg-waits.lw-lock-manager"></a>

This event occurs when the Aurora PostgreSQL engine maintains the shared lock's memory area to allocate, check, and deallocate a lock when a fast path lock isn't possible.

**Topics**
+ [Supported engine versions](#apg-waits.lw-lock-manager.context.supported)
+ [Context](#apg-waits.lw-lock-manager.context)
+ [Likely causes of increased waits](#apg-waits.lw-lock-manager.causes)
+ [Actions](#apg-waits.lw-lock-manager.actions)

## Supported engine versions
<a name="apg-waits.lw-lock-manager.context.supported"></a>

This wait event information is relevant for Aurora PostgreSQL version 9.6 and higher. 

## Context
<a name="apg-waits.lw-lock-manager.context"></a>

When you issue a SQL statement, Aurora PostgreSQL records locks to protect the structure, data, and integrity of your database during concurrent operations. The engine can achieve this goal using a fast path lock or a path lock that isn't fast. A path lock that isn't fast is more expensive and creates more overhead than a fast path lock.

### Fast path locking
<a name="apg-waits.lw-lock-manager.context.fast-path"></a>

To reduce the overhead of locks that are taken and released frequently, but that rarely conflict, backend processes can use fast path locking. The database uses this mechanism for locks that meet the following criteria:
+ They use the DEFAULT lock method.
+ They represent a lock on a database relation rather than a shared relation.
+ They are weak locks that are unlikely to conflict.
+ The engine can quickly verify that no conflicting locks can possibly exist.

The engine can't use fast path locking when either of the following conditions is true:
+ The lock doesn't meet the preceding criteria.
+ No more slots are available for the backend process.

For more information about fast path locking, see [fast path](https://github.com/postgres/postgres/blob/master/src/backend/storage/lmgr/README#L70-L76) in the PostgreSQL lock manager README and [pg-locks](https://www.postgresql.org/docs/15/view-pg-locks.html) in the PostgreSQL documentation. 

### Example of a scaling problem for the lock manager
<a name="apg-waits.lw-lock-manager.context.lock-manager"></a>

In this example, a table named `purchases` stores five years of data, partitioned by day. Each partition has two indexes. The following sequence of events occurs:

1. You query many days worth of data, which requires the database to read many partitions.

1. The database creates a lock entry for each partition. If partition indexes are part of the optimizer access path, the database creates a lock entry for them, too.

1. When the number of requested locks entries for the same backend process is higher than 16, which is the value of `FP_LOCK_SLOTS_PER_BACKEND`, the lock manager uses the non–fast path lock method.

Modern applications might have hundreds of sessions. If concurrent sessions are querying the parent without proper partition pruning, the database might create hundreds or even thousands of non–fast path locks. Typically, when this concurrency is higher than the number of vCPUs, the `LWLock:lock_manager` wait event appears.

**Note**  
The `LWLock:lock_manager` wait event isn't related to the number of partitions or indexes in a database schema. Instead, it's related to the number of non–fast path locks that the database must control.

## Likely causes of increased waits
<a name="apg-waits.lw-lock-manager.causes"></a>

When the `LWLock:lock_manager` wait event occurs more than normal, possibly indicating a performance problem, the most likely causes of sudden spikes are as follows:
+ Concurrent active sessions are running queries that don't use fast path locks. These sessions also exceed the maximum vCPU.
+ A large number of concurrent active sessions are accessing a heavily partitioned table. Each partition has multiple indexes.
+ The database is experiencing a connection storm. By default, some applications and connection pool software create more connections when the database is slow. This practice makes the problem worse. Tune your connection pool software so that connection storms don't occur.
+ A large number of sessions query a parent table without pruning partitions.
+ A data definition language (DDL), data manipulation language (DML), or a maintenance command exclusively locks either a busy relation or tuples that are frequently accessed or modified.

## Actions
<a name="apg-waits.lw-lock-manager.actions"></a>

We recommend different actions depending on the causes of your wait event.

**Topics**
+ [Use partition pruning](#apg-waits.lw-lock-manager.actions.pruning)
+ [Remove unnecessary indexes](#apg-waits.lw-lock-manager.actions.indexes)
+ [Tune your queries for fast path locking](#apg-waits.lw-lock-manager.actions.tuning)
+ [Tune for other wait events](#apg-waits.lw-lock-manager.actions.other-waits)
+ [Reduce hardware bottlenecks](#apg-waits.lw-lock-manager.actions.hw-bottlenecks)
+ [Use a connection pooler](#apg-waits.lw-lock-manager.actions.pooler)
+ [Upgrade your Aurora PostgreSQL version](#apg-waits.lw-lock-manager.actions.pg-version)

### Use partition pruning
<a name="apg-waits.lw-lock-manager.actions.pruning"></a>

*Partition pruning* is a query optimization strategy that excludes unneeded partitions from table scans, thereby improving performance. Partition pruning is turned on by default. If it is turned off, turn it on as follows.

```
SET enable_partition_pruning = on;
```

Queries can take advantage of partition pruning when their `WHERE` clause contains the column used for the partitioning. For more information, see [Partition Pruning](https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITION-PRUNING) in the PostgreSQL documentation.

### Remove unnecessary indexes
<a name="apg-waits.lw-lock-manager.actions.indexes"></a>

Your database might contain unused or rarely used indexes. If so, consider deleting them. Do either of the following:
+ Learn how to find unnecessary indexes by reading [Unused Indexes](https://wiki.postgresql.org/wiki/Index_Maintenance#Unused_Indexes) in the PostgreSQL wiki.
+ Run PG Collector. This SQL script gathers database information and presents it in a consolidated HTML report. Check the "Unused indexes" section. For more information, see [pg-collector](https://github.com/awslabs/pg-collector) in the AWS Labs GitHub repository.

### Tune your queries for fast path locking
<a name="apg-waits.lw-lock-manager.actions.tuning"></a>

To find out whether your queries use fast path locking, query the `fastpath` column in the `pg_locks` table. If your queries aren't using fast path locking, try to reduce number of relations per query to fewer than 16.

### Tune for other wait events
<a name="apg-waits.lw-lock-manager.actions.other-waits"></a>

If `LWLock:lock_manager` is first or second in the list of top waits, check whether the following wait events also appear in the list:
+ `Lock:Relation`
+ `Lock:transactionid`
+ `Lock:tuple`

If the preceding events appear high in the list, consider tuning these wait events first. These events can be a driver for `LWLock:lock_manager`.

### Reduce hardware bottlenecks
<a name="apg-waits.lw-lock-manager.actions.hw-bottlenecks"></a>

You might have a hardware bottleneck, such as CPU starvation or maximum usage of your Amazon EBS bandwidth. In these cases, consider reducing the hardware bottlenecks. Consider the following actions:
+ Scale up your instance class.
+ Optimize queries that consume large amounts of CPU and memory.
+ Change your application logic.
+ Archive your data.

For more information about CPU, memory, and EBS network bandwidth, see [Amazon RDS Instance Types](https://aws.amazon.com/rds/instance-types/).

### Use a connection pooler
<a name="apg-waits.lw-lock-manager.actions.pooler"></a>

If your total number of active connections exceeds the maximum vCPU, more OS processes require CPU than your instance type can support. In this case, consider using or tuning a connection pool. For more information about the vCPUs for your instance type, see [Amazon RDS Instance Types](https://aws.amazon.com/rds/instance-types/).

For more information about connection pooling, see the following resources:
+ [Amazon RDS Proxyfor Aurora](rds-proxy.md)
+ [pgbouncer](http://www.pgbouncer.org/usage.html)
+ [Connection Pools and Data Sources](https://www.postgresql.org/docs/7.4/jdbc-datasource.html) in the *PostgreSQL Documentation*

### Upgrade your Aurora PostgreSQL version
<a name="apg-waits.lw-lock-manager.actions.pg-version"></a>

If your current version of Aurora PostgreSQL is lower than 12, upgrade to version 12 or higher. PostgreSQL versions 12 and 13 have an improved partition mechanism. For more information about version 12, see [PostgreSQL 12.0 Release Notes]( https://www.postgresql.org/docs/release/12.0/). For more information about upgrading Aurora PostgreSQL, see [Database engine updates for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Updates.md).

# LWLock:MultiXact
<a name="apg-waits.lwlockmultixact"></a>

The `LWLock:MultiXactMemberBuffer`, `LWLock:MultiXactOffsetBuffer`, `LWLock:MultiXactMemberSLRU`, and `LWLock:MultiXactOffsetSLRU` wait events indicate that a session is waiting to retrieve a list of transactions that modifies the same row in a given table. 
+ `LWLock:MultiXactMemberBuffer` – A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a multixact member.
+ `LWLock:MultiXactMemberSLRU` – A process is waiting to access the simple least-recently used (SLRU) cache for a multixact member.
+ `LWLock:MultiXactOffsetBuffer` – A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a multixact offset.
+ `LWLock:MultiXactOffsetSLRU` – A process is waiting to access the simple least-recently used (SLRU) cache for a multixact offset.

**Topics**
+ [Supported engine versions](#apg-waits.xactsync.context.supported)
+ [Context](#apg-waits.lwlockmultixact.context)
+ [Likely causes of increased waits](#apg-waits.lwlockmultixact.causes)
+ [Actions](#apg-waits.lwlockmultixact.actions)

## Supported engine versions
<a name="apg-waits.xactsync.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Context
<a name="apg-waits.lwlockmultixact.context"></a>

A *multixact* is a data structure that stores a list of transaction IDs (XIDs) that modify the same table row. When a single transaction references a row in a table, the transaction ID is stored in the table header row. When multiple transactions reference the same row in a table, the list of transaction IDs is stored in the multixact data structure. The multixact wait events indicate that a session is retrieving from the data structure the list of transactions that refer to a given row in a table.

## Likely causes of increased waits
<a name="apg-waits.lwlockmultixact.causes"></a>

Three common causes of multixact use are as follows:
+ **Sub-transactions from explicit savepoints** – Explicitly creating a savepoint in your transactions spawns new transactions for the same row. For example, using `SELECT FOR UPDATE`, then `SAVEPOINT`, and then `UPDATE`. 

  Some drivers, object-relational mappers (ORMs), and abstraction layers have configuration options for automatically wrapping all operations with savepoints. This can generate many multixact wait events in some workloads. The PostgreSQL JDBC Driver's `autosave` option is an example of this. For more information, see [pgJDBC](https://jdbc.postgresql.org/) in the PostgreSQL JDBC documentation. Another example is the PostgreSQL ODBC driver and its `protocol` option. For more information, see [psqlODBC Configuration Options](https://odbc.postgresql.org/docs/config.html) in the PostgreSQL ODBC driver documentation. 
+ **Sub-transactions from PL/pgSQL EXCEPTION clauses** – Each `EXCEPTION` clause that you write in your PL/pgSQL functions or procedures creates a `SAVEPOINT` internally.
+ **Foreign keys** – Multiple transactions acquire a shared lock on the parent record.

When a given row is included in a multiple transaction operation, processing the row requires retrieving transaction IDs from the `multixact` listings. If lookups can't get the multixact from the memory cache, the data structure must be read from the Aurora storage layer. This I/O from storage means that SQL queries can take longer. Memory cache misses can start occurring with heavy usage due to a large number of multiple transactions. All these factors contribute to an increase in this wait event.

## Actions
<a name="apg-waits.lwlockmultixact.actions"></a>

We recommend different actions depending on the causes of your wait event. Some of these actions can help in immediate reduction of the wait events. But, others might require investigation and correction to scale your workload.

**Topics**
+ [Perform vacuum freeze on tables with this wait event](#apg-waits.lwlockmultixact.actions.vacuumfreeze)
+ [Increase autovacuum frequency on tables with this wait event](#apg-waits.lwlockmultixact.actions.autovacuum)
+ [Increase memory parameters](#apg-waits.lwlockmultixact.actions.memoryparam)
+ [Reduce long-running transactions](#apg-waits.lwlockmultixact.actions.longtransactions)
+ [Long term actions](#apg-waits.lwlockmultixact.actions.longactions)

### Perform vacuum freeze on tables with this wait event
<a name="apg-waits.lwlockmultixact.actions.vacuumfreeze"></a>

If this wait event spikes suddenly and affects your production environment, you can use any of the following temporary methods to reduce its count.
+ Use *VACUUM FREEZE* on the affected table or table partition to resolve the issue immediately. For more information, see [VACUUM](https://www.postgresql.org/docs/current/sql-vacuum.html).
+ Use the VACUUM (FREEZE, INDEX\$1CLEANUP FALSE) clause to perform a quick vacuum by skipping the indexes. For more information, see [Vacuuming a table as quickly as possible](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.html#Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.Executing).

### Increase autovacuum frequency on tables with this wait event
<a name="apg-waits.lwlockmultixact.actions.autovacuum"></a>

After scanning all tables in all databases, VACUUM will eventually remove multixacts, and their oldest multixact values are advanced. For more information, see [Multixacts and Wraparound](https://www.postgresql.org/docs/current/routine-vacuuming.html#VACUUM-FOR-MULTIXACT-WRAPAROUND). To keep the LWLock:MultiXact wait events to its minimum, you must run the VACUUM as often as necessary. To do so, ensure that the VACUUM in your Aurora PostgreSQL DB cluster is configured optimally.

If using VACUUM FREEZE on the affected table or table partition resolves the wait event issue, we recommend using a scheduler, such as `pg_cron`, to perform the VACUUM instead of adjusting autovacuum at the instance level. 

For the autovacuum to happen more frequently, you can reduce the value of the storage parameter `autovacuum_multixact_freeze_max_age` in the affected table. For more information, see [autovacuum\$1multixact\$1freeze\$1max\$1age](https://www.postgresql.org/docs/current/runtime-config-autovacuum.html#GUC-AUTOVACUUM-MULTIXACT-FREEZE-MAX-AGE).

### Increase memory parameters
<a name="apg-waits.lwlockmultixact.actions.memoryparam"></a>

You can optimize memory usage for multixact caches by adjusting the following parameters. These settings control how much memory is reserved for these caches, which can help reduce multixact wait events in your workload. We recommend starting with the following values:

For Aurora PostgreSQL 17 and later:  
+ `multixact_offset_buffers` = 128
+ `multixact_member_buffers` = 256

For Aurora PostgreSQL 16 and earlier:  
+ `multixact_offsets_cache_size` = 128
+ `multixact_members_cache_size` = 256

**Note**  
In Aurora PostgreSQL 17, parameter names were changed from `multixact_offsets_cache_size` to `multixact_offset_buffers` and from `multixact_members_cache_size` to `multixact_member_buffers` to align with community PostgreSQL 17.

You can set these parameters at the cluster level so that all instances in your cluster remain consistent. We recommend you to test and adjust the values to best suit your specific workload requirements and instance class. You must reboot the writer instance for the parameter changes to take effect.

The parameters are expressed in terms of multixact cache entries. Each cache entry uses `8 KB` of memory. To calculate the total memory reserved, multiply each parameter value by `8 KB`. For example, if you set a parameter to 128, the total reserved memory would be `128 * 8 KB = 1 MB`.

### Reduce long-running transactions
<a name="apg-waits.lwlockmultixact.actions.longtransactions"></a>

Long-running transaction causes the vacuum to retain its information until the transaction is committed or until the read-only transaction is closed. We recommend that you proactively monitor and manage long-running transactions. For more information, see [Database has long running idle in transaction connection](PostgreSQL.Tuning_proactive_insights.md#proactive-insights.idle-txn). Try to modify your application to avoid or minimize your use of long-running transactions.

### Long term actions
<a name="apg-waits.lwlockmultixact.actions.longactions"></a>

Examine your workload to discover the cause for the multixact spillover. You must fix the issue in order to scale your workload and reduce the wait event.
+ You must analyze the DDL (data definition language) used to create your tables. Make sure that the table structures and indexes are well designed.
+ When the affected tables have foreign keys, determine whether they are needed or if there is another way to enforce referential integrity.
+ When a table has large unused indexes, it can cause autovacuum to not fit your workload and might block it from running. To avoid this, check for unused indexes and remove them completely. For more information, see [Managing autovacuum with large indexes](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Autovacuum.LargeIndexes.html).
+ Reduce the use of savepoints in your transactions.

# LWLock:pg\$1stat\$1statements
<a name="apg-rpg-lwlockpgstat"></a>

The LWLock:pg\$1stat\$1statements wait event occurs when the `pg_stat_statements` extension takes an exclusive lock on the hash table that tracks SQL statements. This happens in the following scenarios:
+ When the number of tracked statements reaches the configured `pg_stat_statements.max` parameter value and there is a need to make room for more entries, the extension performs a sort on the number of calls, removes the 5% of the least-executed statements, and re-populates the hash with the remaining entries.
+ When `pg_stat_statements` performs a `garbage collection` operation to the `pgss_query_texts.stat` file on disk and rewrites the file.

**Topics**
+ [Supported engine versions](#apg-rpg-lwlockpgstat.supported)
+ [Context](#apg-rpg-lwlockpgstat.context)
+ [Likely causes of increased waits](#apg-rpg-lwlockpgstat.causes)
+ [Actions](#apg-rpg-lwlockpgstat.actions)

## Supported engine versions
<a name="apg-rpg-lwlockpgstat.supported"></a>

 This wait event information is supported for all versions of Aurora PostgreSQL. 

## Context
<a name="apg-rpg-lwlockpgstat.context"></a>

**Understanding the pg\$1stat\$1statements extension** – The pg\$1stat\$1statements extension tracks SQL statement execution statistics in a hash table. The extension tracks SQL statements up to the limit defined by the `pg_stat_statements.max` parameter. This parameter determines the maximum number of statements that can be tracked which corresponds to the maximum number of rows in the pg\$1stat\$1statements view.

**Statement statistics persistence** – The extension persists statement statistics across instance restarts by:
+ Writing data to a file named pg\$1stat\$1statements.stat
+ Using the pg\$1stat\$1statements.save parameter to control persistence behavior

When pg\$1stat\$1statements.save is set to:
+ on (default): Statistics are saved at shutdown and reloaded at server start
+ off: Statistics are neither saved at shutdown nor reloaded at server start

**Query text storage** – The extension stores the text of tracked queries in a file named `pgss_query_texts.stat`. This file can grow to double the average size of all tracked SQL statements before garbage collection occurs. The extension requires an exclusive lock on the hash table during cleanup operations and rewrite `pgss_query_texts.stat` file.

**Statement deallocation process** – When the number of tracked statements reaches the `pg_stat_statements.max` limit and new statements need to be tracked, the extension:
+ Takes an exclusive lock (LWLock:pg\$1stat\$1statements) on the hash table.
+ Loads existing data into local memory.
+ Performs a quicksort based on the number of calls.
+ Removes the least-called statements (bottom 5%).
+ Re-populates the hash table with the remaining entries.

**Monitoring statement deallocation** – In PostgreSQL 14 and later, you can monitor statement deallocation using the pg\$1stat\$1statements\$1info view. This view includes a dealloc column that shows how many times statements were deallocated to make room for new ones

If the deallocation of statements occurs frequently, it will lead to more frequent garbage collection of the `pgss_query_texts.stat` file on disk.

## Likely causes of increased waits
<a name="apg-rpg-lwlockpgstat.causes"></a>

The typical causes of increased `LWLock:pg_stat_statements` waits include:
+ An increase in the number of unique queries used by the application.
+ The `pg_stat_statements.max` parameter value being small compared to the number of unique queries being used.

## Actions
<a name="apg-rpg-lwlockpgstat.actions"></a>

We recommend different actions depending on the causes of your wait event. You might identify `LWLock:pg_stat_statements` events by using Amazon RDS Performance Insights or by querying the view `pg_stat_activity`.

Adjust the following `pg_stat_statements` parameters to control tracking behavior and reduce LWLock:pg\$1stat\$1 statements wait events.

**Topics**
+ [Disable pg\$1stat\$1statements.track parameter](#apg-rpg-lwlockpgstat.actions.disabletrack)
+ [Increase pg\$1stat\$1statements.max parameter](#apg-rpg-lwlockpgstat.actions.increasemax)
+ [Disable pg\$1stat\$1statements.track\$1utility parameter](#apg-rpg-lwlockpgstat.actions.disableutility)

### Disable pg\$1stat\$1statements.track parameter
<a name="apg-rpg-lwlockpgstat.actions.disabletrack"></a>

If the LWLock:pg\$1stat\$1statements wait event is adversely impacting database performance, and a rapid solution is required before further analysis of the `pg_stat_statements` view to identify the root cause, the `pg_stat_statements.track` parameter can be disabled by setting it to `none`. This will disable the collection of statement statistics.

### Increase pg\$1stat\$1statements.max parameter
<a name="apg-rpg-lwlockpgstat.actions.increasemax"></a>

To reduce deallocation and minimize garbage collection of the `pgss_query_texts.stat` file on disk, increase the value of the `pg_stat_statements.max` parameter. The default value is `5,000`.

**Note**  
The `pg_stat_statements.max` parameter is static. You must restart your DB instance to apply any changes to this parameter. 

### Disable pg\$1stat\$1statements.track\$1utility parameter
<a name="apg-rpg-lwlockpgstat.actions.disableutility"></a>

You can analyze the pg\$1stat\$1statements view to determine which utility commands are consuming the most resources tracked by `pg_stat_statements`.

The `pg_stat_statements.track_utility` parameter controls whether the module tracks utility commands, which include all commands except SELECT, INSERT, UPDATE, DELETE, and MERGE. By default, this parameter is set to `on`.

For example, when your application uses many savepoint queries, which are inherently unique, it can increase statement deallocation. To address this, you can disable the `pg_stat_statements.track_utility` parameter to stop `pg_stat_statements` from tracking savepoint queries.

**Note**  
The `pg_stat_statements.track_utility` parameter is a dynamic parameter. You can change its value without restarting your database instance.

**Example of unique save point queries in pg\$1stat\$1statements**  <a name="savepoint-queries"></a>

```
                     query                       |       queryid       
-------------------------------------------------+---------------------
 SAVEPOINT JDBC_SAVEPOINT_495701                 | -7249565344517699703
 SAVEPOINT JDBC_SAVEPOINT_1320                   | -1572997038849006629
 SAVEPOINT JDBC_SAVEPOINT_26739                  |  54791337410474486
 SAVEPOINT JDBC_SAVEPOINT_1294466                |  8170064357463507593
 ROLLBACK TO SAVEPOINT JDBC_SAVEPOINT_65016      | -33608214779996400
 SAVEPOINT JDBC_SAVEPOINT_14185                  | -2175035613806809562
 SAVEPOINT JDBC_SAVEPOINT_45837                  | -6201592986750645383
 SAVEPOINT JDBC_SAVEPOINT_1324                   |  6388797791882029332
```

PostgreSQL 17 introduces several enhancements for utility command tracking:
+ Savepoint names are now displayed as constants.
+ Global Transaction IDs (GIDs) of two-phase commit commands are now displayed as constants.
+ Names of DEALLOCATE statements are shown as constants.
+ CALL parameters are now displayed as constants.

# Timeout:PgSleep
<a name="apg-waits.timeoutpgsleep"></a>

The `Timeout:PgSleep` event occurs when a server process has called the `pg_sleep` function and is waiting for the sleep timeout to expire.

**Topics**
+ [Supported engine versions](#apg-waits.timeoutpgsleep.context.supported)
+ [Likely causes of increased waits](#apg-waits.timeoutpgsleep.causes)
+ [Actions](#apg-waits.timeoutpgsleep.actions)

## Supported engine versions
<a name="apg-waits.timeoutpgsleep.context.supported"></a>

This wait event information is supported for all versions of Aurora PostgreSQL.

## Likely causes of increased waits
<a name="apg-waits.timeoutpgsleep.causes"></a>

This wait event occurs when an application, stored function, or user issues a SQL statement that calls one of the following functions:
+ `pg_sleep`
+ `pg_sleep_for`
+ `pg_sleep_until`

The preceding functions delay execution until the specified number of seconds have elapsed. For example, `SELECT pg_sleep(1)` pauses for 1 second. For more information, see [Delaying Execution](https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-DELAY) in the PostgreSQL documentation.

## Actions
<a name="apg-waits.timeoutpgsleep.actions"></a>

Identify the statement that was running the `pg_sleep` function. Determine if the use of the function is appropriate.

# Tuning Aurora PostgreSQL with Amazon DevOps Guru proactive insights
<a name="PostgreSQL.Tuning_proactive_insights"></a>

DevOps Guru proactive insights detects conditions on your Aurora PostgreSQL DB clusters that can cause problems, and lets you know about them before they occur. Proactive insights can alert you to a long running idle in transaction connection. For more information about troubleshooting long running idle in transaction connections, see [Database has long running idle in transaction connection](#proactive-insights.idle-txn)

DevOps Guru can do the following:
+ Prevent many common database issues by cross-checking your database configuration against common recommended settings.
+ Alert you to critical issues in your fleet that, if left unchecked, can lead to larger problems later.
+ Alert you to newly discovered problems.

Every proactive insight contains an analysis of the cause of the problem and recommendations for corrective actions.

For more information about Amazon DevOps Guru for Amazon RDS, see [Analyzing Aurora performance anomalies with Amazon DevOps Guru for Amazon RDS](devops-guru-for-rds.md).

## Database has long running idle in transaction connection
<a name="proactive-insights.idle-txn"></a>

A connection to the database has been in the `idle in transaction` state for more than 1800 seconds.

**Topics**
+ [Supported engine versions](#proactive-insights.idle-txn.context.supported)
+ [Context](#proactive-insights.idle-txn.context)
+ [Likely causes for this issue](#proactive-insights.idle-txn.causes)
+ [Actions](#proactive-insights.idle-txn.actions)
+ [Relevant metrics](#proactive-insights.idle-txn.metrics)

### Supported engine versions
<a name="proactive-insights.idle-txn.context.supported"></a>

This insight information is supported for all versions of Aurora PostgreSQL.

### Context
<a name="proactive-insights.idle-txn.context"></a>

A transaction in the `idle in transaction` state can hold locks that block other queries. It can also prevent `VACUUM` (including autovacuum) from cleaning up dead rows, leading to index or table bloat or transaction ID wraparound.

### Likely causes for this issue
<a name="proactive-insights.idle-txn.causes"></a>

A transaction initiated in an interactive session with BEGIN or START TRANSACTION hasn't ended by using a COMMIT, ROLLBACK, or END command. This causes the transaction to move to `idle in transaction` state.

### Actions
<a name="proactive-insights.idle-txn.actions"></a>

You can find idle transactions by querying `pg_stat_activity`.

In your SQL client, run the following query to list all connections in `idle in transaction` state and to order them by duration:

```
SELECT now() - state_change as idle_in_transaction_duration, now() - xact_start as xact_duration,* 
FROM  pg_stat_activity 
WHERE state  = 'idle in transaction'
AND   xact_start is not null
ORDER BY 1 DESC;
```

We recommend different actions depending on the causes of your insight.

**Topics**
+ [End transaction](#proactive-insights.idle-txn.actions.end-txn)
+ [Terminate the connection](#proactive-insights.idle-txn.actions.end-connection)
+ [Configure the idle\$1in\$1transaction\$1session\$1timeout parameter](#proactive-insights.idle-txn.actions.parameter)
+ [Check the AUTOCOMMIT status](#proactive-insights.idle-txn.actions.autocommit)
+ [Check the transaction logic in your application code](#proactive-insights.idle-txn.actions.app-logic)

#### End transaction
<a name="proactive-insights.idle-txn.actions.end-txn"></a>

When you initiate a transaction in an interactive session with BEGIN or START TRANSACTION, it moves to `idle in transaction` state. It remains in this state until you end the transaction by issuing a COMMIT, ROLLBACK, END command or disconnect the connection completely to roll back the transaction.

#### Terminate the connection
<a name="proactive-insights.idle-txn.actions.end-connection"></a>

Terminate the connection with an idle transaction using the following query:

```
SELECT pg_terminate_backend(pid);
```

pid is the process ID of the connection.

#### Configure the idle\$1in\$1transaction\$1session\$1timeout parameter
<a name="proactive-insights.idle-txn.actions.parameter"></a>

Configure the `idle_in_transaction_session_timeout` parameter in the parameter group. The advantage of configuring this parameter is that it does not require a manual intervention to terminate the long idle in transaction. For more information on this parameter, see [the PostgreSQL documentation](https://www.postgresql.org/docs/current/runtime-config-client.html). 

The following message will be reported in the PostgreSQL log file after the connection is terminated, when a transaction is in the idle\$1in\$1transaction state for longer than the specified time.

```
FATAL: terminating connection due to idle in transaction timeout
```

#### Check the AUTOCOMMIT status
<a name="proactive-insights.idle-txn.actions.autocommit"></a>

AUTOCOMMIT is turned on by default. But if it is accidentally turned off in the client ensure that you turn it back on.
+ In your psql client, run the following command:

  ```
  postgres=> \set AUTOCOMMIT on
  ```
+ In pgadmin, turn it on by choosing the AUTOCOMMIT option from the down arrow.  
![\[In pgadmin, choose AUTOCOMMIT to turn it on.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-insight-pgadmin-autocommit.png)

#### Check the transaction logic in your application code
<a name="proactive-insights.idle-txn.actions.app-logic"></a>

Investigate your application logic for possible problems. Consider the following actions:
+ Check if the JDBC auto commit is set true in your application. Also, consider using explicit `COMMIT` commands in your code.
+ Check your error handling logic to see whether it closes a transaction after errors.
+ Check whether your application is taking long to process the rows returned by a query while the transaction is open. If so, consider coding the application to close the transaction before processing the rows.
+ Check whether a transaction contains many long-running operations. If so, divide a single transaction into multiple transactions.

### Relevant metrics
<a name="proactive-insights.idle-txn.metrics"></a>

The following PI metrics are related to this insight:
+ idle\$1in\$1transaction\$1count - Number of sessions in `idle in transaction` state.
+ idle\$1in\$1transaction\$1max\$1time - The duration of the longest running transaction in the `idle in transaction` state.

# Best practices with Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.BestPractices"></a>

Following, you can find several best practices for managing your Amazon Aurora PostgreSQL DB cluster. Be sure to also review basic maintenance tasks. For more information, see [Performance and scaling for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Managing.md). 

**Topics**
+ [Avoiding slow performance, automatic restart, and failover for Aurora PostgreSQL DB instances](#AuroraPostgreSQL.BestPractices.Avoiding)
+ [Diagnosing table and index bloat](AuroraPostgreSQL.diag-table-ind-bloat.md)
+ [Managing high object counts in Amazon Aurora PostgreSQL](PostgreSQL.HighObjectCount.md)
+ [Improved memory management in Aurora PostgreSQL](AuroraPostgreSQL.BestPractices.memory.management.md)
+ [Fast failover with Amazon Aurora PostgreSQL](AuroraPostgreSQL.BestPractices.FastFailover.md)
+ [Fast recovery after failover with cluster cache management for Aurora PostgreSQL](AuroraPostgreSQL.cluster-cache-mgmt.md)
+ [Managing Aurora PostgreSQL connection churn with pooling](AuroraPostgreSQL.BestPractices.connection_pooling.md)
+ [Dead connection handling in PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.md)
+ [Tuning memory parameters for Aurora PostgreSQL](AuroraPostgreSQL.BestPractices.Tuning-memory-parameters.md)
+ [Using Amazon CloudWatch metrics to analyze resource usage for Aurora PostgreSQL](AuroraPostgreSQL_AnayzeResourceUsage.md)
+ [Using logical replication to perform a major version upgrade for Aurora PostgreSQL](AuroraPostgreSQL.MajorVersionUpgrade.md)
+ [Managing custom casts in Aurora PostgreSQL](PostgreSQL.CustomCasts.md)
+ [Best Practices for Parallel Queries in Aurora PostgreSQL](PostgreSQL.ParallelQueries.md)
+ [Troubleshooting storage issues in Aurora PostgreSQL](AuroraPostgreSQL.BestPractices.TroubleshootingStorage.md)

## Avoiding slow performance, automatic restart, and failover for Aurora PostgreSQL DB instances
<a name="AuroraPostgreSQL.BestPractices.Avoiding"></a>

If you're running a heavy workload or workloads that spike beyond the allocated resources of your DB instance, you can exhaust the resources on which you're running your application and Aurora database. To get metrics on your database instance such as CPU utilization, memory usage, and number of database connections used, you can refer to the metrics provided by Amazon CloudWatch, Performance Insights, and Enhanced Monitoring. For more information on monitoring your DB instance, see [Monitoring metrics in an Amazon Aurora cluster](MonitoringAurora.md).

If your workload exhausts the resources you're using, your DB instance might slow down, restart, or even fail over to another DB instance. To avoid this, monitor your resource utilization, examine the workload running on your DB instance, and make optimizations where necessary. If optimizations don't improve the instance metrics and mitigate the resource exhaustion, consider scaling up your DB instance before you reach its limits. For more information on available DB instance classes and their specifications, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md).

# Diagnosing table and index bloat
<a name="AuroraPostgreSQL.diag-table-ind-bloat"></a>

You can use PostgreSQL Multiversion Concurrency Control (MVCC) to help preserve data integrity. PostgreSQL MVCC works by saving an internal copy of updated or deleted rows (also called *tuples*) until a transaction is either committed or rolled back. This saved internal copy is invisible to users. However, table bloat can occur when those invisible copies aren't cleaned up regularly by the VACUUM or AUTOVACUUM utilities. Unchecked, table bloat can incur increased storage costs and slow your processing speed. 

In many cases, the default settings for VACUUM or AUTOVACUUM on Aurora are sufficient for handling unwanted table bloat. However, you may want to check for bloat if your application is experiencing the following conditions:
+ Processes a large number of transactions in a relatively short time between VACUUM processes.
+ Performs poorly and runs out of storage.

To get started, gather the most accurate information about how much space is used by dead tuples and how much you can recover by cleaning up the table and index bloat. To do so, use the `pgstattuple` extension to gather statistics on your Aurora cluster. For more information, see [pgstattuple](https://www.postgresql.org/docs/current/pgstattuple.html). Privileges to use the `pgstattuple` extension are limited to the `pg_stat_scan_tables` role and database superusers.

To create the `pgstattuple` extension on Aurora, connect a client session to the cluster, for example, psql or pgAdmin, and use the following command:

```
CREATE EXTENSION pgstattuple;
```

Create the extension in each database that you want to profile. After creating the extension, use the command line interface (CLI) to measure how much unusable space you can reclaim. Before gathering statistics, modify the cluster parameter group by setting AUTOVACUUM to 0. A setting of 0 prevents Aurora from automatically cleaning up any dead tuples left behind by your application, which can impact the accuracy of the results. Enter the following command to create a simple table:

```
postgres=> CREATE TABLE lab AS SELECT generate_series (0,100000);
SELECT 100001
```

In the following example, we run the query with AUTOVACUUM turned on for the DB cluster. The `dead_tuple_count` is 0, which indicates that the AUTOVACUUM has deleted the obsolete data or tuples from the PostgreSQL database.

To use `pgstattuple` to gather information about the table, specify the name of a table or an object identifier (OID) in the query:

```
postgres=> SELECT * FROM pgstattuple('lab');
```

```
    
    
table_len  | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
3629056    | 100001      | 2800028   | 77.16         | 0                | 0              | 0                  | 16616      | 0.46
(1 row)
```

In the following query, we turn off AUTOVACUUM and enter a command that deletes 25,000 rows from the table. As a result, the `dead_tuple_count` increases to 25000.

```
postgres=> DELETE FROM lab WHERE generate_series < 25000;    

DELETE 25000
```

```
SELECT * FROM pgstattuple('lab');
```

```
        
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
3629056 | 75001 | 2100028 | 57.87 | 25000 | 700000 | 19.29 | 16616 | 0.46
(1 row)
```

To reclaim those dead tuples, start a VACUUM process.

## Observing bloat without interrupting your application
<a name="AuroraPostgreSQL.diag-table-ind-bloat.Observing"></a>

Settings on an Aurora cluster are optimized to provide the best practices for most workloads. However, you might want to optimize a cluster to better suit your applications and use patterns. In this case, you can use the `pgstattuple` extension without disrupting a busy application. To do so, perform the following steps:

1. Clone your Aurora instance.

1. Modify the parameter file to turn off AUTOVACUUM in the clone.

1. Perform a `pgstattuple` query while testing the clone with a sample workload or with pgbench, which is a program for running benchmark tests on PostgreSQL. For more information, see [pgbench](https://www.postgresql.org/docs/current/pgbench.html).

After running your applications and viewing the result, use pg\$1repack or VACUUM FULL on the restored copy and compare the differences. If you see a significant drop in the dead\$1tuple\$1count, dead\$1tuple\$1len, or dead\$1tuple\$1percent, then adjust the vacuum schedule on your production cluster to minimize the bloat.

## Avoiding bloat in temporary tables
<a name="AuroraPostgreSQL.diag-table-ind-bloat.AvoidinginTables"></a>

If your application creates temporary tables, make sure that your application removes those temporary tables when they’re no longer needed. Autovacuum processes don’t locate temporary tables. Left unchecked, temporary tables can quickly create database bloat. Moreover, the bloat can extend into the system tables, which are the internal tables that track PostgreSQL objects and attributes, like pg\$1attribute and pg\$1depend.

When a temporary table is no longer needed, you can use a TRUNCATE statement to empty the table and free up the space. Then, manually vacuum the pg\$1attribute and pg\$1depend tables. Vacuuming these tables ensures that creating and truncating/deleting temporary tables continually isn't adding tuples and contributing to system bloat. 

You can avoid this problem while creating a temporary table by including the following syntax that deletes the new rows when content is committed: 

```
CREATE TEMP TABLE IF NOT EXISTS table_name(table_description) ON COMMIT DELETE ROWS;
```

The `ON COMMIT DELETE ROWS` clause truncates the temporary table when the transaction is committed.

## Avoiding bloat in indexes
<a name="AuroraPostgreSQL.diag-table-ind-bloat.AvoidinginIndexes"></a>

When you change an indexed field in a table, the index update results in one or more dead tuples in that index. By default, the autovacuum process cleans up bloat in indexes, but that cleanup uses a significant amount of time and resources. To specify index cleanup preferences when you create a table, include the vacuum\$1index\$1cleanup clause. By default, at table creation time, the clause is set to AUTO, which means that the server decides if your index requires cleanup when it vacuums the table. You can set the clause to ON to turn on index cleanup for a specific table, or OFF to turn off index cleanup for that table. Remember, turning off index cleanup might save time, but can potentially lead to a bloated index. 

You can manually control index cleanup when you VACUUM a table at the command line. To vacuum a table and remove dead tuples from the indexes, include the INDEX\$1CLEANUP clause with a value of ON and the table name:

```
acctg=> VACUUM (INDEX_CLEANUP ON) receivables;
        
INFO: aggressively vacuuming "public.receivables"
VACUUM
```

To vacuum a table without cleaning the indexes, specify a value of OFF:

```
acctg=> VACUUM (INDEX_CLEANUP OFF) receivables;
        
INFO: aggressively vacuuming "public.receivables"
VACUUM
```

# Managing high object counts in Amazon Aurora PostgreSQL
<a name="PostgreSQL.HighObjectCount"></a>

While PostgreSQL limitations are theoretical, having extremely high object counts in a database will cause noticeable performance impact to various operations. This documentation covers several common object types that, when having a high total count can lead to several possible impacts.

The following table provides a summary of object types and their potential impacts:


**Object types and potential impacts**  

| Type of Object | Autovacuum | Logical Replication | Major Version Upgrade | pg\$1dump / pg\$1restore | General Performance | Instance Restart | 
| --- | --- | --- | --- | --- | --- | --- | 
| [Relations](#PostgreSQL.HighObjectCount.Relations) | x |  | x | x | x |  | 
| [Temporary tables](#PostgreSQL.HighObjectCount.TempTables) | x |  |  |  | x |  | 
| [Unlogged tables](#PostgreSQL.HighObjectCount.UnloggedTables) |  | x |  |  |  | x | 
| [Partitions](#PostgreSQL.HighObjectCount.Partitions) |  |  |  |  | x |  | 
| [Temporary files](#PostgreSQL.HighObjectCount.TempFiles) |  |  |  |  | x |  | 
| [Sequences](#PostgreSQL.HighObjectCount.Sequences) |  | x |  |  |  |  | 
| [Large objects](#PostgreSQL.HighObjectCount.LargeObjects) |  | x | x |  |  |  | 

## Relations
<a name="PostgreSQL.HighObjectCount.Relations"></a>

There is not a specific hard limit regarding the number of tables in a PostgreSQL database. The theoretical limit is extremely high, but there are other practical limits that need to be kept in mind during database design.

**Impact: Autovacuum falling behind**  
Autovacuum can struggle to keep up with transaction ID growth or table bloat due to lack of workers compared to amount of work.  
**Recommended action:** There are several factors for tuning autovacuum to keep up properly with a given number of tables and given workload. See [Best practices for working with PostgreSQL autovacuum](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.BestPractices.html#AuroraPostgreSQL.BestPractices.Autovacuum) for suggestions on how to determine appropriate autovacuum settings. Use the [postgres\$1get\$1av\$1diag utility](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Appendix.PostgreSQL.CommonDBATasks.Autovacuum_Monitoring.Functions.html) to monitor problems with transaction ID growth.

**Impact: Major version upgrade / pg\$1dump and restore**  
Amazon RDS uses the "--link" option during pg\$1upgrade execution to avoid having to make copies of datafiles, the schema metadata is still required to be restored into the new version of the database. Even with parallel pg\$1restore, if there are a significant number of relations this will increase the amount of downtime.

**Impact: General performance degradation**  
General performance degradation due to catalog size. Each table and its associated columns will add to `pg_attribute`, `pg_class` and `pg_depend` tables which are frequently used in normal database operations. There won't be a specific wait event visible, but shared buffer efficiency will be impacted.  
**Recommended action:** Regularly check table bloat for these specific tables and occasionally perform a `VACUUM FULL` on these specific tables. Be aware that `VACUUM FULL` on catalog tables requires an `ACCESS EXCLUSIVE` lock which means no other queries will be able to access them until the operation completes.

**Approximate threshold:** [Millions](#PostgreSQL.HighObjectCount.Note)

## Temporary tables
<a name="PostgreSQL.HighObjectCount.TempTables"></a>

Using temporary tables is useful for test data or intermediate results and is a common pattern seen in many database engines. The implications of heavy use in PostgreSQL must be understood to avoid some of the pitfalls. Each temporary table create and drop will add rows to system catalog tables, which when they become bloated, will cause general performance issues.

**Impact: Autovacuum falling behind**  
Temporary tables aren't vacuumed by autovacuum but will hold on to transaction IDs during their existence and can lead to wraparound if not removed.  
**Recommended action:** Temporary tables will live for the duration of the session that created them or can be dropped manually. A best practice of avoiding long-running transactions with temporary tables will prevent these tables from contributing to maximum used transaction ID growth.

**Impact: General performance degradation**  
General performance degradation due to catalog size. When sessions continuously create and drop temporary tables, it will add to `pg_attribute`, `pg_class` and `pg_depend` tables which are frequently used in normal database operations. There won't be a specific wait event visible, but shared buffer efficiency will be impacted.  
**Recommended action:**  
+ Regularly check table bloat for these specific tables and occasionally perform a `VACUUM FULL` on these specific tables. Be aware that `VACUUM FULL` on catalog tables requires an `ACCESS EXCLUSIVE` lock which means no other queries will be able to access them until the operation completes.
+ If temporary tables are heavily used, prior to a major version upgrade, a `VACUUM FULL` of these specific catalog tables is highly recommended to reduce downtime.

**General best practices:**
+ Reduce the use of temporary tables by using common table expressions to produce intermediate results. These can sometimes complicate the queries needed, but will eliminate the impacts listed above.
+ Reuse temporary tables by using the `TRUNCATE` command to clear the contents instead of doing drop/create steps. This will also eliminate the problem of transaction ID growth caused by temporary tables.

**Approximate threshold:** [Tens of thousands](#PostgreSQL.HighObjectCount.Note)

## Unlogged tables
<a name="PostgreSQL.HighObjectCount.UnloggedTables"></a>

Unlogged tables can offer performance gains as they won't generate any WAL information. They must be used carefully as they offer no durability during database crash recovery as they will be truncated. This is an expensive operation in PostgreSQL as each unlogged table is truncated serially. While this operation is fast for a low number of unlogged tables, when they number in the thousands it can start to add notable delay during startup.

**Impact: Logical replication**  
Unlogged tables are generally not included in logical replication, including [Blue/Green Deployments](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html), because logical replication relies on the WAL to capture and transfer changes. Read more on how to configure Aurora PostgreSQL to [replicate unlogged tables](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-postgresql-unlogged-tables.html#aurora-postgresql-unlogged-tables-logicalrep).

**Impact: Reader Nodes**  
You can access unlogged tables only from the writer node in the Aurora DB cluster. See [Working with unlogged tables in Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-postgresql-unlogged-tables.html) for full details.

**General best practices:**
+ Unlogged tables provide limited performance benefits in Aurora PostgreSQL compared to standard PostgreSQL, so evaluate whether normal tables are more appropriate.

**Approximate threshold:** [Thousands](#PostgreSQL.HighObjectCount.Note)

## Partitions
<a name="PostgreSQL.HighObjectCount.Partitions"></a>

Partitioning can increase query performance and provide a logical organization of data. In ideal scenarios, partitioning is organized so that partition pruning can be used during query planning and execution. Using too many partitions can have negative impacts on query performance and database maintenance. The choice of how to partition a table should be made carefully, as the performance of query planning and execution can be negatively affected by poor design. See [PostgreSQL documentation](https://www.postgresql.org/docs/current/ddl-partitioning.html) for details about partitioning.

**Impact: General performance degradation**  
Sometimes planning time overhead will increase and explain plans for your queries will become more complicated, making it difficult to identify tuning opportunities. For PostgreSQL versions earlier than 18, many partitions with high workload can lead to `LWLock:LockManager` waits.  
**Recommended action:** Determine a minimum number of partitions that will allow you to complete both the organization of your data while at the same time providing performant query execution.

**Impact: Maintenance complexity**  
Very high number of partitions will introduce maintenance difficulties like pre-creation and removal. Autovacuum will treat partitions as normal relations and have to perform regular cleanup, therefore requiring enough workers to complete the task.  
**Recommended action:**  
+ Ensure you precreate partitions so that workload isn't blocked when a new partition is needed (for example, monthly based partitions) and old partitions are rolled off.
+ Ensure you have enough autovacuum workers to perform normal cleanup maintenance of all partitions.

**Approximate threshold:** [Hundreds](#PostgreSQL.HighObjectCount.Note)

## Temporary files
<a name="PostgreSQL.HighObjectCount.TempFiles"></a>

Different than temporary tables mentioned above, temporary files are created by PostgreSQL when a complex query might perform several sort or hash operations at the same time, with each operation using instance memory to store results up to the value specified in the `work_mem` parameter. When the instance memory is not sufficient, temporary files are created to store the results. See [Managing temporary files](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/PostgreSQL.ManagingTempFiles.html) for more details on temporary files. If your workload generates high numbers of these files, there can be several impacts.

**Impact: FreeLocalStorage consumption**  
Temporary files are a necessary part of PostgreSQL when query results are unable to fit in work\$1mem. Generally this is fine. However, when the workload uses this extensively, that indicates large queries are continually running and you will observe a decrease in FreeLocalStorage. See [Managing temporary files](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/PostgreSQL.ManagingTempFiles.html) for more details.

**General best practices:**
+ Monitor your temp file usage with [Performance Insights](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html).
+ Tune queries that are generating significant temporary files to see if it's possible to reduce the total number of temp files.

**Approximate threshold:** [Thousands](#PostgreSQL.HighObjectCount.Note)

## Sequences
<a name="PostgreSQL.HighObjectCount.Sequences"></a>

Sequences are the underlying object used for auto-incrementing columns in PostgreSQL and they provide uniqueness and a key for the data. These can be used on individual tables with no consequence during normal operations with one exception of logical replication.

In PostgreSQL, logical replication does not currently replicate a sequence's current value to any subscriber. To learn more, see the [Restrictions page in PostgreSQL documentation](https://www.postgresql.org/docs/current/logical-replication-restrictions.html).

**Impact: Extended switchover time**  
If you plan to use [Blue/Green Deployments](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html) for any type of configuration change or upgrade, it is important to understand the impact of a high number of sequences on switchover. One of the last phases of a switchover will synchronize the current value of sequences, and if there are several thousand, this will increase the overall switchover time.  
**Recommended action:** If your database workload would allow for the use of a shared UUID instead of a sequence-per-table approach, this would cut down on the synchronization step during a switchover.

**Approximate threshold:** [Thousands](#PostgreSQL.HighObjectCount.Note)

## Large objects
<a name="PostgreSQL.HighObjectCount.LargeObjects"></a>

Large objects are stored in a single system table named pg\$1largeobject. Each large object also has an entry in the system table pg\$1largeobject\$1metadata. These objects are created, modified and cleaned up much differently than standard relations. Large objects are not handled by autovacuum and must be periodically cleaned up via a separate process called vacuumlo. See managing large objects with the lo module for examples on managing large objects.

**Impact: Logical replication**  
Large objects are not currently replicated in PostgreSQL during logical replication. To learn more, see the [Restrictions page in PostgreSQL documentation](https://www.postgresql.org/docs/current/logical-replication-restrictions.html). In a [Blue/Green](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html) configuration, this means large objects in the blue environment aren't replicated to the green environment.

**Impact: Major version upgrade**  
An upgrade can run out of memory and fail if there are millions of large objects and the instance cannot handle them during an upgrade. The PostgreSQL major version upgrade process comprises of two broad phases: dumping the schema via pg\$1dump and restoring it through pg\$1restore. If your database has millions of large objects you need to ensure your instance has sufficient memory to handle the pg\$1dump and pg\$1restore during an upgrade and scale it to a larger instance type.

**General best practices:**
+ Regularly use the vacuumlo utility to remove any orphaned large objects you may have.
+ Consider using the BYTEA datatype for storing your large objects in the database.

**Approximate threshold:** [Millions](#PostgreSQL.HighObjectCount.Note)

## Approximate thresholds
<a name="PostgreSQL.HighObjectCount.Note"></a>

The approximate thresholds mentioned in this topic are only used to provide an estimate of how far a particular resource can scale. They represent the general range where the described impacts become more likely, but actual behavior depends on your specific workload, instance size, and configuration. While it may be possible to exceed these estimates, care and maintenance must be adhered to so as to avoid the impacts listed.

# Improved memory management in Aurora PostgreSQL
<a name="AuroraPostgreSQL.BestPractices.memory.management"></a>

Aurora PostgreSQL now includes advanced memory management capabilities to optimize database performance and resilience under varying workloads. These improvements help Aurora PostgreSQL maintain consistent availability and responsiveness, even during periods of high memory demand.

This feature is available and enabled by default in the following Aurora PostgreSQL versions for provisioned instances:
+ 15.3 and all higher minor versions
+ 14.8 and higher minor versions
+ 13.11 and higher minor versions
+ 12.15 and higher minor versions
+ 11.20 and higher minor versions

This feature is available and enabled by default in the following Aurora PostgreSQL for Aurora Serverless instances:
+ 16.3 and all higher minor versions
+ 15.7 and all higher minor versions
+ 14.12 and higher minor versions
+ 13.15 and higher minor versions

 When customer workloads use up all available free memory, the operating system may restart the database to protect resources, leading to temporary unavailability. The new memory management improvements in Aurora PostgreSQL proactively cancel certain transactions when the system experiences high memory pressure, helping to maintain database stability. 

The key features of improved memory management is as follows:
+ Cancelling database transactions that request more memory when the system is approaching critical memory pressure.
+ The system is said to be under critical memory pressure, when it exhausts all the physical memory and is about to exhaust the swap. In these circumstances, any transaction that requests memory will be cancelled in an effort to immediately reduce memory pressure in the DB instance. 
+ Essential PostgreSQL launchers and background workers such as autovacuum workers are always protected.

## Handling memory management parameters
<a name="AuroraPostgreSQL.BestPractices.memory.management.configuring"></a>

**To turn on memory management**  
This feature is turned on by default. An error message is displayed when a transaction is cancelled due to insufficient memory as shown in the following example:

```
ERROR: out of memory Detail: Failed on request of size 16777216.
```

**To turn off memory management**  
To turn off this feature, connect to the Aurora PostgreSQL DB cluster with psql and use the SET statement for the parameter values as mentioned below.

**Note**  
We recommend that you keep memory management enabled. This helps prevent potential out-of-memory errors that may lead to workload-induced database restarts due to memory exhaustion. 

The following table shows how to turn off the memory management feature for the different Aurora PostgreSQL versions:


| Aurora PostgreSQL versions | Parameter | Default | Command to turn off memory management at session level | 
| --- | --- | --- | --- | 
| 11.20, 11.21, 12.15, 12.16, 13.11, 13.12, 14.8, 14.9, 15.3, 15.4 | `rds.memory_allocation_guard` | `false` | `SET rds.memory_allocation_guard = true;` | 
| 12.17, 13.13, 14.10, 15.5, and higher versions | `rds.enable_memory_management` | `true` | `SET rds.enable_memory_management = false;` | 

**Note**  
The `rds.memory_allocation_guard` parameter has been deprecated in Aurora PostgreSQL 12.17, 13.13, 14.10, 15.5, and higher versions.

Setting the values of these parameters in the DB cluster parameter group prevents the queries from being canceled. For more information about DB cluster parameter group, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

## Limitation
<a name="AuroraPostgreSQL.BestPractices.memory.management.limitations"></a>
+ This feature is not supported in db.t3.medium instance class.

# Fast failover with Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.BestPractices.FastFailover"></a>

Following, you can learn how to make sure that failover occurs as fast as possible. To recover quickly after failover, you can use cluster cache management for your Aurora PostgreSQL DB cluster. For more information, see [Fast recovery after failover with cluster cache management for Aurora PostgreSQL](AuroraPostgreSQL.cluster-cache-mgmt.md). 

Some of the steps that you can take to make failover perform fast include the following:
+ Set Transmission Control Protocol (TCP) keepalives with short time frames, to stop longer running queries before the read timeout expires if there's a failure.
+ Set timeouts for Java Domain Name System (DNS) caching aggressively. Doing this helps ensure the Aurora read-only endpoint can properly cycle through read-only nodes on later connection attempts. 
+ Set the timeout variables used in the JDBC connection string as low as possible. Use separate connection objects for short- and long-running queries.
+ Use the read and write Aurora endpoints that are provided to connect to the cluster.
+ Use RDS API operations to test application response on server-side failures. Also, use a packet dropping tool to test application response for client-side failures.
+ Use the AWS JDBC Driver to take full advantage of the failover capabilities of Aurora PostgreSQL. For more information about the AWS JDBC Driver and complete instructions for using it, see the [Amazon Web Services (AWS) JDBC Driver GitHub repository](https://github.com/aws/aws-advanced-jdbc-wrapper).

These are covered in more detail following. 

**Topics**
+ [Setting TCP keepalives parameters](#AuroraPostgreSQL.BestPractices.FastFailover.TCPKeepalives)
+ [Configuring your application for fast failover](#AuroraPostgreSQL.BestPractices.FastFailover.Configuring)
+ [Testing failover](#AuroraPostgreSQL.BestPracticesFastFailover.Testing)
+ [Fast failover example in Java](#AuroraPostgreSQL.BestPractices.FastFailover.Example)

## Setting TCP keepalives parameters
<a name="AuroraPostgreSQL.BestPractices.FastFailover.TCPKeepalives"></a>

When you set up a TCP connection, a set of timers is associated with the connection. When the keepalive timer reaches zero, a keepalive probe packet is sent to the connection endpoint. If the probe receives a reply, you can assume that the connection is still up and running.

Turning on TCP keepalive parameters and setting them aggressively ensures that if your client can't connect to the database, any active connections are quickly closed. The application can then connect to a new endpoint.

Make sure to set the following TCP keepalive parameters:
+ `tcp_keepalives_idle` controls the time, in seconds, after which a keepalive packet is sent when no data has been sent by the socket. ACKs aren't considered data. We recommend the following setting: 

   `tcp_keepalives_idle = 1`
+ `tcp_keepalives_interval` controls the time, in seconds, between sending subsequent keepalive packets after the initial packet is sent. Set this time by using the `tcp_keepalives_idle` parameter. We recommend the following setting:

  `tcp_keepalives_interval = 1`
+ `tcp_keepalives_count` is the number of unacknowledged keepalive probes that occur before the application is notified. We recommend the following setting: 

  `tcp_keepalives_count = 5`

These settings should notify the application within five seconds when the database stops responding. If keepalive packets are often dropped within the application's network, you can set a higher `tcp_keepalives_count` value. Doing this allows for more buffer in less reliable networks, although it increases the time that it takes to detect an actual failure.

**To set TCP keepalive parameters on Linux**

1. Test how to configure your TCP keepalive parameters.

   We recommend doing so by using the command line with the following commands. This suggested configuration is system-wide. In other words, it also affects all other applications that create sockets with the `SO_KEEPALIVE` option on.

   ```
   sudo sysctl net.ipv4.tcp_keepalive_time=1
   sudo sysctl net.ipv4.tcp_keepalive_intvl=1
   sudo sysctl net.ipv4.tcp_keepalive_probes=5
   ```

1. After you've found a configuration that works for your application, persist these settings by adding the following lines to `/etc/sysctl.conf`, including any changes you made:

   ```
   tcp_keepalive_time = 1
   tcp_keepalive_intvl = 1
   tcp_keepalive_probes = 5
   ```

## Configuring your application for fast failover
<a name="AuroraPostgreSQL.BestPractices.FastFailover.Configuring"></a>

Following, you can find a discussion of several configuration changes for Aurora PostgreSQL that you can make for fast failover. To learn more about PostgreSQL JDBC driver setup and configuration, see the [PostgreSQL JDBC Driver](https://jdbc.postgresql.org/documentation/head/index.html) documentation. 

**Topics**
+ [Reducing DNS cache timeouts](#AuroraPostgreSQL.BestPractices.FastFailover.Configuring.Timeouts)
+ [Setting an Aurora PostgreSQL connection string for fast failover](#AuroraPostgreSQL.BestPractices.FastFailover.Configuring.ConnectionString)
+ [Other options for obtaining the host string](#AuroraPostgreSQL.BestPractices.FastFailover.Configuring.HostString)

### Reducing DNS cache timeouts
<a name="AuroraPostgreSQL.BestPractices.FastFailover.Configuring.Timeouts"></a>

When your application tries to establish a connection after a failover, the new Aurora PostgreSQL writer will be a previous reader. You can find it by using the Aurora read-only endpoint before DNS updates have fully propagated. Setting the java DNS time to live (TTL) to a low value, such as under 30 seconds, helps cycle between reader nodes on later connection attempts.

```
// Sets internal TTL to match the Aurora RO Endpoint TTL
java.security.Security.setProperty("networkaddress.cache.ttl" , "1");
// If the lookup fails, default to something like small to retry
java.security.Security.setProperty("networkaddress.cache.negative.ttl" , "3");
```

### Setting an Aurora PostgreSQL connection string for fast failover
<a name="AuroraPostgreSQL.BestPractices.FastFailover.Configuring.ConnectionString"></a>

To use Aurora PostgreSQL fast failover, make sure that your application's connection string has a list of hosts instead of just a single host. Following is an example connection string that you can use to connect to an Aurora PostgreSQL cluster. In this example, the hosts are in bold.

```
jdbc:postgresql://myauroracluster.cluster-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432,
myauroracluster.cluster-ro-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432
/postgres?user=<primaryuser>&password=<primarypw>&loginTimeout=2
&connectTimeout=2&cancelSignalTimeout=2&socketTimeout=60
&tcpKeepAlive=true&targetServerType=primary
```

For best availability and to avoid a dependency on the RDS API, we recommend that you maintain a file to connect with. This file contains a host string that your application reads from when you establish a connection to the database. This host string has all the Aurora endpoints available for the cluster. For more information about Aurora endpoints, see [Amazon Aurora endpoint connections](Aurora.Overview.Endpoints.md). 

For example, you might store your endpoints in a local file as shown following.

```
myauroracluster.cluster-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432,
myauroracluster.cluster-ro-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432
```

Your application reads from this file to populate the host section of the JDBC connection string. Renaming the DB cluster causes these endpoints to change. Make sure that your application handles this event if it occurs.

Another option is to use a list of DB instance nodes, as follows.

```
my-node1.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com:5432,
my-node2.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com:5432,
my-node3.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com:5432,
my-node4.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com:5432
```

The benefit of this approach is that the PostgreSQL JDBC connection driver loops through all nodes on this list to find a valid connection. In contrast, when you use the Aurora endpoints only two nodes are tried in each connection attempt. However, there's a downside to using DB instance nodes. If you add or remove nodes from your cluster and the list of instance endpoints becomes stale, the connection driver might never find the correct host to connect to.

To help ensure that your application doesn't wait too long to connect to any one host, set the following parameters aggressively:
+ `targetServerType` – Controls whether the driver connects to a write or read node. To ensure that your applications reconnect only to a write node, set the `targetServerType` value to `primary`.

  Values for the `targetServerType` parameter include `primary`, `secondary`, `any`, and `preferSecondary`. The `preferSecondary` value attempts to establish a connection to a reader first. It connects to the writer if no reader connection can be established.
+ `loginTimeout` – Controls how long your application waits to log in to the database after a socket connection has been established.
+ `connectTimeout` – Controls how long the socket waits to establish a connection to the database.

You can modify other application parameters to speed up the connection process, depending on how aggressive you want your application to be:
+ `cancelSignalTimeout` – In some applications, you might want to send a "best effort" cancel signal on a query that has timed out. If this cancel signal is in your failover path, consider setting it aggressively to avoid sending this signal to a dead host.
+ `socketTimeout` – This parameter controls how long the socket waits for read operations. This parameter can be used as a global "query timeout" to ensure no query waits longer than this value. A good practice is to have two connection handlers. One connection handler runs short-lived queries and sets this value lower. Another connection handler, for long-running queries, has this value set much higher. With this approach, you can rely on TCP keepalive parameters to stop long-running queries if the server goes down.
+ `tcpKeepAlive` – Turn on this parameter to ensure the TCP keepalive parameters that you set are respected.
+ `loadBalanceHosts` – When set to `true`, this parameter has the application connect to a random host chosen from a list of candidate hosts.

### Other options for obtaining the host string
<a name="AuroraPostgreSQL.BestPractices.FastFailover.Configuring.HostString"></a>

You can get the host string from several sources, including the `aurora_replica_status` function and by using the Amazon RDS API.

In many cases, you need to determine who the writer of the cluster is or to find other reader nodes in the cluster. To do this, your application can connect to any DB instance in the DB cluster and query the `aurora_replica_status` function. You can use this function to reduce the amount of time it takes to find a host to connect to. However, in certain network failure scenarios the `aurora_replica_status` function might show out-of-date or incomplete information.

A good way to ensure that your application can find a node to connect to is to try to connect to the cluster writer endpoint and then the cluster reader endpoint. You do this until you can establish a readable connection. These endpoints don't change unless you rename your DB cluster. Thus, you can generally leave them as static members of your application or store them in a resource file that your application reads from.

After you establish a connection using one of these endpoints, you can get information about the rest of the cluster. To do this, call the `aurora_replica_status` function. For example, the following command retrieves information with `aurora_replica_status`.

```
postgres=> SELECT server_id, session_id, highest_lsn_rcvd, cur_replay_latency_in_usec, now(), last_update_timestamp
FROM aurora_replica_status();

server_id | session_id | highest_lsn_rcvd | cur_replay_latency_in_usec | now | last_update_timestamp
-----------+--------------------------------------+------------------+----------------------------+-------------------------------+------------------------
mynode-1 | 3e3c5044-02e2-11e7-b70d-95172646d6ca | 594221001 | 201421 | 2017-03-07 19:50:24.695322+00 | 2017-03-07 19:50:23+00
mynode-2 | 1efdd188-02e4-11e7-becd-f12d7c88a28a | 594221001 | 201350 | 2017-03-07 19:50:24.695322+00 | 2017-03-07 19:50:23+00
mynode-3 | MASTER_SESSION_ID | | | 2017-03-07 19:50:24.695322+00 | 2017-03-07 19:50:23+00
(3 rows)
```

For example, the hosts section of your connection string might start with both the writer and reader cluster endpoints, as shown following.

```
myauroracluster.cluster-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432,
myauroracluster.cluster-ro-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432
```

In this scenario, your application attempts to establish a connection to any node type, primary or secondary. When your application is connected, a good practice is to first examine the read/write status of the node. To do this, query for the result of the command `SHOW transaction_read_only`.

If the return value of the query is `OFF`, then you successfully connected to the primary node. However, suppose that the return value is `ON` and your application requires a read/write connection. In this case, you can call the `aurora_replica_status` function to determine the `server_id` that has `session_id='MASTER_SESSION_ID'`. This function gives you the name of the primary node. You can use this with the `endpointPostfix` described following.

Make sure that you're aware when you connect to a replica that has stale data. When this happens, the `aurora_replica_status` function might show out-of-date information. You can set a threshold for staleness at the application level. To check this, you can look at the difference between the server time and the `last_update_timestamp` value. In general, your application should avoid flipping between two hosts due to conflicting information returned by the `aurora_replica_status` function. Your application should try all known hosts first instead of following the data returned by `aurora_replica_status`.

#### Listing instances using the DescribeDBClusters API operation, example in Java
<a name="AuroraPostgreSQL.BestPractices.FastFailover.Configuring.HostString.API"></a>

You can programmatically find the list of instances by using the [AWS SDK for Java](https://aws.amazon.com/sdk-for-java/), specifically the [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html) API operation. 

Following is a small example of how you might do this in Java 8.

```
AmazonRDS client = AmazonRDSClientBuilder.defaultClient();
DescribeDBClustersRequest request = new DescribeDBClustersRequest()
   .withDBClusterIdentifier(clusterName);
DescribeDBClustersResult result = 
rdsClient.describeDBClusters(request);

DBCluster singleClusterResult = result.getDBClusters().get(0);

String pgJDBCEndpointStr = 
singleClusterResult.getDBClusterMembers().stream()
   .sorted(Comparator.comparing(DBClusterMember::getIsClusterWriter)
   .reversed()) // This puts the writer at the front of the list
   .map(m -> m.getDBInstanceIdentifier() + endpointPostfix + ":" + singleClusterResult.getPort()))
   .collect(Collectors.joining(","));
```

Here, `pgJDBCEndpointStr` contains a formatted list of endpoints, as shown following.

```
my-node1.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com:5432,
my-node2.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com:5432
```

The variable `endpointPostfix` can be a constant that your application sets. Or your application can get it by querying the `DescribeDBInstances` API operation for a single instance in your cluster. This value remains constant within an AWS Region and for an individual customer. So it saves an API call to simply keep this constant in a resource file that your application reads from. In the example preceding, it's set to the following.

```
.cksc6xlmwcyw.us-east-1-beta.rds.amazonaws.com
```

For availability purposes, a good practice is to default to using the Aurora endpoints of your DB cluster if the API isn't responding or takes too long to respond. The endpoints are guaranteed to be up to date within the time it takes to update the DNS record. Updating the DNS record with an endpoint typically takes less than 30 seconds. You can store the endpoint in a resource file that your application consumes. 

## Testing failover
<a name="AuroraPostgreSQL.BestPracticesFastFailover.Testing"></a>

In all cases you must have a DB cluster with two or more DB instances in it.

From the server side, certain API operations can cause an outage that can be used to test how your applications responds:
+ [FailoverDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_FailoverDBCluster.html) – This operation attempts to promote a new DB instance in your DB cluster to writer.

  The following code example shows how you can use `failoverDBCluster` to cause an outage. For more details about setting up an Amazon RDS client, see [Using the AWS SDK for Java](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/basics.html). 

  ```
  public void causeFailover() {
      
      final AmazonRDS rdsClient = AmazonRDSClientBuilder.defaultClient();
     
      FailoverDBClusterRequest request = new FailoverDBClusterRequest();
      request.setDBClusterIdentifier("cluster-identifier");
  
      rdsClient.failoverDBCluster(request);
  }
  ```
+ [RebootDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RebootDBInstance.html) – Failover isn't guaranteed with this API operation. It shuts down the database on the writer, however. You can use it to test how your application responds to connections dropping. The `ForceFailover` parameter doesn't apply for Aurora engines. Instead, use the `FailoverDBCluster` API operation.
+ [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) – Modifying the `Port` parameter causes an outage when the nodes in the cluster begin listening on a new port. In general, your application can respond to this failure first by ensuring that only your application controls port changes. Also, ensure that it can appropriately update the endpoints it depends on. You can do this by having someone manually update the port when they make modifications at the API level. Or you can do this by using the RDS API in your application to determine if the port has changed.
+ [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) – Modifying the `DBInstanceClass` parameter causes an outage.
+ [DeleteDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstance.html) – Deleting the primary (writer) causes a new DB instance to be promoted to writer in your DB cluster.

From the application or client side, if you use Linux, you can test how the application responds to sudden packet drops. You can do this based on whether port, host, or if TCP keepalive packets are sent or received by using the iptables command. 

## Fast failover example in Java
<a name="AuroraPostgreSQL.BestPractices.FastFailover.Example"></a>

The following code example shows how an application might set up an Aurora PostgreSQL driver manager. 

The application calls the `getConnection` function when it needs a connection. A call to `getConnection` can fail to find a valid host. An example is when no writer is found but the `targetServerType` parameter is set to `primary`. In this case, the calling application should simply retry calling the function. 

To avoid pushing the retry behavior onto the application, you can wrap this retry call into a connection pooler. With most connection poolers, you can specify a JDBC connection string. So your application can call into `getJdbcConnectionString` and pass that to the connection pooler. Doing this means you can use faster failover with Aurora PostgreSQL.

```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import org.joda.time.Duration;

public class FastFailoverDriverManager {
   private static Duration LOGIN_TIMEOUT = Duration.standardSeconds(2);
   private static Duration CONNECT_TIMEOUT = Duration.standardSeconds(2);
   private static Duration CANCEL_SIGNAL_TIMEOUT = Duration.standardSeconds(1);
   private static Duration DEFAULT_SOCKET_TIMEOUT = Duration.standardSeconds(5);

   public FastFailoverDriverManager() {
       try {
            Class.forName("org.postgresql.Driver");
       } catch (ClassNotFoundException e) {
            e.printStackTrace();
       }

       /*
         * RO endpoint has a TTL of 1s, we should honor that here. Setting this aggressively makes sure that when
         * the PG JDBC driver creates a new connection, it will resolve a new different RO endpoint on subsequent attempts
         * (assuming there is > 1 read node in your cluster)
         */
        java.security.Security.setProperty("networkaddress.cache.ttl" , "1");
       // If the lookup fails, default to something like small to retry
       java.security.Security.setProperty("networkaddress.cache.negative.ttl" , "3");
   }

   public Connection getConnection(String targetServerType) throws SQLException {
       return getConnection(targetServerType, DEFAULT_SOCKET_TIMEOUT);
   }

   public Connection getConnection(String targetServerType, Duration queryTimeout) throws SQLException {
        Connection conn = DriverManager.getConnection(getJdbcConnectionString(targetServerType, queryTimeout));

       /*
         * A good practice is to set socket and statement timeout to be the same thing since both 
         * the client AND server will stop the query at the same time, leaving no running queries 
         * on the backend
         */
        Statement st = conn.createStatement();
        st.execute("set statement_timeout to " + queryTimeout.getMillis());
        st.close();

       return conn;
   }

   private static String urlFormat = "jdbc:postgresql://%s"
           + "/postgres"
           + "?user=%s"
           + "&password=%s"
           + "&loginTimeout=%d"
           + "&connectTimeout=%d"
           + "&cancelSignalTimeout=%d"
           + "&socketTimeout=%d"
           + "&targetServerType=%s"
           + "&tcpKeepAlive=true"
           + "&ssl=true"
           + "&loadBalanceHosts=true";
   public String getJdbcConnectionString(String targetServerType, Duration queryTimeout) {
       return String.format(urlFormat, 
                getFormattedEndpointList(getLocalEndpointList()),
                CredentialManager.getUsername(),
                CredentialManager.getPassword(),
                LOGIN_TIMEOUT.getStandardSeconds(),
                CONNECT_TIMEOUT.getStandardSeconds(),
                CANCEL_SIGNAL_TIMEOUT.getStandardSeconds(),
                queryTimeout.getStandardSeconds(),
                targetServerType
       );
   }

   private List<String> getLocalEndpointList() {
       /*
         * As mentioned in the best practices doc, a good idea is to read a local resource file and parse the cluster endpoints. 
         * For illustration purposes, the endpoint list is hardcoded here
         */
        List<String> newEndpointList = new ArrayList<>();
        newEndpointList.add("myauroracluster.cluster-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432");
        newEndpointList.add("myauroracluster.cluster-ro-c9bfei4hjlrd.us-east-1-beta.rds.amazonaws.com:5432");

       return newEndpointList;
   }

   private static String getFormattedEndpointList(List<String> endpoints) {
       return IntStream.range(0, endpoints.size())
               .mapToObj(i -> endpoints.get(i).toString())
               .collect(Collectors.joining(","));
   }
}
```

# Fast recovery after failover with cluster cache management for Aurora PostgreSQL
<a name="AuroraPostgreSQL.cluster-cache-mgmt"></a>

For fast recovery of the writer DB instance in your Aurora PostgreSQL clusters if there's a failover, use cluster cache management for Amazon Aurora PostgreSQL. Cluster cache management ensures that application performance is maintained if there's a failover. 

In a typical failover situation, you might see a temporary but large performance degradation after failover. This degradation occurs because when the failover DB instance starts, the buffer cache is empty. An empty cache is also known as a *cold cache*. A cold cache degrades performance because the DB instance has to read from the slower disk, instead of taking advantage of values stored in the buffer cache. 

With cluster cache management, you set a specific reader DB instance as the failover target. Cluster cache management ensures that the data in the designated reader's cache is kept synchronized with the data in the writer DB instance's cache. The designated reader's cache with prefilled values is known as a *warm cache*. If a failover occurs, the designated reader uses values in its warm cache immediately when it's promoted to the new writer DB instance. This approach provides your application much better recovery performance.

Cluster cache management requires that the designated reader instance have the same instance class type and size (`db.r5.2xlarge` or `db.r5.xlarge`, for example) as the writer. Keep this in mind when you create your Aurora PostgreSQL DB clusters so that your cluster can recover during a failover. For a listing of instance class types and sizes, see [Hardware specifications for DB instance classes for Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Summary).

**Note**  
Cluster cache management isn't supported for Aurora PostgreSQL secondary DB cluster that are part of Aurora global databases. For primary clusters where this feature is supported, it's recommended that no workload should run on the designated tier-0 reader.

**Contents**
+ [Configuring cluster cache management](#AuroraPostgreSQL.cluster-cache-mgmt.Configure)
  + [Enabling cluster cache management](#AuroraPostgreSQL.cluster-cache-mgmt.Enable)
  + [Setting the promotion tier priority for the writer DB instance](#AuroraPostgreSQL.cluster-cache-mgmt.Writer)
  + [Setting the promotion tier priority for a reader DB instance](#AuroraPostgreSQL.cluster-cache-mgmt.Reader)
+ [Monitoring the buffer cache](#AuroraPostgreSQL.cluster-cache-mgmt.Monitoring)
+ [Troubleshooting CCM configuration](#AuroraPostgreSQL.cluster-cache-mgmt.Troubleshooting)

## Configuring cluster cache management
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Configure"></a>

To configure cluster cache management, do the following processes in order.

**Topics**
+ [Enabling cluster cache management](#AuroraPostgreSQL.cluster-cache-mgmt.Enable)
+ [Setting the promotion tier priority for the writer DB instance](#AuroraPostgreSQL.cluster-cache-mgmt.Writer)
+ [Setting the promotion tier priority for a reader DB instance](#AuroraPostgreSQL.cluster-cache-mgmt.Reader)

**Note**  
Allow at least 1 minute after completing these steps for cluster cache management to be fully operational.

### Enabling cluster cache management
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Enable"></a>

To enable cluster cache management, take the steps described following. 

#### Console
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Enable.CON"></a>

**To enable cluster cache management**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Parameter groups**.

1. In the list, choose the parameter group for your Aurora PostgreSQL DB cluster.

   The DB cluster must use a parameter group other than the default, because you can't change values in a default parameter group. 

1. For **Parameter group actions**, choose **Edit**.

1. Set the value of the `apg_ccm_enabled` cluster parameter to **1**.

1. Choose **Save changes**.

#### AWS CLI
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Enable.CLI"></a>

To enable cluster cache management for an Aurora PostgreSQL DB cluster, use the AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) command with the following required parameters:
+ `--db-cluster-parameter-group-name`
+ `--parameters`

**Example**  
For Linux, macOS, or Unix:  

```
aws rds modify-db-cluster-parameter-group \
    --db-cluster-parameter-group-name my-db-cluster-parameter-group \
    --parameters "ParameterName=apg_ccm_enabled,ParameterValue=1,ApplyMethod=immediate"
```
For Windows:  

```
aws rds modify-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name my-db-cluster-parameter-group ^
    --parameters "ParameterName=apg_ccm_enabled,ParameterValue=1,ApplyMethod=immediate"
```

### Setting the promotion tier priority for the writer DB instance
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Writer"></a>

For cluster cache management, make sure that the promotion priority is **tier-0** for the writer DB instance of the Aurora PostgreSQL DB cluster. The *promotion tier priority* is a value that specifies the order in which an Aurora reader is promoted to the writer DB instance after a failure. Valid values are 0–15, where 0 is the first priority and 15 is the last priority. For more information about the promotion tier, see [Fault tolerance for an Aurora DB cluster](Concepts.AuroraHighAvailability.md#Aurora.Managing.FaultTolerance). 

#### Console
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Writer.Console"></a>

**To set the promotion priority for the writer DB instance to tier-0**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**.

1. Choose the **Writer** DB instance of the Aurora PostgreSQL DB cluster. 

1. Choose **Modify**. The **Modify DB Instance** page appears.

1. On the **Additional configuration** panel, choose **tier-0** for the **Failover priority**. 

1. Choose **Continue** and check the summary of modifications. 

1. To apply the changes immediately after you save them, choose **Apply immediately**. 

1. Choose **Modify DB Instance** to save your changes. 

#### AWS CLI
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Writer.CLI"></a>

To set the promotion tier priority to 0 for the writer DB instance using the AWS CLI, call the [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) command with the following required parameters:
+ `--db-instance-identifier`
+ `--promotion-tier`
+ `--apply-immediately`



**Example**  
For Linux, macOS, or Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier writer-db-instance \
    --promotion-tier 0 \
    --apply-immediately
```
For Windows:  

```
aws rds modify-db-instance ^
    --db-instance-identifier writer-db-instance ^
    ---promotion-tier 0  ^
    --apply-immediately
```

 

### Setting the promotion tier priority for a reader DB instance
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Reader"></a>

You must set only one reader DB instance for cluster cache management. To do so, choose a reader from the Aurora PostgreSQL cluster that is the same instance class and size as the writer DB instance. For example, if the writer uses `db.r5.xlarge`, choose a reader that uses this same instance class type and size. Then set its promotion tier priority to 0.

The *promotion tier priority *is a value that specifies the order in which an Aurora reader is promoted to the writer DB instance after a failure. Valid values are 0–15, where 0 is the first priority and 15 is the last priority.

#### Console
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Reader.Console"></a>

**To set the promotion priority of the reader DB instance to tier-0**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**. 

1. Choose a **Reader** DB instance of the Aurora PostgreSQL DB cluster that is the same instance class as the writer DB instance. 

1. Choose **Modify**. The **Modify DB Instance** page appears.

1. On the **Additional configuration** panel, choose **tier-0** for the **Failover priority**. 

1. Choose **Continue** and check the summary of modifications. 

1. To apply the changes immediately after you save them, choose **Apply immediately**. 

1. Choose **Modify DB Instance** to save your changes. 

#### AWS CLI
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Reader.CLI"></a>

To set the promotion tier priority to 0 for the reader DB instance using the AWS CLI, call the [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) command with the following required parameters:
+ `--db-instance-identifier`
+ `--promotion-tier`
+ `--apply-immediately`



**Example**  
For Linux, macOS, or Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier reader-db-instance \
    --promotion-tier 0 \
    --apply-immediately
```
For Windows:  

```
aws rds modify-db-instance ^
    --db-instance-identifier reader-db-instance ^
    ---promotion-tier 0  ^
    --apply-immediately
```

 

## Monitoring the buffer cache
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Monitoring"></a>

After setting up cluster cache management, you can monitor the state of synchronization between the writer DB instance's buffer cache and the designated reader's warm buffer cache. To examine the buffer cache contents on both the writer DB instance and the designated reader DB instance, use the PostgreSQL `pg_buffercache` module. For more information, see the [PostgreSQL `pg_buffercache` documentation](https://www.postgresql.org/docs/current/pgbuffercache.html). 

**Using the `aurora_ccm_status` Function**  
Cluster cache management also provides the `aurora_ccm_status` function. Use the `aurora_ccm_status` function on the writer DB instance to get the following information about the progress of cache warming on the designated reader:
+ `buffers_sent_last_minute` – How many buffers have been sent to the designated reader in the last minute.
+ `buffers_found_last_minute` – The number of frequently accessed buffers identified during the past minute. 
+ `buffers_sent_last_scan` – How many buffers have been sent to the designated reader during the last complete scan of the buffer cache.
+ `buffers_found_last_scan` – How many buffers have been identified as frequently accessed and needed to be sent during the last complete scan of the buffer cache. Buffers already cached on the designated reader aren't sent.
+ `buffers_sent_current_scan` – How many buffers have been sent so far during the current scan.
+ `buffers_found_current_scan` – How many buffers have been identified as frequently accessed in the current scan.
+ `current_scan_progress` – How many buffers have been visited so far during the current scan.

The following example shows how to use the `aurora_ccm_status` function to convert some of its output into a warm rate and warm percentage.

```
SELECT buffers_sent_last_minute*8/60 AS warm_rate_kbps, 
   100*(1.0-buffers_sent_last_scan::float/buffers_found_last_scan) AS warm_percent 
   FROM aurora_ccm_status();
```

## Troubleshooting CCM configuration
<a name="AuroraPostgreSQL.cluster-cache-mgmt.Troubleshooting"></a>

 When you enable `apg_ccm_enabled` cluster parameter, cluster cache management is automatically turned on at the instance level on the writer DB instance and one reader DB instance on the Aurora PostgreSQL DB cluster. The writer and reader instance should use the same instance class type and size. Their promotion tier priority is set to `0`. Other reader instances in the DB cluster should have a non-zero promotion tier and cluster cache management is disabled for those instances. 

The following reasons may lead to issues in the configuration and disable cluster cache management:
+ When there is no single reader DB instance set to promotion tier 0.
+ When the writer DB instance is not set to promotion tier 0.
+ When more than one reader DB instances are set to promotion tier 0.
+ When the writer and one reader DB instances with promotion tier 0 doesn't have the same instance size.

# Managing Aurora PostgreSQL connection churn with pooling
<a name="AuroraPostgreSQL.BestPractices.connection_pooling"></a>

When client applications connect and disconnect so often that Aurora PostgreSQL DB cluster response time slows, the cluster is said to be experiencing *connection churn*. Each new connection to the Aurora PostgreSQL DB cluster endpoint consumes resources, thus reducing the resources that can be used to process the actual workload. Connection churn is an issue that we recommend that you manage by following some of the best practices discussed following.

For starters, you can improve response times on Aurora PostgreSQL DB clusters that have high rates of connection churn. To do this, you can use a connection pooler, such as RDS Proxy. A *connection pooler* provides a cache of ready to use connections for clients. Almost all versions of Aurora PostgreSQL support RDS Proxy. For more information, see [Amazon RDS Proxy with Aurora PostgreSQL](Concepts.Aurora_Fea_Regions_DB-eng.Feature.RDS_Proxy.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.RDS_Proxy.apg).

If your specific version of Aurora PostgreSQL doesn't support RDS Proxy, you can use another PostgreSQL–compatible connection pooler, such as PgBouncer. To learn more, see the [PgBouncer](https://www.pgbouncer.org/) website. 

To see if your Aurora PostgreSQL DB cluster can benefit from connection pooling, you can check the `postgresql.log` file for connections and disconnections. You can also use Performance Insights to find out how much connection churn your Aurora PostgreSQL DB cluster is experiencing. Following, you can find information about both topics.

## Logging connections and disconnections
<a name="AuroraPostgreSQL.BestPractices.connection_pooling.log_connections"></a>

The PostgreSQL `log_connections` and `log_disconnections` parameters can capture connections and disconnections to the writer instance of the Aurora PostgreSQL DB cluster. By default, these parameters are turned off. To turn these parameters on, use a custom parameter group and turn on by changing the value to 1. For more information about custom parameter groups, see [DB cluster parameter groups for Amazon Aurora DB clusters](USER_WorkingWithDBClusterParamGroups.md). To check the settings, connect to your DB cluster endpoint for Aurora PostgreSQL by using psql and query as follows.

```
labdb=> SELECT setting FROM pg_settings
  WHERE name = 'log_connections';
 setting
---------
on
(1 row)
labdb=> SELECT setting FROM pg_settings
  WHERE name = 'log_disconnections';
setting
---------
on
(1 row)
```

With both of these parameters turned on, the log captures all new connections and disconnections. You see the user and database for each new authorized connection. At disconnection time, the session duration is also logged, as shown in the following example.

```
2022-03-07 21:44:53.978 UTC [16641] LOG: connection authorized: user=labtek database=labdb application_name=psql
2022-03-07 21:44:55.718 UTC [16641] LOG: disconnection: session time: 0:00:01.740 user=labtek database=labdb host=[local]
```

To check your application for connection churn, turn on these parameters if they're not on already. Then gather data in the PostgreSQL log for analysis by running your application with a realistic workload and time period. You can view the log file in the RDS console. Choose the writer instance of your Aurora PostgreSQL DB cluster, and then choose the **Logs & events** tab. For more information, see [Viewing and listing database log files](USER_LogAccess.Procedural.Viewing.md). 

Or you can download the log file from the console and use the following command sequence. This sequence finds the total number of connections authorized and dropped per minute. 

```
grep "connection authorized\|disconnection: session time:" postgresql.log.2022-03-21-16|\
awk {'print $1,$2}' |\
sort |\
uniq -c |\
sort -n -k1
```

In the example output, you can see a spike in authorized connections followed by disconnections starting at 16:12:10.

```
.....
,......
.........
5 2022-03-21 16:11:55 connection authorized:
9 2022-03-21 16:11:55 disconnection: session
5 2022-03-21 16:11:56 connection authorized:
5 2022-03-21 16:11:57 connection authorized:
5 2022-03-21 16:11:57 disconnection: session
32 2022-03-21 16:12:10 connection authorized:
30 2022-03-21 16:12:10 disconnection: session
31 2022-03-21 16:12:11 connection authorized:
27 2022-03-21 16:12:11 disconnection: session
27 2022-03-21 16:12:12 connection authorized:
27 2022-03-21 16:12:12 disconnection: session
41 2022-03-21 16:12:13 connection authorized:
47 2022-03-21 16:12:13 disconnection: session
46 2022-03-21 16:12:14 connection authorized:
41 2022-03-21 16:12:14 disconnection: session
24 2022-03-21 16:12:15 connection authorized:
29 2022-03-21 16:12:15 disconnection: session
28 2022-03-21 16:12:16 connection authorized:
24 2022-03-21 16:12:16 disconnection: session
40 2022-03-21 16:12:17 connection authorized:
42 2022-03-21 16:12:17 disconnection: session
40 2022-03-21 16:12:18 connection authorized:
40 2022-03-21 16:12:18 disconnection: session
.....
,......
.........
1 2022-03-21 16:14:10 connection authorized:
1 2022-03-21 16:14:10 disconnection: session
1 2022-03-21 16:15:00 connection authorized:
1 2022-03-21 16:16:00 connection authorized:
```

With this information, you can decide if your workload can benefit from a connection pooler. For more detailed analysis, you can use Performance Insights. 

## Detecting connection churn with Performance Insights
<a name="AuroraPostgreSQL.BestPractices.connection_pooling.detect-churn"></a>

You can use Performance Insights to assess the amount of connection churn on your Aurora PostgreSQL-Compatible Edition DB cluster. When you create an Aurora PostgreSQL DB cluster, the setting for Performance Insights is turned on by default. If you cleared this choice when you created your DB cluster, modify your cluster to turn on the feature. For more information, see [Modifying an Amazon Aurora DB cluster](Aurora.Modifying.md). 

With Performance Insights running on your Aurora PostgreSQL DB cluster, you can choose the metrics that you want to monitor. You can access Performance Insights from the navigation pane in the console. You can also access Performance Insights from the **Monitoring** tab of the writer instance for your Aurora PostgreSQL DB cluster, as shown in the following image.

![\[Image of accessing Performance Insights from within the RDS console and selected Aurora PostgreSQL DB cluster.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/postgres_connection_pooling_PI_1.png)


From the Performance Insights console, choose **Manage metrics**. To analyze your Aurora PostgreSQL DB cluster's connection and disconnection activity, choose the following metrics. These are all metrics from PostgreSQL. 
+ `xact_commit` – The number of committed transactions. 
+ `total_auth_attempts` – The number of attempted authenticated user connections per minute.
+ `numbackends` – The number of backends currently connected to the database.

![\[Image of accessing Performance Insights from within the RDS console and selected Aurora PostgreSQL DB cluster.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/postgres_connection_churn_PI_4.png)


To save the settings and display connection activity, choose **Update graph**. 

In the following image, you can see the impact of running pgbench with 100 users. The line showing connections is on a consistent upward slope. To learn more about pgbench and how to use it, see [pgbench](https://www.postgresql.org/docs/current/pgbench.html) in PostgreSQL documentation.

![\[Image of Performance Insights showing need for connection pooling.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/postgres_connection_pooling_PI_2.png)


The image shows that running a workload with as few as 100 users without a connection pooler can cause a significant increase in the number of `total_auth_attempts` throughout the duration of workload processing. Note that it's best to keep `total_auth_attempts` as close to zero as possible.

With RDS Proxy connection pooling, the connection attempts increase at the start of the workload. After setting up the connection pool, the average declines. The resources used by transactions and backend use stays consistent throughout workload processing. 

![\[Image of Performance Insights showing benefit of RDS Proxy for connection pooling.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/postgres_connection_pooling_PI_3.png)


For more information about using Performance Insights with your Aurora PostgreSQL DB cluster, see [Monitoring DB load with Performance Insights on Amazon Aurora](USER_PerfInsights.md). To analyze the metrics, see [Analyzing metrics with the Performance Insights dashboard](USER_PerfInsights.UsingDashboard.md).

## Demonstrating the benefits of connection pooling
<a name="AuroraPostgreSQL.BestPractices.connection_pooling.demo-benefit-pooling"></a>

As mentioned previously, if you determine that your Aurora PostgreSQL DB cluster has a connection churn problem, you can use RDS Proxy for improved performance. Following, you can find an example that shows the differences in processing a workload when connections are pooled and when they're not. The example uses pgbench to model a transaction workload. 

As is psql, pgbench is a PostgreSQL client application that you can install and run from your local client machine. You can also install and run it from the Amazon EC2 instance that you use for managing your Aurora PostgreSQL DB cluster. For more information, see [pgbench](https://www.postgresql.org/docs/current/pgbench.html) in the PostgreSQL documentation.

To step through this example, you first create the pgbench environment in your database. The following command is the basic template for initializing the pgbench tables in the specified database. This example uses the default main user account, `postgres`, for the login. Change it as needed for your Aurora PostgreSQL DB cluster. You create the pgbench environment in a database on the writer instance of your cluster. 

**Note**  
The pgbench initialization process drops and recreates tables named `pgbench_accounts`, `pgbench_branches`, `pgbench_history`, and `pgbench_tellers`. Be sure that the database that you choose for `dbname` when you initialize pgbench doesn't use these names.

```
pgbench -U postgres -h db-cluster-instance-1.111122223333.aws-region.rds.amazonaws.com -p 5432 -d -i -s 50 dbname
```

For pgbench, specify the following parameters.

**-d**  
Outputs a debugging report as pgbench runs.

**-h**  
Specifies the endpoint of the Aurora PostgreSQL DB cluster's writer instance.

**-i**  
Initializes the pgbench environment in the database for the benchmark tests.

**-p**  
Identifies the port used for database connections. The default for Aurora PostgreSQL is typically 5432 or 5433. 

**-s**  
Specifies the scaling factor to use for populating the tables with rows. The default scaling factor is 1, which generates 1 row in the `pgbench_branches` table, 10 rows in the `pgbench_tellers` table, and 100000 rows in the `pgbench_accounts` table.

**-U**  
Specifies the user account for the Aurora PostgreSQL DB cluster's writer instance.

After the pgbench environment is set up, you can then run benchmarking tests with and without connection pooling. The default test consists of a series of five SELECT, UPDATE, and INSERT commands per transaction that run repeatedly for the time specified. You can specify scaling factor, number of clients, and other details to model your own use cases.

As an example, the command that follows runs the benchmark for 60 seconds (-T option, for time) with 20 concurrent connections (the -c option). The -C option makes the test run using a new connection each time, rather than once per client session. This setting gives you an indication of the connection overhead. 

```
pgbench -h docs-lab-apg-133-test-instance-1.c3zr2auzukpa.us-west-1.rds.amazonaws.com -U postgres -p 5432 -T 60 -c 20 -C labdb
Password:**********
pgbench (14.3, server 13.3)
  starting vacuum...end.
  transaction type: <builtin: TPC-B (sort of)>
    scaling factor: 50
    query mode: simple
    number of clients: 20
    number of threads: 1
    duration: 60 s
    number of transactions actually processed: 495
    latency average = 2430.798 ms
    average connection time = 120.330 ms
    tps = 8.227750 (including reconnection times)
```

Running pgbench on the writer instance of an Aurora PostgreSQL DB cluster without reusing connections shows that only about 8 transactions are processed each second. This gives a total of 495 transactions during the 1-minute test.

If you reuse connections, the response from Aurora PostgreSQL DB cluster for the number of users is almost 20 times faster. With reuse, a total of 9,042 transactions is processed compared to 495 in the same amount of time and for the same number of user connections. The difference is that in the following, each connection is being reused.

```
pgbench -h docs-lab-apg-133-test-instance-1.c3zr2auzukpa.us-west-1.rds.amazonaws.com -U postgres -p 5432 -T 60 -c 20 labdb
Password:*********
pgbench (14.3, server 13.3)
      starting vacuum...end.
      transaction type: <builtin: TPC-B (sort of)>
      scaling factor: 50
      query mode: simple
      number of clients: 20
      number of threads: 1
      duration: 60 s
      number of transactions actually processed: 9042
      latency average = 127.880 ms
      initial connection time = 2311.188 ms
      tps = 156.396765 (without initial connection time)
```

This example shows you that pooling connections can significantly improve response times. For information about setting up RDS Proxy for your Aurora PostgreSQL DB cluster, see [Amazon RDS Proxyfor Aurora](rds-proxy.md). 

# Dead connection handling in PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling"></a>

Dead connections occur when a database session remains active on the server despite the client application having abandoned or terminated abnormally. This situation typically arises when client processes crash or terminate unexpectedly without properly closing their database connections or canceling ongoing requests.

PostgreSQL efficiently identifies and cleans up dead connections when server processes are idle or attempt to send data to clients. However, detection is challenging for sessions that are idle, waiting for client input, or actively running queries. To handle these scenarios, PostgreSQL provides `tcp_keepalives_*`, `tcp_user_timeout`, and `client_connection_check_interval` parameters.

**Topics**
+ [Understanding TCP keepalive](#Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.Understanding)
+ [Key TCP keepalive parameters in Aurora PostgreSQL](#Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.Parameters)
+ [Use cases for TCP keepalive settings](#Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.UseCases)
+ [Best practices](#Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.BestPractices)

## Understanding TCP keepalive
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.Understanding"></a>

TCP Keepalive is a protocol-level mechanism that helps maintain and verify connection integrity. Each TCP connection maintains kernel-level settings that govern keepalive behavior. When the keepalive timer expires, the system does the following:
+ Sends a probe packet with no data and the ACK flag set.
+ Expects a response from the remote endpoint according to TCP/IP specifications.
+ Manages connection state based on the response or lack thereof.

## Key TCP keepalive parameters in Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.Parameters"></a>


| Parameter | Description | Default values | 
| --- |--- |--- |
| tcp\$1keepalives\$1idle | Specifies number of seconds of inactivity before sending keepalive message. | 300 | 
| tcp\$1keepalives\$1interval | Specifies number of seconds between retransmissions of unacknowledged keepalive messages. | 30 | 
| tcp\$1keepalives\$1count | Maximum lost keepalive messages before declaring connection dead | 2 | 
| tcp\$1user\$1timeout | Specifies how long (in Milliseconds) unacknowledged data can remain before forcibly closing the connection. | 0 | 
| client\$1connection\$1check\$1interval | Sets the interval (in Milliseconds) for checking client connection status during long-running queries. This ensures quicker detection of closed connections. | 0 | 

## Use cases for TCP keepalive settings
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.UseCases"></a>

### Keeping idle sessions alive
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.UseCases.KeepingAlive"></a>

To prevent idle connections from being terminated by firewalls or routers due to inactivity:
+ Configure `tcp_keepalives_idle` to send keepalive packets at regular intervals.

### Detecting dead connections
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.UseCases.DetectingDead"></a>

To detect dead connections promptly:
+ Adjust `tcp_keepalives_idle`, `tcp_keepalives_interval`, and `tcp_keepalives_count`. For example, with Aurora PostgreSQL defaults, it takes about a minute (2 probes × 30 seconds) to detect a dead connection. Lowering these values can speed up detection.
+ Use `tcp_user_timeout` to specify the maximum wait time for an acknowledgment.

TCP keepalive settings help the kernel detect dead connections, but PostgreSQL may not act until the socket is used. If a session is running a long query, dead connections might only be detected after query completion. In PostgreSQL 14 and higher versions, `client_connection_check_interval` can expedite dead connection detection by periodically polling the socket during query execution.

## Best practices
<a name="Appendix.PostgreSQL.CommonDBATasks.DeadConnectionHandling.BestPractices"></a>
+ **Set reasonable keepalive intervals:** Tune `tcp_user_timeout`, `tcp_keepalives_idle`, `tcp_keepalives_count` and `tcp_keepalives_interval` to balance detection speed and resource use.
+ **Optimize for your environment:** Align settings with network behavior, firewall policies, and session needs.
+ **Leverage PostgreSQL features:** Use `client_connection_check_interval` in PostgreSQL 14 and higher versions for efficient connection checks.

# Tuning memory parameters for Aurora PostgreSQL
<a name="AuroraPostgreSQL.BestPractices.Tuning-memory-parameters"></a>

In Amazon Aurora PostgreSQL, you can use several parameters that control the amount of memory used for various processing tasks. If a task takes more memory than the amount set for a given parameter, Aurora PostgreSQL uses other resources for processing, such as by writing to disk. This can cause your Aurora PostgreSQL DB cluster to slow or potentially halt, with an out-of-memory error. 

The default setting for each memory parameter can usually handle its intended processing tasks. However, you can also tune your Aurora PostgreSQL DB cluster's memory-related parameters. You do this tuning to ensure that enough memory is allocated for processing your specific workload. 

Following, you can find information about parameters that control memory management. You can also learn how to assess memory utilization. 

## Checking and setting parameter values
<a name="AuroraPostgreSQL.BestPractices.Tuning-memory-parameters.get-parameter-values"></a>

The parameters that you can set to manage memory and assess your Aurora PostgreSQL DB cluster's memory usage include the following:
+ `work_mem` – Specifies the amount of memory that the Aurora PostgreSQL DB cluster uses for internal sort operations and hash tables before it writes to temporary disk files. 
+ `log_temp_files` – Logs temporary file creation, file names, and sizes. When this parameter is turned on, a log entry is stored for each temporary file that gets created. Turn this on to see how frequently your Aurora PostgreSQL DB cluster needs to write to disk. Turn it off again after you've gathered information about your Aurora PostgreSQL DB cluster's temporary file generation, to avoid excessive logging.
+ `logical_decoding_work_mem` – Specifies the amount of memory (in kilobytes) to be used by each internal reorder buffer before spilling to disk. This memory is used for *Logical decoding*, which is the process to create a replica. It is done by converting data from the write-ahead log (WAL) file to the logical streaming output needed by the target. 

  The value of this parameter creates a single buffer of the size specified for each replication connection. By default, it's 65536 KB. After this buffer is filled, the excess is written to disk as a file. To minimize disk activity, you can set the value of this parameter to a much higher value than that of `work_mem`. 

These are all dynamic parameters, so you can change them for the current session. To do this, connect to the Aurora PostgreSQL DB cluster with psql and using the `SET` statement, as shown following.

```
SET parameter_name TO parameter_value;
```

Session settings last for the duration of the session only. When the session ends, the parameter reverts to its setting in the DB cluster parameter group. Before changing any parameters, first check the current values by querying the `pg_settings` table, as follows.

```
SELECT unit, setting, max_val
   FROM pg_settings WHERE name='parameter_name';
```

For example, to find the value of the `work_mem` parameter, connect to the Aurora PostgreSQL DB cluster's writer instance and run the following query.

```
SELECT unit, setting, max_val, pg_size_pretty(max_val::numeric)
  FROM pg_settings WHERE name='work_mem';
unit  | setting  | max_val   | pg_size_pretty
------+----------+-----------+----------------
 kB   | 1024     | 2147483647| 2048 MB
(1 row)
```

Changing parameter settings so that they persist requires using a custom DB cluster parameter group. After exercising your Aurora PostgreSQL DB cluster with different values for these parameters using the `SET` statement, you can create a custom parameter group and apply to your Aurora PostgreSQL DB cluster. For more information, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

## Understanding the working memory parameter
<a name="AuroraPostgreSQL.BestPractices.Tuning-memory-parameters-work_mem"></a>

The working memory parameter (`work_mem`) specifies the maximum amount of memory that Aurora PostgreSQL can use to process complex queries. Complex queries include those that involve sorting or grouping operations—in other words, queries that use the following clauses:
+ ORDER BY
+ DISTINCT
+ GROUP BY
+ JOIN (MERGE and HASH)

The query planner indirectly affects how your Aurora PostgreSQL DB cluster uses working memory. The query planner generates execution plans for processing SQL statements. A given plan might break up a complex query into multiple units of work that can be run in parallel. When possible, Aurora PostgreSQL uses the amount of memory specified in the `work_mem` parameter for each session before writing to disk for each parallel process. 

Multiple database users running multiple operations concurrently and generating multiple units of work in parallel can exhaust your Aurora PostgreSQL DB cluster's allocated working memory. This can lead to excessive temporary file creation and disk I/O, or worse, it can lead to an out-of-memory error. 

### Identifying temporary file use
<a name="AuroraPostgreSQL.BestPractices.Tuning-memory-parameters.tempfile"></a>

Whenever the memory required to process queries exceeds the value specified in the `work_mem` parameter, the working data is offloaded to disk in a temporary file. You can see how often this occurs by turning on the `log_temp_files` parameter. By default, this parameter is off (it's set to -1). To capture all temporary file information, set this parameter to 0. Set `log_temp_files` to any other positive integer to capture temporary file information for files equal to or greater than that amount of data (in kilobytes). In the following image, you can see an example from AWS Management Console.

![\[Image of custom parameter group with log_temp_files set to 1024kB.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/postgres_tuning_custom_parameter.png)


After configuring temporary file logging, you can test with your own workload to see if your working memory setting is sufficient. You can also simulate a workload by using pgbench, a simple benchmarking application from the PostgreSQL community. 

The following example initializes (`-i`) `pgbench` by creating the necessary tables and rows for running the tests. In this example, the scaling factor (`-s` 50) creates 50 rows in the `pgbench_branches` table, 500 rows in `pgbench_tellers`, and 5,000,000 rows in the `pgbench_accounts` table in the `labdb` database.

```
pgbench -U postgres -h your-cluster-instance-1.111122223333.aws-regionrds.amazonaws.com -p 5432 -i -s 50 labdb
Password:
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
5000000 of 5000000 tuples (100%) done (elapsed 15.46 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done in 61.13 s (drop tables 0.08 s, create tables 0.39 s, client-side generate 54.85 s, vacuum 2.30 s, primary keys 3.51 s)
```

After initializing the environment, you can run the benchmark for a specific time (`-T`) and the number of clients (`-c`). This example also uses the `-d` option to output debugging information as the transactions are processed by the Aurora PostgreSQL DB cluster. 

```
pgbench -h -U postgres your-cluster-instance-1.111122223333.aws-regionrds.amazonaws.com -p 5432 -d -T 60 -c 10 labdb
Password:*******
pgbench (14.3)
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 50
query mode: simple
number of clients: 10
number of threads: 1
duration: 60 s
number of transactions actually processed: 1408
latency average = 398.467 ms
initial connection time = 4280.846 ms
tps = 25.096201 (without initial connection time)
```

For more information about pgbench, see [pgbench](https://www.postgresql.org/docs/current/pgbench.html) in the PostgreSQL documentation. 

You can use the psql metacommand command (`\d`) to list the relations such as tables, views, and indexes created by pgbench.

```
labdb=>  \d pgbench_accounts
 Table "public.pgbench_accounts"
  Column  |     Type      | Collation | Nullable | Default
----------+---------------+-----------+----------+---------
 aid      | integer       |           | not null |
 bid      | integer       |           |          |
 abalance | integer       |           |          |
 filler   | character(84) |           |          |
Indexes:
    "pgbench_accounts_pkey" PRIMARY KEY, btree (aid)
```

As shown in the output, the `pgbench_accounts` table is indexed on the `aid` column. To ensure that this next query uses working memory, query any nonindexed column, such as that shown in the following example. 

```
postgres=> SELECT * FROM pgbench_accounts ORDER BY bid;
```

Check the log for the temporary files. To do so, open the AWS Management Console, choose the Aurora PostgreSQL DB cluster instance, and then choose the **Logs & Events** tab. View the logs in the console or download for further analysis. As shown in the following image, the size of the temporary files needed to process the query indicates that you should consider increasing the amount specified for the `work_mem` parameter. 

![\[Image of the log file from AWS Management Console showing the temporary files.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/postgres_tuning_log_temp_files.png)


You can configure this parameter differently for individuals and groups, based on your operational needs. For example, you can set the `work_mem` parameter to 8 GB for the role named `dev_team`. 

```
postgres=> ALTER ROLE dev_team SET work_mem=‘8GB';
```

With this setting for `work_mem`, any role that's a member of the `dev_team` role is allotted up to 8 GB of working memory.

## Using indexes for faster response time
<a name="AuroraPostgreSQL.BestPractices.Tuning-memory-parameters.indexing-and-performance"></a>

If your queries are taking too long to return results, you can verify that your indexes are being used as expected. First, turn on `\timing`, the psql metacommand, as follows.

```
postgres=>  \timing on
```

After turning on timing, use a simple SELECT statement.

```
postgres=> SELECT COUNT(*) FROM
  (SELECT * FROM pgbench_accounts
  ORDER BY bid)
  AS accounts;
count 
-------
5000000
(1 row)
Time: 3119.049 ms (00:03.119)
```

As shown in the output, this query took just over 3 seconds to complete. To improve the response time, create an index on `pgbench_accounts`, as follows.

```
postgres=> CREATE INDEX ON pgbench_accounts(bid);
CREATE INDEX
```

Rerun the query, and notice the faster response time. In this example, the query completed about 5 times faster, in about half a second. 

```
postgres=>  SELECT COUNT(*) FROM (SELECT * FROM pgbench_accounts ORDER BY bid) AS accounts;
 count 
-------
 5000000
(1 row)
Time: 567.095 ms
```

## Adjusting working memory for logical decoding
<a name="AuroraPostgreSQL.BestPractices.Tuning-memory-parameters.logical-decoding-work-mem"></a>

Logical replication has been available in all versions of Aurora PostgreSQL since its introduction in PostgreSQL version 10. When you configure logical replication, you can also set the `logical_decoding_work_mem` parameter to specify the amount of memory that the logical decoding process can use for the decoding and streaming process. 

During logical decoding, write-ahead log (WAL) records are converted to SQL statements that are then sent to another target for logical replication or another task. When a transaction is written to the WAL and then converted, the entire transaction must fit into the value specified for `logical_decoding_work_mem`. By default, this parameter is set to 65536 KB. Any overflow is written to disk. This means that it must be reread from the disk before it can be sent to its destination, thus slowing the overall process. 

You can assess the amount of transaction overflow in your current workload at a specific point in time by using the `aurora_stat_file` function as shown in the following example. 

```
SELECT split_part (filename, '/', 2)
   AS slot_name, count(1) AS num_spill_files,
   sum(used_bytes) AS slot_total_bytes,
   pg_size_pretty(sum(used_bytes)) AS slot_total_size
   FROM aurora_stat_file()
   WHERE filename like '%spill%'
   GROUP BY 1;
  slot_name | num_spill_files | slot_total_bytes | slot_total_size
------------+-----------------+------------------+-----------------
 slot_name  |       590       |      411600000   | 393 MB
(1 row)
```

This query returns the count and size of spill files on your Aurora PostgreSQL DB cluster when the query is invoked. Longer running workloads might not have any spill files on disk yet. To profile long-running workloads, we recommend that you create a table to capture the spill file information as the workload runs. You can create the table as follows.

```
CREATE TABLE spill_file_tracking AS
    SELECT now() AS spill_time,*
    FROM aurora_stat_file()
    WHERE filename LIKE '%spill%';
```

To see how spill files are used during logical replication, set up a publisher and subscriber and then start a simple replication. For more information, see [Setting up logical replication for your Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Replication.Logical.Configure.md). With replication under way, you can create a job that captures the result set from the `aurora_stat_file()` spill file function, as follows.

```
INSERT INTO spill_file_tracking
  SELECT now(),*
  FROM aurora_stat_file()
  WHERE filename LIKE '%spill%';
```

Use the following psql command to run the job once per second.

```
\watch 0.5
```

As the job is running, connect to the writer instance from another psql session. Use the following series of statements to run a workload that exceeds the memory configuration and causes Aurora PostgreSQL to create a spill file. 

```
labdb=> CREATE TABLE my_table (a int PRIMARY KEY, b int);
CREATE TABLE
labdb=> INSERT INTO my_table SELECT x,x FROM generate_series(0,10000000) x;
INSERT 0 10000001
labdb=> UPDATE my_table SET b=b+1;
UPDATE 10000001
```

These statements take several minutes to complete. When finished, press the Ctrl key and the C key together to stop the monitoring function. Then use the following command to create a table to hold the information about the Aurora PostgreSQL DB cluster's spill file usage.

```
SELECT spill_time, split_part (filename, '/', 2)
    AS slot_name, count(1)
    AS spills, sum(used_bytes)
    AS slot_total_bytes, pg_size_pretty(sum(used_bytes))
    AS slot_total_size FROM spill_file_tracking
  GROUP BY 1,2 ORDER BY 1;
                   spill_time | slot_name             | spills | slot_total_bytes | slot_total_size
------------------------------+-----------------------+--------+------------------+-----------------
2022-04-15 13:42:52.528272+00 | replication_slot_name | 1      | 142352280        | 136 MB
2022-04-15 14:11:33.962216+00 | replication_slot_name | 4      | 467637996        | 446 MB
2022-04-15 14:12:00.997636+00 | replication_slot_name | 4      | 569409176        | 543 MB
2022-04-15 14:12:03.030245+00 | replication_slot_name | 4      | 569409176        | 543 MB
2022-04-15 14:12:05.059761+00 | replication_slot_name | 5      | 618410996        | 590 MB
2022-04-15 14:12:07.22905+00  | replication_slot_name | 5      | 640585316        | 611 MB
(6 rows)
```

The output shows that running the example created five spill files that used 611 MB of memory. To avoid writing to disk, we recommend setting the `logical_decoding_work_mem` parameter to the next highest memory size, 1024. 

# Using Amazon CloudWatch metrics to analyze resource usage for Aurora PostgreSQL
<a name="AuroraPostgreSQL_AnayzeResourceUsage"></a>

Aurora automatically sends metric data to CloudWatch in 1-minute periods. You can analyze resource usage for Aurora PostgreSQL using CloudWatch metrics. You can evaluate the network throughput and the network usage with the metrics. 

## Evaluating network throughput with CloudWatch
<a name="AuroraPostgreSQL_AnayzeResourceUsage.EvaluateNetworkThroughput"></a>

When your system usage approaches the resource limits for your instance type, the processing can slow down. You can use CloudWatch **Logs Insights** to monitor your storage resource usage and ensure that sufficient resources are available. When needed, you can modify the DB instance to a larger instance class. 

 Aurora storage processing may be slow because of:
+ Insufficient network bandwidth between the client and DB instance.
+ Insufficient network bandwidth to the storage subsystem.
+ A workload that is large for your instance type.

You can query CloudWatch **Logs Insights** to generate a graph of Aurora storage resource usage to monitor the resources. The graph shows the CPU utilization and metrics to help you decide whether to scale up to a larger instance size. For information about the query syntax for CloudWatch **Logs Insights**, see [CloudWatch Logs Insights query syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html) 

To use CloudWatch, you need to export your Aurora PostgreSQL log files to CloudWatch. You can also modify your existing cluster to export logs to CloudWatch. For information about exporting logs to CloudWatch, see [Turning on the option to publish logs to Amazon CloudWatch](AuroraPostgreSQL.CloudWatch.Publishing.md). 

You need the **Resource ID** of your DB instance to query the CloudWatch **Logs Insights**. The **Resource ID** is available in the **Configuration** tab in your console: 

![\[Resource ID in the Configuration tab of your Aurora console.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/Aur_PG_resource_id.png)


**To query your log files for resource storage metrics:**

1. Open the CloudWatch console at [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

   The CloudWatch overview home page appears.

1. If necessary, change the AWS Region. In the navigation bar, choose the AWS Region where your AWS resources are located. For more information, see [Regions and endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html).

1. In the navigation pane, choose **Logs** and then **Logs Insights**.

   The **Logs Insights** page appears.

1. Select the log files from the drop-down list to analyze.

1. Enter the following query in the field, replacing `<resource ID>` with the resource ID of your DB cluster:

   `filter @logStream = <resource ID> | parse @message "\"Aurora Storage Daemon\"*memoryUsedPc\":*,\"cpuUsedPc\":*," as a,memoryUsedPc,cpuUsedPc | display memoryUsedPc,cpuUsedPc #| stats avg(xcpu) as avgCpu by bin(5m) | limit 10000`

1. Click **Run query**.

   The storage utilization graph is displayed.

   The following image provides the **Logs Insights** page and the graph display.  
![\[Logs Insights page and the graph display.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/AurPG-CW-LogsInsights.png)

## Evaluating DB instance usage for Aurora PostgreSQL with CloudWatch metrics
<a name="AuroraPostgreSQL_AnayzeResourceUsage.EvaluateInstanceUsage"></a>

You can use CloudWatch metrics to watch your instance throughput and discover if your instance class provides sufficient resources for your applications. For information about your DB instance class limits, go to [Hardware specifications for DB instance classesfor Aurora](Concepts.DBInstanceClass.Summary.md) and locate the specifications for your DB instance class to find your network performance.

If your DB instance usage is near the instance class limit, then performance may begin to slow. The CloudWatch metrics can confirm this situation so you can plan to manually scale-up to a larger instance class. 

Combine the following CloudWatch metrics values to find out if you are nearing the instance class limit:
+ **NetworkThroughput** – The amount of network throughput received and transmitted by the clients for each instance in the Aurora DB cluster. This throughput value doesn't include network traffic between instances in the DB cluster and the cluster volume. 
+ **StorageNetworkThroughput** – The amount of network throughput received and sent to the Aurora storage subsystem by each instance in the Aurora DB cluster. 

Add the **NetworkThroughput** to the **StorageNetworkThroughput** to find the network throughput received from and sent to the Aurora storage subsystem by each instance in your Aurora DB cluster. The instance class limit for your instance should be greater than the sum of these two combined metrics. 

 You can use the following metrics to review additional details of the network traffic from your client applications when sending and receiving:
+ **NetworkReceiveThroughput** – The amount of network throughput received from clients by each instance in the Aurora PostgreSQL DB cluster. This throughput doesn't include network traffic between instances in the DB cluster and the cluster volume.
+ **NetworkTransmitThroughput** – The amount of network throughput sent to clients by each instance in the Aurora DB cluster. This throughput doesn't include network traffic between instances in the DB cluster and the cluster volume.
+ **StorageNetworkReceiveThroughput** – The amount of network throughput received from the Aurora storage subsystem by each instance in the DB cluster.
+ **StorageNetworkTransmitThroughput** – The amount of network throughput sent to the Aurora storage subsystem by each instance in the DB cluster.

Add all of these metrics together to evaluate how your network usage compares to the instance class limit. The instance class limit should be greater than the sum of these combined metrics.

The network limits and CPU utilization for storage are mutual. When the network throughput increases, then the CPU utilization also increases. Monitoring the CPU and network usage provides information about how and why the resources are being exhausted.

To help minimize network usage, you can consider:
+ Using a larger instance class.
+ Using `pg_partman` partitioning strategies.
+ Dividing the write requests in batches to reduce overall transactions.
+ Directing the read-only workload to a read-only instance.
+ Deleting any unused indexes.
+ Checking for bloated objects and VACUUM. In the case of severe bloat, use the PostgreSQL extension `pg_repack`. For more information about `pg_repack`, see [Reorganize tables in PostgreSQL databases with minimal locks](https://reorg.github.io/pg_repack/).

# Using logical replication to perform a major version upgrade for Aurora PostgreSQL
<a name="AuroraPostgreSQL.MajorVersionUpgrade"></a>

Using logical replication and Aurora fast cloning, you can perform a major version upgrade that uses the current version of Aurora PostgreSQL database while gradually migrating the changing data to the new major version database. This low downtime upgrade process is referred to as a blue/green upgrade. The current version of the database is referred as the "blue" environment and the new database version is referred as the "green" environment. 

Aurora fast cloning fully loads the existing data by taking a snapshot of the source database. Fast cloning uses a copy-on-write protocol built on top of the Aurora storage layer, which allows you to create a clone of database in a short time. This method is very effective when upgrading to a large database.

Logical replication in PostgreSQL tracks and transfers your data changes from initial instance to a new instance running in parallel until you move to the newer version of PostgreSQL. Logical replication uses a publish and subscribe model. For more information about Aurora PostgreSQL logical replication, see [Replication with Amazon Aurora PostgreSQL](AuroraPostgreSQL.Replication.md).

**Tip**  
You can minimize the downtime required for a major version upgrade by using the managed Amazon RDS Blue/Green Deployment feature. For more information, see [Using Amazon Aurora Blue/Green Deployments for database updates](blue-green-deployments.md).

**Topics**
+ [Requirements](#AuroraPostgreSQL.MajorVersionUpgrade.Requirements)
+ [Limitations](#AuroraPostgreSQL.MajorVersionUpgrade.Limitations)
+ [Setting and checking parameter values](#AuroraPostgreSQL.MajorVersionUpgrade.Parameters)
+ [Upgrading Aurora PostgreSQL to a new major version](#AuroraPostgreSQL.MajorVersionUpgrade.StartLogicalReplication)
+ [Performing post-upgrade tasks](#AuroraPostgreSQL.MajorVersionUpgrade.PostUpgrade)

## Requirements
<a name="AuroraPostgreSQL.MajorVersionUpgrade.Requirements"></a>

You must meet the following requirements to perform this low downtime upgrade process:
+ You must have rds\$1superuser permissions.
+ The Aurora PostgreSQL DB cluster you intend to upgrade must be running a supported version that can perform major version upgrades using logical replication. Make sure to apply any minor version updates and patches to your DB cluster. The `aurora_volume_logical_start_lsn` function that is used in this technique is supported in the following versions of Aurora PostgreSQL:
  + 15.2 and higher 15 versions
  + 14.3 and higher 14 versions
  + 13.6 and higher 13 versions
  + 12.10 and higher 12 versions
  + 11.15 and higher 11 versions
  + 10.20 and higher 10 versions

  For more information on `aurora_volume_logical_start_lsn` function, see [aurora\$1volume\$1logical\$1start\$1lsn](aurora_volume_logical_start_lsn.md).
+ All of your tables must have a primary key or include a [PostgreSQL identity column](https://www.postgresql.org/docs/current/sql-createtable.html).
+ Configure the security group for your VPC to allow inbound and outbound access between the two Aurora PostgreSQL DB clusters, both old and new. You can grant access to a specific classless inter-domain routing (CIDR) range or to another security group in your VPC or in a peer VPC. (Peer VPC requires a VPC peering connection.)

**Note**  
For detailed information about the permissions required to configure and manage a running logical replication scenario, see the [PostgreSQL core documentation](https://www.postgresql.org/docs/13/logical-replication-security.html). 

## Limitations
<a name="AuroraPostgreSQL.MajorVersionUpgrade.Limitations"></a>

 When you are performing low downtime upgrade on your Aurora PostgreSQL DB cluster to upgrade it to a new major version, you are using the native PostgreSQL logical replication feature. It has the same capabilities and limitations as the PostgreSQL logical replication. For more information, see [PostgreSQL logical replication](https://www.postgresql.org/docs/13/logical-replication.html). 
+ Data definition language (DDL) commands are not replicated. 
+ Replication doesn't support schema changes in a live database. The schema is recreated in its original form during the cloning process. If you change the schema after cloning, but before completing the upgrade, it isn't reflected in the upgraded instance.
+ Large objects are not replicated, but you can store data in normal tables.
+ Replication is only supported by tables, including partitioned tables. Replication to other types of relations, such as views, materialized views, or foreign tables, is not supported.
+ Sequence data is not replicated and requires a manual update post-failover.

**Note**  
This upgrade doesn't support auto-scripting. You should perform all the steps manually.

## Setting and checking parameter values
<a name="AuroraPostgreSQL.MajorVersionUpgrade.Parameters"></a>

 Before upgrading, configure the writer instance of your Aurora PostgreSQL DB cluster to act as a publication server. The instance should use a custom DB cluster parameter group with the following settings: 
+ `rds.logical_replication` – Set this parameter to 1. The `rds.logical_replication` parameter serves the same purpose as a standalone PostgreSQL server's `wal_level` parameter and other parameters that control the write-ahead log file management.
+ `max_replication_slots` – Set this parameter to the total number of subscriptions that you plan to create. If you are using AWS DMS, set this parameter to the number of AWS DMS tasks that you plan to use for changed data capture from this DB cluster.
+ `max_wal_senders` – Set to the number of concurrent connections, plus a few extra, to make available for management tasks and new sessions. If you are using AWS DMS, the number of max\$1wal\$1senders should be equal to the number of concurrent sessions plus the number of AWS DMS tasks that may be working at any given time. 
+ `max_logical_replication_workers` – Set to the number of logical replication workers and table synchronization workers that you expect. It's generally safe to set the number of replication workers to the same value used for max\$1wal\$1senders. The workers are taken from the pool of background processes (max\$1worker\$1processes) allocated for the server.
+  `max_worker_processes` – Set to the number of background processes for the server. This number should be large enough to allocate workers for replication, auto-vacuum processes, and other maintenance processes that may take place concurrently.

When you upgrade to a newer version of Aurora PostgreSQL, you need to duplicate any parameters that you modified in the earlier version of the parameter group. These parameters are applied to the upgraded version. You can query the `pg_settings` table to get a list of parameter settings so that you can re-create them on your new Aurora PostgreSQL DB cluster.

For example, to get the settings for replication parameters, run the following query:

```
SELECT name, setting FROM pg_settings WHERE name in 
('rds.logical_replication', 'max_replication_slots', 
'max_wal_senders', 'max_logical_replication_workers', 
'max_worker_processes');
```

## Upgrading Aurora PostgreSQL to a new major version
<a name="AuroraPostgreSQL.MajorVersionUpgrade.StartLogicalReplication"></a>

**To prepare the publisher (blue)**

1. In the example that follows, the source writer instance (blue) is an Aurora PostgreSQL DB cluster running PostgreSQL version 11.15. This is the publication node in our replication scenario. For this demonstration, our source writer instance hosts a sample table that holds a series of values:

   ```
   CREATE TABLE my_table (a int PRIMARY KEY);
   INSERT INTO my_table VALUES (generate_series(1,100));
   ```

1. To create a publication on the source instance, connect to the writer node of the instance with psql (the CLI for PostgreSQL) or with the client of your choice). Enter the following command in each database:

   ```
   CREATE PUBLICATION publication_name FOR ALL TABLES;
   ```

   The publication\$1name specifies the name of the publication.

1. You also need to create a replication slot on the instance. The following command creates a replication slot and loads the `pgoutput` [logical decoding plug-in](https://www.postgresql.org/docs/current/logicaldecoding-explanation.html). The plug-in changes content read from write-ahead logging (WAL) to the logical replication protocol, and filters the data according to the publication specification.

   ```
   SELECT pg_create_logical_replication_slot('replication_slot_name', 'pgoutput');
   ```

**To clone the publisher**

1. Use the Amazon RDS Console to create a clone of the source instance. Highlight the instance name in the Amazon RDS Console, and then choose **Create clone** in the **Actions** menu.  
![\[In-place upgrade of an Aurora MySQL DB cluster from version 2 to version 3\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-logicalreplication-mvu-create-clone.png)

1. Provide a unique name for the instance. Most of the settings are defaults from the source instance. When you’ve made changes required for the new instance, choose **Create clone**.   
![\[In-place upgrade of an Aurora MySQL DB cluster from version 2 to version 3\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-logicalreplication-mvu-create-clone-note.png)

1. While the target instance is initiating, the **Status** column of the writer node displays Creating in the **Status** column. When the instance is ready, the status changes to Available.

**To prepare the clone for an upgrade**

1. The clone is the ‘green’ instance in the deployment model. It is the host of the replication subscription node. When the node becomes available, connect with psql and query the new writer node to obtain the log sequence number (LSN). The LSN identifies the beginning of a record in the WAL stream.

   ```
   SELECT aurora_volume_logical_start_lsn();
   ```

1. In the response from the query, you find the LSN number. You need this number later in the process, so make a note of it.

   ```
   postgres=> SELECT aurora_volume_logical_start_lsn();
   aurora_volume_logical_start_lsn 
   ---------------
   0/402E2F0
   (1 row)
   ```

1. Before upgrading the clone, drop the clone's replication slot.

   ```
   SELECT pg_drop_replication_slot('replication_slot_name');
   ```

**To upgrade the cluster to a new major version**
+ After cloning the provider node, use the Amazon RDS Console to initiate a major version upgrade on the subscription node. Highlight the instance name in the RDS console, and select the **Modify** button. Select the updated version and your updated parameter groups, and apply the settings immediately to upgrade the target instance.  
![\[In-place upgrade of an Aurora MySQL DB cluster from version 2 to version 3\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-logicalreplication-mvu-modify-DB-cluster.png)
+ You can also use the CLI to perform an upgrade:

  ```
  aws rds modify-db-cluster —db-cluster-identifier $TARGET_Aurora_ID —engine-version 13.6 —allow-major-version-upgrade —apply-immediately
  ```

**To prepare the subscriber (green)**

1. When the clone becomes available after the upgrade, connect with psql and define the subscription. To do so, you need to specify the following options in the `CREATE SUBSCRIPTION` command: 
   + `subscription_name` – The name of the subscription.
   + `admin_user_name` – The name of an administrative user with rds\$1superuser permissions.
   + `admin_user_password` – The password associated with the administrative user.
   + `source_instance_URL` – The URL of the publication server instance.
   + `database` – The database that the subscription server will connect with.
   + `publication_name` – The name of the publication server.
   + `replication_slot_name` – The name of the replication slot.

   ```
   CREATE SUBSCRIPTION subscription_name 
   CONNECTION 'postgres://admin_user_name:admin_user_password@source_instance_URL/database' PUBLICATION publication_name 
   WITH (copy_data = false, create_slot = false, enabled = false, connect = true, slot_name = 'replication_slot_name');
   ```

1.  After creating the subscription, query the [pg\$1replication\$1origin](https://www.postgresql.org/docs/14/catalog-pg-replication-origin.html) view to retrieve the roname value, which is the identifier of the replication origin. Each instance has one `roname`: 

   ```
   SELECT * FROM pg_replication_origin;
   ```

   For example:

   ```
   postgres=> 
   SELECT * FROM pg_replication_origin;
    
   roident | roname 
   ---------+----------
   1 | pg_24586
   ```

1. Provide the LSN that you saved from the earlier query of the publication node and the `roname` returned from the subscription node [INSTANCE] in the command. This command uses the `[pg\$1replication\$1origin\$1advance](https://www.postgresql.org/docs/14/functions-admin.html)` function to specify the starting point in the log sequence for replication.

   ```
   SELECT pg_replication_origin_advance('roname', 'log_sequence_number');
   ```

   `roname` is the identifier returned by the pg\$1replication\$1origin view.

   `log_sequence_number` is the value returned by the earlier query of the `aurora_volume_logical_start_lsn` function. 

1. Then, use the `ALTER SUBSCRIPTION... ENABLE` clause to turn on logical replication.

   ```
   ALTER SUBSCRIPTION subscription_name ENABLE;
   ```

1. At this point, you can confirm that replication is working. Add a value to the publication instance, then confirm that the value is replicated to the subscription node.

   Then, use the following command to monitor replication lag on the publication node:

   ```
   SELECT now() AS CURRENT_TIME, slot_name, active, active_pid, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(),
   confirmed_flush_lsn)) AS diff_size, pg_wal_lsn_diff(pg_current_wal_lsn(),
   confirmed_flush_lsn) AS diff_bytes FROM pg_replication_slots WHERE slot_type = 'logical';
   ```

   For example:

   ```
   postgres=> SELECT now() AS CURRENT_TIME, slot_name, active, active_pid, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), 
   confirmed_flush_lsn)) AS diff_size, pg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn) AS diff_bytes FROM pg_replication_slots WHERE slot_type = 'logical';
    
   current_time                   | slot_name             | active | active_pid | diff_size | diff_bytes 
   -------------------------------+-----------------------+--------+------------+-----------+------------
   2022-04-13 15:11:00.243401+00  | replication_slot_name | t      | 21854      | 136 bytes | 136
   (1 row)
   ```

   You can monitor the replication lag using `diff_size` and `diff_bytes` values. When these values reach 0, the replica has caught up to the source DB instance. 

## Performing post-upgrade tasks
<a name="AuroraPostgreSQL.MajorVersionUpgrade.PostUpgrade"></a>

When the upgrade is complete, the instance status displays as **Available** in the **Status** column of the console dashboard. On the new instance, we recommend you do the following:
+ Redirect your applications to point to the writer node.
+ Add reader nodes to manage the caseload and provide high-availability in the event of an issue with the writer node.
+ Aurora PostgreSQL DB clusters occasionally require operating system updates. These updates might include a newer version of glibc library. During such updates, we recommend you to follow the guidelines as described in [Collations supported in Aurora PostgreSQL ](PostgreSQL-Collations.md). 
+ Update user permissions on the new instance to ensure access.

After testing your application and data on the new instance, we recommend that you make a final backup of your initial instance before removing it. For more information about using logical replication on an Aurora host, see [Setting up logical replication for your Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Replication.Logical.Configure.md). 

# Managing custom casts in Aurora PostgreSQL
<a name="PostgreSQL.CustomCasts"></a>

**Type casting** in PostgreSQL is the process of converting a value from one data type to another. PostgreSQL provides built-in casts for many common conversions, but you can also create custom casts to define how specific type conversions should behave.

A cast specifies how to perform a conversion from one data type to another. For example, converting text `'123'` to integer `123`, or numeric `45.67` to text `'45.67'`.

For comprehensive information about PostgreSQL casting concepts and syntax, refer to the [PostgreSQL CREATE CAST Documentation](https://www.postgresql.org/docs/current/sql-createcast.html).

Starting with Aurora PostgreSQL versions 13.23, 14.20, 15.15, 16.11, 17.7, and 18.1, you can use the rds\$1casts extension to install additional casts for built-in types, while still being able to create your own casts for custom types.

**Topics**
+ [Installing and using the rds\$1casts extension](#PostgreSQL.CustomCasts.Installing)
+ [Supported casts](#PostgreSQL.CustomCasts.Supported)
+ [Creating or dropping casts](#PostgreSQL.CustomCasts.Creating)
+ [Creating custom casts with proper context strategy](#PostgreSQL.CustomCasts.BestPractices)

## Installing and using the rds\$1casts extension
<a name="PostgreSQL.CustomCasts.Installing"></a>

To create the `rds_casts` extension, connect to the writer instance of your Aurora PostgreSQL DB cluster as an `rds_superuser` and run the following command:

```
CREATE EXTENSION IF NOT EXISTS rds_casts;
```

## Supported casts
<a name="PostgreSQL.CustomCasts.Supported"></a>

Create the extension in each database where you want to use custom casts. After creating the extension, use the following command to view all available casts:

```
SELECT * FROM rds_casts.list_supported_casts();
```

This function lists the available cast combinations (source type, target type, coercion context, and cast function). For example, if you want to create `text` to `numeric` as an `implicit` cast. You can use the following query to find if the cast is available to create:

```
SELECT * FROM rds_casts.list_supported_casts()
WHERE source_type = 'text' AND target_type = 'numeric';
 id | source_type | target_type |          qualified_function          | coercion_context
----+-------------+-------------+--------------------------------------+------------------
 10 | text        | numeric     | rds_casts.rds_text_to_numeric_custom | implicit
 11 | text        | numeric     | rds_casts.rds_text_to_numeric_custom | assignment
 13 | text        | numeric     | rds_casts.rds_text_to_numeric_custom | explicit
 20 | text        | numeric     | rds_casts.rds_text_to_numeric_inout  | implicit
 21 | text        | numeric     | rds_casts.rds_text_to_numeric_inout  | assignment
 23 | text        | numeric     | rds_casts.rds_text_to_numeric_inout  | explicit
```

The rds\$1casts extension provides two types of conversion functions for each cast:
+ *\$1inout functions* - Use PostgreSQL's standard I/O conversion mechanism, behaving identically to casts created with the INOUT method
+ *\$1custom functions* - Provide enhanced conversion logic that handles edge cases, such as converting empty strings to NULL values to avoid conversion errors

The `inout` functions replicate PostgreSQL's native casting behavior, while `custom` functions extend this functionality by handling scenarios that standard INOUT casts cannot accommodate, such as converting empty strings to integers.

## Creating or dropping casts
<a name="PostgreSQL.CustomCasts.Creating"></a>

You can create and drop supported casts using two methods:

### Cast creation
<a name="PostgreSQL.CustomCasts.Creating.Methods"></a>

**Method 1: Using native CREATE CAST command**

```
CREATE CAST (text AS numeric)
WITH FUNCTION rds_casts.rds_text_to_numeric_custom
AS IMPLICIT;
```

**Method 2: Using the rds\$1casts.create\$1cast function**

```
SELECT rds_casts.create_cast(10);
```

The `create_cast` function takes the ID from the `list_supported_casts()` output. This method is simpler and ensures you're using the correct function and context combination. This id is guaranteed to remain the same across different postgres versions.

To verify the cast was created successfully, query the pg\$1cast system catalog:

```
SELECT oid, castsource::regtype, casttarget::regtype, castfunc::regproc, castcontext, castmethod
FROM pg_cast
WHERE castsource = 'text'::regtype AND casttarget = 'numeric'::regtype;
  oid   | castsource | casttarget |               castfunc               | castcontext | castmethod
--------+------------+------------+--------------------------------------+-------------+------------
 356372 | text       | numeric    | rds_casts.rds_text_to_numeric_custom | i           | f
```

The `castcontext` column shows: `e` for EXPLICIT, `a` for ASSIGNMENT, or `i` for IMPLICIT.

### Dropping casts
<a name="PostgreSQL.CustomCasts.Dropping"></a>

**Method 1: Using DROP CAST command**

```
DROP CAST IF EXISTS (text AS numeric);
```

**Method 2: Using the rds\$1casts.drop\$1cast function**

```
SELECT rds_casts.drop_cast(10);
```

The `drop_cast` function takes the same ID used when creating the cast. This method ensures you're dropping the exact cast that was created with the corresponding ID.

## Creating custom casts with proper context strategy
<a name="PostgreSQL.CustomCasts.BestPractices"></a>

When creating multiple casts for integer types, operator ambiguity errors can occur if all casts are created as IMPLICIT. The following example demonstrates this issue by creating two implicit casts from text to different integer widths:

```
-- Creating multiple IMPLICIT casts causes ambiguity
postgres=> CREATE CAST (text AS int4) WITH FUNCTION rds_casts.rds_text_to_int4_custom(text) AS IMPLICIT;
CREATE CAST
postgres=> CREATE CAST (text AS int8) WITH FUNCTION rds_casts.rds_text_to_int8_custom(text) AS IMPLICIT;
CREATE CAST

postgres=> CREATE TABLE test_cast(col int);
CREATE TABLE
postgres=> INSERT INTO test_cast VALUES ('123'::text);
INSERT 0 1
postgres=> SELECT * FROM test_cast WHERE col='123'::text;
ERROR:  operator is not unique: integer = text
LINE 1: SELECT * FROM test_cast WHERE col='123'::text;
                                         ^
HINT:  Could not choose a best candidate operator. You might need to add explicit type casts.
```

The error occurs because PostgreSQL cannot determine which implicit cast to use when comparing an integer column with a text value. Both the int4 and int8 implicit casts are valid candidates, creating ambiguity.

To avoid this operator ambiguity, use ASSIGNMENT context for smaller integer widths and IMPLICIT context for larger integer widths:

```
-- Use ASSIGNMENT for smaller integer widths
CREATE CAST (text AS int2)
WITH FUNCTION rds_casts.rds_text_to_int2_custom(text)
AS ASSIGNMENT;

CREATE CAST (text AS int4)
WITH FUNCTION rds_casts.rds_text_to_int4_custom(text)
AS ASSIGNMENT;

-- Use IMPLICIT for larger integer widths
CREATE CAST (text AS int8)
WITH FUNCTION rds_casts.rds_text_to_int8_custom(text)
AS IMPLICIT;

postgres=> INSERT INTO test_cast VALUES ('123'::text);
INSERT 0 1
postgres=> SELECT * FROM test_cast WHERE col='123'::text;
 col
-----
 123
(1 row)
```

With this strategy, only the int8 cast is implicit, so PostgreSQL can unambiguously determine which cast to use.

# Best Practices for Parallel Queries in Aurora PostgreSQL
<a name="PostgreSQL.ParallelQueries"></a>

Parallel query execution is a feature in PostgreSQL that allows a single SQL query to be broken into smaller tasks that are processed simultaneously by multiple background worker processes. Instead of executing a query entirely in a single backend process, PostgreSQL can distribute parts of the query, such as scans, joins, aggregations, or sorting, across multiple CPU cores. The *leader process* coordinates this execution and gathers the results from the *parallel workers*.

However, for most production workloads, especially high-concurrency OLTP systems, we recommend disabling automatic parallel query execution. While parallelism can accelerate queries on large datasets in analytics or reporting workloads, it introduces significant risks that often outweigh the benefits in busy production environments.

Parallel execution also introduces significant overhead. Each parallel worker is a full PostgreSQL backend process, which requires process forking (copying memory structures and initializing process state) and authentication (consuming connection slots from your `max_connections` limit). Each worker also consumes its own memory, including `work_mem` for sorting and hashing operations, with multiple workers per query, memory usage multiplies quickly (e.g., 4 workers × 64MB `work_mem` = 256MB per query). As a result, parallel queries can consume considerably more system resources than single-process queries. If not tuned properly, they may lead to CPU saturation (multiple workers overwhelming available processing capacity), increased context switching (the operating system frequently switching between numerous worker processes, adding overhead and reducing throughput), or connection exhaustion (since each parallel worker consumes a connection slot, a single query with 4 workers uses 5 connections total, 1 leader \$1 4 workers, which can quickly exhaust your connection pool under high concurrency, preventing new client connections and causing application failures). These issues are particularly severe under high-concurrency workloads where multiple queries may attempt parallel execution simultaneously.

PostgreSQL decides whether to use parallelism based on cost estimates. In some cases, the planner may automatically switch to a parallel plan if it appears cheaper even when it's not ideal in practice. This can happen if index statistics are outdated or if bloat makes sequential scans appear more attractive than index lookups. Because of this behavior, automatic parallel plans can sometimes introduce regressions in query performance or system stability.

To get the most benefit from parallel queries in Aurora PostgreSQL, it's important to test and tune them based on your workload, monitor system impact, and disable automatic parallel plan selection in favor of query-level control.

## Configuration Parameters
<a name="PostgreSQL.ParallelQueries.ConfigurationParameters"></a>

PostgreSQL uses several parameters to control the behavior and availability of parallel queries. Understanding and tuning these is critical to achieving predictable performance:


| Parameter | Description | Default | 
| --- | --- | --- | 
| max\$1parallel\$1workers | Maximum number of background worker processes that can run in total | GREATEST(\$1DBInstanceVCPU/2,8) | 
| max\$1parallel\$1workers\$1per\$1gather | Maximum number of workers per query plan node (e.g., per Gather) | 2 | 
| parallel\$1setup\$1cost | Planner cost added for initiating parallel query infrastructure | 1000 | 
| parallel\$1tuple\$1cost | Cost per tuple processed in parallel mode (impacts planner decision) | 0.1 | 
| force\$1parallel\$1mode | Forces planner to test parallel plans (off, on, regress) | off | 

### Key Considerations
<a name="PostgreSQL.ParallelQueries.ConfigurationParameters.KeyConsiderations"></a>
+ `max_parallel_workers` controls the total pool of parallel workers. If set too low, some queries may fall back to serial execution.
+ `max_parallel_workers_per_gather` affects how many workers a single query can use. A higher value increases concurrency, but also resource usage.
+ `parallel_setup_cost` and `parallel_tuple_cost` affect the planner's cost model. Lowering these can make parallel plans more likely to be chosen.
+ `force_parallel_mode` is useful for testing but should not be used in production unless necessary.

**Note**  
The default value of the `max_parallel_workers` parameter is dynamically calculated based on instance size using the formula `GREATEST($DBInstanceVCPU/2, 8)`. This means that when you scale your Aurora instance to a larger compute size with more vCPUs, the maximum number of available parallel workers will automatically increase. As a result, queries that previously executed serially or with limited parallelism may suddenly utilize more parallel workers after a scale-up operation, potentially leading to unexpected increases in connection usage, CPU utilization, and memory consumption. It's important to monitor parallel query behavior after any compute scaling event and adjust `max_parallel_workers_per_gather` if necessary to maintain predictable resource usage.

## Identify Parallel Queries Usage
<a name="PostgreSQL.ParallelQueries.IdentifyUsage"></a>

Queries may flip to parallel plans based on data distribution or statistics. For example:

```
SELECT count(*) FROM customers WHERE last_login < now() - interval '6 months';
```

This query might use an index for recent data, but switch to a parallel sequential scan for historical data.

You can log query execution plans by loading the `auto_explain` module. To learn more, see [Logging execution plans of queries](https://aws.amazon.com/premiumsupport/knowledge-center/rds-postgresql-tune-query-performance/#) in the AWS knowledge center.

You can monitor query execution plans in your Aurora PostgreSQL DB instance to detect the execution plans contributing to current database load and to track performance statistics of execution plans over time using the `aurora_compute_plan_id` parameter. To learn more, see [Monitoring query execution plans and peak memory for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

You can monitor [CloudWatch Database Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Database-Insights-Database-Instance-Dashboard.html) for Parallel Query related wait events. To learn more about Parallel Query related wait events, go through [IPC:parallel wait events](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/apg-ipc-parallel.html)

From PostgreSQL version 18, you can monitor parallel worker activity using new columns in [https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW) and [https://www.postgresql.org/docs/current/pgstatstatements.html](https://www.postgresql.org/docs/current/pgstatstatements.html):
+ `parallel_workers_to_launch`: Number of parallel workers planned to be launched
+ `parallel_workers_launched`: Number of parallel workers actually launched

These metrics help identify discrepancies between planned and actual parallelism, which can indicate resource constraints or configuration issues. Use the following queries to monitor parallel execution:

For Database-level parallel worker metrics:

```
SELECT datname, parallel_workers_to_launch, parallel_workers_launched
FROM pg_stat_database
WHERE datname = current_database();
```

For Query-level parallel worker metrics

```
SELECT query, parallel_workers_to_launch, parallel_workers_launched
FROM pg_stat_statements
ORDER BY parallel_workers_launched;
```

## How to Control Parallelism
<a name="PostgreSQL.ParallelQueries.ControlParallelism"></a>

There are several ways to control query parallelism, each designed for different scenarios and requirements.

To disable automatic parallelism globally, [modify your parameter group](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithParamGroups.Modifying.html) to set:

```
max_parallel_workers_per_gather = 0;
```

For persistent, user-specific settings, the ALTER ROLE command provides a way to set parameters that will apply to all future sessions for a particular user.

For example:

`ALTER ROLE username SET max_parallel_workers_per_gather = 4;` ensures that every time this user connects to the database, their sessions will use this parallel worker setting when required.

Session-level control can be achieved using the SET command, which modifies parameters for the duration of the current database session. This is particularly useful when you need to temporarily adjust settings without affecting other users or future sessions. Once set, these parameters remain in effect until explicitly reset or until the session ends. The commands are straightforward:

```
SET max_parallel_workers_per_gather = 4;
-- Run your queries
RESET max_parallel_workers_per_gather;
```

For even more granular control, SET LOCAL allows you to modify parameters for a single transaction. This is ideal when you need to adjust settings for a specific set of queries within a transaction, after which the settings automatically revert to their previous values. This approach helps prevent unintended effects on other operations within the same session.

### Utilize Query Plan Management (QPM)
<a name="PostgreSQL.ParallelQueries.ControlParallelism.QPM"></a>

In Aurora PostgreSQL, the Query Plan Management (QPM) feature is designed to ensure plan adaptability and stability, regardless of database environment changes that might cause query plan regression. For more information, see [Overview of Aurora PostgreSQL query plan management](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html). QPM provides some control over the optimizer. Review approved plans in QPM to ensure they align with current parallelism settings. Update or remove outdated plans that may be forcing suboptimal parallel execution.

You can also fix the plans using pg\$1hint\$1plan. For more information, see [Fixing plans using pg\$1hint\$1plan](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Maintenance.html#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan). You can use the hint named `Parallel` to enforce parallel execution. For more information, see the [Hints for parallel plans](https://github.com/ossc-db/pg_hint_plan/blob/master/docs/hint_table.md#hints-for-parallel-plans).

## Diagnosing Parallel Query Behavior
<a name="PostgreSQL.ParallelQueries.Diagnosing"></a>

Use `EXPLAIN (ANALYZE, VERBOSE)` to confirm whether a query used parallel execution:
+ Look for nodes such as `Gather`, `Gather Merge`, or `Parallel Seq Scan`.
+ Compare plans with and without parallelism.

To disable parallelism temporarily for comparison:

```
SET max_parallel_workers_per_gather = 0;
EXPLAIN ANALYZE <your_query>;
RESET max_parallel_workers_per_gather;
```

# Troubleshooting storage issues in Aurora PostgreSQL
<a name="AuroraPostgreSQL.BestPractices.TroubleshootingStorage"></a>

If the amount of working memory needed for sort or index-creation operations exceeds the amount allocated by the `work_mem` parameter, Aurora PostgreSQL writes the excess data to temporary disk files. When it writes the data, Aurora PostgreSQL uses the same storage space that it uses for storing error and message logs, that is, *local storage*. Each instance in your Aurora PostgreSQL DB cluster has an amount of local storage available. The amount of storage is based on its DB instance class. To increase the amount of local storage, you need to modify the instance to use a larger DB instance class. For DB instance class specifications, see [Hardware specifications for DB instance classesfor Aurora](Concepts.DBInstanceClass.Summary.md). 

You can monitor your Aurora PostgreSQL DB cluster's local storage space by watching the Amazon CloudWatch metric for `FreeLocalStorage`. This metric reports the amount of storage available to each DB instance in the Aurora DB cluster for temporary tables and logs. For more information, see [Monitoring Amazon Aurora metrics with Amazon CloudWatch](monitoring-cloudwatch.md). 

Sorting, indexing, and grouping operations start in working memory but often must be offloaded to local storage. If your Aurora PostgreSQL DB cluster runs out of local storage because of these types of operations, you can resolve the issue by taking one of the following actions.
+ Increase the amount of working memory. This reduces the need to use local storage. By default, PostgreSQL allocates 4 MB for each sort, group, and index operation. To check the current working memory value for your Aurora PostgreSQL DB cluster's writer instance, connect to the instance using `psql` and run the following command.

  ```
  postgres=> SHOW work_mem;
  work_mem
  ----------
   4MB
  (1 row)
  ```

  You can increase the working memory at the session level before sort, group, and other operations, as follows.

  ```
  SET work_mem TO '1 GB';
  ```

  For more information about working memory, see [Resource Consumption](https://www.postgresql.org/docs/current/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY) in the PostgreSQL documentation. 
+ Change the log retention period so that logs are stored for shorter timeframes. To learn how, see [Aurora PostgreSQL database log files](USER_LogAccess.Concepts.PostgreSQL.md).

For Aurora PostgreSQL DB clusters larger than 40 TB, don't use db.t2, db.t3, or db.t4g instance classes. We recommend using the T DB instance classes only for development and test servers, or other non-production servers. For more information, see [DB instance class types](Concepts.DBInstanceClass.Types.md).

# Replication with Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Replication"></a>

Following, you can find information about replication with Amazon Aurora PostgreSQL, including how to monitor and use logical replication.

**Topics**
+ [Using Aurora Replicas](#AuroraPostgreSQL.Replication.Replicas)
+ [Improving the read availability of Aurora Replicas](#AuroraPostgreSQL.Replication.Replicas.SRO)
+ [Monitoring Aurora PostgreSQL replication](#AuroraPostgreSQL.Replication.Monitoring)
+ [Overview of PostgreSQL logical replication with Aurora](AuroraPostgreSQL.Replication.Logical.md)
+ [Setting up logical replication for your Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Replication.Logical.Configure.md)
+ [Turning off logical replication](AuroraPostgreSQL.Replication.Logical.Stop.md)
+ [Monitoring the write-through cache and logical slots for Aurora PostgreSQL logical replication](AuroraPostgreSQL.Replication.Logical-monitoring.md)
+ [Example: Using logical replication with Aurora PostgreSQL DB clusters](AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example.md)
+ [Example: Logical replication using Aurora PostgreSQL and AWS Database Migration Service](AuroraPostgreSQL.Replication.Logical.DMS-Example.md)
+ [Configuring IAM authentication for logical replication connections](AuroraPostgreSQL.Replication.Logical.IAM-auth.md)

## Using Aurora Replicas
<a name="AuroraPostgreSQL.Replication.Replicas"></a>

An *Aurora Replica* is an independent endpoint in an Aurora DB cluster, best used for scaling read operations and increasing availability. An Aurora DB cluster can include up to 15 Aurora Replicas located throughout the Availability Zones of the Aurora DB cluster's AWS Region.

The DB cluster volume is made up of multiple copies of the data for the DB cluster. However, the data in the cluster volume is represented as a single, logical volume to the primary writer DB instance and to Aurora Replicas in the DB cluster. For more information about Aurora Replicas, see [Aurora Replicas](Aurora.Replication.md#Aurora.Replication.Replicas).

Aurora Replicas work well for read scaling because they're fully dedicated to read operations on your cluster volume. The writer DB instance manages write operations. The cluster volume is shared among all instances in your Aurora PostgreSQL DB cluster. Thus, no extra work is needed to replicate a copy of the data for each Aurora Replica.

With Aurora PostgreSQL, when an Aurora Replica is deleted, its instance endpoint is removed immediately, and the Aurora Replica is removed from the reader endpoint. If there are statements running on the Aurora Replica that is being deleted, there is a three minute grace period. Existing statements can finish gracefully during the grace period. When the grace period ends, the Aurora Replica is shut down and deleted.

Aurora PostgreSQL DB clusters support Aurora Replicas in different AWS Regions, using Aurora global database. For more information, see [Using Amazon Aurora Global Database](aurora-global-database.md). 

**Note**  
With the read availability feature, if you want to reboot the Aurora Replicas in the DB cluster, you have to perform it manually. For the DB clusters created prior to this feature rebooting the writer DB instance automatically reboots the Aurora Replicas. The automatic reboot re-establishes an entry point that guarantees read/write consistency across the DB cluster.

## Improving the read availability of Aurora Replicas
<a name="AuroraPostgreSQL.Replication.Replicas.SRO"></a>

Aurora PostgreSQL improves the read availability in the DB cluster by continuously serving the read requests when the writer DB instance restarts or when the Aurora Replica is unable to keep up with the write traffic.

The read availability feature is available by default on the following versions of Aurora PostgreSQL:
+ 16.1 and all higher versions
+ 15.2 and higher 15 versions
+ 14.7 and higher 14 versions
+ 13.10 and higher 13 versions
+ 12.14 and higher 12 versions

The read availability feature is supported by Aurora global database in the following versions:
+ 16.1 and all higher versions
+ 15.4 and higher 15 versions
+ 14.9 and higher 14 versions
+ 13.12 and higher 13 versions
+ 12.16 and higher 12 versions

To use the read availability feature for a DB cluster created on one of these versions prior to this launch, restart the writer instance of the DB cluster.

When you modify static parameters of your Aurora PostgreSQL DB cluster, you must restart the writer instance so that the parameter changes take effect. For example, you must restart the writer instance when you set the value of `shared_buffers`. With the read availability feature of Aurora Replicas, the DB cluster maintains improved availability, reducing the impact on it when the writer instance restarts. The reader instances don't restart and continue to respond to the read requests. To apply static parameter changes, reboot each individual reader instance. 

An Aurora PostgreSQL DB cluster's Aurora Replica can recover from replication errors such as writer restarts, failover, slow replication, and network issues by quickly recovering to in-memory database state after it reconnects with the writer. This approach allows Aurora Replica instances to reach consistency with the latest storage updates while the client database is still available.

The in-progress transactions that conflict with replication recovery might receive an error but the client can retry these transactions, after the readers catch up with the writer. 

### Monitoring Aurora Replicas
<a name="AuroraPostgreSQL.Replication.Replicas.SRO.monitoring"></a>

You can monitor the Aurora Replicas when recovering from a writer disconnect. Use the metrics below to check for the latest information about the reader instance and to track in-process read-only transactions.
+ The `aurora_replica_status` function is updated to return the most up-to-date information for the reader instance when it is still connected. The last update time stamp in `aurora_replica_status` is always empty for the row corresponding to the DB instance that the query is executed on. This indicates that the reader instance has the latest data.
+ When the Aurora replica disconnects from the writer instance and reconnects back, the following database event is emitted:

  `Read replica has been disconnected from the writer instance and reconnected.`
+ When a read-only query is canceled due to a recovery conflict, you might see one or more of the following error messages in the database error log:

  `Canceling statement due to conflict with recovery`.

  `User query may not have access to page data to replica disconnect.`

  `User query might have tried to access a file that no longer exists.`

  `When the replica reconnects, you will be able to repeat your command.`

### Limitations
<a name="AuroraPostgreSQL.Replication.Replicas.SRO.limitations"></a>

The following limitations apply to Aurora Replicas with the read availability feature:
+ Aurora Replicas of secondary DB cluster can restart if the data can't be streamed from the writer instance during replication recovery.
+ Aurora Replicas don't support online replication recovery if one is already in progress and will restart. 
+ Aurora Replicas will restart when your DB instance is nearing the transaction ID wraparound. For more information on transaction ID wraparound, see [Preventing Transaction ID Wraparound Failures](https://www.postgresql.org/docs/current/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND                     ).
+ Aurora Replicas can restart when the replication process is blocked under certain circumstances.

## Monitoring Aurora PostgreSQL replication
<a name="AuroraPostgreSQL.Replication.Monitoring"></a>

Read scaling and high availability depend on minimal lag time. You can monitor how far an Aurora Replica is lagging behind the writer DB instance of your Aurora PostgreSQL DB cluster by monitoring the Amazon CloudWatch `ReplicaLag` metric. Because Aurora Replicas read from the same cluster volume as the writer DB instance, the `ReplicaLag` metric has a different meaning for an Aurora PostgreSQL DB cluster. The `ReplicaLag` metric for an Aurora Replica indicates the lag for the page cache of the Aurora Replica compared to that of the writer DB instance.

For more information on monitoring RDS instances and CloudWatch metrics, see [Monitoring metrics in an Amazon Aurora cluster](MonitoringAurora.md).

# Overview of PostgreSQL logical replication with Aurora
<a name="AuroraPostgreSQL.Replication.Logical"></a>

By using PostgreSQL's logical replication feature with your Aurora PostgreSQL DB cluster, you can replicate and synchronize individual tables rather than the entire database instance. Logical replication uses a publish and subscribe model to replicate changes from a source to one or more recipients. It works by using change records from the PostgreSQL write-ahead log (WAL). The source, or *publisher*, sends WAL data for the specified tables to one or more recipients (*subscriber*), thus replicating the changes and keeping a subscriber's table synchronized with the publisher's table. The set of changes from the publisher are identified using a *publication*. Subscribers get the changes by creating a *subscription* that defines the connection to the publisher's database and its publications. A *replication slot* is the mechanism used in this scheme to track progress of a subscription. 

For Aurora PostgreSQL DB clusters, the WAL records are saved on Aurora storage. The Aurora PostgreSQL DB cluster that's acting as the publisher in a logical replication scenario reads the WAL data from Aurora storage, decodes it, and sends it to the subscriber so that the changes can be applied to the table on that instance. The publisher uses a *logical decoder* to decode the data for use by subscribers. By default, Aurora PostgreSQL DB clusters use the native PostgreSQL `pgoutput` plugin when sending data. Other logical decoders are available. For example, Aurora PostgreSQL also supports the `[wal2json](https://github.com/eulerto/wal2json)` plugin that converts WAL data to JSON. 

As of Aurora PostgreSQL version 14.5, 13.8, 12.12, and 11.17, Aurora PostgreSQL augments the PostgreSQL logical replication process with a *write-through cache* to improve performance. The WAL transaction logs are cached locally, in a buffer, to reduce the amount of disk I/O, that is, reading from Aurora storage during logical decoding. The write-through cache is used by default whenever you use logical replication for your Aurora PostgreSQL DB cluster. Aurora provides several functions that you can use to manage the cache. For more information, see [Monitoring the Aurora PostgreSQL logical replication write-through cache](AuroraPostgreSQL.Replication.Logical-monitoring.md#AuroraPostgreSQL.Replication.Logical-write-through-cache). 

Logical replication is supported by all currently available Aurora PostgreSQL versions. For more information, [Amazon Aurora PostgreSQL updates](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) in the *Release Notes for Aurora PostgreSQL*. 

Logical replication is supported by Babelfish for Aurora PostgreSQL from the following versions:
+ 15.7 and higher versions
+ 16.3 and higher versions

**Note**  
In addition to the native PostgreSQL logical replication feature introduced in PostgreSQL 10, Aurora PostgreSQL also supports the `pglogical` extension. For more information, see [Using pglogical to synchronize data across instances](Appendix.PostgreSQL.CommonDBATasks.pglogical.md).

For more information about PostgreSQL logical replication, see [Logical replication](https://www.postgresql.org/docs/current/logical-replication.html) and [Logical decoding concepts](https://www.postgresql.org/docs/current/logicaldecoding-explanation.html) in the PostgreSQL documentation.

**Note**  
PostgreSQL 16 added support for logical decoding from read replicas. This feature isn't supported on Aurora PostgreSQL.

# Setting up logical replication for your Aurora PostgreSQL DB cluster
<a name="AuroraPostgreSQL.Replication.Logical.Configure"></a>

Setting up logical replication requires `rds_superuser` privileges. Your Aurora PostgreSQL DB cluster must be configured to use a custom DB cluster parameter group so that you can set the necessary parameters as detailed in the procedure following. For more information, see [DB cluster parameter groups for Amazon Aurora DB clusters](USER_WorkingWithDBClusterParamGroups.md). 

**To set up PostgreSQL logical replication for an Aurora PostgreSQL DB cluster**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose your Aurora PostgreSQL DB cluster.

1. Open the **Configuration** tab. Among the Instance details, find the **Parameter group** link with **DB cluster parameter group** for **Type**.

1. Choose the link to open the custom parameters associated with your Aurora PostgreSQL DB cluster. 

1. In the **Parameters** search field, type `rds` to find the `rds.logical_replication` parameter. The default value for this parameter is `0`, meaning that it's turned off by default. 

1. Choose **Edit parameters** to access the property values, and then choose `1` from the selector to turn on the feature. Depending on your expected usage, you might also need to change the settings for the following parameters. However, in many cases, the default values are sufficient. 
   + `max_replication_slots` – Set this parameter to a value that's at least equal to your planned total number of logical replication publications and subscriptions. If you are using AWS DMS, this parameter should equal at least your planned change data capture tasks from the cluster, plus logical replication publications and subscriptions. 
   + `max_wal_senders` and `max_logical_replication_workers` – Set these parameters to a value that's at least equal to the number of logical replication slots that you intend to be active, or the number of active AWS DMS tasks for change data capture. Leaving a logical replication slot inactive prevents the vacuum from removing obsolete tuples from tables, so we recommend that you monitor replication slots and remove inactive slots as needed. 
   + `max_worker_processes` – Set this parameter to a value that's at least equal to the total of the `max_logical_replication_workers`, `autovacuum_max_workers`, and `max_parallel_workers` values. On small DB instance classes, background worker processes can affect application workloads, so monitor the performance of your database if you set `max_worker_processes` higher than the default value. (The default value is the result of `GREATEST(${DBInstanceVCPU*2},8}`, which means that, by default, this is either 8 or twice the CPU equivalent of the DB instance class, whichever is greater).
**Note**  
You can modify parameter values in a customer-created DB parameter group. you can't change the parameter values in a default DB parameter group.

1. Choose **Save changes**.

1. Reboot the writer instance of your Aurora PostgreSQL DB cluster so that your changes takes effect. In the Amazon RDS console, choose the primary DB instance of the cluster and choose **Reboot** from the **Actions** menu. 

1. When the instance is available, you can verify that logical replication is turned on, as follows. 

   1. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster.

      ```
      psql --host=your-db-cluster-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
      ```

   1. Verify that logical replication has been enabled by using the following command.

      ```
      labdb=> SHOW rds.logical_replication;
       rds.logical_replication
      -------------------------
       on
      (1 row)
      ```

   1. Verify that the `wal_level` is set to `logical`. 

      ```
      labdb=> SHOW wal_level;
        wal_level
      -----------
       logical
      (1 row)
      ```

For an example of using logical replication to keep a database table synchronized with changes from a source Aurora PostgreSQL DB cluster, see [Example: Using logical replication with Aurora PostgreSQL DB clusters](AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example.md). 

# Turning off logical replication
<a name="AuroraPostgreSQL.Replication.Logical.Stop"></a>

After completing your replication tasks, you should stop the replication process, drop replication slots, and turn off logical replication. Before dropping slots, make sure that they're no longer needed. Active replication slots can't be dropped. 

**To turn off logical replication**

1. Drop all replication slots.

   To drop all of the replication slots, connect to the publisher and run the following SQL command.

   ```
   SELECT pg_drop_replication_slot(slot_name)
     FROM pg_replication_slots
    WHERE slot_name IN (SELECT slot_name FROM pg_replication_slots);
   ```

   The replication slots can't be active when you run this command.

1. Modify the custom DB cluster parameter group associated with the publisher as detailed in [Setting up logical replication for your Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Replication.Logical.Configure.md), but set the `rds.logical_replication` parameter to 0. 

   For more information about custom parameter groups, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md). 

1. Restart the publisher Aurora PostgreSQL DB cluster for the change to the `rds.logical_replication` parameter to take effect.

# Monitoring the write-through cache and logical slots for Aurora PostgreSQL logical replication
<a name="AuroraPostgreSQL.Replication.Logical-monitoring"></a>

Monitor the logical replication write-through cache and manage logical slots to improve performance for your Aurora PostgreSQL DB cluster. Following, find more information about the write-through cache and logical slots.

**Topics**
+ [Monitoring the Aurora PostgreSQL logical replication write-through cache](#AuroraPostgreSQL.Replication.Logical-write-through-cache)
+ [Managing logical slots for Aurora PostgreSQL](#AuroraPostgreSQL.Replication.Logical.Configure.managing-logical-slots)

## Monitoring the Aurora PostgreSQL logical replication write-through cache
<a name="AuroraPostgreSQL.Replication.Logical-write-through-cache"></a>

By default, Aurora PostgreSQL versions 14.5, 13.8, 12.12, and 11.17 and higher use a write-through cache to improve the performance for logical replication. Without the write-through cache, Aurora PostgreSQL uses the Aurora storage layer in its implementation of the native PostgreSQL logical replication process. It does so by writing WAL data to storage and then reading the data back from storage to decode it and send (replicate) to its targets (subscribers). This can result in bottlenecks during logical replication for Aurora PostgreSQL DB clusters. 

The write-through cache minimizes reliance on the Aurora storage layer. Instead of consistently writing to and reading from this layer, Aurora PostgreSQL uses a buffer to cache the logical WAL stream for use during the replication process, reducing the need to access disk. This buffer is the native PostgreSQL cache used in logical replication and is identified in Aurora PostgreSQL DB cluster parameters as `rds.logical_wal_cache`.

When you use logical replication with your Aurora PostgreSQL DB cluster (for the versions that support the write-through cache), you can monitor the cache hit ratio to see how well it's working for your use case. To do so, connect to your Aurora PostgreSQL DB cluster's write instance using `psql` and then use the Aurora function, `aurora_stat_logical_wal_cache`, as shown in the following example.

```
SELECT * FROM aurora_stat_logical_wal_cache();
```

The function returns output such as the following.

```
name       | active_pid | cache_hit | cache_miss | blks_read | hit_rate | last_reset_timestamp
-----------+------------+-----------+------------+-----------+----------+--------------
test_slot1 | 79183      | 24        | 0          | 24        | 100.00%  | 2022-08-05 17:39...
test_slot2 |            | 1         | 0          |  1        | 100.00%  | 2022-08-05 17:34...
(2 rows)
```

The `last_reset_timestamp` values have been shortened for readability. For more information about this function, see [aurora\$1stat\$1logical\$1wal\$1cache](aurora_stat_logical_wal_cache.md).

Aurora PostgreSQL provides the following two functions for monitoring the write-through cache. 
+ The `aurora_stat_logical_wal_cache` function – For reference documentation, see [aurora\$1stat\$1logical\$1wal\$1cache](aurora_stat_logical_wal_cache.md).
+ The `aurora_stat_reset_wal_cache` function – For reference documentation, see [aurora\$1stat\$1reset\$1wal\$1cache](aurora_stat_reset_wal_cache.md).

If you find that the automatically adjusted WAL cache size isn't sufficient for your workloads, you can change the the value of the `rds.logical_wal_cache` manually. Consider the following:
+ When the `rds.logical_replication` parameter is disabled, `rds.logical_wal_cache` is set to zero (0).
+ When the `rds.logical_replication` parameter is enabled, `rds.logical_wal_cache` has a default value of 16 MB.
+ The `rds.logical_wal_cache` parameter is static and requires a database instance reboot for changes to take effect. This parameter is defined in terms of 8 Kb blocks. Note that any positive value less than 32 Kb is treated as 32 Kb. For more information about `wal_buffers` see [Write Ahead Log](https://www.postgresql.org/docs/current/runtime-config-wal.html#RUNTIME-CONFIG-WAL-SETTINGS) in the PostgreSQL documentation. 

## Managing logical slots for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Replication.Logical.Configure.managing-logical-slots"></a>

Streaming activity is captured in the `pg_replication_origin_status` view. To see the contents of this view, you can use the `pg_show_replication_origin_status()` function, as shown following:

```
SELECT * FROM pg_show_replication_origin_status();
```

You can get a list of your logical slots by using the following SQL query.

```
SELECT * FROM pg_replication_slots;
```

To drop a logical slot, use the `pg_drop_replication_slot` with the name of the slot, as shown in the following command.

```
SELECT pg_drop_replication_slot('test_slot');
```

# Example: Using logical replication with Aurora PostgreSQL DB clusters
<a name="AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example"></a>

The following procedure shows you how to start logical replication between two Aurora PostgreSQL DB clusters. Both the publisher and the subscriber must be configured for logical replication as detailed in [Setting up logical replication for your Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Replication.Logical.Configure.md).

The Aurora PostgreSQL DB cluster that's the designated publisher must also allow access to the replication slot. To do so, modify the security group associated with the Aurora PostgreSQL DB cluster 's virtual public cloud (VPC) based on the Amazon VPC service. Allow inbound access by adding the security group associated with the subscriber's VPC to the publisher's security group. For more information, see [Control traffic to resources using security groups](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) in the *Amazon VPC User Guide*. 

With these preliminary steps complete, you can use PostgreSQL commands `CREATE PUBLICATION` on the publisher and the `CREATE SUBSCRIPTION` on the subscriber, as detailed in the following procedure. 

**To start the logical replication process between two Aurora PostgreSQL DB clusters**

These steps assume that your Aurora PostgreSQL DB clusters have a writer instance with a database in which to create the example tables.

1. **On the publisher Aurora PostgreSQL DB cluster**

   1. Create a table using the following SQL statement.

      ```
      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
      ```

   1. Insert data into the publisher database by using the following SQL statement.

      ```
      INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
      ```

   1. Verify that data exists in the table by using the following SQL statement.

      ```
      SELECT count(*) FROM LogicalReplicationTest;
      ```

   1. Create a publication for this table by using the `CREATE PUBLICATION` statement, as follows.

      ```
      CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
      ```

1. **On the subscriber Aurora PostgreSQL DB cluster**

   1. Create the same `LogicalReplicationTest` table on the subscriber that you created on the publisher, as follows.

      ```
      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
      ```

   1. Verify that this table is empty.

      ```
      SELECT count(*) FROM LogicalReplicationTest;
      ```

   1. Create a subscription to get the changes from the publisher. You need to use the following details about the publisher Aurora PostgreSQL DB cluster.
      + **host** – The publisher Aurora PostgreSQL DB cluster's writer DB instance.
      + **port** – The port on which the writer DB instance is listening. The default for PostgreSQL is 5432.
      + **dbname** – The name of the database.

      ```
      CREATE SUBSCRIPTION testsub CONNECTION 
         'host=publisher-cluster-writer-endpoint port=5432 dbname=db-name user=user password=password' 
         PUBLICATION testpub;
      ```
**Note**  
Specify a password other than the prompt shown here as a security best practice.

      After the subscription is created, a logical replication slot is created at the publisher.

   1. To verify for this example that the initial data is replicated on the subscriber, use the following SQL statement on the subscriber database.

      ```
      SELECT count(*) FROM LogicalReplicationTest;
      ```

Any further changes on the publisher are replicated to the subscriber.

Logical replication affects performance. We recommend that you turn off logical replication after your replication tasks are complete. 

# Example: Logical replication using Aurora PostgreSQL and AWS Database Migration Service
<a name="AuroraPostgreSQL.Replication.Logical.DMS-Example"></a>

You can use the AWS Database Migration Service (AWS DMS) to replicate a database or a portion of a database. Use AWS DMS to migrate your data from an Aurora PostgreSQL database to another open source or commercial database. For more information about AWS DMS, see the [AWS Database Migration Service User Guide](https://docs.aws.amazon.com/dms/latest/userguide/).

The following example shows how to set up logical replication from an Aurora PostgreSQL database as the publisher and then use AWS DMS for migration. This example uses the same publisher and subscriber that were created in [Example: Using logical replication with Aurora PostgreSQL DB clusters](AuroraPostgreSQL.Replication.Logical.PostgreSQL-Example.md).

To set up logical replication with AWS DMS, you need details about your publisher and subscriber from Amazon RDS. In particular, you need details about the publisher's writer DB instance and the subscriber's DB instance.

Get the following information for the publisher's writer DB instance:
+ The virtual private cloud (VPC) identifier
+ The subnet group
+ The Availability Zone (AZ)
+ The VPC security group
+ The DB instance ID

Get the following information for the subscriber's DB instance:
+ The DB instance ID
+ The source engine

**To use AWS DMS for logical replication with Aurora PostgreSQL**

1. Prepare the publisher database to work with AWS DMS. 

   To do this, PostgreSQL 10.x and later databases require that you apply AWS DMS wrapper functions to the publisher database. For details on this and later steps, see the instructions in [Using PostgreSQL version 10.x and later as a source for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.PostgreSQL.html#CHAP_Source.PostgreSQL.v10) in the *AWS Database Migration Service User Guide.*

1. Sign in to the AWS Management Console and open the AWS DMS console at [https://console.aws.amazon.com/dms/v2](https://console.aws.amazon.com/dms/v2). At top right, choose the same AWS Region in which the publisher and subscriber are located.

1. Create an AWS DMS replication instance.

   Choose values that are the same as for your publisher's writer DB instance. These include the following settings:
   + For **VPC**, choose the same VPC as for the writer DB instance.
   + For **Replication Subnet Group**, choose a subnet group with the same values as the writer DB instance. Create a new one if necessary.
   + For **Availability zone**, choose the same zone as for the writer DB instance.
   + For **VPC Security Group**, choose the same group as for the writer DB instance.

1. Create an AWS DMS endpoint for the source. 

   Specify the publisher as the source endpoint by using the following settings: 
   + For **Endpoint type**, choose **Source endpoint**. 
   + Choose **Select RDS DB Instance**.
   + For **RDS Instance**, choose the DB identifier of the publisher's writer DB instance.
   + For **Source engine**, choose **postgres**.

1. Create an AWS DMS endpoint for the target. 

   Specify the subscriber as the target endpoint by using the following settings:
   + For **Endpoint type**, choose **Target endpoint**. 
   + Choose **Select RDS DB Instance**.
   + For **RDS Instance**, choose the DB identifier of the subscriber DB instance.
   + Choose a value for **Source engine**. For example, if the subscriber is an RDS PostgreSQL database, choose **postgres**. If the subscriber is an Aurora PostgreSQL database, choose **aurora-postgresql**.

1. Create an AWS DMS database migration task. 

   You use a database migration task to specify what database tables to migrate, to map data using the target schema, and to create new tables on the target database. At a minimum, use the following settings for **Task configuration**:
   + For **Replication instance**, choose the replication instance that you created in an earlier step.
   + For **Source database endpoint**, choose the publisher source that you created in an earlier step.
   + For **Target database endpoint**, choose the subscriber target that you created in an earlier step.

   The rest of the task details depend on your migration project. For more information about specifying all the details for DMS tasks, see [Working with AWS DMS tasks](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.html) in the *AWS Database Migration Service User Guide.*

After AWS DMS creates the task, it begins migrating data from the publisher to the subscriber. 

# Configuring IAM authentication for logical replication connections
<a name="AuroraPostgreSQL.Replication.Logical.IAM-auth"></a>

Starting with Aurora PostgreSQL versions 11 and higher, you can use AWS Identity and Access Management (IAM) authentication for replication connections. This feature enhances security by allowing you to manage database access using IAM roles instead of passwords. It works at the cluster level and follows the same security model as standard IAM authentication.

IAM authentication for replication connections is an opt-in feature. To enable it, set the `rds.iam_auth_for_replication` parameter to `1` in your DB cluster parameter group. As this is a dynamic parameter, your DB cluster doesn't need to restart, enabling you to leverage IAM authentication with existing workloads without downtime. Before enabling this feature, you must meet the [Prerequisites](#AuroraPostgreSQL.Replication.Logical.IAM-auth-prerequisites) listed below.

## Prerequisites
<a name="AuroraPostgreSQL.Replication.Logical.IAM-auth-prerequisites"></a>

To use IAM authentication for replication connections, you need to meet all of the following requirements:
+ Your Aurora PostgreSQL DB cluster must be version 11 or later.
+ On your publisher Aurora PostgreSQL DB cluster: 
  + Enable IAM database authentication.

    For more information, see [Enabling and disabling IAM database authentication](UsingWithRDS.IAMDBAuth.Enabling.md).
  + Enable logical replication by setting the `rds.logical_replication` parameter to `1`.

    For more information, see [Setting up logical replication for your Aurora PostgreSQL DB cluster](AuroraPostgreSQL.Replication.Logical.Configure.md).

  In logical replication, the publisher is the source Aurora PostgreSQL DB cluster that sends data to subscriber clusters. For more information, see [Overview of PostgreSQL logical replication with Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Replication.Logical.html).

**Note**  
Both IAM authentication and logical replication must be enabled on your publisher Aurora PostgreSQL DB cluster. If either one isn't enabled, you can't use IAM authentication for replication connections.

## Enabling IAM authentication for replication connections
<a name="AuroraPostgreSQL.Replication.Logical.IAM-auth-enabling"></a>

Complete the following steps to enable IAM authentication for replication connection.

1. Verify that your Aurora PostgreSQL DB cluster meets all prerequisites for IAM authentication with replication connections. For details, see [Prerequisites](#AuroraPostgreSQL.Replication.Logical.IAM-auth-prerequisites).

1. Configure the `rds.iam_auth_for_replication` parameter by modifying your DB cluster parameter group:
   + Set the `rds.iam_auth_for_replication` parameter to `1`. This dynamic parameter doesn't require a reboot.

1. Connect to your database and grant the necessary roles to your replication user:

   The following SQL commands grant the necessary roles to enable IAM authentication for replication connections:

   ```
   -- Grant IAM authentication role
   GRANT rds_iam TO replication_user_name;
   -- Grant replication privileges
   ALTER USER replication_user_name WITH REPLICATION;
   ```

After you complete these steps, the specified user must use IAM authentication for replication connections.

**Important**  
When you enable the feature, users with both `rds_iam` and `rds_replication` roles must use IAM authentication for replication connections. This applies whether the roles are assigned directly to the user or inherited through other roles.

## Disabling IAM authentication for replication connections
<a name="AuroraPostgreSQL.Replication.Logical.IAM-auth-disabling"></a>

You can disable IAM authentication for replication connections by using any of the following methods:
+ Set the `rds.iam_auth_for_replication` parameter to `0` in your DB cluster parameter group
+ Alternatively, you can disable either of these features on your Aurora PostgreSQL DB cluster:
  + Disable logical replication by setting the `rds.logical_replication` parameter to `0`
  + Disable IAM authentication

When you disable the feature, replication connections can use database passwords for authentication if configured.

**Note**  
Replication connections for users without the `rds_iam` role can use password authentication even when the feature is enabled.

## Limitations and considerations
<a name="AuroraPostgreSQL.Replication.Logical.IAM-auth-limitations"></a>

The following limitations and considerations apply when using IAM authentication for replication connections.
+ IAM authentication for replication connections is only available for Aurora PostgreSQL versions 11 and higher.
+ The publisher must support IAM authentication for replication connections.
+ The IAM authentication token expires after 15 minutes by default. You might need to refresh long-running replication connections before the token expires.

# Local write forwarding in Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding"></a>

 *Local (in-cluster) write forwarding* allows your applications to issue read/write transactions directly on an Aurora Replica. The write commands are then forwarded to the writer DB instance to be committed. You can use local write forwarding for your applications that have occasional writes and require *read-after-write consistency*, which is the ability to read the latest write in a transaction. 

 Without write forwarding, your applications must fully split all read and write traffic, maintaining two sets of database connections to send the traffic to the appropriate endpoint. Read replicas receive updates asynchronously from the writer instance. In addition, because replication lag can differ among read replicas, achieving global read consistency across all replicas is difficult. You must transact any reads requiring read-after-write consistency on the writer database instance. Alternatively, you would need to develop complex custom application logic to take advantage of multiple read replicas for scalability while ensuring consistency. 

 With write forwarding, you avoid the need to split those transactions or send them exclusively to the writer instance. You also don't have to develop complex application logic to achieve *read-after-write consistency* consistency. 

 Local write forwarding is available in every Region where Aurora PostgreSQL is available. It is supported in the following Aurora PostgreSQL versions: 
+ 16.4 and higher 16 versions
+ 15.8 and higher 15 versions
+ 14.13 and higher 14 versions

 Local write forwarding is used to forward writes from in-Region replicas. To forward writes from a global replica, see [Using write forwarding in an Amazon Aurora global database](aurora-global-database-write-forwarding.md). 

**Topics**
+ [Limitations and considerations of local write forwarding in Aurora PostgreSQL](aurora-postgresql-write-forwarding-limitations.md)
+ [Configuring Aurora PostgreSQL for Local write forwarding](aurora-postgresql-write-forwarding-configuring.md)
+ [Working with local write forwarding for Aurora PostgreSQL](aurora-postgresql-write-forwarding-understanding.md)
+ [Monitoring local write forwarding in Aurora PostgreSQL](aurora-postgresql-write-forwarding-monitoring.md)

# Limitations and considerations of local write forwarding in Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-limitations"></a>

 The following limitations currently apply to local write forwarding in Aurora PostgreSQL: 
+  Local write forwarding is not supported with RDS Proxy. 
+  Certain statements aren't allowed or can produce stale results when you use them in Aurora PostgreSQL with write forwarding. In addition, user defined functions and user defined procedures aren't supported. Thus, the `EnableLocalWriteForwarding` setting is turned off by default for DB clusters. Before turning it on, check to make sure that your application code isn't affected by any of these restrictions. 
+  The following kinds of SQL statements aren't supported with write forwarding: 
**Note**  
These statements can be implicitly used by you in your application or inferred by the PostgreSQL protocol. For example, PL/SQL exception handling can result in the use of SAVEPOINT, which is not a supported statement.
  +  `ANALYZE` 
  +  `CLUSTER` 
  +  `COPY` 
  + Cursors – Cursors aren't supported, so make sure to close them before using local write forwarding.
  +  Data definition language (DDL) statements 
  +  `GRANT`\$1`REVOKE`\$1`REASSIGN OWNED`\$1`SECURITY LABEL`
  +  `LISTEN / NOTIFY` 
  +  `LOCK` 
  +  `SAVEPOINT` 
  +  `SELECT INTO` 
  +  `SET CONSTRAINTS` 
  +  Sequence updates: `nextval()`, `setval()` 
  +  `TRUNCATE` 
  +  Two-phase commit commands: `PREPARE TRANSACTION`, `COMMIT PREPARED`, `ROLLBACK PREPARED` 
  + User defined functions and user defined procedures.
  +  `VACUUM` 

 You can consider using the following SQL statements with write forwarding: 
+ A DML statement might consist of multiple parts, such as an `INSERT ... SELECT` statement or a `DELETE ... WHERE` statement. In this case, the entire statement is forwarded to the writer DB instance and run there.
+ Data manipulation language (DML) statements, such as `INSERT`, `DELETE`, and `UPDATE`.
+  `EXPLAIN` statements with the statements in this list.
+  `PREPARE` and `EXECUTE` statements.
+  `SELECT FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }` statements.

# Configuring Aurora PostgreSQL for Local write forwarding
<a name="aurora-postgresql-write-forwarding-configuring"></a>

 Using the following sections, you can enable local write forwarding for your Amazon Aurora PostgreSQL DB cluster, configuring consistency levels, and managing transactions with write forwarding. 

## Enabling local write forwarding
<a name="aurora-postgresql-write-forwarding-enabling"></a>

 By default, local write forwarding isn't enabled for Aurora PostgreSQL DB clusters. You enable local write forwarding at the cluster level, not at the instance level. 

### Console
<a name="aurora-postgresql-write-forwarding-enabling.CON"></a>

 Using the AWS Management Console, select the **Turn on local write forwarding** check box under **Read replica write forwarding** when you create or modify a DB cluster. 

### AWS CLI
<a name="aurora-postgresql-write-forwarding-enabling.CLI"></a>

 To enable local write forwarding with the AWS CLI, use the `--enable-local-write-forwarding` option. This option works when you create a new DB cluster using the `create-db-cluster` command. It also works when you modify an existing DB cluster using the `modify-db-cluster` command. You can disable local write forwarding by using the `--no-enable-local-write-forwarding` option with these same CLI commands. 

 The following example creates an Aurora PostgreSQL DB cluster with local write forwarding enabled. 

```
                        aws rds create-db-cluster \
                        --db-cluster-identifier write-forwarding-test-cluster \
                        --enable-local-write-forwarding \
                        --engine aurora-postgresql \
                        --engine-version 16.4 \
                        --master-username myuser \
                        --master-user-password mypassword \
                        --backup-retention 1
```

 You then create writer and reader DB instances so that you can use write forwarding. For more information, see [Creating an Amazon Aurora DB cluster](Aurora.CreateInstance.md).

### RDS API
<a name="aurora-postgresql-write-forwarding-enabling.API"></a>

 To enable local write forwarding using the Amazon RDS API, set the `EnableLocalWriteForwarding` parameter to `true`. This parameter works when you create a new DB cluster using the `CreateDBCluster` operation. It also works when you modify an existing DB cluster using the `ModifyDBCluster` operation. You can disable local write forwarding by setting the `EnableLocalWriteForwarding` parameter to `false`. 

### Enabling local write forwarding for database sessions
<a name="aurora-postgresql-write-forwarding-enabling-session"></a>

 The `apg_write_forward.consistency_mode` parameter is a DB parameter and DB cluster parameter that enables write forwarding. You can specify `SESSION`, `EVENTUAL`, `GLOBAL`, or `OFF` for the read consistency level. To learn more about consistency levels, see [Consistency and isolation for local write forwarding in Aurora PostgreSQL](#aurora-postgresql-write-forwarding-isolation). 

 The following rules apply to this parameter: 
+ The default value is `SESSION`.
+  Local write forwarding is available only if you set `apg_write_forward.consistency_mode` to `EVENTUAL`, `SESSION`, or `GLOBAL`. This parameter is relevant only in reader instances of DB clusters that have local write forwarding enabled. 
+ Setting the value to `OFF` disables local write forwarding in the session. 

## Consistency and isolation for local write forwarding in Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-isolation"></a>

You can control the degree of read consistency on a read replica. You can adjust the read consistency level to ensure that all forwarded write operations from your session are visible in the read replica before any subsequent queries. You can also use this setting to ensure that queries on the read replica always see the most current updates from the writer DB instance. This is so even for those submitted by other sessions or other clusters. To specify this type of behavior for your application, you choose the appropriate value for the session-level parameter `apg_write_forward.consistency_mode`. The `apg_write_forward.consistency_mode` parameter has an effect only on read replicas that have local write forwarding enabled.

**Note**  
For the `apg_write_forward.consistency_mode` parameter, you can specify the value `SESSION`, `EVENTUAL`, `GLOBAL`, or `OFF`. By default, the value is set to `SESSION`. Setting the value to `OFF` disables write forwarding.

As you increase the consistency level, your application spends more time waiting for changes to be propagated to read replicas. You can choose the balance between lower latency and ensuring that changes made in other locations are fully available before your queries run.

With each available consistency mode setting, the effect is as follows:
+ `SESSION` – A session on a read replica that uses local write forwarding see the results of all changes made in that session. The changes are visible regardless of whether the transaction is committed. If necessary, the query waits for the results of forwarded write operations to be replicated to the current reader DB instance. It doesn't wait for updated results from write operations performed in other sessions within the current DB cluster. 
+ `EVENTUAL` – A session on a read replica that uses local write forwarding might see data that is slightly stale due to replication lag. Results of write operations in the same session aren't visible until the write operation is performed on the writer DB instance and replicated to the read replica. The query doesn't wait for the updated results to be available. Thus, it might retrieve the older data or the updated data, depending on the timing of the statements and the amount of replication lag. 
+ `GLOBAL` – A session on a read replica sees changes made by that session. It also sees all committed changes from both the writer DB instance and other read replicas. Each query might wait for a period that varies depending on the amount of session lag. The query proceeds when the read replica is up-to-date with all committed data from the writer DB instance, as of the time that the query began. 
**Note**  
The global consistency mode impacts the latency of queries executed within a session. It will perform a wait even when the session has not sent any write queries.
+ `OFF` – Local write forwarding is disabled.

In sessions that use write forwarding, you can use the `REPEATABLE READ` and `READ COMMITTED` isolation levels. However, the `SERIALIZABLE` isolation level isn't supported.

 For more information about all the parameters involved with write forwarding, see [Default parameter settings for write forwarding](aurora-postgresql-write-forwarding-understanding.md#aurora-postgresql-write-forwarding-params).

## Transaction access modes with write forwarding
<a name="aurora-postgresql-write-forwarding-txns"></a>

If the transaction access mode is set to read only, local write forwarding isn't used. You can set the access mode to read write only while you’re connected to a DB cluster and session that has local write forwarding enabled.

For more information on the transaction access modes, see [SET TRANSACTION](https://www.postgresql.org/docs/current/sql-set-transaction.html).

# Working with local write forwarding for Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-understanding"></a>

Using the following sections, you can check if a database cluster has local write forwarding enabled, view compatibility considerations, and see configurable parameters and authentication setup. This information equips you with the details to utilize local write forwarding feature in Aurora PostgreSQL effectively.

**Note**  
When a writer instance in a cluster using local write forwarding is restarted, any active, forwarded transactions and queries on reader instances using local write forwarding are automatically closed. After the writer instance is available again, you can retry these transactions.

## Checking if a DB cluster has local write forwarding enabled
<a name="aurora-postgresql-write-forwarding-describing"></a>

To determine that you can use local write forwarding in a DB cluster, confirm that the cluster has the attribute `LocalWriteForwardingStatus` set to `enabled`.

In the AWS Management Console, on the **Configuration** tab of the details page for the cluster, you see the status **Enabled** for **Local read replica write forwarding**.

To see the status of the local write forwarding setting for all of your clusters, run the following AWS CLI command.

**Example**  

```
aws rds describe-db-clusters \
--query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}'

[
{
"LocalWriteForwardingStatus": "enabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-1"
},
{
"LocalWriteForwardingStatus": "disabled",
"DBClusterIdentifier": "write-forwarding-test-cluster-2"
},
{
"LocalWriteForwardingStatus": "requested",
"DBClusterIdentifier": "test-global-cluster-2"
},
{
"LocalWriteForwardingStatus": "null",
"DBClusterIdentifier": "aurora-postgresql-v2-cluster"
}
]
```

A DB cluster can have the following values for `LocalWriteForwardingStatus`:
+ `disabled` – Local write forwarding is disabled.
+ `disabling` – Local write forwarding is in the process of being disabled.
+ `enabled` – Local write forwarding is enabled.
+ `enabling` – Local write forwarding is in the process of being enabled.
+ `null` – Local write forwarding isn't available for this DB cluster.
+ `requested` – Local write forwarding has been requested, but is not yet active.

## Default parameter settings for write forwarding
<a name="aurora-postgresql-write-forwarding-params"></a>

The Aurora cluster parameter groups include settings for the local write forwarding feature. Because these are cluster parameters, all DB instances in each cluster have the same values for these variables. Details about these parameters are summarized in the following table, with usage notes after the table.


| Parameter | Scope | Type | Default value | Valid values | 
| --- | --- | --- | --- | --- | 
| apg\$1write\$1forward.connect\$1timeout | Session | seconds | 30 | 0–2147483647 | 
| apg\$1write\$1forward.consistency\$1mode | Session | enum | Session | SESSION, EVENTUAL, GLOBAL, and OFF | 
| apg\$1write\$1forward.idle\$1in\$1transaction\$1session\$1timeout | Session | milliseconds | 86400000 | 0–2147483647 | 
| apg\$1write\$1forward.idle\$1session\$1timeout | Session | milliseconds | 300000 | 0–2147483647 | 
| apg\$1write\$1forward.max\$1forwarding\$1connections\$1percent | Global | int | 25 | 1–100 | 

The `apg_write_forward.max_forwarding_connections_percent` parameter is the upper limit on database connection slots that can be used to handle queries forwarded from readers. It is expressed as a percentage of the `max_connections` setting for the writer DB instance. For example, if `max_connections` is `800` and `apg_write_forward.max_forwarding_connections_percent` is `10`, then the writer allows a maximum of 80 simultaneous forwarded sessions. These connections come from the same connection pool managed by the `max_connections` setting. This setting applies only on the writer DB instance when the cluster has local write forwarding enabled.

Use the following settings to control local write forwarding requests:
+ `apg_write_forward.consistency_mode` – A session-level parameter that controls the degree of read consistency on a read replica. Valid values are `SESSION`, `EVENTUAL`, `GLOBAL`, or `OFF`. By default, the value is set to `SESSION`. Setting the value to `OFF` disables local write forwarding in the session. To learn more about consistency levels, see [Consistency and isolation for local write forwarding in Aurora PostgreSQL](aurora-postgresql-write-forwarding-configuring.md#aurora-postgresql-write-forwarding-isolation). This parameter is relevant only in reader instances that have local write forwarding enabled.
+ `apg_write_forward.connect_timeout` – The maximum number of seconds the read replica waits when establishing a connection to the writer DB instance before giving up. A value of `0` means to wait indefinitely.
+ `apg_write_forward.idle_in_transaction_session_timeout` – The number of milliseconds the writer DB instance waits for activity on a connection that's forwarded from a read replica that has an open transaction before closing it. If the session remains idle in transaction beyond this period, Aurora terminates the session. A value of `0` disables the timeout.
+ `apg_write_forward.idle_session_timeout` – The number of milliseconds the writer DB instance waits for activity on a connection that's forwarded from a read replica before closing it. If the session remains idle beyond this period, Aurora terminates the session. A value of `0` disables the timeout.

## rdswriteforwarduser
<a name="aurora-postgresql-write-forwarding-rdswriteforwarduser"></a>

 The `rdswriteforwarduser` is a user that we will use to establish a connection between the read replica and the writer DB instance. 

**Note**  
`rdswriteforwarduser` inherits its CONNECT privileges to customer databases via the PUBLIC role. If the privileges for the PUBLIC role are revoked, you will need to GRANT CONNECT privileges for the databases you need to forward writes to. 

# Monitoring local write forwarding in Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-monitoring"></a>

Using the following sections you can monitor local write forwarding in Aurora PostgreSQL clusters, including relevant CloudWatch metrics and wait events to track performance and identify potential issues.

## Amazon CloudWatch metrics and Aurora PostgreSQL status variables for write forwarding
<a name="aurora-postgresql-write-forwarding-cloudwatch"></a>

 The following Amazon CloudWatch metrics apply to the writer DB instances when you use write forwarding on one or more read replicas.


| CloudWatch Metric | Units and description | 
| --- | --- | 
| `AuroraLocalForwardingWriterDMLThroughput`  | Count (per second). Number of forwarded DML statements processed each second by this writer DB instance. | 
|  `AuroraLocalForwardingWriterOpenSessions`  | Count. Number of open sessions on this writer DB instance processing forwarded queries. | 
|  `AuroraLocalForwardingWriterTotalSessions`  | Count. Total number of forwarded sessions on this writer DB instance. | 

 The following CloudWatch metrics apply to each read replica. These metrics are measured on each reader DB instance in the DB cluster with local write forwarding enabled. 


| CloudWatch Metric | Unit and description | 
| --- | --- | 
|  `AuroraForwardingReplicaCommitThroughput` |  Count (per second). Number of commits in sessions forwarded by this replica each second.  | 
|  `AuroraForwardingReplicaDMLLatency` |  Milliseconds. Average response time in milliseconds of forwarded DMLs on replica.  | 
|  `AuroraForwardingReplicaDMLThroughput` |  Count (per second). Number of forwarded DML statements processed on this replica each second.  | 
|  `AuroraForwardingReplicaErrorSessionsLimit` |  Count. Number of sessions rejected by the writer DB instance because the limit for max connections or max write forward connections was reached.  | 
|  `AuroraForwardingReplicaOpenSessions`  |  Count. The number of sessions that are using local write forwarding on a replica instance.  | 
|  `AuroraForwardingReplicaReadWaitLatency` | Milliseconds. Average wait time in milliseconds that the replica waits to be consistent with the LSN of the writer DB instance. The degree to which the reader DB instance waits depends on the apg\$1write\$1forward.consistency\$1mode setting. For information about this setting, see [Configuration parameters for write forwarding in Aurora PostgreSQL](aurora-global-database-write-forwarding-apg.md#aurora-global-database-write-forwarding-params-apg).  | 

## Wait events for local write forwarding in Aurora PostgreSQL
<a name="aurora-postgresql-write-forwarding-wait-events-apg"></a>

Amazon Aurora generates the following wait events when you use write forwarding with Aurora PostgreSQL.

**Topics**
+ [IPC:AuroraWriteForwardConnect](#apg-waits.ipcaurorawriteforwardconnect)
+ [IPC:AuroraWriteForwardConsistencyPoint](#apg-waits.ipcaurorawriteforwardconsistencypoint)
+ [IPC:AuroraWriteForwardExecute](#apg-waits.ipc:aurorawriteforwardexecute)
+ [IPC:AuroraWriteForwardGetGlobalConsistencyPoint](#apg-waits.ipc:aurorawriteforwardgetglobalconsistencypoint)
+ [IPC:AuroraWriteForwardXactAbort](#apg-waits.ipc:aurorawriteforwardxactabort)
+ [IPC:AuroraWriteForwardXactCommit](#apg-waits.ipc:aurorawriteforwardxactcommit)
+ [IPC:AuroraWriteForwardXactStart](#apg-waits.ipc:aurorawriteforwardxactstart)

### IPC:AuroraWriteForwardConnect
<a name="apg-waits.ipcaurorawriteforwardconnect"></a>

The `IPC:AuroraWriteForwardConnect` event occurs when a backend process on the read replica is waiting for a connection to the writer DB instance to be opened.

**Likely causes of increased waits**

This event increases as the number of connection attempts from a read replica to the writer node increases.

**Actions**

Reduce the number of simultaneous connections from a read replica to the writer node.

### IPC:AuroraWriteForwardConsistencyPoint
<a name="apg-waits.ipcaurorawriteforwardconsistencypoint"></a>

The `IPC:AuroraWriteForwardConsistencyPoint` event describes how long a query from a node on the read replica will wait for the results of forwarded write operations to be replicated to the current Region. This event is only generated if the session-level parameter `apg_write_forward.consistency_mode` is set to one of the following:
+ `SESSION` – queries on a read replica wait for the results of all changes made in that session.
+ `GLOBAL` – queries on a read replica wait for the results of changes made by that session, plus all committed changes from both the writer DB instance and read replica.

For more information about the `apg_write_forward.consistency_mode` parameter settings, see [Configuration parameters for write forwarding in Aurora PostgreSQL](aurora-global-database-write-forwarding-apg.md#aurora-global-database-write-forwarding-params-apg).

**Likely causes of increased waits**

Common causes for longer wait times include the following:
+ Increased replica lag, as measured by the Amazon CloudWatch `ReplicaLag` metric. For more information about this metric, see [Monitoring Aurora PostgreSQL replication](AuroraPostgreSQL.Replication.md#AuroraPostgreSQL.Replication.Monitoring).
+ Increased load on the writer DB instance or read replica.

**Actions**

Change your consistency mode, depending on your application's requirements.

### IPC:AuroraWriteForwardExecute
<a name="apg-waits.ipc:aurorawriteforwardexecute"></a>

The `IPC:AuroraWriteForwardExecute` event occurs when a backend process on the read replica is waiting for a forwarded query to complete and obtain results from the writer node of the DB cluster.

**Likely causes of increased waits**

Common causes for increased waits include the following:
+ Fetching a large number of rows from the writer node.
+ Increased network latency between the writer node and read replica increases the time it takes the read replica to receive data from the writer node.
+ Increased load on the read replica can delay transmission of the query request from the read replica to the writer node.
+ Increased load on the writer node can delay transmission of data from the writer node to the read replica.

**Actions**

We recommend different actions depending on the causes of your wait event.
+ Optimize queries to retrieve only necessary data.
+ Optimize data manipulation language (DML) operations to only modify necessary data.
+ If the read replica or writer node is constrained by CPU or network bandwidth, consider changing it to an instance type with more CPU capacity or more network bandwidth.

### IPC:AuroraWriteForwardGetGlobalConsistencyPoint
<a name="apg-waits.ipc:aurorawriteforwardgetglobalconsistencypoint"></a>

The `IPC:AuroraWriteForwardGetGlobalConsistencyPoint` event occurs when a backend process on the read replica that's using the GLOBAL consistency mode is waiting to obtain the global consistency point from the writer node before executing a query.

**Likely causes of increased waits**

Common causes for increased waits include the following:
+ Increased network latency between the read replica and writer node increases the time it takes the read replica to receive data from the writer node.
+ Increased load on the read replica can delay transmission of the query request from the read replica to the writer node.
+ Increased load on the writer node can delay transmission of data from the writer node to the read replica.

**Actions**

We recommend different actions depending on the causes of your wait event.
+ Change your consistency mode, depending on your application's requirements.
+ If the read replica or writer node is constrained by CPU or network bandwidth, consider changing it to an instance type with more CPU capacity or more network bandwidth.

### IPC:AuroraWriteForwardXactAbort
<a name="apg-waits.ipc:aurorawriteforwardxactabort"></a>

The `IPC:AuroraWriteForwardXactAbort` event occurs when a backend process on the read replica is waiting for the result of a remote cleanup query. Cleanup queries are issued to return the process to the appropriate state after a write-forwarded transaction is aborted. Amazon Aurora performs them either because an error was found or because an user issued an explicit `ABORT` command or cancelled a running query.

**Likely causes of increased waits**

Common causes for increased waits include the following:
+ Increased network latency between the read replica and writer node increases the time it takes the read replica to receive data from the writer node.
+ Increased load on the read replica can delay transmission of the cleanup query request from the read replica to the writer node.
+ Increased load on the writer node can delay transmission of data from the writer node to the read replica.

**Actions**

We recommend different actions depending on the causes of your wait event.
+ Investigate the cause of the aborted transaction.
+ If the read replica or writer DB instance is constrained by CPU or network bandwidth, consider changing it to an instance type with more CPU capacity or more network bandwidth.

### IPC:AuroraWriteForwardXactCommit
<a name="apg-waits.ipc:aurorawriteforwardxactcommit"></a>

The `IPC:AuroraWriteForwardXactCommit` event occurs when a backend process on the read replica is waiting for the result of a forwarded commit transaction command.

**Likely causes of increased waits**

Common causes for increased waits include the following:
+ Increased network latency between the read replica and writer node increases the time it takes the read replica to receive data from the writer node.
+ Increased load on the read replica can delay transmission of the query request from the read replica to the writer node.
+ Increased load on the writer node can delay transmission of data from the writer node to the read replica.

**Actions**

If the read replica or writer node is constrained by CPU or network bandwidth, consider changing it to an instance type with more CPU capacity or more network bandwidth.

### IPC:AuroraWriteForwardXactStart
<a name="apg-waits.ipc:aurorawriteforwardxactstart"></a>

The `IPC:AuroraWriteForwardXactStart` event occurs when a backend process on the read replica is waiting for the result of a forwarded start transaction command.

**Likely causes of increased waits**

Common causes for increased waits include the following:
+ Increased network latency between the read replica and writer node increases the time it takes the read replica to receive data from the writer node.
+ Increased load on the read replica can delay transmission of the query request from the read replica to the writer node.
+ Increased load on the writer node can delay transmission of data from the writer node to the read replica.

**Actions**

If the read replica or writer node is constrained by CPU or network bandwidth, consider changing it to an instance type with more CPU capacity or more network bandwidth.

# Using Aurora PostgreSQL as a Knowledge Base for Amazon Bedrock
<a name="AuroraPostgreSQL.VectorDB"></a>

You can use an Aurora PostgreSQL DB cluster as a Knowledge Base for Amazon Bedrock. For more information, see [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html). A Knowledge Base automatically takes unstructured text data stored in an Amazon S3 bucket, converts it to text chunks and vectors, and stores it in a PostgreSQL database. With the generative AI applications, you can use Agents for Amazon Bedrock to query the data stored in the Knowledge Base and use the results of those queries to augment answers provided by foundational models. This workflow is called Retrieval Augmented Generation (RAG). For more information on RAG, see [Retrieval Augmented Generation (RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html).

For detailed information about using Aurora PostgreSQL to build generative AI applications using RAG, see this [blog post](https://aws.amazon.com/blogs/database/build-generative-ai-applications-with-amazon-aurora-and-knowledge-bases-for-amazon-bedrock/).

**Topics**
+ [Prerequisites](#AuroraPostgreSQL.VectorDB.Prereq)
+ [Preparing Aurora PostgreSQL to be used as a Knowledge Base for Amazon Bedrock](#AuroraPostgreSQL.VectorDB.PreparingKB)
+ [Creating a Knowledge Base in the Bedrock console](#AuroraPostgreSQL.VectorDB.CreatingKB)
+ [Quick create an Aurora PostgreSQL Knowledge Base for Amazon Bedrock](AuroraPostgreSQL.quickcreatekb.md)

## Prerequisites
<a name="AuroraPostgreSQL.VectorDB.Prereq"></a>

Familiarize yourself with the following prerequisites to use Aurora PostgreSQL cluster as a Knowledge Base for Amazon Bedrock. At a high level, you need to configure the following services for use with Bedrock:
+ Amazon Aurora PostgreSQL DB cluster created in any of the following versions:
  + 16.1 and all higher versions
  + 15.4 and higher versions
  + 14.9 and higher versions
  + 13.12 and higher versions
  + 12.16 and higher versions
**Note**  
You must enable the `pgvector` extension in your target database and use version 0.5.0 or higher. For more information, see [pgvector v0.5.0 with HNSW indexing](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/). 
+ RDS Data API
+ A user managed in AWS Secrets Manager. For more information, see [Password management with Amazon Aurora and AWS Secrets Manager](rds-secrets-manager.md).

## Preparing Aurora PostgreSQL to be used as a Knowledge Base for Amazon Bedrock
<a name="AuroraPostgreSQL.VectorDB.PreparingKB"></a>

Follow the steps explained in the below sections to prepare Aurora PostgreSQL to be used as a Knowledge Base for Amazon Bedrock.

### Creating and configuring Aurora PostgreSQL
<a name="AuroraPostgreSQL.VectorDB.CreatingDBC"></a>

To configure Amazon Bedrock with an Aurora PostgreSQL DB cluster, you must first create an Aurora PostgreSQL DB cluster and take note of the important fields for configuring it with Amazon Bedrock. For more information about creating Aurora PostgreSQL DB cluster, see [Creating and connecting to an Aurora PostgreSQL DB cluster](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md).
+ Enable Data API while creating Aurora PostgreSQL DB cluster. For more information on the versions supported, see [Using the Amazon RDS Data API](data-api.md).
+ Make sure to note down the Amazon Resource Names (ARN) of your Aurora PostgreSQL DB cluster. You'll need it to configure the DB cluster for use with Amazon Bedrock. For more information, see [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_Tagging.ARN.html).

### Connecting to a database and installing pgvector
<a name="AuroraPostgreSQL.VectorDB.ConnectingDB"></a>

You can connect to Aurora PostgreSQL using any of the connection utilities. For more detailed information on these utilities, see [Connecting to an Amazon Aurora PostgreSQL DB cluster](Aurora.Connecting.md#Aurora.Connecting.AuroraPostgreSQL). Alternatively, you can use the RDS console query editor to run the queries. You need an Aurora DB cluster with the RDS Data API enabled to use the query editor.

1. Log in to the database with your master user and set up pgvector. Use the following command if the extension is not installed:

   ```
   CREATE EXTENSION IF NOT EXISTS vector;
   ```

   Use `pgvector` 0.5.0 and higher version that supports HNSW indexing. For more information, see [pgvector v0.5.0 with HNSW indexing](https://aws.amazon.com/about-aws/whats-new/2023/10/amazon-aurora-postgresql-pgvector-v0-5-0-hnsw-indexing/).

1. Use the following command to check the version of the `pg_vector` installed:

   ```
   SELECT extversion FROM pg_extension WHERE extname='vector';
   ```

### Setting up database objects and privileges
<a name="AuroraPostgreSQL.VectorDB.SetupDBObjects"></a>

1. Create a specific schema that Bedrock can use to query the data. Use the following command to create a schema:

   ```
   CREATE SCHEMA bedrock_integration;
   ```

1. Create a new role that Bedrock can use to query the database. Use the following command to create a new role:

   ```
   CREATE ROLE bedrock_user WITH PASSWORD 'password' LOGIN;
   ```
**Note**  
Make a note of this password as you will need it later to create a Secrets Manager password.

   If you are using `psql` client, then use the following commands to create a new role:

   ```
   CREATE ROLE bedrock_user LOGIN;
   \PASSWORD password;
   ```

1. Grant the `bedrock_user` permissions to manage the `bedrock_integration` schema. This will provide the ability to create tables or indexes within the schema.

   ```
   GRANT ALL ON SCHEMA bedrock_integration to bedrock_user;
   ```

1. Login as the `bedrock_user` and create a table in the `bedrock_integration schema`.

   ```
   CREATE TABLE bedrock_integration.bedrock_kb (id uuid PRIMARY KEY, embedding vector(n), chunks text, metadata json, custom_metadata jsonb);
   ```

   This command will create the `bedrock_kb` table in the `bedrock_integration` schema with Titan embeddings.

   Replace n in the `vector(n)` data type with the appropriate dimension for the embedding model you are using. Use the recommendations below to help select your dimensions:
   + For the Titan v2 model, use `vector(1024)`, or `vector(512)`, or `vector (256)`. To learn more, see [Amazon Titan Embeddings Text](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html).
   + For the Titan v1.2 model, use `vector(1536)`. To learn more, see [Amazon Titan Multimodal Embeddings G1](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-mm.html).
   + For the Cohere Embed model, use `vector(1024)`. To learn more, see [Cohere Embed models](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-embed.html).
   + For the Cohere Embed Multilingual v3, use `vector(1024)`.

   The first four columns are mandatory. For metadata handling, Bedrock writes data from your metadata files to the `custom_metadata` column. We recommend creating this column if you plan to use metadata and filtering. If you don't create a `custom_metadata` column, add individual columns for each metadata attribute in your table before you begin ingestion. For more information, see [Configure and customize queries and response generation](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html).

1. Follow these steps to create the required indexes that Bedrock uses to query your data:
   + Create an index with the cosine operator which the bedrock can use to query the data.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);
     ```
   + We recommend you to set the value of `ef_construction` to 256 for `pgvector` 0.6.0 and higher version that use parallel index building.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops) WITH (ef_construction=256);
     ```
   + Create an index which Bedrock can use to query the text data.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks));
     ```
   + If you created a column for custom metadata, create an index which Bedrock can use to query the metadata.

     ```
     CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (custom_metadata);
     ```

### Create a secret in Secrets Manager
<a name="AuroraPostgreSQL.VectorDB.SecretManager"></a>

Secrets Manager lets you store your Aurora credentials so that they can be securely transmitted to applications. If you didn't choose the AWS secrets manager option when creating Aurora PostgreSQL DB cluster, you can create a secret now. For more information about creating AWS Secrets Manager database secret, see [AWS Secrets Manager database secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html).

## Creating a Knowledge Base in the Bedrock console
<a name="AuroraPostgreSQL.VectorDB.CreatingKB"></a>

While preparing Aurora PostgreSQL to be used as the vector store for a Knowledge Base, you must gather the following details that you need to provide to Amazon Bedrock console.
+ **Amazon Aurora DB cluster ARN** – The ARN of your DB cluster.
+ **Secret ARN** – The ARN of the AWS Secrets Manager key for your DB cluster.
+ **Database name** – The name of your database. For example, you can use the default database *postgres*.
+ **Table name** – We recommend you to provide a schema qualified name while creating the table using the command similar to the following:

  ```
  CREATE TABLE bedrock_integration.bedrock_kb;
  ```

  This command will create the `bedrock_kb` table in the `bedrock_integration` schema.
+ When creating the table, make sure to configure it with the specified columns and data types. You can use your preferred column names instead of those listed in the table. Remember to take a note of the names you chose for reference during the Knowledge Base set up.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)

With these details, you can now create a Knowledge Base in the Bedrock console. For more detailed information on setting up a vector index and creating a Knowledge Base information, see [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup-rds.html) and [Create a vector store in Amazon Aurora](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html).

After adding Aurora as your Knowledge Base, you can now ingest your data sources for searching and querying. For more information, see [Ingest your data sources into the Knowledge Base](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ingest.html).

# Quick create an Aurora PostgreSQL Knowledge Base for Amazon Bedrock
<a name="AuroraPostgreSQL.quickcreatekb"></a>

 Amazon Bedrock's retrieval augmented generation (RAG) workflow relies on vector data stored in an Aurora PostgreSQL database to power content retrieval. Previously, setting up Aurora PostgreSQL as the vector data store for Bedrock Knowledge Bases was a multi-step process, requiring numerous manual actions across different user interfaces. This made it challenging for data scientists and developers to leverage Aurora for their Bedrock projects. 

 To improve the user experience, AWS has created a new CloudFormation-based quick create option that simplifies the setup process. With Aurora quick create, you can now provision a pre-configured Aurora PostgreSQL DB cluster as the vector store for your Amazon Bedrock Knowledge Bases with a single click. 

**Topics**
+ [Supported regions and Aurora PostgreSQL versions](#AuroraPostgreSQL.quickcreatekb.avail)
+ [Understanding the quick create process](#AuroraPostgreSQL.quickcreatekb.using)
+ [Benefits of using Aurora quick create](#AuroraPostgreSQL.quickcreatekb.adv)
+ [Limitations of Aurora quick create process](#AuroraPostgreSQL.quickcreatekb.limit)

## Supported regions and Aurora PostgreSQL versions
<a name="AuroraPostgreSQL.quickcreatekb.avail"></a>

The Aurora quick create option is available in all the AWS regions that support Amazon Bedrock Knowledge Bases. By default, it creates an Aurora PostgreSQL DB cluster with version 15.7. For more information about supported Regions, see [Supported models and regions for Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html).

## Understanding the quick create process
<a name="AuroraPostgreSQL.quickcreatekb.using"></a>

The quick create process automatically provisions the following resources to set up an Amazon Aurora PostgreSQL database as the vector data store for your Bedrock Knowledge Base:

An Aurora PostgreSQL DB cluster in your account, configured with default settings.
+ ACUs (Aurora Capacity Units) are set from 0 to 16. This lets your vector store scale down to zero when not in use, saving on compute costs. The ACUs can be adjusted later in the Amazon RDS console.
+ (Hierarchical Navigable Small World) HNSW index using Euclidean distance as a similarity measure for the Bedrock vector embeddings stored in Aurora.
+ The DB instance is a serverless v2 instance.
+ The cluster is associated with the default VPC and subnets, and has the RDS Data API enabled.
+ The cluster admin credentials are managed by AWS Secrets Manager.

Besides the default settings, the following settings are set up for you. As you go through the process, you'll see screens that explains the workflow.
+ Seeding the Aurora cluster with the necessary database objects:
  + Create the pgvector extension, schema, role, and tables required for the Bedrock Knowledge Base.
  + Register a limited-privilege database user for Bedrock to interact with the cluster.
+  A progress banner will be displayed throughout the resource provisioning process, allowing you to track the status of the following sub-events: 
  + Aurora cluster creation
  + Seeding the Aurora cluster
  + Knowledge Base creation

  The banner stays visible until the knowledge base is fully created, even if you navigate away from the page and return.
+ You can click `View details` on the progress banner to see the status of each step. For more information about events during knowledge base creation, choose the CloudFormation link in the view details screen. Once the process is complete, your new Bedrock Knowledge Base will be ready to use.
+ The stack IDs for all the quick create resources can be found in the tags of the Bedrock Knowledge Base, should you need to reference them.

A Bedrock Knowledge Base, with the configuration to the newly provisioned Aurora cluster as the vector store is created.

## Benefits of using Aurora quick create
<a name="AuroraPostgreSQL.quickcreatekb.adv"></a>
+ The CloudFormation-based quick create process significantly reduces the time and complexity required to use Aurora as the vector store.
+ Aurora offers excellent performance, vector scalability and cost benefits with the ability to scale to zero compute charges when not in use.
+ The quick create process streamlines the end-to-end experience, allowing you to easily create and configure your Bedrock Knowledge Bases using Aurora.
+ Customers can build upon CloudFormation template to customize the provisioning with their own configurations. 

## Limitations of Aurora quick create process
<a name="AuroraPostgreSQL.quickcreatekb.limit"></a>
+ With Aurora quick create option, the DB cluster is provisioned with default configurations. However, these default settings may not meet your specific requirements or intended use case. Quick create does not offer options to modify the configurations during the provisioning process. The configurations are set automatically to streamline the deployment experience. If you need to customize the Aurora DB cluster configuration, you can do so after the initial deployment by quick create in the Amazon RDS console.
+ While quick create flow simplifies the setup process, the time to create the Aurora DB cluster is still approximately 10 minutes, the same as a manual deployment. This is due to the time required to provision the Aurora infrastructure.
+ The quick create option is designed for experimentation and quick setup. The resources created through quick create may not be suitable for production use, and you won't be able to directly migrate them to a production environment in your VPC.

# Integrating Amazon Aurora PostgreSQL with other AWS services
<a name="AuroraPostgreSQL.Integrating"></a>

Amazon Aurora integrates with other AWS services so that you can extend your Aurora PostgreSQL DB cluster to use additional capabilities in the AWS Cloud. Your Aurora PostgreSQL DB cluster can use AWS services to do the following:
+ Quickly collect, view, and assess performance for your Aurora PostgreSQL DB instances with Amazon RDS Performance Insights. Performance Insights expands on existing Amazon RDS monitoring features to illustrate your database's performance and help you analyze any issues that affect it. With the Performance Insights dashboard, you can visualize the database load and filter the load by waits, SQL statements, hosts, or users. For more information about Performance Insights, see [Monitoring DB load with Performance Insights on Amazon Aurora](USER_PerfInsights.md). 
+ Configure your Aurora PostgreSQL DB cluster to publish log data to Amazon CloudWatch Logs. CloudWatch Logs provide highly durable storage for your log records. With CloudWatch Logs, you can perform real-time analysis of the log data, and use CloudWatch to create alarms and view metrics. For more information, see [Publishing Aurora PostgreSQL logs to Amazon CloudWatch Logs](AuroraPostgreSQL.CloudWatch.md).
+ Import data from an Amazon S3 bucket to an Aurora PostgreSQL DB cluster, or export data from an Aurora PostgreSQL DB cluster to an Amazon S3 bucket. For more information, see [Importing data from Amazon S3 into an Aurora PostgreSQL DB cluster](USER_PostgreSQL.S3Import.md) and [Exporting data from an Aurora PostgreSQL DB cluster to Amazon S3](postgresql-s3-export.md).
+ Add machine learning-based predictions to database applications using the SQL language. Aurora machine learning uses a highly optimized integration between the Aurora database and the AWS machine learning (ML) services SageMaker AI and Amazon Comprehend. For more information, see [Using Amazon Aurora machine learning with Aurora PostgreSQL](postgresql-ml.md).
+ Invoke AWS Lambda functions from an Aurora PostgreSQL DB cluster. To do this, use the `aws_lambda` PostgreSQL extension provided with Aurora PostgreSQL. For more information, see [Invoking an AWS Lambda function from an Aurora PostgreSQL DB cluster ](PostgreSQL-Lambda.md).
+ Integrate queries from Amazon Redshift and Aurora PostgreSQL. For more information, see [ Getting started with using federated queries to PostgreSQL](https://docs.aws.amazon.com/redshift/latest/dg/getting-started-federated.html) in the *Amazon Redshift Database Developer Guide*.

# Importing data from Amazon S3 into an Aurora PostgreSQL DB cluster
<a name="USER_PostgreSQL.S3Import"></a>

You can import data that's been stored using Amazon Simple Storage Service into a table on an Aurora PostgreSQL DB cluster instance. To do this, you first install the Aurora PostgreSQL `aws_s3` extension. This extension provides the functions that you use to import data from an Amazon S3 bucket. A *bucket* is an Amazon S3 container for objects and files. The data can be in a comma-separate value (CSV) file, a text file, or a compressed (gzip) file. Following, you can learn how to install the extension and how to import data from Amazon S3 into a table. 

Your database must be running PostgreSQL version 10.7 or higher to import from Amazon S3 into Aurora PostgreSQL. 

If you don't have data stored on Amazon S3, you need to first create a bucket and store the data. For more information, see the following topics in the *Amazon Simple Storage Service User Guide*. 
+ [Create a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#creating-bucket)
+ [Add an object to a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket) 

Cross-account import from Amazon S3 is supported. For more information, see [ Granting cross-account permissions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html) in the *Amazon Simple Storage Service User Guide*.

You can use the customer managed key for encryption while importing data from S3. For more information, see [ KMS keys stored in AWS KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) in the *Amazon Simple Storage Service User Guide*.

**Note**  
Importing data from Amazon S3 isn't supported for Aurora Serverless v1. It is supported for Aurora Serverless v2.

**Topics**
+ [Installing the aws\$1s3 extension](USER_PostgreSQL.S3Import.InstallExtension.md)
+ [Overview of importing data from Amazon S3 data](USER_PostgreSQL.S3Import.Overview.md)
+ [Setting up access to an Amazon S3 bucket](USER_PostgreSQL.S3Import.AccessPermission.md)
+ [Importing data from Amazon S3 to your Aurora PostgreSQL DB cluster](USER_PostgreSQL.S3Import.FileFormats.md)
+ [Function reference](USER_PostgreSQL.S3Import.Reference.md)

# Installing the aws\$1s3 extension
<a name="USER_PostgreSQL.S3Import.InstallExtension"></a>

Before you can use Amazon S3 with your Aurora PostgreSQL DB cluster, you need to install the `aws_s3` extension. This extension provides functions for importing data from an Amazon S3. It also provides functions for exporting data from an instance of an Aurora PostgreSQL DB cluster to an Amazon S3 bucket. For more information, see [Exporting data from an Aurora PostgreSQL DB cluster to Amazon S3](postgresql-s3-export.md). The `aws_s3` extension depends on some of the helper functions in the `aws_commons` extension, which is installed automatically when needed. 

**To install the `aws_s3` extension**

1. Use psql (or pgAdmin) to connect to the writer instance of your Aurora PostgreSQL DB cluster as a user that has `rds_superuser` privileges. If you kept the default name during the setup process, you connect as `postgres`.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. To install the extension, run the following command. 

   ```
   postgres=> CREATE EXTENSION aws_s3 CASCADE;
   NOTICE: installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. To verify that the extension is installed, you can use the psql `\dx` metacommand.

   ```
   postgres=> \dx
          List of installed extensions
       Name     | Version |   Schema   |                 Description
   -------------+---------+------------+---------------------------------------------
    aws_commons | 1.2     | public     | Common data types across AWS services
    aws_s3      | 1.1     | public     | AWS S3 extension for importing data from S3
    plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

The functions for importing data from Amazon S3 and exporting data to Amazon S3 are now available to use.

# Overview of importing data from Amazon S3 data
<a name="USER_PostgreSQL.S3Import.Overview"></a>

**To import S3 data into Aurora PostgreSQL**

First, gather the details that you need to supply to the function. These include the name of the table on your Aurora PostgreSQL DB cluster's instance, and the bucket name, file path, file type, and AWS Region where the Amazon S3 data is stored. For more information, see [View an object](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html) in the *Amazon Simple Storage Service User Guide*.
**Note**  
Multi part data import from Amazon S3 isn't currently supported.

1. Get the name of the table into which the `aws_s3.table_import_from_s3` function is to import the data. As an example, the following command creates a table `t1` that can be used in later steps. 

   ```
   postgres=> CREATE TABLE t1 
       (col1 varchar(80), 
       col2 varchar(80), 
       col3 varchar(80));
   ```

1. Get the details about the Amazon S3 bucket and the data to import. To do this, open the Amazon S3 console at [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/), and choose **Buckets**. Find the bucket containing your data in the list. Choose the bucket, open its Object overview page, and then choose Properties.

   Make a note of the bucket name, path, the AWS Region, and file type. You need the Amazon Resource Name (ARN) later, to set up access to Amazon S3 through an IAM role. For more more information, see [Setting up access to an Amazon S3 bucket](USER_PostgreSQL.S3Import.AccessPermission.md). The image following shows an example.   
![\[Image of a file object in an Amazon S3 bucket.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/aws_s3_import-export_s3_bucket-info.png)

1. You can verify the path to the data on the Amazon S3 bucket by using the AWS CLI command `aws s3 cp`. If the information is correct, this command downloads a copy of the Amazon S3 file. 

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/sample_file_path ./ 
   ```

1. Set up permissions on your Aurora PostgreSQL DB cluster to allow access to the file on the Amazon S3 bucket. To do so, you use either an AWS Identity and Access Management (IAM) role or security credentials. For more information, see [Setting up access to an Amazon S3 bucket](USER_PostgreSQL.S3Import.AccessPermission.md).

1. Supply the path and other Amazon S3 object details gathered (see step 2) to the `create_s3_uri` function to construct an Amazon S3 URI object. To learn more about this function, see [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri). The following is an example of constructing this object during a psql session.

   ```
   postgres=> SELECT aws_commons.create_s3_uri(
      'docs-lab-store-for-rpg',
      'versions_and_jdks_listing.csv',
      'us-west-1'
   ) AS s3_uri \gset
   ```

   In the next step, you pass this object (`aws_commons._s3_uri_1`) to the `aws_s3.table_import_from_s3` function to import the data to the table. 

1. Invoke the `aws_s3.table_import_from_s3` function to import the data from Amazon S3 into your table. For reference information, see [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3). For examples, see [Importing data from Amazon S3 to your Aurora PostgreSQL DB cluster ](USER_PostgreSQL.S3Import.FileFormats.md). 

# Setting up access to an Amazon S3 bucket
<a name="USER_PostgreSQL.S3Import.AccessPermission"></a>

To import data from an Amazon S3 file, give the Aurora PostgreSQL DB cluster permission to access the Amazon S3 bucket containing the file. You provide access to an Amazon S3 bucket in one of two ways, as described in the following topics.

**Topics**
+ [Using an IAM role to access an Amazon S3 bucket](#USER_PostgreSQL.S3Import.ARNRole)
+ [Using security credentials to access an Amazon S3 bucket](#USER_PostgreSQL.S3Import.Credentials)
+ [Troubleshooting access to Amazon S3](#USER_PostgreSQL.S3Import.troubleshooting)

## Using an IAM role to access an Amazon S3 bucket
<a name="USER_PostgreSQL.S3Import.ARNRole"></a>

Before you load data from an Amazon S3 file, give your Aurora PostgreSQL DB cluster permission to access the Amazon S3 bucket the file is in. This way, you don't have to manage additional credential information or provide it in the [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) function call.

To do this, create an IAM policy that provides access to the Amazon S3 bucket. Create an IAM role and attach the policy to the role. Then assign the IAM role to your DB cluster. 

**Note**  
You can't associate an IAM role with an Aurora Serverless v1 DB cluster, so the following steps don't apply.

**To give an Aurora PostgreSQL DB cluster access to Amazon S3 through an IAM role**

1. Create an IAM policy. 

   This policy provides the bucket and object permissions that allow your Aurora PostgreSQL DB cluster to access Amazon S3. 

   Include in the policy the following required actions to allow the transfer of files from an Amazon S3 bucket to Aurora PostgreSQL: 
   + `s3:GetObject` 
   + `s3:ListBucket` 

   Include in the policy the following resources to identify the Amazon S3 bucket and objects in the bucket. This shows the Amazon Resource Name (ARN) format for accessing Amazon S3.
   + arn:aws:s3:::*amzn-s3-demo-bucket*
   + arn:aws:s3:::*amzn-s3-demo-bucket*/\$1

   For more information on creating an IAM policy for Aurora PostgreSQL, see [Creating and using an IAM policy for IAM database access](UsingWithRDS.IAMDBAuth.IAMPolicy.md). See also [Tutorial: Create and attach your first customer managed policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) in the *IAM User Guide*.

   The following AWS CLI command creates an IAM policy named `rds-s3-import-policy` with these options. It grants access to a bucket named *amzn-s3-demo-bucket*. 
**Note**  
Make a note of the Amazon Resource Name (ARN) of the policy returned by this command. You need the ARN in a subsequent step when you attach the policy to an IAM role.  
**Example**  

   For Linux, macOS, or Unix:

   ```
   aws iam create-policy \
      --policy-name rds-s3-import-policy \
      --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3import",
            "Action": [
              "s3:GetObject",
              "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket", 
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

   For Windows:

   ```
   aws iam create-policy ^
      --policy-name rds-s3-import-policy ^
      --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3import",
            "Action": [
              "s3:GetObject",
              "s3:ListBucket"
            ], 
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket", 
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

1. Create an IAM role. 

   You do this so Aurora PostgreSQL can assume this IAM role to access your Amazon S3 buckets. For more information, see [Creating a role to delegate permissions to an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) in the *IAM User Guide*.

   We recommend using the `[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` and `[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` global condition context keys in resource-based policies to limit the service's permissions to a specific resource. This is the most effective way to protect against the [confused deputy problem](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   If you use both global condition context keys and the `aws:SourceArn` value contains the account ID, the `aws:SourceAccount` value and the account in the `aws:SourceArn` value must use the same account ID when used in the same policy statement.
   + Use `aws:SourceArn` if you want cross-service access for a single resource. 
   + Use `aws:SourceAccount` if you want to allow any resource in that account to be associated with the cross-service use.

   In the policy, be sure to use the `aws:SourceArn` global condition context key with the full ARN of the resource. The following example shows how to do so using the AWS CLI command to create a role named `rds-s3-import-role`.   
**Example**  

   For Linux, macOS, or Unix:

   ```
   aws iam create-role \
      --role-name rds-s3-import-role \
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername"
                   }
                }
          }
        ] 
      }'
   ```

   For Windows:

   ```
   aws iam create-role ^
      --role-name rds-s3-import-role ^
      --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:clustername"
                   }
                }
          }
        ] 
      }'
   ```

1. Attach the IAM policy that you created to the IAM role that you created.

   The following AWS CLI command attaches the policy created in the previous step to the role named `rds-s3-import-role` Replace `your-policy-arn` with the policy ARN that you noted in an earlier step.   
**Example**  

   For Linux, macOS, or Unix:

   ```
   aws iam attach-role-policy \
      --policy-arn your-policy-arn \
      --role-name rds-s3-import-role
   ```

   For Windows:

   ```
   aws iam attach-role-policy ^
      --policy-arn your-policy-arn ^
      --role-name rds-s3-import-role
   ```

1. Add the IAM role to the DB cluster. 

   You do so by using the AWS Management Console or AWS CLI, as described following. 

### Console
<a name="collapsible-section-1"></a>

**To add an IAM role for a PostgreSQL DB cluster using the console**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose the PostgreSQL DB cluster name to display its details.

1. On the **Connectivity & security** tab, in the **Manage IAM roles **section, choose the role to add under **Add IAM roles to this cluster **. 

1. Under **Feature**, choose **s3Import**.

1. Choose **Add role**.

### AWS CLI
<a name="collapsible-section-2"></a>

**To add an IAM role for a PostgreSQL DB cluster using the CLI**
+ Use the following command to add the role to the PostgreSQL DB cluster named `my-db-cluster`. Replace *`your-role-arn`* with the role ARN that you noted in a previous step. Use `s3Import` for the value of the `--feature-name` option.   
**Example**  

  For Linux, macOS, or Unix:

  ```
  aws rds add-role-to-db-cluster \
     --db-cluster-identifier my-db-cluster \
     --feature-name s3Import \
     --role-arn your-role-arn   \
     --region your-region
  ```

  For Windows:

  ```
  aws rds add-role-to-db-cluster ^
     --db-cluster-identifier my-db-cluster ^
     --feature-name s3Import ^
     --role-arn your-role-arn ^
     --region your-region
  ```

### RDS API
<a name="collapsible-section-3"></a>

To add an IAM role for a PostgreSQL DB cluster using the Amazon RDS API, call the [AddRoleToDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddRoleToDBCluster.html) operation. 

## Using security credentials to access an Amazon S3 bucket
<a name="USER_PostgreSQL.S3Import.Credentials"></a>

If you prefer, you can use security credentials to provide access to an Amazon S3 bucket instead of providing access with an IAM role. You do so by specifying the `credentials` parameter in the [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) function call. 

The `credentials` parameter is a structure of type `aws_commons._aws_credentials_1`, which contains AWS credentials. Use the [aws\$1commons.create\$1aws\$1credentials](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_aws_credentials) function to set the access key and secret key in an `aws_commons._aws_credentials_1` structure, as shown following. 

```
postgres=> SELECT aws_commons.create_aws_credentials(
   'sample_access_key', 'sample_secret_key', '')
AS creds \gset
```

After creating the `aws_commons._aws_credentials_1 `structure, use the [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) function with the `credentials` parameter to import the data, as shown following.

```
postgres=> SELECT aws_s3.table_import_from_s3(
   't', '', '(format csv)',
   :'s3_uri', 
   :'creds'
);
```

Or you can include the [aws\$1commons.create\$1aws\$1credentials](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_aws_credentials) function call inline within the `aws_s3.table_import_from_s3` function call.

```
postgres=> SELECT aws_s3.table_import_from_s3(
   't', '', '(format csv)',
   :'s3_uri', 
   aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '')
);
```

## Troubleshooting access to Amazon S3
<a name="USER_PostgreSQL.S3Import.troubleshooting"></a>

If you encounter connection problems when attempting to import data from Amazon S3, see the following for recommendations:
+ [Troubleshooting Amazon Aurora identity and access](security_iam_troubleshoot.md)
+ [Troubleshooting Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) in the *Amazon Simple Storage Service User Guide*
+ [Troubleshooting Amazon S3 and IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-s3.html) in the *IAM User Guide*

# Importing data from Amazon S3 to your Aurora PostgreSQL DB cluster
<a name="USER_PostgreSQL.S3Import.FileFormats"></a>

You import data from your Amazon S3 bucket by using the `table_import_from_s3` function of the aws\$1s3 extension. For reference information, see [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3). 

**Note**  
The following examples use the IAM role method to allow access to the Amazon S3 bucket. Thus, the `aws_s3.table_import_from_s3` function calls don't include credential parameters.

The following shows a typical example.

```
postgres=> SELECT aws_s3.table_import_from_s3(
   't1',
   '', 
   '(format csv)',
   :'s3_uri'
);
```

The parameters are the following:
+ `t1` – The name for the table in the PostgreSQL DB cluster to copy the data into. 
+ `''` – An optional list of columns in the database table. You can use this parameter to indicate which columns of the S3 data go in which table columns. If no columns are specified, all the columns are copied to the table. For an example of using a column list, see [Importing an Amazon S3 file that uses a custom delimiter](#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter).
+ `(format csv)` – PostgreSQL COPY arguments. The copy process uses the arguments and format of the [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) command to import the data. Choices for format include comma-separated value (CSV) as shown in this example, text, and binary. The default is text. 
+  `s3_uri` – A structure that contains the information identifying the Amazon S3 file. For an example of using the [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri) function to create an `s3_uri` structure, see [Overview of importing data from Amazon S3 data](USER_PostgreSQL.S3Import.Overview.md).

For more information about this function, see [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3).

The `aws_s3.table_import_from_s3` function returns text. To specify other kinds of files for import from an Amazon S3 bucket, see one of the following examples. 

**Note**  
Importing 0 bytes file will cause an error.

**Topics**
+ [Importing an Amazon S3 file that uses a custom delimiter](#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter)
+ [Importing an Amazon S3 compressed (gzip) file](#USER_PostgreSQL.S3Import.FileFormats.gzip)
+ [Importing an encoded Amazon S3 file](#USER_PostgreSQL.S3Import.FileFormats.Encoded)

## Importing an Amazon S3 file that uses a custom delimiter
<a name="USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter"></a>

The following example shows how to import a file that uses a custom delimiter. It also shows how to control where to put the data in the database table using the `column_list` parameter of the [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) function. 

For this example, assume that the following information is organized into pipe-delimited columns in the Amazon S3 file.

```
1|foo1|bar1|elephant1
2|foo2|bar2|elephant2
3|foo3|bar3|elephant3
4|foo4|bar4|elephant4
...
```

**To import a file that uses a custom delimiter**

1. Create a table in the database for the imported data.

   ```
   postgres=> CREATE TABLE test (a text, b text, c text, d text, e text);
   ```

1. Use the following form of the [aws\$1s3.table\$1import\$1from\$1s3](USER_PostgreSQL.S3Import.Reference.md#aws_s3.table_import_from_s3) function to import data from the Amazon S3 file. 

   You can include the [aws\$1commons.create\$1s3\$1uri](USER_PostgreSQL.S3Import.Reference.md#USER_PostgreSQL.S3Import.create_s3_uri) function call inline within the `aws_s3.table_import_from_s3` function call to specify the file. 

   ```
   postgres=> SELECT aws_s3.table_import_from_s3(
      'test',
      'a,b,d,e',
      'DELIMITER ''|''', 
      aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'pipeDelimitedSampleFile', 'us-east-2')
   );
   ```

The data is now in the table in the following columns.

```
postgres=> SELECT * FROM test;
a | b | c | d | e 
---+------+---+---+------+-----------
1 | foo1 | | bar1 | elephant1
2 | foo2 | | bar2 | elephant2
3 | foo3 | | bar3 | elephant3
4 | foo4 | | bar4 | elephant4
```

## Importing an Amazon S3 compressed (gzip) file
<a name="USER_PostgreSQL.S3Import.FileFormats.gzip"></a>

The following example shows how to import a file from Amazon S3 that is compressed with gzip. The file that you import needs to have the following Amazon S3 metadata:
+ Key: `Content-Encoding`
+ Value: `gzip`

If you upload the file using the AWS Management Console, the metadata is typically applied by the system. For information about uploading files to Amazon S3 using the AWS Management Console, the AWS CLI, or the API, see [Uploading objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) in the *Amazon Simple Storage Service User Guide*. 

For more information about Amazon S3 metadata and details about system-provided metadata, see [Editing object metadata in the Amazon S3 console](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-object-metadata.html) in the *Amazon Simple Storage Service User Guide*.

Import the gzip file into your Aurora PostgreSQL DB cluster as shown following.

```
postgres=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text);
postgres=> SELECT aws_s3.table_import_from_s3(
 'test_gzip', '', '(format csv)',
 'amzn-s3-demo-bucket', 'test-data.gz', 'us-east-2'
);
```

## Importing an encoded Amazon S3 file
<a name="USER_PostgreSQL.S3Import.FileFormats.Encoded"></a>

The following example shows how to import a file from Amazon S3 that has Windows-1252 encoding.

```
postgres=> SELECT aws_s3.table_import_from_s3(
 'test_table', '', 'encoding ''WIN1252''',
 aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'SampleFile', 'us-east-2')
);
```

# Function reference
<a name="USER_PostgreSQL.S3Import.Reference"></a>

**Topics**
+ [aws\$1s3.table\$1import\$1from\$1s3](#aws_s3.table_import_from_s3)
+ [aws\$1commons.create\$1s3\$1uri](#USER_PostgreSQL.S3Import.create_s3_uri)
+ [aws\$1commons.create\$1aws\$1credentials](#USER_PostgreSQL.S3Import.create_aws_credentials)

## aws\$1s3.table\$1import\$1from\$1s3
<a name="aws_s3.table_import_from_s3"></a>

Imports Amazon S3 data into an Aurora PostgreSQL table. The `aws_s3` extension provides the `aws_s3.table_import_from_s3` function. The return value is text.

### Syntax
<a name="aws_s3.table_import_from_s3-syntax"></a>

The required parameters are `table_name`, `column_list` and `options`. These identify the database table and specify how the data is copied into the table. 

You can also use the following parameters: 
+ The `s3_info` parameter specifies the Amazon S3 file to import. When you use this parameter, access to Amazon S3 is provided by an IAM role for the PostgreSQL DB cluster.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     s3_info aws_commons._s3_uri_1
  )
  ```
+ The `credentials` parameter specifies the credentials to access Amazon S3. When you use this parameter, you don't use an IAM role.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     s3_info aws_commons._s3_uri_1,
     credentials aws_commons._aws_credentials_1
  )
  ```

### Parameters
<a name="aws_s3.table_import_from_s3-parameters"></a>

 *table\$1name*   
A required text string containing the name of the PostgreSQL database table to import the data into. 

 *column\$1list*   
A required text string containing an optional list of the PostgreSQL database table columns in which to copy the data. If the string is empty, all columns of the table are used. For an example, see [Importing an Amazon S3 file that uses a custom delimiter](USER_PostgreSQL.S3Import.FileFormats.md#USER_PostgreSQL.S3Import.FileFormats.CustomDelimiter).

 *options*   
A required text string containing arguments for the PostgreSQL `COPY` command. These arguments specify how the data is to be copied into the PostgreSQL table. For more details, see the [PostgreSQL COPY documentation](https://www.postgresql.org/docs/current/sql-copy.html).

 *s3\$1info*   
An `aws_commons._s3_uri_1` composite type containing the following information about the S3 object:  
+ `bucket` – The name of the Amazon S3 bucket containing the file.
+ `file_path` – The Amazon S3 file name including the path of the file.
+ `region` – The AWS Region that the file is in. For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).

 *credentials*   
An `aws_commons._aws_credentials_1` composite type containing the following credentials to use for the import operation:  
+ Access key
+ Secret key
+ Session token
For information about creating an `aws_commons._aws_credentials_1` composite structure, see [aws\$1commons.create\$1aws\$1credentials](#USER_PostgreSQL.S3Import.create_aws_credentials).

### Alternate syntax
<a name="aws_s3.table_import_from_s3-alternative-syntax"></a>

To help with testing, you can use an expanded set of parameters instead of the `s3_info` and `credentials` parameters. Following are additional syntax variations for the `aws_s3.table_import_from_s3` function: 
+ Instead of using the `s3_info` parameter to identify an Amazon S3 file, use the combination of the `bucket`, `file_path`, and `region` parameters. With this form of the function, access to Amazon S3 is provided by an IAM role on the PostgreSQL DB instance.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     bucket text, 
     file_path text, 
     region text 
  )
  ```
+ Instead of using the `credentials` parameter to specify Amazon S3 access, use the combination of the `access_key`, `session_key`, and `session_token` parameters.

  ```
  aws_s3.table_import_from_s3 (
     table_name text, 
     column_list text, 
     options text, 
     bucket text, 
     file_path text, 
     region text, 
     access_key text, 
     secret_key text, 
     session_token text 
  )
  ```

### Alternate parameters
<a name="aws_s3.table_import_from_s3-alternative-parameters"></a>

*bucket*  
A text string containing the name of the Amazon S3 bucket that contains the file. 

*file\$1path*  
A text string containing the Amazon S3 file name including the path of the file. 

*region*  
A text string identifying the AWS Region location of the file. For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).

*access\$1key*  
A text string containing the access key to use for the import operation. The default is NULL.

*secret\$1key*  
A text string containing the secret key to use for the import operation. The default is NULL.

*session\$1token*  
(Optional) A text string containing the session key to use for the import operation. The default is NULL.

## aws\$1commons.create\$1s3\$1uri
<a name="USER_PostgreSQL.S3Import.create_s3_uri"></a>

Creates an `aws_commons._s3_uri_1` structure to hold Amazon S3 file information. Use the results of the `aws_commons.create_s3_uri` function in the `s3_info` parameter of the [aws\$1s3.table\$1import\$1from\$1s3](#aws_s3.table_import_from_s3) function. 

### Syntax
<a name="USER_PostgreSQL.S3Import.create_s3_uri-syntax"></a>

```
aws_commons.create_s3_uri(
   bucket text,
   file_path text,
   region text
)
```

### Parameters
<a name="USER_PostgreSQL.S3Import.create_s3_uri-parameters"></a>

*bucket*  
A required text string containing the Amazon S3 bucket name for the file.

*file\$1path*  
A required text string containing the Amazon S3 file name including the path of the file.

*region*  
A required text string containing the AWS Region that the file is in. For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).

## aws\$1commons.create\$1aws\$1credentials
<a name="USER_PostgreSQL.S3Import.create_aws_credentials"></a>

Sets an access key and secret key in an `aws_commons._aws_credentials_1` structure. Use the results of the `aws_commons.create_aws_credentials` function in the `credentials` parameter of the [aws\$1s3.table\$1import\$1from\$1s3](#aws_s3.table_import_from_s3) function. 

### Syntax
<a name="USER_PostgreSQL.S3Import.create_aws_credentials-syntax"></a>

```
aws_commons.create_aws_credentials(
   access_key text,
   secret_key text,
   session_token text
)
```

### Parameters
<a name="USER_PostgreSQL.S3Import.create_aws_credentials-parameters"></a>

*access\$1key*  
A required text string containing the access key to use for importing an Amazon S3 file. The default is NULL.

*secret\$1key*  
A required text string containing the secret key to use for importing an Amazon S3 file. The default is NULL.

*session\$1token*  
An optional text string containing the session token to use for importing an Amazon S3 file. The default is NULL. If you provide an optional `session_token`, you can use temporary credentials.

# Exporting data from an Aurora PostgreSQL DB cluster to Amazon S3
<a name="postgresql-s3-export"></a>

You can query data from an Aurora PostgreSQL DB cluster and export it directly into files stored in an Amazon S3 bucket. To do this, you first install the Aurora PostgreSQL `aws_s3` extension. This extension provides you with the functions that you use to export the results of queries to Amazon S3. Following, you can find out how to install the extension and how to export data to Amazon S3. 

You can export from a provisioned or an Aurora Serverless v2 DB instance. These steps aren't supported for Aurora Serverless v1. 

**Note**  
Cross-account export to Amazon S3 isn't supported. 

All currently available versions of Aurora PostgreSQL support exporting data to Amazon Simple Storage Service. For detailed version information, see [Amazon Aurora PostgreSQL updates](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) in the *Release Notes for Aurora PostgreSQL*.

If you don't have a bucket set up for your export, see the following topics the *Amazon Simple Storage Service User Guide*. 
+ [Setting up Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-up-s3.html)
+ [Creating a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)

By default, the data exported from Aurora PostgreSQL to Amazon S3 uses server-side encryption with AWS managed key. You can alternatively use customer managed key that you have already created. If you are using bucket encryption, the Amazon S3 bucket must be encrypted with AWS Key Management Service (AWS KMS) key (SSE-KMS). Currently, buckets encrypted with Amazon S3 managed keys (SSE-S3) are not supported. 

**Note**  
You can save DB and DB cluster snapshot data to Amazon S3 using the AWS Management Console, AWS CLI, or Amazon RDS API. For more information, see [Exporting DB cluster snapshot data to Amazon S3](aurora-export-snapshot.md).

**Topics**
+ [Installing the aws\$1s3 extension](#USER_PostgreSQL.S3Export.InstallExtension)
+ [Overview of exporting data to Amazon S3](#postgresql-s3-export-overview)
+ [Specifying the Amazon S3 file path to export to](#postgresql-s3-export-file)
+ [Setting up access to an Amazon S3 bucket](postgresql-s3-export-access-bucket.md)
+ [Exporting query data using the aws\$1s3.query\$1export\$1to\$1s3 function](postgresql-s3-export-examples.md)
+ [Function reference](postgresql-s3-export-functions.md)
+ [Troubleshooting access to Amazon S3](postgresql-s3-export-troubleshoot.md)

## Installing the aws\$1s3 extension
<a name="USER_PostgreSQL.S3Export.InstallExtension"></a>

Before you can use Amazon Simple Storage Service with your Aurora PostgreSQL DB cluster, you need to install the `aws_s3` extension. This extension provides functions for exporting data from the writer instance of an Aurora PostgreSQL DB cluster to an Amazon S3 bucket. It also provides functions for importing data from an Amazon S3. For more information, see [Importing data from Amazon S3 into an Aurora PostgreSQL DB cluster](USER_PostgreSQL.S3Import.md). The `aws_s3` extension depends on some of the helper functions in the `aws_commons` extension, which is installed automatically when needed. 

**To install the `aws_s3` extension**

1. Use psql (or pgAdmin) to connect to the writer instance of your Aurora PostgreSQL DB cluster as a user that has `rds_superuser` privileges. If you kept the default name during the setup process, you connect as `postgres`.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. To install the extension, run the following command. 

   ```
   postgres=> CREATE EXTENSION aws_s3 CASCADE;
   NOTICE: installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. To verify that the extension is installed, you can use the psql `\dx` metacommand.

   ```
   postgres=> \dx
          List of installed extensions
       Name     | Version |   Schema   |                 Description
   -------------+---------+------------+---------------------------------------------
    aws_commons | 1.2     | public     | Common data types across AWS services
    aws_s3      | 1.1     | public     | AWS S3 extension for importing data from S3
    plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

The functions for importing data from Amazon S3 and exporting data to Amazon S3 are now available to use.

### Verify that your Aurora PostgreSQL version supports exports to Amazon S3
<a name="postgresql-s3-supported"></a>

You can verify that your Aurora PostgreSQL version supports export to Amazon S3 by using the `describe-db-engine-versions` command. The following example checks to see if version 10.14 can export to Amazon S3.

```
aws rds describe-db-engine-versions --region us-east-1 \
--engine aurora-postgresql --engine-version 10.14 | grep s3Export
```

If the output includes the string `"s3Export"`, then the engine supports Amazon S3 exports. Otherwise, the engine doesn't support them.

## Overview of exporting data to Amazon S3
<a name="postgresql-s3-export-overview"></a>

To export data stored in an Aurora PostgreSQL database to an Amazon S3 bucket, use the following procedure.

**To export Aurora PostgreSQL data to S3**

1. Identify an Amazon S3 file path to use for exporting data. For details about this process, see [Specifying the Amazon S3 file path to export to](#postgresql-s3-export-file).

1. Provide permission to access the Amazon S3 bucket.

   To export data to an Amazon S3 file, give the Aurora PostgreSQL DB cluster permission to access the Amazon S3 bucket that the export will use for storage. Doing this includes the following steps:

   1. Create an IAM policy that provides access to an Amazon S3 bucket that you want to export to.

   1. Create an IAM role.

   1. Attach the policy you created to the role you created.

   1. Add this IAM role to your DB cluster .

   For details about this process, see [Setting up access to an Amazon S3 bucket](postgresql-s3-export-access-bucket.md).

1. Identify a database query to get the data. Export the query data by calling the `aws_s3.query_export_to_s3` function. 

   After you complete the preceding preparation tasks, use the [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) function to export query results to Amazon S3. For details about this process, see [Exporting query data using the aws\$1s3.query\$1export\$1to\$1s3 function](postgresql-s3-export-examples.md).

## Specifying the Amazon S3 file path to export to
<a name="postgresql-s3-export-file"></a>

Specify the following information to identify the location in Amazon S3 where you want to export data to:
+ Bucket name – A *bucket* is a container for Amazon S3 objects or files.

  For more information on storing data with Amazon S3, see [ Creating a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) and [Working with objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html) in the *Amazon Simple Storage Service User Guide*. 
+ File path – The file path identifies where the export is stored in the Amazon S3 bucket. The file path consists of the following:
  + An optional path prefix that identifies a virtual folder path.
  + A file prefix that identifies one or more files to be stored. Larger exports are stored in multiple files, each with a maximum size of approximately 6 GB. The additional file names have the same file prefix but with `_partXX` appended. The `XX` represents 2, then 3, and so on.

  For example, a file path with an `exports` folder and a `query-1-export` file prefix is `/exports/query-1-export`.
+ AWS Region (optional) – The AWS Region where the Amazon S3 bucket is located. If you don't specify an AWS Region value, then Aurora saves your files into Amazon S3 in the same AWS Region as the exporting DB cluster.
**Note**  
Currently, the AWS Region must be the same as the region of the exporting DB cluster.

  For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).

To hold the Amazon S3 file information about where the export is to be stored, you can use the [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) function to create an `aws_commons._s3_uri_1` composite structure as follows.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

You later provide this `s3_uri_1` value as a parameter in the call to the [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) function. For examples, see [Exporting query data using the aws\$1s3.query\$1export\$1to\$1s3 function](postgresql-s3-export-examples.md).

# Setting up access to an Amazon S3 bucket
<a name="postgresql-s3-export-access-bucket"></a>

To export data to Amazon S3, give your PostgreSQL DB cluster permission to access the Amazon S3 bucket that the files are to go in. 

To do this, use the following procedure.

**To give a PostgreSQL DB cluster access to Amazon S3 through an IAM role**

1. Create an IAM policy. 

   This policy provides the bucket and object permissions that allow your PostgreSQL DB cluster to access Amazon S3. 

   As part of creating this policy, take the following steps:

   1. Include in the policy the following required actions to allow the transfer of files from your PostgreSQL DB cluster to an Amazon S3 bucket: 
      + `s3:PutObject`
      + `s3:AbortMultipartUpload`

   1. Include the Amazon Resource Name (ARN) that identifies the Amazon S3 bucket and objects in the bucket. The ARN format for accessing Amazon S3 is: `arn:aws:s3:::amzn-s3-demo-bucket/*`

   For more information on creating an IAM policy for Aurora PostgreSQL, see [Creating and using an IAM policy for IAM database access](UsingWithRDS.IAMDBAuth.IAMPolicy.md). See also [Tutorial: Create and attach your first customer managed policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) in the *IAM User Guide*.

   The following AWS CLI command creates an IAM policy named `rds-s3-export-policy` with these options. It grants access to a bucket named *amzn-s3-demo-bucket*. 
**Warning**  
We recommend that you set up your database within a private VPC that has endpoint policies configured for accessing specific buckets. For more information, see [ Using endpoint policies for Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) in the Amazon VPC User Guide.  
We strongly recommend that you do not create a policy with all-resource access. This access can pose a threat for data security. If you create a policy that gives `S3:PutObject` access to all resources using `"Resource":"*"`, then a user with export privileges can export data to all buckets in your account. In addition, the user can export data to *any publicly writable bucket within your AWS Region*. 

   After you create the policy, note the Amazon Resource Name (ARN) of the policy. You need the ARN for a subsequent step when you attach the policy to an IAM role. 

   ```
   aws iam create-policy  --policy-name rds-s3-export-policy  --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3export",
            "Action": [
              "s3:PutObject*",
              "s3:ListBucket",
              "s3:GetObject*",
              "s3:DeleteObject*",
              "s3:GetBucketLocation",
              "s3:AbortMultipartUpload"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

1. Create an IAM role. 

   You do this so Aurora PostgreSQL can assume this IAM role on your behalf to access your Amazon S3 buckets. For more information, see [Creating a role to delegate permissions to an IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) in the *IAM User Guide*.

   We recommend using the `[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` and `[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` global condition context keys in resource-based policies to limit the service's permissions to a specific resource. This is the most effective way to protect against the [confused deputy problem](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   If you use both global condition context keys and the `aws:SourceArn` value contains the account ID, the `aws:SourceAccount` value and the account in the `aws:SourceArn` value must use the same account ID when used in the same policy statement.
   + Use `aws:SourceArn` if you want cross-service access for a single resource. 
   + Use `aws:SourceAccount` if you want to allow any resource in that account to be associated with the cross-service use.

    In the policy, be sure to use the `aws:SourceArn` global condition context key with the full ARN of the resource. The following example shows how to do so using the AWS CLI command to create a role named `rds-s3-export-role`.   
**Example**  

   For Linux, macOS, or Unix:

   ```
   aws iam create-role  \
       --role-name rds-s3-export-role  \
       --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:dbname"
                   }
                }
          }
        ] 
      }'
   ```

   For Windows:

   ```
   aws iam create-role  ^
       --role-name rds-s3-export-role  ^
       --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:cluster:dbname"
                   }
                }
          }
        ] 
      }'
   ```

1. Attach the IAM policy that you created to the IAM role that you created.

   The following AWS CLI command attaches the policy created earlier to the role named `rds-s3-export-role.` Replace `your-policy-arn` with the policy ARN that you noted in an earlier step. 

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role  
   ```

1. Add the IAM role to the DB cluster. You do so by using the AWS Management Console or AWS CLI, as described following.

## Console
<a name="collapsible-section-1"></a>

**To add an IAM role for a PostgreSQL DB cluster using the console**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose the PostgreSQL DB cluster name to display its details.

1. On the **Connectivity & security** tab, in the **Manage IAM roles **section, choose the role to add under **Add IAM roles to this instance**. 

1. Under **Feature**, choose **s3Export**.

1. Choose **Add role**.

## AWS CLI
<a name="collapsible-section-2"></a>

**To add an IAM role for a PostgreSQL DB cluster using the CLI**
+ Use the following command to add the role to the PostgreSQL DB cluster named `my-db-cluster`. Replace *`your-role-arn`* with the role ARN that you noted in a previous step. Use `s3Export` for the value of the `--feature-name` option.   
**Example**  

  For Linux, macOS, or Unix:

  ```
  aws rds add-role-to-db-cluster \
     --db-cluster-identifier my-db-cluster \
     --feature-name s3Export \
     --role-arn your-role-arn   \
     --region your-region
  ```

  For Windows:

  ```
  aws rds add-role-to-db-cluster ^
     --db-cluster-identifier my-db-cluster ^
     --feature-name s3Export ^
     --role-arn your-role-arn ^
     --region your-region
  ```

# Exporting query data using the aws\$1s3.query\$1export\$1to\$1s3 function
<a name="postgresql-s3-export-examples"></a>

Export your PostgreSQL data to Amazon S3 by calling the [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) function. 

**Topics**
+ [Prerequisites](#postgresql-s3-export-examples-prerequisites)
+ [Calling aws\$1s3.query\$1export\$1to\$1s3](#postgresql-s3-export-examples-basic)
+ [Exporting to a CSV file that uses a custom delimiter](#postgresql-s3-export-examples-custom-delimiter)
+ [Exporting to a binary file with encoding](#postgresql-s3-export-examples-encoded)

## Prerequisites
<a name="postgresql-s3-export-examples-prerequisites"></a>

Before you use the `aws_s3.query_export_to_s3` function, be sure to complete the following prerequisites:
+ Install the required PostgreSQL extensions as described in [Overview of exporting data to Amazon S3](postgresql-s3-export.md#postgresql-s3-export-overview).
+ Determine where to export your data to Amazon S3 as described in [Specifying the Amazon S3 file path to export to](postgresql-s3-export.md#postgresql-s3-export-file).
+ Make sure that the DB cluster has export access to Amazon S3 as described in [Setting up access to an Amazon S3 bucket](postgresql-s3-export-access-bucket.md).

The examples following use a database table called `sample_table`. These examples export the data into a bucket called *amzn-s3-demo-bucket*. The example table and data are created with the following SQL statements in psql.

```
psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80));
psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');
```

## Calling aws\$1s3.query\$1export\$1to\$1s3
<a name="postgresql-s3-export-examples-basic"></a>

The following shows the basic ways of calling the [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) function. 

These examples use the variable `s3_uri_1` to identify a structure that contains the information identifying the Amazon S3 file. Use the [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) function to create the structure.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

Although the parameters vary for the following two `aws_s3.query_export_to_s3` function calls, the results are the same for these examples. All rows of the `sample_table` table are exported into a bucket called *amzn-s3-demo-bucket*. 

```
psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1');

psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');
```

The parameters are described as follows:
+ `'SELECT * FROM sample_table'` – The first parameter is a required text string containing an SQL query. The PostgreSQL engine runs this query. The results of the query are copied to the S3 bucket identified in other parameters.
+ `:'s3_uri_1'` – This parameter is a structure that identifies the Amazon S3 file. This example uses a variable to identify the previously created structure. You can instead create the structure by including the `aws_commons.create_s3_uri` function call inline within the `aws_s3.query_export_to_s3` function call as follows.

  ```
  SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 
     aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2') 
  );
  ```
+ `options :='format text'` – The `options` parameter is an optional text string containing PostgreSQL `COPY` arguments. The copy process uses the arguments and format of the [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) command. 

If the file specified doesn't exist in the Amazon S3 bucket, it's created. If the file already exists, it's overwritten. The syntax for accessing the exported data in Amazon S3 is the following.

```
s3-region://bucket-name[/path-prefix]/file-prefix
```

Larger exports are stored in multiple files, each with a maximum size of approximately 6 GB. The additional file names have the same file prefix but with `_partXX` appended. The `XX` represents 2, then 3, and so on. For example, suppose that you specify the path where you store data files as the following.

```
s3-us-west-2://amzn-s3-demo-bucket/my-prefix
```

If the export has to create three data files, the Amazon S3 bucket contains the following data files.

```
s3-us-west-2://amzn-s3-demo-bucket/my-prefix
s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part2
s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part3
```

For the full reference for this function and additional ways to call it, see [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). For more about accessing files in Amazon S3, see [View an object](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html) in the *Amazon Simple Storage Service User Guide*. 

## Exporting to a CSV file that uses a custom delimiter
<a name="postgresql-s3-export-examples-custom-delimiter"></a>

The following example shows how to call the [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) function to export data to a file that uses a custom delimiter. The example uses arguments of the [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) command to specify the comma-separated value (CSV) format and a colon (:) delimiter.

```
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');
```

## Exporting to a binary file with encoding
<a name="postgresql-s3-export-examples-encoded"></a>

The following example shows how to call the [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) function to export data to a binary file that has Windows-1253 encoding.

```
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');
```

# Function reference
<a name="postgresql-s3-export-functions"></a>

**Topics**
+ [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3)
+ [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri)

## aws\$1s3.query\$1export\$1to\$1s3
<a name="aws_s3.export_query_to_s3"></a>

Exports a PostgreSQL query result to an Amazon S3 bucket. The `aws_s3` extension provides the `aws_s3.query_export_to_s3` function. 

The two required parameters are `query` and `s3_info`. These define the query to be exported and identify the Amazon S3 bucket to export to. An optional parameter called `options` provides for defining various export parameters. For examples of using the `aws_s3.query_export_to_s3` function, see [Exporting query data using the aws\$1s3.query\$1export\$1to\$1s3 function](postgresql-s3-export-examples.md).

**Syntax**

```
aws_s3.query_export_to_s3(
    query text,    
    s3_info aws_commons._s3_uri_1,    
    options text,
    kms_key text
)
```Input parameters

*query*  
A required text string containing an SQL query that the PostgreSQL engine runs. The results of this query are copied to an S3 bucket identified in the `s3_info` parameter.

*s3\$1info*  
An `aws_commons._s3_uri_1` composite type containing the following information about the S3 object:  
+ `bucket` – The name of the Amazon S3 bucket to contain the file.
+ `file_path` – The Amazon S3 file name and path.
+ `region` – The AWS Region that the bucket is in. For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md). 

  Currently, this value must be the same AWS Region as that of the exporting DB cluster . The default is the AWS Region of the exporting DB cluster . 
To create an `aws_commons._s3_uri_1` composite structure, see the [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri) function.

*options*  
An optional text string containing arguments for the PostgreSQL `COPY` command. These arguments specify how the data is to be copied when exported. For more details, see the [PostgreSQL COPY documentation](https://www.postgresql.org/docs/current/sql-copy.html).

*kms\$1key text*  
An optional text string containing the customer managed KMS key of the S3 bucket to export the data to.

### Alternate input parameters
<a name="aws_s3.export_query_to_s3-alternate-parameters"></a>

To help with testing, you can use an expanded set of parameters instead of the `s3_info` parameter. Following are additional syntax variations for the `aws_s3.query_export_to_s3` function. 

Instead of using the `s3_info` parameter to identify an Amazon S3 file, use the combination of the `bucket`, `file_path`, and `region` parameters.

```
aws_s3.query_export_to_s3(
    query text,    
    bucket text,    
    file_path text,    
    region text,    
    options text,
    kms_key text
)
```

*query*  
A required text string containing an SQL query that the PostgreSQL engine runs. The results of this query are copied to an S3 bucket identified in the `s3_info` parameter.

*bucket*  
A required text string containing the name of the Amazon S3 bucket that contains the file.

*file\$1path*  
A required text string containing the Amazon S3 file name including the path of the file.

*region*  
An optional text string containing the AWS Region that the bucket is in. For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).  
Currently, this value must be the same AWS Region as that of the exporting DB cluster . The default is the AWS Region of the exporting DB cluster . 

*options*  
An optional text string containing arguments for the PostgreSQL `COPY` command. These arguments specify how the data is to be copied when exported. For more details, see the [PostgreSQL COPY documentation](https://www.postgresql.org/docs/current/sql-copy.html).

*kms\$1key text*  
An optional text string containing the customer managed KMS key of the S3 bucket to export the data to.

### Output parameters
<a name="aws_s3.export_query_to_s3-output-parameters"></a>

```
aws_s3.query_export_to_s3(
    OUT rows_uploaded bigint,
    OUT files_uploaded bigint,
    OUT bytes_uploaded bigint
)
```

*rows\$1uploaded*  
The number of table rows that were successfully uploaded to Amazon S3 for the given query.

*files\$1uploaded*  
The number of files uploaded to Amazon S3. Files are created in sizes of approximately 6 GB. Each additional file created has `_partXX` appended to the name. The `XX` represents 2, then 3, and so on as needed.

*bytes\$1uploaded*  
The total number of bytes uploaded to Amazon S3.

### Examples
<a name="aws_s3.export_query_to_s3-examples"></a>

```
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2','format text');
```

## aws\$1commons.create\$1s3\$1uri
<a name="aws_commons.create_s3_uri"></a>

Creates an `aws_commons._s3_uri_1` structure to hold Amazon S3 file information. You use the results of the `aws_commons.create_s3_uri` function in the `s3_info` parameter of the [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3) function. For an example of using the `aws_commons.create_s3_uri` function, see [Specifying the Amazon S3 file path to export to](postgresql-s3-export.md#postgresql-s3-export-file).

**Syntax**

```
aws_commons.create_s3_uri(
   bucket text,
   file_path text,
   region text
)
```Input parameters

*bucket*  
A required text string containing the Amazon S3 bucket name for the file.

*file\$1path*  
A required text string containing the Amazon S3 file name including the path of the file.

*region*  
A required text string containing the AWS Region that the file is in. For a listing of AWS Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).

# Troubleshooting access to Amazon S3
<a name="postgresql-s3-export-troubleshoot"></a>

If you encounter connection problems when attempting to export data to Amazon S3, first confirm that the outbound access rules for the VPC security group associated with your DB instance permit network connectivity. Specifically, the security group must have a rule that allows the DB instance to send TCP traffic to port 443 and to any IPv4 addresses (0.0.0.0/0). For more information, see [Provide access to the DB cluster in the VPC by creating a security group](CHAP_SettingUp_Aurora.md#CHAP_SettingUp_Aurora.SecurityGroup).

See also the following for recommendations:
+ [Troubleshooting Amazon Aurora identity and access](security_iam_troubleshoot.md)
+ [Troubleshooting Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) in the *Amazon Simple Storage Service User Guide*
+ [Troubleshooting Amazon S3 and IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-s3.html) in the *IAM User Guide*

# Invoking an AWS Lambda function from an Aurora PostgreSQL DB cluster
<a name="PostgreSQL-Lambda"></a>

AWS Lambda is an event-driven compute service that lets you run code without provisioning or managing servers. It's available for use with many AWS services, including Aurora PostgreSQL. For example, you can use Lambda functions to process event notifications from a database, or to load data from files whenever a new file is uploaded to Amazon S3. To learn more about Lambda, see [What is AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) in the *AWS Lambda Developer Guide.* 

**Note**  
Invoking AWS Lambda functions is supported in Aurora PostgreSQL 11.9 and higher (including Aurora Serverless v2). 

Setting up Aurora PostgreSQL to work with Lambda functions is a multi-step process involving AWS Lambda, IAM, your VPC, and your Aurora PostgreSQL DB cluster. Following, you can find summaries of the necessary steps. 

For more information about Lambda functions, see [Getting started with Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) and [AWS Lambda foundations](https://docs.aws.amazon.com/lambda/latest/dg/lambda-foundation.html) in the *AWS Lambda Developer Guide*. 

**Topics**
+ [Step 1: Configure your Aurora PostgreSQL DB cluster for outbound connections to AWS Lambda](#PostgreSQL-Lambda-network)
+ [Step 2: Configure IAM for your Aurora PostgreSQL DB cluster and AWS Lambda](#PostgreSQL-Lambda-access)
+ [Step 3: Install the `aws_lambda` extension for an Aurora PostgreSQL DB cluster](#PostgreSQL-Lambda-install-extension)
+ [Step 4: Use Lambda helper functions with your Aurora PostgreSQL DB cluster (Optional)](#PostgreSQL-Lambda-specify-function)
+ [Step 5: Invoke a Lambda function from your Aurora PostgreSQL DB cluster](#PostgreSQL-Lambda-invoke)
+ [Step 6: Grant other users permission to invoke Lambda functions](#PostgreSQL-Lambda-grant-users-permissions)
+ [Examples: Invoking Lambda functions from your Aurora PostgreSQL DB cluster](PostgreSQL-Lambda-examples.md)
+ [Lambda function error messages](PostgreSQL-Lambda-errors.md)
+ [AWS Lambda function and parameter reference](PostgreSQL-Lambda-functions.md)

## Step 1: Configure your Aurora PostgreSQL DB cluster for outbound connections to AWS Lambda
<a name="PostgreSQL-Lambda-network"></a>

Lambda functions always run inside an Amazon VPC that's owned by the AWS Lambda service. Lambda applies network access and security rules to this VPC and it maintains and monitors the VPC automatically. Your Aurora PostgreSQL DB cluster sends network traffic to the Lambda service's VPC. How you configure this depends on whether your Aurora DB cluster's primary DB instance is public or private.
+ **Public Aurora PostgreSQL DB cluster** – A DB cluster's primary DB instance is public if it's located in a public subnet on your VPC, and if the instance's "PubliclyAccessible" property is `true`. To find the value of this property, you can use the [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI command. Or, you can use the AWS Management Console to open the **Connectivity & security** tab and check that **Publicly accessible** is **Yes**. To verify that the instance is in the public subnet of your VPC, you can use the AWS Management Console or the AWS CLI. 

  To set up access to Lambda, you use the AWS Management Console or the AWS CLI to create an outbound rule on your VPC's security group. The outbound rule specifies that TCP can use port 443 to send packets to any IPv4 addresses (0.0.0.0/0).
+ **Private Aurora PostgreSQL DB cluster** – In this case, the instance's "PubliclyAccessible" property is `false` or it's in a private subnet. To allow the instance to work with Lambda, you can use a Network Address Translation) NAT gateway. For more information, see [NAT gateways](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html). Or, you can configure your VPC with a VPC endpoint for Lambda. For more information, see [VPC endpoints](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) in the *Amazon VPC User Guide*. The endpoint responds to calls made by your Aurora PostgreSQL DB cluster to your Lambda functions. 

Your VPC can now interact with the AWS Lambda VPC at the network level. Next, you configure the permissions using IAM. 

## Step 2: Configure IAM for your Aurora PostgreSQL DB cluster and AWS Lambda
<a name="PostgreSQL-Lambda-access"></a>

Invoking Lambda functions from your Aurora PostgreSQL DB cluster requires certain privileges. To configure the necessary privileges, we recommend that you create an IAM policy that allows invoking Lambda functions, assign that policy to a role, and then apply the role to your DB cluster. This approach gives the DB cluster privileges to invoke the specified Lambda function on your behalf. The following steps show you how to do this using the AWS CLI.

**To configure IAM permissions for using your cluster with Lambda**

1. Use the [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) AWS CLI command to create an IAM policy that allows your Aurora PostgreSQL DB cluster to invoke the specified Lambda function. (The statement ID (Sid) is an optional description for your policy statement and has no effect on usage.) This policy gives your Aurora DB cluster the minimum permissions needed to invoke the specified Lambda function. 

   ```
   aws iam create-policy  --policy-name rds-lambda-policy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
           "Sid": "AllowAccessToExampleFunction",
           "Effect": "Allow",
           "Action": "lambda:InvokeFunction",
           "Resource": "arn:aws:lambda:aws-region:444455556666:function:my-function"
           }
       ]
   }'
   ```

   Alternatively, you can use the predefined `AWSLambdaRole` policy that allows you to invoke any of your Lambda functions. For more information, see [Identity-based IAM policies for Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html#access-policy-examples-aws-managed) 

1. Use the [create-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html) AWS CLI command to create an IAM role that the policy can assume at runtime.

   ```
   aws iam create-role  --role-name rds-lambda-role --assume-role-policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Principal": {
               "Service": "rds.amazonaws.com"
           },
           "Action": "sts:AssumeRole"
           }
       ]
   }'
   ```

1. Apply the policy to the role by using the [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html) AWS CLI command.

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws:iam::444455556666:policy/rds-lambda-policy \
       --role-name rds-lambda-role --region aws-region
   ```

1. Apply the role to your Aurora PostgreSQL DB cluster by using the  [add-role-to-db-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/add-role-to-db-cluster.html)  AWS CLI command. This last step allows your DB cluster's database users to invoke Lambda functions. 

   ```
   aws rds add-role-to-db-cluster \
          --db-cluster-identifier my-cluster-name \
          --feature-name Lambda \
          --role-arn  arn:aws:iam::444455556666:role/rds-lambda-role   \
          --region aws-region
   ```

With the VPC and the IAM configurations complete, you can now install the `aws_lambda` extension. (Note that you can install the extension at any time, but until you set up the correct VPC support and IAM privileges, the `aws_lambda` extension adds nothing to your Aurora PostgreSQL DB cluster's capabilities.)

## Step 3: Install the `aws_lambda` extension for an Aurora PostgreSQL DB cluster
<a name="PostgreSQL-Lambda-install-extension"></a>

To use AWS Lambda with your Aurora PostgreSQL DB cluster, add the `aws_lambda` PostgreSQL extension to your Aurora PostgreSQL DB cluster. This extension provides your Aurora PostgreSQL DB cluster with the ability to call Lambda functions from PostgreSQL. 

**To install the `aws_lambda` extension in your Aurora PostgreSQL DB cluster**

Use the PostgreSQL `psql` command-line or the pgAdmin tool to connect to your Aurora PostgreSQL DB cluster . 

1. Connect to your Aurora PostgreSQL DB cluster instance as a user with `rds_superuser` privileges. The default `postgres` user is shown in the example.

   ```
   psql -h cluster-instance.444455556666.aws-region.rds.amazonaws.com -U postgres -p 5432
   ```

1. Install the `aws_lambda` extension. The `aws_commons` extension is also required. It provides helper functions to `aws_lambda` and many other Aurora extensions for PostgreSQL. If it's not already on your Aurora PostgreSQLDB cluster , it's installed with `aws_lambda` as shown following. 

   ```
   CREATE EXTENSION IF NOT EXISTS aws_lambda CASCADE;
   NOTICE:  installing required extension "aws_commons"
   CREATE EXTENSION
   ```

The `aws_lambda` extension is installed in your Aurora PostgreSQL DB cluster's primary DB instance. You can now create convenience structures for invoking your Lambda functions. 

## Step 4: Use Lambda helper functions with your Aurora PostgreSQL DB cluster (Optional)
<a name="PostgreSQL-Lambda-specify-function"></a>

You can use the helper functions in the `aws_commons` extension to prepare entities that you can more easily invoke from PostgreSQL. To do this, you need to have the following information about your Lambda functions:
+ **Function name** – The name, Amazon Resource Name (ARN), version, or alias of the Lambda function. The IAM policy created in [Step 2: Configure IAM for your cluster and Lambda](#PostgreSQL-Lambda-access) requires the ARN, so we recommend that you use your function's ARN.
+ **AWS Region** – (Optional) The AWS Region where the Lambda function is located if it's not in the same Region as your Aurora PostgreSQL DB cluster.

To hold the Lambda function name information, you use the [aws\$1commons.create\$1lambda\$1function\$1arn](PostgreSQL-Lambda-functions.md#aws_commons.create_lambda_function_arn) function. This helper function creates an `aws_commons._lambda_function_arn_1` composite structure with the details needed by the invoke function. Following, you can find three alternative approaches to setting up this composite structure.

```
SELECT aws_commons.create_lambda_function_arn(
   'my-function',
   'aws-region'
) AS aws_lambda_arn_1 \gset
```

```
SELECT aws_commons.create_lambda_function_arn(
   '111122223333:function:my-function',
   'aws-region'
) AS lambda_partial_arn_1 \gset
```

```
SELECT aws_commons.create_lambda_function_arn(
   'arn:aws:lambda:aws-region:111122223333:function:my-function'
) AS lambda_arn_1 \gset
```

Any of these values can be used in calls to the [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) function. For examples, see [Step 5: Invoke a Lambda function from your Aurora PostgreSQL DB cluster](#PostgreSQL-Lambda-invoke).

## Step 5: Invoke a Lambda function from your Aurora PostgreSQL DB cluster
<a name="PostgreSQL-Lambda-invoke"></a>

The `aws_lambda.invoke` function behaves synchronously or asynchronously, depending on the `invocation_type`. The two alternatives for this parameter are `RequestResponse` (the default) and `Event`, as follows. 
+ **`RequestResponse`** – This invocation type is *synchronous*. It's the default behavior when the call is made without specifying an invocation type. The response payload includes the results of the `aws_lambda.invoke` function. Use this invocation type when your workflow requires receiving results from the Lambda function before proceeding. 
+ **`Event`** – This invocation type is *asynchronous*. The response doesn't include a payload containing results. Use this invocation type when your workflow doesn't need a result from the Lambda function to continue processing.

As a simple test of your setup, you can connect to your DB instance using `psql` and invoke an example function from the command line. Suppose that you have one of the basic functions set up on your Lambda service, such as the simple Python function shown in the following screenshot.

![\[Example Lambda function shown in the AWS CLI for AWS Lambda\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/lambda_simple_function.png)


**To invoke an example function**

1. Connect to your primary DB instance using `psql` or pgAdmin.

   ```
   psql -h cluster.444455556666.aws-region.rds.amazonaws.com -U postgres -p 5432
   ```

1. Invoke the function using its ARN.

   ```
   SELECT * from aws_lambda.invoke(aws_commons.create_lambda_function_arn('arn:aws:lambda:aws-region:444455556666:function:simple', 'us-west-1'), '{"body": "Hello from Postgres!"}'::json );
   ```

   The response looks as follows.

   ```
   status_code |                        payload                        | executed_version | log_result
   -------------+-------------------------------------------------------+------------------+------------
            200 | {"statusCode": 200, "body": "\"Hello from Lambda!\""} | $LATEST          |
   (1 row)
   ```

If your invocation attempt doesn't succeed, see [Lambda function error messages](PostgreSQL-Lambda-errors.md). 

## Step 6: Grant other users permission to invoke Lambda functions
<a name="PostgreSQL-Lambda-grant-users-permissions"></a>

At this point in the procedures, only you as `rds_superuser` can invoke your Lambda functions. To allow other users to invoke any functions that you create, you need to grant them permission. 

**To grant others permission to invoke Lambda functions**

1. Connect to your primary DB instance using `psql` or pgAdmin.

   ```
   psql -h cluster.444455556666.aws-region.rds.amazonaws.com -U postgres -p 5432
   ```

1. Run the following SQL commands:

   ```
   postgres=>  GRANT USAGE ON SCHEMA aws_lambda TO db_username;
   GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA aws_lambda TO db_username;
   ```

# Examples: Invoking Lambda functions from your Aurora PostgreSQL DB cluster
<a name="PostgreSQL-Lambda-examples"></a>

Following, you can find several examples of calling the [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) function. Most of the examples use the composite structure `aws_lambda_arn_1` that you create in [Step 4: Use Lambda helper functions with your Aurora PostgreSQL DB cluster (Optional)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function) to simplify passing the function details. For an example of asynchronous invocation, see [Example: Asynchronous (Event) invocation of Lambda functions](#PostgreSQL-Lambda-Event). All the other examples listed use synchronous invocation. 

To learn more about Lambda invocation types, see [Invoking Lambda functions](https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html) in the *AWS Lambda Developer Guide*. For more information about `aws_lambda_arn_1`, see [aws\$1commons.create\$1lambda\$1function\$1arn](PostgreSQL-Lambda-functions.md#aws_commons.create_lambda_function_arn). 

**Topics**
+ [Example: Synchronous (RequestResponse) invocation of Lambda functions](#PostgreSQL-Lambda-RequestResponse)
+ [Example: Asynchronous (Event) invocation of Lambda functions](#PostgreSQL-Lambda-Event)
+ [Example: Capturing the Lambda execution log in a function response](#PostgreSQL-Lambda-log-response)
+ [Example: Including client context in a Lambda function](#PostgreSQL-Lambda-client-context)
+ [Example: Invoking a specific version of a Lambda function](#PostgreSQL-Lambda-function-version)

## Example: Synchronous (RequestResponse) invocation of Lambda functions
<a name="PostgreSQL-Lambda-RequestResponse"></a>

Following are two examples of a synchronous Lambda function invocation. The results of these `aws_lambda.invoke` function calls are the same.

```
SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json);
```

```
SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse');
```

The parameters are described as follows:
+ `:'aws_lambda_arn_1'` – This parameter identifies the composite structure created in [Step 4: Use Lambda helper functions with your Aurora PostgreSQL DB cluster (Optional)](PostgreSQL-Lambda.md#PostgreSQL-Lambda-specify-function), with the `aws_commons.create_lambda_function_arn` helper function. You can also create this structure inline within your `aws_lambda.invoke` call as follows. 

  ```
  SELECT * FROM aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function', 'aws-region'),
  '{"body": "Hello from Postgres!"}'::json
  );
  ```
+ `'{"body": "Hello from PostgreSQL!"}'::json` – The JSON payload to pass to the Lambda function.
+ `'RequestResponse'` – The Lambda invocation type.

## Example: Asynchronous (Event) invocation of Lambda functions
<a name="PostgreSQL-Lambda-Event"></a>

Following is an example of an asynchronous Lambda function invocation. The `Event` invocation type schedules the Lambda function invocation with the specified input payload and returns immediately. Use the `Event` invocation type in certain workflows that don't depend on the results of the Lambda function.

```
SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'Event');
```

## Example: Capturing the Lambda execution log in a function response
<a name="PostgreSQL-Lambda-log-response"></a>

You can include the last 4 KB of the execution log in the function response by using the `log_type` parameter in your `aws_lambda.invoke` function call. By default, this parameter is set to `None`, but you can specify `Tail` to capture the results of the Lambda execution log in the response, as shown following.

```
SELECT *, select convert_from(decode(log_result, 'base64'), 'utf-8') as log FROM aws_lambda.invoke(:'aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'Tail');
```

Set the [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) function's `log_type` parameter to `Tail` to include the execution log in the response. The default value for the `log_type` parameter is `None`.

The `log_result` that's returned is a `base64` encoded string. You can decode the contents using a combination of the `decode` and `convert_from` PostgreSQL functions.

For more information about `log_type`, see [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke).

## Example: Including client context in a Lambda function
<a name="PostgreSQL-Lambda-client-context"></a>

The `aws_lambda.invoke` function has a `context` parameter that you can use to pass information separate from the payload, as shown following. 

```
SELECT *, convert_from(decode(log_result, 'base64'), 'utf-8') as log FROM aws_lambda.invoke(:'aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'Tail');
```

To include client context, use a JSON object for the [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) function's `context` parameter.

For more information about the `context` parameter, see the [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) reference. 

## Example: Invoking a specific version of a Lambda function
<a name="PostgreSQL-Lambda-function-version"></a>

You can specify a particular version of a Lambda function by including the `qualifier` parameter with the `aws_lambda.invoke` call. Following, you can find an example that does this using `'custom_version'` as an alias for the version.

```
SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json, 'RequestResponse', 'None', NULL, 'custom_version');
```

You can also supply a Lambda function qualifier with the function name details instead, as follows.

```
SELECT * FROM aws_lambda.invoke(aws_commons.create_lambda_function_arn('my-function:custom_version', 'us-west-2'),
'{"body": "Hello from Postgres!"}'::json);
```

For more information about `qualifier` and other parameters, see the [aws\$1lambda.invoke](PostgreSQL-Lambda-functions.md#aws_lambda.invoke) reference.

# Lambda function error messages
<a name="PostgreSQL-Lambda-errors"></a>

In the following list you can find information about error messages, with possible causes and solutions.
+ **VPC configuration issues**

  VPC configuration issues can raise the following error messages when trying to connect: 

  ```
  ERROR:  invoke API failed
  DETAIL: AWS Lambda client returned 'Unable to connect to endpoint'.
  CONTEXT:  SQL function "invoke" statement 1
  ```

  A common cause for this error is improperly configured VPC security group. Make sure you have an outbound rule for TCP open on port 443 of your VPC security group so that your VPC can connect to the Lambda VPC.
+ **Lack of permissions needed to invoke Lambda functions**

  If you see either of the following error messages, the user (role) invoking the function doesn't have proper permissions.

  ```
  ERROR:  permission denied for schema aws_lambda
  ```

  ```
  ERROR:  permission denied for function invoke
  ```

  A user (role) must be given specific grants to invoke Lambda functions. For more information, see [Step 6: Grant other users permission to invoke Lambda functions](PostgreSQL-Lambda.md#PostgreSQL-Lambda-grant-users-permissions). 
+ **Improper handling of errors in your Lambda functions**

  If a Lambda function throws an exception during request processing, `aws_lambda.invoke` fails with a PostgreSQL error such as the following.

  ```
  SELECT * FROM aws_lambda.invoke('aws_lambda_arn_1', '{"body": "Hello from Postgres!"}'::json);
  ERROR:  lambda invocation failed
  DETAIL:  "arn:aws:lambda:us-west-2:555555555555:function:my-function" returned error "Unhandled", details: "<Error details string>".
  ```

  Be sure to handle errors in your Lambda functions or in your PostgreSQL application.

# AWS Lambda function and parameter reference
<a name="PostgreSQL-Lambda-functions"></a>

Following is the reference for the functions and parameters to use for invoking Lambda with Aurora PostgreSQL .

**Topics**
+ [aws\$1lambda.invoke](#aws_lambda.invoke)
+ [aws\$1commons.create\$1lambda\$1function\$1arn](#aws_commons.create_lambda_function_arn)
+ [aws\$1lambda parameters](#aws_lambda.parameters)

## aws\$1lambda.invoke
<a name="aws_lambda.invoke"></a>

Runs a Lambda function for an Aurora PostgreSQL DB cluster .

For more details about invoking Lambda functions, see also [Invoke](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html) in the *AWS Lambda Developer Guide.*

**Syntax**

------
#### [ JSON ]

```
aws_lambda.invoke(
IN function_name TEXT,
IN payload JSON,
IN region TEXT DEFAULT NULL,
IN invocation_type TEXT DEFAULT 'RequestResponse',
IN log_type TEXT DEFAULT 'None',
IN context JSON DEFAULT NULL,
IN qualifier VARCHAR(128) DEFAULT NULL,
OUT status_code INT,
OUT payload JSON,
OUT executed_version TEXT,
OUT log_result TEXT)
```

```
aws_lambda.invoke(
IN function_name aws_commons._lambda_function_arn_1,
IN payload JSON,
IN invocation_type TEXT DEFAULT 'RequestResponse',
IN log_type TEXT DEFAULT 'None',
IN context JSON DEFAULT NULL,
IN qualifier VARCHAR(128) DEFAULT NULL,
OUT status_code INT,
OUT payload JSON,
OUT executed_version TEXT,
OUT log_result TEXT)
```

------
#### [ JSONB ]

```
aws_lambda.invoke(
IN function_name TEXT,
IN payload JSONB,
IN region TEXT DEFAULT NULL,
IN invocation_type TEXT DEFAULT 'RequestResponse',
IN log_type TEXT DEFAULT 'None',
IN context JSONB DEFAULT NULL,
IN qualifier VARCHAR(128) DEFAULT NULL,
OUT status_code INT,
OUT payload JSONB,
OUT executed_version TEXT,
OUT log_result TEXT)
```

```
aws_lambda.invoke(
IN function_name aws_commons._lambda_function_arn_1,
IN payload JSONB,
IN invocation_type TEXT DEFAULT 'RequestResponse',
IN log_type TEXT DEFAULT 'None',
IN context JSONB DEFAULT NULL,
IN qualifier VARCHAR(128) DEFAULT NULL,
OUT status_code INT,
OUT payload JSONB,
OUT executed_version TEXT,
OUT log_result TEXT
)
```

------Input parameters

**function\$1name**  
The identifying name of the Lambda function. The value can be the function name, an ARN, or a partial ARN. For a listing of possible formats, see [ Lambda function name formats](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestParameters) in the *AWS Lambda Developer Guide.*

*payload*  
The input for the Lambda function. The format can be JSON or JSONB. For more information, see [JSON Types](https://www.postgresql.org/docs/current/datatype-json.html) in the PostgreSQL documentation.

*region*  
(Optional) The Lambda Region for the function. By default, Aurora resolves the AWS Region from the full ARN in the `function_name` or it uses the Aurora PostgreSQL DB instance Region. If this Region value conflicts with the one provided in the `function_name` ARN, an error is raised.

*invocation\$1type*  
The invocation type of the Lambda function. The value is case-sensitive. Possible values include the following:  
+ `RequestResponse` – The default. This type of invocation for a Lambda function is synchronous and returns a response payload in the result. Use the `RequestResponse` invocation type when your workflow depends on receiving the Lambda function result immediately. 
+ `Event` – This type of invocation for a Lambda function is asynchronous and returns immediately without a returned payload. Use the `Event` invocation type when you don't need results of the Lambda function before your workflow moves on.
+ `DryRun` – This type of invocation tests access without running the Lambda function. 

*log\$1type*  
The type of Lambda log to return in the `log_result` output parameter. The value is case-sensitive. Possible values include the following:  
+ Tail – The returned `log_result` output parameter will include the last 4 KB of the execution log. 
+ None – No Lambda log information is returned.

*context*  
Client context in JSON or JSONB format. Fields to use include than `custom` and `env`.

*qualifier*  
A qualifier that identifies a Lambda function's version to be invoked. If this value conflicts with one provided in the `function_name` ARN, an error is raised.Output parameters

*status\$1code*  
An HTTP status response code. For more information, see [Lambda Invoke response elements](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_ResponseElements) in the *AWS Lambda Developer Guide.*

*payload*  
The information returned from the Lambda function that ran. The format is in JSON or JSONB.

*executed\$1version*  
The version of the Lambda function that ran.

*log\$1result*  
The execution log information returned if the `log_type` value is `Tail` when the Lambda function was invoked. The result contains the last 4 KB of the execution log encoded in Base64.

## aws\$1commons.create\$1lambda\$1function\$1arn
<a name="aws_commons.create_lambda_function_arn"></a>

Creates an `aws_commons._lambda_function_arn_1` structure to hold Lambda function name information. You can use the results of the `aws_commons.create_lambda_function_arn` function in the `function_name` parameter of the aws\$1lambda.invoke [aws\$1lambda.invoke](#aws_lambda.invoke) function. 

**Syntax**

```
aws_commons.create_lambda_function_arn(
    function_name TEXT,
    region TEXT DEFAULT NULL
    )
    RETURNS aws_commons._lambda_function_arn_1
```Input parameters

*function\$1name*  
A required text string containing the Lambda function name. The value can be a function name, a partial ARN, or a full ARN.

*region*  
An optional text string containing the AWS Region that the Lambda function is in. For a listing of Region names and associated values, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md).

## aws\$1lambda parameters
<a name="aws_lambda.parameters"></a>

In this table, you can find parameters associated with the `aws_lambda` function.


| Parameter | Description | 
| --- | --- | 
| `aws_lambda.connect_timeout_ms` | This is a dynamic parameter and it sets the maximum wait time while connecting to AWS Lambda. The default values is `1000`. Allowed values for this parameter are 1 - 900000. | 
| `aws_lambda.request_timeout_ms` | This is a dynamic parameter and it sets the maximum wait time while waiting for response from AWS Lambda. The default values is `3000`. Allowed values for this parameter are 1 - 900000. | 
| `aws_lambda.endpoint_override` | Specifies the endpoint that can be used to connect to AWS Lambda. An empty string selects the default AWS Lambda endpoint for the region. You must restart the database for this static parameter change to take effect. | 

# Publishing Aurora PostgreSQL logs to Amazon CloudWatch Logs
<a name="AuroraPostgreSQL.CloudWatch"></a>

You can configure your Aurora PostgreSQL DB cluster to export log data to Amazon CloudWatch Logs on a regular basis. When you do so, events from your Aurora PostgreSQL DB cluster's PostgreSQL log are automatically *published* to Amazon CloudWatch, as Amazon CloudWatch Logs. In CloudWatch, you can find the exported log data in a *Log group* for your Aurora PostgreSQL DB cluster. The log group contains one or more *log streams* that contain the events from the PostgreSQL log from each instance in the cluster. 

Publishing the logs to CloudWatch Logs allows you to keep your cluster's PostgreSQL log records in highly durable storage. With the log data available in CloudWatch Logs, you can evaluate and improve your cluster's operations. You can also use CloudWatch to create alarms and view metrics. To learn more, see [Monitoring log events in Amazon CloudWatch](AuroraPostgreSQL.CloudWatch.Monitor.md).

**Note**  
Publishing your PostgreSQL logs to CloudWatch Logs consumes storage, and you incur charges for that storage. Be sure to delete any CloudWatch Logs that you no longer need. 

Turning the export log option off for an existing Aurora PostgreSQL DB cluster doesn't affect any data that's already held in CloudWatch Logs. Existing logs remain available in CloudWatch Logs based on your log retention settings. To learn more about CloudWatch Logs, see [What is Amazon CloudWatch Logs?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 

Aurora PostgreSQL supports publishing logs to CloudWatch Logs for the following versions. 
+ 16.1 and all higher versions
+ 15.2 and higher 15 versions
+ 14.3 and higher 14 versions
+ 13.3 and higher 13 versions
+ 12.8 and higher 12 versions
+ 11.9 and higher 11 versions

For information about turning on the option to publish logs to CloudWatch Logs, monitoring log events in CloudWatch Logs, and analyzing logs using CloudWatch Logs Insights, see the following topics.

**Topics**
+ [Turning on the option to publish logs to Amazon CloudWatch](AuroraPostgreSQL.CloudWatch.Publishing.md)
+ [Monitoring log events in Amazon CloudWatch](AuroraPostgreSQL.CloudWatch.Monitor.md)
+ [Analyzing PostgreSQL logs using CloudWatch Logs Insights](AuroraPostgreSQL.CloudWatch.Analyzing.md)

# Turning on the option to publish logs to Amazon CloudWatch
<a name="AuroraPostgreSQL.CloudWatch.Publishing"></a>

To publish your Aurora PostgreSQL DB cluster's PostgreSQL log to CloudWatch Logs, choose the **Log export** option for the cluster. You can choose the Log export setting when you create your Aurora PostgreSQL DB cluster. Or, you can modify the cluster later on. When you modify an existing cluster, its PostgreSQL logs from each instance are published to CloudWatch cluster from that point on. For Aurora PostgreSQL, the PostgreSQL log (`postgresql.log`) is the only log that gets published to Amazon CloudWatch. 

You can use the AWS Management Console, the AWS CLI, or the RDS API to turn on the Log export feature for your Aurora PostgreSQL DB cluster. 

## Console
<a name="AuroraPostgreSQL.CloudWatch.Console"></a>

You choose the Log exports option to start publishing the PostgreSQL logs from your Aurora PostgreSQL DB cluster to CloudWatch Logs.

**To turn on the Log export feature from the console**

1. Open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**.

1. Choose the Aurora PostgreSQL DB cluster whose log data you want to publish to CloudWatch Logs.

1. Choose **Modify**.

1. In the **Log exports** section, choose **PostgreSQL log**.

1. Choose **Continue**, and then choose **Modify cluster** on the summary page.

## AWS CLI
<a name="AuroraPostgreSQL.CloudWatch.CLI"></a>

You can turn on the log export option to start publishing Aurora PostgreSQL logs to Amazon CloudWatch Logs with the AWS CLI. To do so, run the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) AWS CLI command with the following options: 
+ `--db-cluster-identifier`—The DB cluster identifier.
+ `--cloudwatch-logs-export-configuration`—The configuration setting for the log types to be set for export to CloudWatch Logs for the DB cluster.

You can also publish Aurora PostgreSQL logs by running one of the following AWS CLI commands: 
+ [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)
+ [restore-db-cluster-from-s3](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-s3.html)
+ [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html)
+ [restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html)

Run one of these AWS CLI commands with the following options:
+ `--db-cluster-identifier`—The DB cluster identifier.
+ `--engine`—The database engine.
+ `--enable-cloudwatch-logs-exports`—The configuration setting for the log types to be enabled for export to CloudWatch Logs for the DB cluster.

Other options might be required depending on the AWS CLI command that you run.

**Example**  
The following command creates an Aurora PostgreSQL DB cluster to publish log files to CloudWatch Logs.  
For Linux, macOS, or Unix:  

```
1. aws rds create-db-cluster \
2.     --db-cluster-identifier my-db-cluster \
3.     --engine aurora-postgresql \
4.     --enable-cloudwatch-logs-exports postgresql
```
For Windows:  

```
1. aws rds create-db-cluster ^
2.     --db-cluster-identifier my-db-cluster ^
3.     --engine aurora-postgresql ^
4.     --enable-cloudwatch-logs-exports postgresql
```

**Example**  
The following command modifies an existing Aurora PostgreSQL DB cluster to publish log files to CloudWatch Logs. The `--cloudwatch-logs-export-configuration` value is a JSON object. The key for this object is `EnableLogTypes`, and its value is `postgresql`, and `instance`.  
For Linux, macOS, or Unix:  

```
1. aws rds modify-db-cluster \
2.     --db-cluster-identifier my-db-cluster \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","instance"]}'
```
For Windows:  

```
1. aws rds modify-db-cluster ^
2.     --db-cluster-identifier my-db-cluster ^
3.     --cloudwatch-logs-export-configuration '{\"EnableLogTypes\":[\"postgresql\",\"instance\"]}'
```
When using the Windows command prompt, make sure to escape double quotation marks (") in JSON code by prefixing them with a backslash (\$1).

**Example**  
The following example modifies an existing Aurora PostgreSQL DB cluster to disable publishing log files to CloudWatch Logs. The `--cloudwatch-logs-export-configuration` value is a JSON object. The key for this object is `DisableLogTypes`, and its value is `postgresql` and `instance`.  
For Linux, macOS, or Unix:  

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["postgresql","instance"]}'
```
For Windows:  

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"postgresql\",\"instance\"]}"
```
When using the Windows command prompt, you must escape double quotes (") in JSON code by prefixing them with a backslash (\$1).

## RDS API
<a name="AuroraPostgreSQL.CloudWatch.API"></a>

You can turn on the log export option to start publishing Aurora PostgreSQL logs with the RDS API. To do so, run the [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) operation with the following options: 
+ `DBClusterIdentifier` – The DB cluster identifier.
+ `CloudwatchLogsExportConfiguration` – The configuration setting for the log types to be enabled for export to CloudWatch Logs for the DB cluster.

You can also publish Aurora PostgreSQL logs with the RDS API by running one of the following RDS API operations: 
+ [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html)
+ [RestoreDBClusterFromS3](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromS3.html)
+ [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)
+ [RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html)

Run the RDS API action with the following parameters: 
+ `DBClusterIdentifier`—The DB cluster identifier.
+ `Engine`—The database engine.
+ `EnableCloudwatchLogsExports`—The configuration setting for the log types to be enabled for export to CloudWatch Logs for the DB cluster.

Other parameters might be required depending on the AWS CLI command that you run.

# Monitoring log events in Amazon CloudWatch
<a name="AuroraPostgreSQL.CloudWatch.Monitor"></a>

With Aurora PostgreSQL log events published and available as Amazon CloudWatch Logs, you can view and monitor events using Amazon CloudWatch. For more information about monitoring, see [View log data sent to CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData).

When you turn on Log exports, a new log group is automatically created using the prefix `/aws/rds/cluster/` with the name of your Aurora PostgreSQL and the log type, as in the following pattern. 

```
/aws/rds/cluster/your-cluster-name/postgresql
```

As an example, suppose that an Aurora PostgreSQL DB cluster named `docs-lab-apg-small` exports its log to Amazon CloudWatch Logs. Its log group name in Amazon CloudWatch is shown following.

```
/aws/rds/cluster/docs-lab-apg-small/postgresql
```

If a log group with the specified name exists, Aurora uses that log group to export log data for the Aurora DB cluster. Each DB instance in the Aurora PostgreSQL DB cluster uploads its PostgreSQL log to the log group as a distinct log stream. You can examine the log group and its log streams using the various graphical and analytical tools available in Amazon CloudWatch.

For example, you can search for information within the log events from your Aurora PostgreSQL DB cluster, and filter events by using the CloudWatch Logs console, the AWS CLI, or the CloudWatch Logs API. For more information, [Searching and filtering log data](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) in the *Amazon CloudWatch Logs User Guide*. 

By default, new log groups are created using **Never expire** for their retention period. You can use the CloudWatch Logs console, the AWS CLI, or the CloudWatch Logs API to change the log retention period. To learn more, see [Change log data retention in CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SettingLogRetention.html) in the *Amazon CloudWatch Logs User Guide*.

**Tip**  
You can use automated configuration, such as AWS CloudFormation, to create log groups with predefined log retention periods, metric filters, and access permissions. 

# Analyzing PostgreSQL logs using CloudWatch Logs Insights
<a name="AuroraPostgreSQL.CloudWatch.Analyzing"></a>

With the PostgreSQL logs from your Aurora PostgreSQL DB cluster published as CloudWatch Logs, you can use CloudWatch Logs Insights to interactively search and analyze your log data in Amazon CloudWatch Logs. CloudWatch Logs Insights includes a query language, sample queries, and other tools for analyzing your log data so that you can identify potential issues and verify fixes. To learn more, see [Analyzing log data with CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) in the *Amazon CloudWatch Logs User Guide*.

**To analyze PostgreSQL logs with CloudWatch Logs Insights**

1. Open the CloudWatch console at [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. In the navigation pane, open **Logs** and choose **Log insights**.

1. In **Select log group(s)**, select the log group for your Aurora PostgreSQL DB cluster.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-select-log-group.png)

1. In the query editor, delete the query that is currently shown, enter the following, and then choose **Run query**.

   ```
   ##Autovacuum execution time in seconds per 5 minute
   fields @message
   | parse @message "elapsed: * s" as @duration_sec
   | filter @message like / automatic vacuum /
   | display @duration_sec
   | sort @timestamp
   | stats avg(@duration_sec) as avg_duration_sec, 
   max(@duration_sec) as max_duration_sec 
   by bin(5 min)
   ```  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-query.png)

1. Choose the **Visualization** tab.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-visualization.png)

1. Choose **Add to dashboard**.

1. In **Select a dashboard**, either select a dashboard or enter a name to create a new dashboard.

1. In **Widget type**, choose a widget type for your visualization.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-dashboard.png)

1. (Optional) Add more widgets based on your log query results.

   1. Choose **Add widget**.

   1. Choose a widget type, such as **Line**.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-widget.png)

   1. In the **Add to this dashboard** window, choose **Logs**.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-add-logs-to-dashboard.png)

   1. In **Select log group(s)**, select the log group for your DB cluster.

   1. In the query editor, delete the query that is currently shown, enter the following, and then choose **Run query**.

      ```
      ##Autovacuum tuples statistics per 5 min
      fields @timestamp, @message
      | parse @message "tuples: " as @tuples_temp
      | parse @tuples_temp "* removed," as @tuples_removed
      | parse @tuples_temp "remain, * are dead but not yet removable, " as @tuples_not_removable
      | filter @message like / automatic vacuum /
      | sort @timestamp
      | stats  avg(@tuples_removed) as avg_tuples_removed, 
      avg(@tuples_not_removable) as avg_tuples_not_removable 
      by bin(5 min)
      ```  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-query2.png)

   1. Choose **Create widget**.

      Your dashboard should look similar to the following image.  
![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-cwl-insights-dashboard-two-graphs.png)

# Monitoring query execution plans and peak memory for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Monitoring.Query.Plans"></a>

You can monitor query execution plans in your Aurora PostgreSQL DB instance to detect the execution plans contributing to current database load and to track performance statistics of execution plans over time using the `aurora_compute_plan_id` parameter. Whenever a query executes, the execution plan used by the query is assigned an identifier and the same identifier is used by subsequent executions of the same plan.

The `aurora_compute_plan_id` is turned `OFF` by default in DB parameter group from Aurora PostgreSQL versions 14.10, 15.5, and higher versions. To assign a plan identifier, set `aurora_compute_plan_id` to `ON` in the parameter group.

This plan identifier is used in several utilities that serve a different purpose.

You can monitor query peak memory usage in your DB instance to detect queries contributing to high database memory use from the following versions:
+ 16.3 and all higher versions
+ 15.7 and higher versions
+ 14.12 and higher versions

Whenever a query runs, the peak memory used by the query is tracked. Queries typically run many times; the average, minimum and maximum memory usage values across all runs can be viewed for each query.

**Topics**
+ [Accessing query execution plans and peak memory using Aurora functions](#AuroraPostgreSQL.Monitoring.Query.Plans.Functions)
+ [Parameter reference for Aurora PostgreSQL query execution plans](#AuroraPostgreSQL.Monitoring.Query.Plans.Parameters)

## Accessing query execution plans and peak memory using Aurora functions
<a name="AuroraPostgreSQL.Monitoring.Query.Plans.Functions"></a>

With `aurora_compute_plan_id`, you can access the execution plans using the following functions:
+ aurora\$1stat\$1activity
+ aurora\$1stat\$1plans

The query peak memory does not include memory that is allocated before query processing starts. Peak memory usage is tracked and reported separately for the planning and execution phases of each query.

![\[\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/aurora-apg-peakmemory.png)


You can access the query peak memory statistics using the following functions:
+ aurora\$1stat\$1statements
+ aurora\$1stat\$1plans

For more information on these functions, see [Aurora PostgreSQL functions reference](Appendix.AuroraPostgreSQL.Functions.md).

## Parameter reference for Aurora PostgreSQL query execution plans
<a name="AuroraPostgreSQL.Monitoring.Query.Plans.Parameters"></a>

You can monitor the query execution plans using the below parameters in a DB parameter group. 

**Topics**
+ [aurora\$1compute\$1plan\$1id](#aurora.compute_plan_id)
+ [aurora\$1stat\$1plans.minutes\$1until\$1recapture](#aurora.minutes_until_recapture)
+ [aurora\$1stat\$1plans.calls\$1until\$1recapture](#aurora.calls_until_recapture)
+ [aurora\$1stat\$1plans.with\$1costs](#aurora.with_costs)
+ [aurora\$1stat\$1plans.with\$1analyze](#aurora.with_analyze)
+ [aurora\$1stat\$1plans.with\$1timing](#aurora.with_timing)
+ [aurora\$1stat\$1plans.with\$1buffers](#aurora.with_buffers)
+ [aurora\$1stat\$1plans.with\$1wal](#aurora.with_wal)
+ [aurora\$1stat\$1plans.with\$1triggers](#aurora.with_triggers)

**Note**  
The configuration for `aurora_stat_plans.with_*` parameters takes effect only for newly captured plans.

### aurora\$1compute\$1plan\$1id
<a name="aurora.compute_plan_id"></a>

The `aurora_compute_plan_id` is a configuration parameter that controls whether a plan identifier is assigned during query execution.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

### aurora\$1stat\$1plans.minutes\$1until\$1recapture
<a name="aurora.minutes_until_recapture"></a>

The number of minutes to pass before a plan is recaptured. Default is 0 which will disable recapturing a plan. When the `aurora_stat_plans.calls_until_recapture` threshold is passed, the plan will be recaptured.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 0 | 0-1073741823 | Set the number of minutes to pass before a plan is recaptured. | 

### aurora\$1stat\$1plans.calls\$1until\$1recapture
<a name="aurora.calls_until_recapture"></a>

The number of calls to a plan before it is recaptured. Default is 0 which will disable recapturing a plan after a number of calls. When the `aurora_stat_plans.minutes_until_recapture` threshold is passed, the plan will be recaptured.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 0 | 0-1073741823 | Set the number of calls before a plan is recaptured. | 

### aurora\$1stat\$1plans.with\$1costs
<a name="aurora.with_costs"></a>

Captures an EXPLAIN plan with estimated costs. The allowed values are `on` and `off`. The default is `on`.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

### aurora\$1stat\$1plans.with\$1analyze
<a name="aurora.with_analyze"></a>

Controls the EXPLAIN plan with ANALYZE. This mode is only used the first time a plan is captured. The allowed values are `on` and `off`. The default is `off`.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

### aurora\$1stat\$1plans.with\$1timing
<a name="aurora.with_timing"></a>

Plan timing will be captured in the explain when ANALYZE is used. The default is `on`.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

### aurora\$1stat\$1plans.with\$1buffers
<a name="aurora.with_buffers"></a>

Plan buffer usage statistics will be captured in the explain when ANALYZE is used. The default is `off`.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

### aurora\$1stat\$1plans.with\$1wal
<a name="aurora.with_wal"></a>

Plan wal usage statistics will be captured in the explain when ANALYZE is used. The default is `off`.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

### aurora\$1stat\$1plans.with\$1triggers
<a name="aurora.with_triggers"></a>

Plan trigger execution statistics will be captured in the explain when `ANALYZE` is used. The default is `off`.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html)

# Managing query execution plans for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Optimize"></a>

Aurora PostgreSQL query plan management is an optional feature that you can use with your Amazon Aurora PostgreSQL-Compatible Edition DB cluster. This feature is packaged as the `apg_plan_mgmt` extension that you can install in your Aurora PostgreSQL DB cluster. Query plan management allows you to manage the query execution plans generated by the optimizer for your SQL applications. The `apg_plan_mgmt` AWS extension builds on the native query processing functionality of the PostgreSQL database engine. 

Following, you can find information about Aurora PostgreSQL query plan management features, how to set it up, and how to use it with your Aurora PostgreSQL DB cluster. Before you get started, we recommend that you review any release notes for the specific version of the `apg_plan_mgmt` extension available for your Aurora PostgreSQL version. For more information, see [Aurora PostgreSQL apg\$1plan\$1mgmt extension versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.apg_plan_mgmt) in the *Release Notes for Aurora PostgreSQL*. 

**Topics**
+ [Overview of Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.overview.md)
+ [Best practices for Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.BestPractice.md)
+ [Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.Start.md)
+ [Capturing Aurora PostgreSQL execution plans](AuroraPostgreSQL.Optimize.CapturePlans.md)
+ [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md)
+ [Examining Aurora PostgreSQL query plans in the dba\$1plans view](AuroraPostgreSQL.Optimize.ViewPlans.md)
+ [Improving Aurora PostgreSQL query plans](AuroraPostgreSQL.Optimize.Maintenance.md)
+ [Deleting Aurora PostgreSQL query plans](AuroraPostgreSQL.Optimize.Deleting.md)
+ [Exporting and importing managed plans for Aurora PostgreSQL](AuroraPostgreSQL.Optimize.Maintenance.ExportingImporting.md)
+ [Parameter reference for Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.Parameters.md)
+ [Function reference for Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.Functions.md)
+ [Reference for the apg\$1plan\$1mgmt.dba\$1plans view for Aurora PostgreSQL-Compatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md)
+ [Advanced features in Query Plan Management](AuroraPostgreSQL.QPM.Advanced.md)

# Overview of Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.overview"></a>

Aurora PostgreSQL query plan management is designed to ensure plan stability regardless of changes to the database that might cause query plan regression. *Query plan regression* occurs when the optimizer chooses a sub-optimal plan for a given SQL statement after system or database changes. Changes to statistics, constraints, environment settings, query parameter bindings, and upgrades to the PostgreSQL database engine can all cause plan regression.

With Aurora PostgreSQL query plan management, you can control how and when query execution plans change. The benefits of Aurora PostgreSQL query plan management include the following. 
+ Improve plan stability by forcing the optimizer to choose from a small number of known, good plans.
+ Optimize plans centrally and then distribute the best plans globally.
+ Identify indexes that aren't used and assess the impact of creating or dropping an index.
+ Automatically detect a new minimum-cost plan discovered by the optimizer.
+ Try new optimizer features with less risk, because you can choose to approve only the plan changes that improve performance.

You can use the tools provided by query plan management proactively, to specify the best plan for certain queries. Or you can use query plan management to react to changing circumstances and avoid plan regressions. For more information, see [Best practices for Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.BestPractice.md). 

**Topics**
+ [Supported SQL statements](#AuroraPostgreSQL.Optimize.overview.features)
+ [Query plan management limitations](#AuroraPostgreSQL.Optimize.overview.limitations)
+ [Query plan management terminology](#AuroraPostgreSQL.Optimize.Start-terminology)
+ [Aurora PostgreSQL query plan management versions](#AuroraPostgreSQL.Optimize.overview.versions)
+ [Turning on Aurora PostgreSQL query plan management](#AuroraPostgreSQL.Optimize.Enable)
+ [Upgrading Aurora PostgreSQL query plan management](#AuroraPostgreSQL.Optimize.Upgrade)
+ [Turning off Aurora PostgreSQL query plan management](#AuroraPostgreSQL.Optimize.Enable.turnoff)

## Supported SQL statements
<a name="AuroraPostgreSQL.Optimize.overview.features"></a>

Query plan management supports the following types of SQL statements.
+ Any SELECT, INSERT, UPDATE, or DELETE statement, regardless of complexity. 
+ Prepared statements. For more information, see [PREPARE](https://www.postgresql.org/docs/14/sql-prepare.html) in the PostgreSQL documentation.
+ Dynamic statements, including those run in immediate-mode. For more information, see [Dynamic SQL](https://www.postgresql.org/docs/current/ecpg-dynamic.html) and [EXECUTE IMMEDIATE](https://www.postgresql.org/docs/current/ecpg-sql-execute-immediate.html) in PostgreSQL documentation. 
+ Embedded SQL commands and statements. For more information, see [Embedded SQL Commands](https://www.postgresql.org/docs/current/ecpg-sql-commands.html) in the PostgreSQL documentation.
+ Statements inside named functions. For more information, see [CREATE FUNCTION](https://www.postgresql.org/docs/current/sql-createfunction.html) in the PostgreSQL documentation. 
+ Statements containing temp tables.
+ Statements inside procedures and DO-blocks.

You can use query plan management with `EXPLAIN` in manual mode to capture a plan without actually running it. For more information, see [Analyzing the optimizer's chosen plan](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.AnalyzePlans). To learn more about query plan management's modes (manual, automatic), see [Capturing Aurora PostgreSQL execution plans](AuroraPostgreSQL.Optimize.CapturePlans.md).

Aurora PostgreSQL query plan management supports all PostgreSQL language features, including partitioned tables, inheritance, row-level security, and recursive common table expressions (CTEs). To learn more about these PostgreSQL language features, see [Table Partitioning](https://www.postgresql.org/docs/current/ddl-partitioning.html), [Row Security Policies](https://www.postgresql.org/docs/current/ddl-rowsecurity.html), and [WITH Queries (Common Table Expressions)](https://www.postgresql.org/docs/current/queries-with.html) and other topics in the PostgreSQL documentation. 

For information about different versions of the Aurora PostgreSQL query plan management feature, see [Aurora PostgreSQL apg\$1plan\$1mgmt extension versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.apg_plan_mgmt) in the *Release Notes for Aurora PostgreSQL*.

## Query plan management limitations
<a name="AuroraPostgreSQL.Optimize.overview.limitations"></a>

The current release of Aurora PostgreSQL query plan management has the following limitations. 
+ **Plans aren't captured for statements that reference system relations** – Statements that reference system relations, such as `pg_class`, aren't captured. This is by design, to prevent a large number of system-generated plans that are used internally from being captured. This also applies to system tables inside views.
+ **Larger DB instance class might be needed for your Aurora PostgreSQL DB cluster** – Depending on the workload, query plan management might need a DB instance class that has more than 2 vCPUs. The number of `max_worker_processes` is limited by the DB instance class size. The number of `max_worker_processes` provided by a 2-vCPU DB instance class (db.t3.medium, for example) might not be sufficient for a given workload. We recommend that you choose a DB instance class with more than 2 vCPUs for your Aurora PostgreSQL DB cluster if you use query plan managment.

  When the DB instance class can't support the workload, query plan management raises an error message such as the following. 

  ```
  WARNING: could not register plan insert background process
  HINT: You may need to increase max_worker_processes.
  ```

  In this case, you should scale up your Aurora PostgreSQL DB cluster to a DB instance class size with more memory. For more information, see [Supported DB engines for DB instance classes](Concepts.DBInstanceClass.SupportAurora.md).
+ **Plans already stored in sessions aren't affected** – Query plan management provides a way to influence query plans without changing the application code. However, when a generic plan is already stored in an existing session and if you want to change its query plan, then you must first set`plan_cache_mode` to `force_custom_plan` in the DB cluster parameter group.
+ `queryid` in `apg_plan_mgmt.dba_plans` and `pg_stat_statements` can diverge when:
  + Objects are dropped and recreated after storing in apg\$1plan\$1mgmt.dba\$1plans.
  + `apg_plan_mgmt.plans` table is imported from another cluster.

For information about different versions of the Aurora PostgreSQL query plan management feature, see [Aurora PostgreSQL apg\$1plan\$1mgmt extension versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.apg_plan_mgmt) in the *Release Notes for Aurora PostgreSQL*.

## Query plan management terminology
<a name="AuroraPostgreSQL.Optimize.Start-terminology"></a>

The following terms are used throughout this topic. 

**managed statement**  
A SQL statement captured by the optimizer under query plan management. A managed statement has one or more query execution plans stored in the `apg_plan_mgmt.dba_plans` view.

**plan baseline**  
The set of approved plans for a given managed statement. That is, all the plans for the managed statement that have "Approved" for their `status` column in the `dba_plan` view. 

**plan history**  
The set of all captured plans for a given managed statement. The plan history contains all plans captured for the statement, regardless of status. 

**query plan regression**  
The case when the optimizer chooses a less optimal plan than it did before a given change to the database environment, such as a new PostgreSQL version or changes to statistics.

## Aurora PostgreSQL query plan management versions
<a name="AuroraPostgreSQL.Optimize.overview.versions"></a>

Query plan management is supported by all currently available Aurora PostgreSQL releases. For more information, see the list of [Amazon Aurora PostgreSQL updates](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) in the *Release Notes for Aurora PostgreSQL*.

Query plan management functionality is added to your Aurora PostgreSQL DB cluster when you install the `apg_plan_mgmt` extension. Different versions of Aurora PostgreSQL support different versions of the `apg_plan_mgmt` extension. We recommend that you upgrade the query plan management extension to the latest release for your version of Aurora PostgreSQL. 

**Note**  
For release notes for each `apg_plan_mgmt` extension versions, see [Aurora PostgreSQL apg\$1plan\$1mgmt extension versions](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.apg_plan_mgmt) in the *Release Notes for Aurora PostgreSQL*.

You can identify the version running on your cluster by connecting to an instance using `psql` and using the metacommand \$1dx to list extensions as shown following.

```
labdb=> \dx
                       List of installed extensions
     Name      | Version |    Schema     |                            Description
---------------+---------+---------------+-------------------------------------------------------------------
 apg_plan_mgmt | 1.0     | apg_plan_mgmt | Amazon Aurora with PostgreSQL compatibility Query Plan Management
 plpgsql       | 1.0     | pg_catalog    | PL/pgSQL procedural language
(2 rows)
```

The output shows that this cluster is using 1.0 version of the extension. Only certain `apg_plan_mgmt` versions are available for a given Aurora PostgreSQL version. In some cases, you might need to upgrade the Aurora PostgreSQL DB cluster to a new minor release or apply a patch so that you can upgrade to the most recent version of query plan management. The `apg_plan_mgmt` version 1.0 shown in the output is from an Aurora PostgreSQL version 10.17 DB cluster, which doesn't have a newer version of `apg_plan_mgmt` available. In this case, the Aurora PostgreSQL DB cluster should be upgraded to a more recent version of PostgreSQL.

For more information about upgrading your Aurora PostgreSQL DB cluster to a new version of PostgreSQL, see [Database engine updates for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Updates.md).

To learn how to upgrade the `apg_plan_mgmt` extension, see [Upgrading Aurora PostgreSQL query plan management](#AuroraPostgreSQL.Optimize.Upgrade).

## Turning on Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.Enable"></a>

Setting up query plan management for your Aurora PostgreSQL DB cluster involves installing an extension and changing several DB cluster parameter settings. You need `rds_superuser` permissions to install the `apg_plan_mgmt` extension and to turn on the feature for the Aurora PostgreSQL DB cluster.

Installing the extension creates a new role, `apg_plan_mgmt`. This role allows database users to view, manage, and maintain query plans. As an administrator with `rds_superuser` privileges, be sure to grant the `apg_plan_mgmt` role to database users as needed. 

Only users with the `rds_superuser` role can complete the following procedure. The `rds_superuser` is required for creating the `apg_plan_mgmt` extension and its `apg_plan_mgmt` role. Users must be granted the `apg_plan_mgmt` role to administer the `apg_plan_mgmt` extension.

**To turn on query plan management for your Aurora PostgreSQL DB cluster**

The following steps turn on query plan management for all SQL statements that get submitted to the Aurora PostgreSQL DB cluster. This is known as *automatic* mode. To learn more about the difference between modes, see [Capturing Aurora PostgreSQL execution plans](AuroraPostgreSQL.Optimize.CapturePlans.md).

1. Open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Create a custom DB cluster parameter group for your Aurora PostgreSQL DB cluster. You need to change certain parameters to activate query plan management and to set its behavior. For more information, see [Creating a DB parameter group in Amazon Aurora](USER_WorkingWithParamGroups.Creating.md).

1. Open the custom DB cluster parameter group and set the `rds.enable_plan_management` parameter to `1`, as shown in the following image.   
![\[Image of the DB cluster parameter group.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/aurora-qpm-custom-db-cluster-param-change-1.png)

   For more information, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md).

1. Create a custom DB parameter group that you can use to set query plan parameters at the instance level. For more information, see [Creating a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.CreatingCluster.md). 

1. Modify the writer instance of the Aurora PostgreSQL DB cluster to use the custom DB parameter group. For more information, see [Modifying a DB instance in a DB cluster](Aurora.Modifying.md#Aurora.Modifying.Instance).

1. Modify the Aurora PostgreSQL DB cluster to use the custom DB cluster parameter group. For more information, see [Modifying the DB cluster by using the console, CLI, and API](Aurora.Modifying.md#Aurora.Modifying.Cluster).

1. Reboot your DB instance to enable the custom parameter group settings.

1. Connect to your Aurora PostgreSQL DB cluster's DB instance endpoint using `psql` or `pgAdmin`. The following example uses the default `postgres` account for the `rds_superuser` role.

   ```
   psql --host=cluster-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=my-db
   ```

1. Create the `apg_plan_mgmt` extension for your DB instance, as shown following.

   ```
   labdb=> CREATE EXTENSION apg_plan_mgmt;
   CREATE EXTENSION
   ```
**Tip**  
Install the `apg_plan_mgmt` extension in the template database for your application. The default template database is named `template1`. To learn more, see [Template Databases](https://www.postgresql.org/docs/current/manage-ag-templatedbs.html) in the PostgreSQL documentation.

1. Change the `apg_plan_mgmt.capture_plan_baselines` parameter to `automatic`. This setting causes the optimizer to generate plans for every SQL statement that is either planned or executed two or more times. 
**Note**  
Query plan management also has a *manual* mode that you can use for specific SQL statements. To learn more, see [Capturing Aurora PostgreSQL execution plans](AuroraPostgreSQL.Optimize.CapturePlans.md). 

1. Change the value of `apg_plan_mgmt.use_plan_baselines` parameter to "on." This parameter causes the optimizer to choose a plan for the statement from its plan baseline. To learn more, see [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md). 
**Note**  
You can modify the value of either of these dynamic parameters for the session without needing to reboot the instance. 

When your query plan management set up is complete, be sure to grant the `apg_plan_mgmt` role to any database users that need to view, manage, or maintain query plans. 

## Upgrading Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.Upgrade"></a>

We recommend that you upgrade the query plan management extension to the latest release for your version of Aurora PostgreSQL.

1. Connect to the writer instance of your Aurora PostgreSQL DB cluster as a user that has `rds_superuser` privileges. If you kept the default name when you set up your instance, you connect as `postgres` This example shows how to use `psql`, but you can also use pgAdmin if you prefer.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Run the following query to upgrade the extension.

   ```
   ALTER EXTENSION apg_plan_mgmt UPDATE TO '2.1';
   ```

1. Use the [apg\$1plan\$1mgmt.validate\$1plans](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.validate_plans) function to update the hashes of all plans. The optimizer validates all Approved, Unapproved, and Rejected plans to ensure that they's still viable plans for new version of the extension. 

   ```
   SELECT apg_plan_mgmt.validate_plans('update_plan_hash');
   ```

   To learn more about using this function, see [Validating plans](AuroraPostgreSQL.Optimize.Deleting.md#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans).

1. Use the [apg\$1plan\$1mgmt.reload](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.reload) function to refresh any plans in the shared memory with the validated plans from the dba\$1plans view. 

   ```
   SELECT apg_plan_mgmt.reload();
   ```

To learn more about all functions available for query plan management, see [Function reference for Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.Functions.md).

## Turning off Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.Enable.turnoff"></a>

You can disable query plan management at any time by turning off the `apg_plan_mgmt.use_plan_baselines` and `apg_plan_mgmt.capture_plan_baselines`. 

```
labdb=> SET apg_plan_mgmt.use_plan_baselines = off;

labdb=> SET apg_plan_mgmt.capture_plan_baselines = off;
```

# Best practices for Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.BestPractice"></a>

Query plan management lets you control how and when query execution plans change. As a DBA, your main goals when using QPM include preventing regressions when there are changes to your database, and controlling whether to allow the optimizer to use a new plan. In the following, you can find some recommended best practices for using query plan management. Proactive and reactive plan management approaches differ in how and when new plans get approved for use. 

**Contents**
+ [Proactive plan management to help prevent performance regression](#AuroraPostgreSQL.Optimize.BestPractice.Proactive)
  + [Ensuring plan stability after a major version upgrade](#AuroraPostgreSQL.Optimize.BestPractice.MajorVersionUpgrade)
+ [Reactive plan management to detect and repair performance regressions](#AuroraPostgreSQL.Optimize.BestPractice.Reactive)

## Proactive plan management to help prevent performance regression
<a name="AuroraPostgreSQL.Optimize.BestPractice.Proactive"></a>

To prevent plan performance regressions from occurring, you *evolve* plan baselines by running a procedure that compares the performance of newly discovered plans to the performance of the existing baseline of Approved plans, and then automatically approves the fastest set of plans as the new baseline. In this way, the baseline of plans improves over time as faster plans are discovered.

1. In a development environment, identify the SQL statements that have the greatest impact on performance or system throughput. Then capture the plans for these statements as described in [Manually capturing plans for specific SQL statements](AuroraPostgreSQL.Optimize.CapturePlans.md#AuroraPostgreSQL.Optimize.CapturePlans.Manual) and [Automatically capturing plans](AuroraPostgreSQL.Optimize.CapturePlans.md#AuroraPostgreSQL.Optimize.CapturePlans.Automatic). 

1. Export the captured plans from the development environment and import them into the production environment. For more information, see [Exporting and importing managed plans for Aurora PostgreSQL](AuroraPostgreSQL.Optimize.Maintenance.ExportingImporting.md). 

1. In production, run your application and enforce the use of approved managed plans. For more information, see [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md). While the application runs, also add new plans as the optimizer discovers them. For more information, see [Automatically capturing plans](AuroraPostgreSQL.Optimize.CapturePlans.md#AuroraPostgreSQL.Optimize.CapturePlans.Automatic). 

1. Analyze the unapproved plans and approve those that perform well. For more information, see [Evaluating plan performance](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance). 

1. While your application continues to run, the optimizer begins to use the new plans as appropriate.

### Ensuring plan stability after a major version upgrade
<a name="AuroraPostgreSQL.Optimize.BestPractice.MajorVersionUpgrade"></a>

Each major version of PostgreSQL includes enhancements and changes to the query optimizer that are designed to improve performance. However, query execution plans generated by the optimizer in earlier versions might cause performance regressions in newer upgraded versions. You can use query plan management to resolve these performance issues and to ensure plan stability after a major version upgrade.

The optimizer always uses a minimum-cost Approved plan, even if more than one Approved plan for the same statement exists. After an upgrade the optimizer might discover new plans but they will be saved as Unapproved plans. These plans are performed only if approved using the reactive style of plan management with the unapproved\$1plan\$1execution\$1threshold parameter. You can maximize plan stability using the proactive style of plan management with the evolve\$1plan\$1baselines parameter. This compares the performance of the new plans to the old plans and approves or rejects plans that are at least 10% faster than the next best plan.

After upgrading, you can use the `evolve_plan_baselines` function to compare plan performance before and after the upgrade using your query parameter bindings. The following steps assume that you have been using approved managed plans in your production environment, as detailed in [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md). 

1. Before upgrading, run your application with the query plan manager running. While the application runs, add new plans as the optimizer discovers them. For more information, see [Automatically capturing plans](AuroraPostgreSQL.Optimize.CapturePlans.md#AuroraPostgreSQL.Optimize.CapturePlans.Automatic). 

1. Evaluate each plan's performance. For more information, see [Evaluating plan performance](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance).

1. After upgrading, analyze your approved plans again using the `evolve_plan_baselines` function. Compare performance before and after using your query parameter bindings. If the new plan is fast, you can add it to your approved plans. If it's faster than another plan for the same parameter bindings, then you can mark the slower plan as Rejected. 

   For more information, see [Approving better plans](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance.Approving). For reference information about this function, see [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines). 

For more information, see [Ensuring consistent performance after major version upgrades with Amazon Aurora PostgreSQL-Compatible Edition Query Plan Management](https://aws.amazon.com/blogs/database/ensuring-consistent-performance-after-major-version-upgrades-with-amazon-aurora-postgresql-query-plan-management/). 

**Note**  
When you perform a major version upgrade using logical replication or AWS DMS, make sure that you replicate the `apg_plan_mgmt` schema to ensure existing plans are copied to the upgraded instance. For more information on logical replication, see [Using logical replication to perform a major version upgrade for Aurora PostgreSQL](AuroraPostgreSQL.MajorVersionUpgrade.md).

## Reactive plan management to detect and repair performance regressions
<a name="AuroraPostgreSQL.Optimize.BestPractice.Reactive"></a>

By monitoring your application as it runs, you can detect plans that cause performance regressions. When you detect regressions, you manually reject or fix the bad plans by following these steps:

1. While your application runs, enforce the use of managed plans and automatically add newly discovered plans as unapproved. For more information, see [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md) and [Automatically capturing plans](AuroraPostgreSQL.Optimize.CapturePlans.md#AuroraPostgreSQL.Optimize.CapturePlans.Automatic). 

1. Monitor your running application for performance regressions.

1. When you discover a plan regression, set the plan's status to `rejected`. The next time the optimizer runs the SQL statement, it automatically ignores the rejected plan and uses a different approved plan instead. For more information, see [Rejecting or disabling slower plans](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance.Rejecting). 

   In some cases, you might prefer to fix a bad plan rather than reject, disable, or delete it. Use the `pg_hint_plan` extension to experiment with improving a plan. With `pg_hint_plan`, you use special comments to tell the optimizer to override how it normally creates a plan. For more information, see [Fixing plans using pg\$1hint\$1plan](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan). 

# Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.Start"></a>

With query plan management turned on for your Aurora PostgreSQL DB cluster, the optimizer generates and stores query execution plans for any SQL statement that it processes more than once. The optimizer always sets the status of a managed statement's first generated plan to `Approved`, and stores it in the `dba_plans` view. 

The set of approved plans saved for a managed statement is known as its *plan baseline*. As your application runs, the optimizer might generate additional plans for managed statements. The optimizer sets additional captured plans to a status of `Unapproved`. 

Later, you can decide if the `Unapproved` plans perform well and change them to `Approved`, `Rejected`, or `Preferred`. To do so, you use the `apg_plan_mgmt.evolve_plan_baselines` function or the `apg_plan_mgmt.set_plan_status` function. 

When the optimizer generates a plan for a SQL statement, query plan management saves the plan in the `apg_plan_mgmt.plans` table. Database users that have been granted the `apg_plan_mgmt` role can see the plan details by querying the `apg_plan_mgmt.dba_plans` view. For example, the following query lists details for plans currently in the view for a non-production Aurora PostgreSQL DB cluster.
+ `sql_hash` – An identifier for the SQL statement that's the hash value for the normalized text of the SQL statement.
+ `plan_hash` – A unique identifier for the plan that's a combination of the `sql_hash` and a hash of the plan.
+ `status` – The status of the plan. The optimizer can run an approved plan.
+ `enabled` – Indicates whether the plan is ready to use (true) or not (false).
+ `plan_outline` – A representation of the plan that's used to recreate the actual execution plan. Operators in the tree structure map to operators in EXPLAIN output.

The `apg_plan_mgmt.dba_plans` view has many more columns that contain all details of the plan, such as when the plan was last used. For complete details, see [Reference for the apg\$1plan\$1mgmt.dba\$1plans view for Aurora PostgreSQL-Compatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md). 

## Normalization and the SQL hash
<a name="AuroraPostgreSQL.Optimize.Start.hash-and-normalization"></a>

In the `apg_plan_mgmt.dba_plans` view, you can identify a managed statement by its SQL hash value. The SQL hash is calculated on a normalized representation of the SQL statement that removes some differences, such as literal values. 

The *normalization* process for each SQL statement preserves space and case, so that you can still read and understand the gist of the SQL statement. Normalization removes or replaces the following items.
+ Leading block comments
+ The EXPLAIN keyword and EXPLAIN options, and EXPLAIN ANALYZE
+ Trailing spaces
+ All literals

As an example, take the following statement.

```
/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1; 
```

The query plan management normalizes this statement as shown:

```
SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST; 
```

Normalization allows the same SQL hash to be used for similar SQL statements that might differ only in their literal or parameter values. In other words, multiple plans for the same SQL hash can exist, with a different plan that's optimal under different conditions.

**Note**  
A single SQL statement that's used with different schemas has different plans because it's bound to the specific schema at runtime. The planner uses the statistics for schema binding to choose the optimal plan.

To learn more about how the optimizer chooses a plan, see [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md). In that section, you can learn how to use `EXPLAIN` and `EXPLAIN ANALYZE` to preview a plan before it's actually used. For details, see [Analyzing the optimizer's chosen plan](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.AnalyzePlans). For an image that outlines the process for choosing a plan, see [How the optimizer chooses which plan to run](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans). 

# Capturing Aurora PostgreSQL execution plans
<a name="AuroraPostgreSQL.Optimize.CapturePlans"></a>

Aurora PostgreSQL query plan management offers two different modes for capturing query execution plans, automatic or manual. You choose the mode by setting the value of the `apg_plan_mgmt.capture_plans_baselines` to `automatic` or to `manual`. You can capture execution plans for specific SQL statements by using manual plan capture. Alternatively, you can capture all (or the slowest) plans that are executed two or more times as your application runs by using automatic plan capture.

When capturing plans, the optimizer sets the status of a managed statement's first captured plan to `approved`. The optimizer sets the status of any additional plans captured for a managed statement to `unapproved`. However, more than one plan might occasionally be saved with the `approved` status. This can happen when multiple plans are created for a statement in parallel and before the first plan for the statement is committed.

To control the maximum number of plans that can be captured and stored in the `dba_plans` view, set the `apg_plan_mgmt.max_plans` parameter in your DB instance-level parameter group. A change to the `apg_plan_mgmt.max_plans` parameter requires a DB instance reboot for a new value to take effect. For more information, see the [apg\$1plan\$1mgmt.max\$1plans](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.max_plans) parameter. 

## Manually capturing plans for specific SQL statements
<a name="AuroraPostgreSQL.Optimize.CapturePlans.Manual"></a>

If you have a known set of SQL statements to manage, put the statements into a SQL script file and then manually capture plans. The following shows a psql example of how to capture query plans manually for a set of SQL statements.

```
psql> SET apg_plan_mgmt.capture_plan_baselines = manual;
psql> \i my-statements.sql 
psql> SET apg_plan_mgmt.capture_plan_baselines = off;
```

After capturing a plan for each SQL statement, the optimizer adds a new row to the `apg_plan_mgmt.dba_plans` view.

We recommend that you use either EXPLAIN or EXPLAIN EXECUTE statements in the SQL script file. Make sure that you include enough variations in parameter values to capture all the plans of interest.

If you know of a better plan than the optimizer's minimum cost plan, you might be able to force the optimizer to use the better plan. To do so, specify one or more optimizer hints. For more information, see [Fixing plans using pg\$1hint\$1plan](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan). To compare the performance of the `unapproved` and `approved` plans and approve, reject, or delete them, see [Evaluating plan performance](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance). 

## Automatically capturing plans
<a name="AuroraPostgreSQL.Optimize.CapturePlans.Automatic"></a>

Use automatic plan capture for situations such as the following:
+ You don't know the specific SQL statements that you want to manage.
+ You have hundreds or thousands of SQL statements to manage.
+ Your application uses a client API. For example, JDBC uses unnamed prepared statements or bulk-mode statements that can't be expressed in psql.

**To capture plans automatically**

1. Turn on automatic plan capture by setting `apg_plan_mgmt.capture_plan_baselines` to `automatic` in the DB instance-level parameter group. For more information, see [Modifying parameters in a DB parameter group in Amazon Aurora](USER_WorkingWithParamGroups.Modifying.md). 

1. As the application runs, the optimizer captures plans for each SQL statement that runs at least twice.

   As the application runs with default query plan management parameter settings, the optimizer captures plans for each SQL statement that runs at least twice. Capturing all plans while using the defaults has very little run-time overhead and can be enabled in production.

**To turn off automatic plan capture**
+ Set the `apg_plan_mgmt.capture_plan_baselines` parameter to `off` from the DB instance-level parameter group.

To measure the performance of the unapproved plans and approve, reject, or delete them, see [Evaluating plan performance](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance). 

# Using Aurora PostgreSQL managed plans
<a name="AuroraPostgreSQL.Optimize.UsePlans"></a>

To get the optimizer to use captured plans for your managed statements, set the parameter `apg_plan_mgmt.use_plan_baselines` to `true`. The following is a local instance example. 

```
SET apg_plan_mgmt.use_plan_baselines = true;
```

While the application runs, this setting causes the optimizer to use the minimum-cost, preferred, or approved plan that is valid and enabled for each managed statement. 

## Analyzing the optimizer's chosen plan
<a name="AuroraPostgreSQL.Optimize.UsePlans.AnalyzePlans"></a>

When the `apg_plan_mgmt.use_plan_baselines` parameter is set to `true`, you can use EXPLAIN ANALYZE SQL statements to cause the optimizer to show the plan it would use if it were to run the statement. The following is an example.

```
EXPLAIN ANALYZE EXECUTE rangeQuery (1,10000);
```

```
                                                    QUERY PLAN           
--------------------------------------------------------------------------
 Aggregate  (cost=393.29..393.30 rows=1 width=8) (actual time=7.251..7.251 rows=1 loops=1)
   ->  Index Only Scan using t1_pkey on t1 t  (cost=0.29..368.29 rows=10000 width=0) (actual time=0.061..4.859 rows=10000 loops=1)
Index Cond: ((id >= 1) AND (id <= 10000))         
         Heap Fetches: 10000
 Planning time: 1.408 ms
 Execution time: 7.291 ms
 Note: An Approved plan was used instead of the minimum cost plan.
 SQL Hash: 1984047223, Plan Hash: 512153379
```

The output shows the Approved plan from the baseline that would run. However, the output also shows that it found a lower-cost plan. In this case, you capture this new minimum cost plan by turning on automatic plan capture as described in [Automatically capturing plans](AuroraPostgreSQL.Optimize.CapturePlans.md#AuroraPostgreSQL.Optimize.CapturePlans.Automatic). 

New plans are always captured by the optimizer as `Unapproved`. Use the `apg_plan_mgmt.evolve_plan_baselines` function to compare plans and change them to approved, rejected, or disabled. For more information, see [Evaluating plan performance](AuroraPostgreSQL.Optimize.Maintenance.md#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance). 

## How the optimizer chooses which plan to run
<a name="AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans"></a>

The cost of an execution plan is an estimate that the optimizer makes to compare different plans. When calculating a plan's cost, the optimizer includes factors such as CPU and I/O operations required by that plan. To learn more about PostgreSQL query planner cost estimates, see [Query Planning](https://www.postgresql.org/docs/current/runtime-config-query.html) in the PostgreSQL documentation.

The following image shows how a plan is chosen for a given SQL statement when query plan management is active, and when it's not.



![\[Aurora PostgreSQL query plan management workflow\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/aurora-query-plan-mgmt_processing-flow.png)


The flow is as follows:

1. The optimizer generates a minimum-cost plan for the SQL statement. 

1. If query plan management isn't active, the optimizer's plan is run immediately (A. Run Optimizer's plan). Query plan management is inactive when the `apg_plan_mgmt.capture_plan_baselines` and the `apg_plan_mgmt.use_plan_baselines` parameters are both at their default settings ("off" and "false," respectively). 

   Otherwise, query plan management is active. In this case, the SQL statement and the optimizer's plan for it are further assessed before a plan is chosen.
**Tip**  
Database users with the `apg_plan_mgmt` role can pro-actively compare plans, change status of plans, and force the use of specific plans as needed. For more information, see [Improving Aurora PostgreSQL query plans](AuroraPostgreSQL.Optimize.Maintenance.md). 

1. The SQL statement might already have plans that were stored by query plan management in the past. Plans are stored in the `apg_plan_mgmt.dba_plans`, along with information about the SQL statements that were used to create them. Information about a plan includes its status. A plan's status can determine whether it's used or not, as follows.

   1. If the plan isn't among the stored plans for the SQL statement, it means that it's the first time this particular plan was generated by the optimizer for the given SQL statement. The plan is sent to Capture Plan Processing (4). 

   1. If the plan is among the stored plans and its status is Approved or Preferred, the plan is run (A. Run Optimizer's plan).

      If the plan is among the stored plans but it's neither Approved nor Preferred, the plan is sent to Capture Plan Processing (4). 

1. When a plan is captured for the first time for a given SQL statement, the plan's status is always set to Approved (P1). If the optimizer subsequently generates the same plan for the same SQL statement, the status of that plan is changed to Unapproved (P1\$1n). 

   With the plan captured and its status updated, the evaluation continues at the next step (5).

1. A plan's *baseline* consists of the history of the SQL statement and its plans at various states. Query plan management can take the baseline into account when choosing a plan, depending on whether the use plan baselines option is turned on or not, as follows. 
   + Use plan baselines is "off" when the `apg_plan_mgmt.use_plan_baselines` parameter is set to its default value (`false`). The plan isn't compared to the baseline before it's run (A. Run Optimizer's plan). 
   + Use plan baselines is "on" when the `apg_plan_mgmt.use_plan_baselines` parameter is set to `true`. The plan is further assessed using the baseline (6).

1. The plan is compared to other plans for the statement in the baseline.

   1. If the optimizer's plan is among the plans in the baseline, its status is checked (7a). 

   1. If the optimizer's plan isn't among plans in the baseline, the plan is added to the plans for the statement as a new `Unapproved` plan.

1. The plan's status is checked to determine only if it's Unapproved. 

   1. If the plan's status is Unapproved, the plan's estimated cost is compared to the cost estimate specified for the unapproved execution plan threshold. 
      + If the plan's estimated cost is below the threshold, the optimizer uses it even though it's an Unapproved plan (A. Run Optimizer's plan). Generally, the optimizer won't run an Unapproved plan. However, when the `apg_plan_mgmt.unapproved_plan_execution_threshold` parameter specifies a cost threshold value, the optimizer compares the Unapproved plan's cost to the threshold. If the estimated cost is less than the threshold, the optimizer runs the plan. For more information, see [apg\$1plan\$1mgmt.unapproved\$1plan\$1execution\$1threshold](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.unapproved_plan_execution_threshold).
      + If the plan's estimated cost isn't below the threshold, the plan's other attributes are checked (8a). 

   1. If the plan's status is anything other than Unapproved, its other attributes are checked (8a).

1. The optimizer won't use a plan that's disabled. That is, the plan that has its `enable` attribute set to 'f' (false). The optimizer also won't use a plan that has a status of Rejected.

   The optimizer can't use any plans that aren't valid. Plans can become invalid over time when the objects that they depend on, such as indexes and table partitions, are removed or deleted. 

   1. If the statement has any enabled and valid Preferred plans, the optimizer chooses the minimum-cost plan from among the Preferred plans stored for this SQL statement. The optimizer then runs the minimum-cost Preferred plan.

   1. If the statement doesn't have any enabled and valid Preferred plans, it's assessed in the next step (9). 

1. If the statement has any enabled and valid Approved plans, the optimizer chooses the minimum-cost plan from among the Approved plans stored for this SQL statement. The optimizer then runs the minimum-cost Approved plan. 

   If the statement doesn't have any valid and enabled Approved plans, the optimizer uses the minimum cost plan (A. Run Optimizer's plan). 

# Examining Aurora PostgreSQL query plans in the dba\$1plans view
<a name="AuroraPostgreSQL.Optimize.ViewPlans"></a>

Database users and administrators that have been granted the `apg_plan_mgmt` role can view and manage the plans stored in the `apg_plan_mgmt.dba_plans`. An Aurora PostgreSQL DB cluster's administrator (someone with `rds_superuser` permissions) must explicitly grant this role to the database users who need to work with query plan management. 

The `apg_plan_mgmt` view contains the plan history for all managed SQL statements for every database on the writer instance of the Aurora PostgreSQL DB cluster. This view lets you examine plans, their state, when last used, and all other relevant details.

As discussed in [Normalization and the SQL hash](AuroraPostgreSQL.Optimize.Start.md#AuroraPostgreSQL.Optimize.Start.hash-and-normalization), each managed plan is identified by the combined SQL hash value and a plan hash value. With these identifiers, you can use tools such as Amazon RDS Performance Insights to track individual plan performance. For more information about Performance Insights, see [Using Amazon RDS performance insights]( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html). 

## Listing managed plans
<a name="AuroraPostgreSQL.Optimize.ViewPlans.List"></a>

To list the managed plans, use a SELECT statement on the `apg_plan_mgmt.dba_plans` view. The following example displays some columns in the `dba_plans` view such as the `status`, which identifies the approved and unapproved plans.

```
SELECT sql_hash, plan_hash, status, enabled, stmt_name 
FROM apg_plan_mgmt.dba_plans; 

 sql_hash   | plan_hash |   status   | enabled | stmt_name
------------+-----------+------------+---------+------------
 1984047223 | 512153379 | Approved   | t       | rangequery 
 1984047223 | 512284451 | Unapproved | t       | rangequery 
 (2 rows)
```

For readability, the query and the output shown list just a few of the columns from the `dba_plans` view. For complete information, see [Reference for the apg\$1plan\$1mgmt.dba\$1plans view for Aurora PostgreSQL-Compatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md). 

# Improving Aurora PostgreSQL query plans
<a name="AuroraPostgreSQL.Optimize.Maintenance"></a>

Improve query plan management by evaluating plan performance and fixing plans. For more information about improving your query plans, see the following topics.

**Topics**
+ [Evaluating plan performance](#AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance)
+ [Fixing plans using pg\$1hint\$1plan](#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan)

## Evaluating plan performance
<a name="AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance"></a>

After the optimizer captures plans as unapproved, use the `apg_plan_mgmt.evolve_plan_baselines` function to compare plans based on their actual performance. Depending on the outcome of your performance experiments, you can change a plan's status from unapproved to either approved or rejected. You can instead decide to use the `apg_plan_mgmt.evolve_plan_baselines` function to temporarily disable a plan if it does not meet your requirements. 

### Approving better plans
<a name="AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance.Approving"></a>

The following example demonstrates how to change the status of managed plans to approved using the `apg_plan_mgmt.evolve_plan_baselines` function. 

```
SELECT apg_plan_mgmt.evolve_plan_baselines (
   sql_hash, 
   plan_hash, 
   min_speedup_factor := 1.0, 
   action := 'approve'
) 
FROM apg_plan_mgmt.dba_plans WHERE status = 'Unapproved';
```

```
NOTICE:     rangequery (1,10000)
NOTICE:     Baseline   [ Planning time 0.761 ms, Execution time 13.261 ms]
NOTICE:     Baseline+1 [ Planning time 0.204 ms, Execution time 8.956 ms]
NOTICE:     Total time benefit: 4.862 ms, Execution time benefit: 4.305 ms
NOTICE:     Unapproved -> Approved
evolve_plan_baselines 
-----------------------
0
(1 row)
```

The output shows a performance report for the `rangequery` statement with parameter bindings of 1 and 10,000. The new unapproved plan (`Baseline+1`) is better than the best previously approved plan (`Baseline`). To confirm that the new plan is now `Approved`, check the `apg_plan_mgmt.dba_plans` view. 

```
SELECT sql_hash, plan_hash, status, enabled, stmt_name 
FROM apg_plan_mgmt.dba_plans;
```

```
sql_hash  | plan_hash |  status  | enabled | stmt_name  
------------+-----------+----------+---------+------------
1984047223 | 512153379 | Approved | t       | rangequery
1984047223 | 512284451 | Approved | t       | rangequery
(2 rows)
```

The managed plan now includes two approved plans that are the statement's plan baseline. You can also call the `apg_plan_mgmt.set_plan_status` function to directly set a plan's status field to `'Approved'`, `'Rejected'`, `'Unapproved'`, or `'Preferred'`. 

### Rejecting or disabling slower plans
<a name="AuroraPostgreSQL.Optimize.Maintenance.EvaluatingPerformance.Rejecting"></a>

To reject or disable plans, pass `'reject'` or `'disable' `as the action parameter to the `apg_plan_mgmt.evolve_plan_baselines` function. This example disables any captured `Unapproved` plan that is slower by at least 10 percent than the best `Approved` plan for the statement. 

```
SELECT apg_plan_mgmt.evolve_plan_baselines(
sql_hash,  -- The managed statement ID
plan_hash, -- The plan ID
1.1,       -- number of times faster the plan must be 
'disable'  -- The action to take. This sets the enabled field to false.
)
FROM apg_plan_mgmt.dba_plans
WHERE status = 'Unapproved' AND   -- plan is Unapproved
origin = 'Automatic';       -- plan was auto-captured
```

You can also directly set a plan to rejected or disabled. To directly set a plan's enabled field to `true` or `false`, call the `apg_plan_mgmt.set_plan_enabled` function. To directly set a plan's status field to `'Approved'`, `'Rejected'`, `'Unapproved'`, or `'Preferred'`, call the `apg_plan_mgmt.set_plan_status` function.

To delete plans that aren't valid and that you expect to remain invalid, use the `apg_plan_mgmt.validate_plans` function. This function lets you delete or disable invalid plans. For more information, see [Validating plans](AuroraPostgreSQL.Optimize.Deleting.md#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans). 

## Fixing plans using pg\$1hint\$1plan
<a name="AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan"></a>

The query optimizer is well-designed to find an optimal plan for all statements, and in most cases the optimizer finds a good plan. However, occasionally you might know that a much better plan exists than that generated by the optimizer. Two recommended ways to get the optimizer to generate a desired plan include using the `pg_hint_plan` extension or setting Grand Unified Configuration (GUC) variables in PostgreSQL:
+ `pg_hint_plan` extension – Specify a "hint" to modify how the planner works by using PostgreSQL's `pg_hint_plan` extension. To install and learn more about how to use the `pg_hint_plan` extension, see the [pg\$1hint\$1plan documentation](https://github.com/ossc-db/pg_hint_plan).
+ GUC variables – Override one or more cost model parameters or other optimizer parameters, such as the `from_collapse_limit` or `GEQO_threshold`. 

When you use one of these techniques to force the query optimizer to use a plan, you can also use query plan management to capture and enforce use of the new plan.

You can use the `pg_hint_plan` extension to change the join order, the join methods, or the access paths for a SQL statement. You use a SQL comment with special `pg_hint_plan` syntax to modify how the optimizer creates a plan. For example, assume the problem SQL statement has a two-way join. 

```
SELECT * 
FROM t1, t2 
WHERE t1.id = t2.id;
```

Then suppose that the optimizer chooses the join order (t1, t2), but you know that the join order (t2, t1) is faster. The following hint forces the optimizer to use the faster join order, (t2, t1). Include EXPLAIN so that the optimizer generates a plan for the SQL statement but without running the statement. (Output not shown.)

```
/*+ Leading ((t2 t1)) */ EXPLAIN SELECT * 
FROM t1, t2 
WHERE t1.id = t2.id;
```

The following steps show how to use `pg_hint_plan`.

**To modify the optimizer's generated plan and capture the plan using pg\$1hint\$1plan**

1. Turn on the manual capture mode.

   ```
   SET apg_plan_mgmt.capture_plan_baselines = manual;
   ```

1. Specify a hint for the SQL statement of interest. 

   ```
   /*+ Leading ((t2 t1)) */ EXPLAIN SELECT * 
   FROM t1, t2 
   WHERE t1.id = t2.id;
   ```

   After this runs, the optimizer captures the plan in the `apg_plan_mgmt.dba_plans` view. The captured plan doesn't include the special `pg_hint_plan` comment syntax because query plan management normalizes the statement by removing leading comments. 

1. View the managed plans by using the `apg_plan_mgmt.dba_plans` view.

   ```
   SELECT sql_hash, plan_hash, status, sql_text, plan_outline 
   FROM apg_plan_mgmt.dba_plans;
   ```

1. Set the status of the plan to `Preferred`. Doing so makes sure that the optimizer chooses to run it, instead of selecting from the set of approved plans, when the minimum-cost plan isn't already `Approved` or `Preferred`.

   ```
   SELECT apg_plan_mgmt.set_plan_status(sql-hash, plan-hash, 'preferred' ); 
   ```

1. Turn off manual plan capture and enforce the use of managed plans.

   ```
   SET apg_plan_mgmt.capture_plan_baselines = false;
   SET apg_plan_mgmt.use_plan_baselines = true;
   ```

   Now, when the original SQL statement runs, the optimizer chooses either an `Approved` or `Preferred` plan. If the minimum-cost plan isn't `Approved` or `Preferred`, then the optimizer chooses the `Preferred` plan.

# Deleting Aurora PostgreSQL query plans
<a name="AuroraPostgreSQL.Optimize.Deleting"></a>

Delete execution plans that you aren't using or plans that aren't valid. For more information about deleting plans, see the following sections.

**Topics**
+ [Deleting plans](#AuroraPostgreSQL.Optimize.Maintenance.DeletingPlans)
+ [Validating plans](#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans)

## Deleting plans
<a name="AuroraPostgreSQL.Optimize.Maintenance.DeletingPlans"></a>

Plans are automatically deleted if they haven't been used in over a month, specifically, 32 days. That's the default setting for the `apg_plan_mgmt.plan_retention_period` parameter. You can change the plan retention period to a longer period of time, or to a shorter period of time starting from the value of 1. Determining the number of days since a plan was last used is calculated by subtracting the `last_used` date from the current date. The `last_used` date is the most recent date that the optimizer chose the plan as the minimum cost plan or that the plan was run. The date is stored for the plan in the `apg_plan_mgmt.dba_plans` view. 

We recommend that you delete plans that haven't been used for a long time or that aren't useful. Every plan has a `last_used` date that the optimizer updates each time it executes a plan or chooses the plan as the minimum-cost plan for a statement. Check the last `last_used` dates to identify the plans that you can safely delete.

The following query returns a three column table with the count on the total number of plans, plans failed to delete, and the plans successfully deleted. It has a nested query that is an example of how to use the `apg_plan_mgmt.delete_plan` function to delete all plans that haven't been chosen as the minimum-cost plan in the last 31 days and its status is not `Rejected`.

```
SELECT (SELECT COUNT(*) from apg_plan_mgmt.dba_plans) total_plans,
       COUNT(*) FILTER (WHERE result = -1) failed_to_delete,
       COUNT(*) FILTER (WHERE result = 0) successfully_deleted
       FROM (
            SELECT apg_plan_mgmt.delete_plan(sql_hash, plan_hash) as result
            FROM apg_plan_mgmt.dba_plans
            WHERE last_used < (current_date - interval '31 days')
            AND status <> 'Rejected'
            ) as dba_plans ;
```

```
 total_plans | failed_to_delete | successfully_deleted
-------------+------------------+----------------------
           3 |                0 |                    2
```

For more information, see [apg\$1plan\$1mgmt.delete\$1plan](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.delete_plan).

To delete plans that aren't valid and that you expect to remain invalid, use the `apg_plan_mgmt.validate_plans` function. This function lets you delete or disable invalid plans. For more information, see [Validating plans](#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans). 

**Important**  
If you don't delete extraneous plans, you might eventually run out of shared memory that's set aside for query plan management. To control how much memory is available for managed plans, use the `apg_plan_mgmt.max_plans` parameter. Set this parameter in your custom DB parameter group and reboot your DB instance for changes to take effect. For more information, see the [apg\$1plan\$1mgmt.max\$1plans](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.max_plans) parameter. 

## Validating plans
<a name="AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans"></a>

Use the `apg_plan_mgmt.validate_plans` function to delete or disable plans that are invalid.

Plans can become invalid or stale when objects that they depend on are removed, such as an index or a table. However, a plan might be invalid only temporarily if the removed object gets recreated. If an invalid plan can become valid later, you might prefer to disable an invalid plan or do nothing rather than delete it. 

To find and delete all plans that are invalid and haven't been used in the past week, use the `apg_plan_mgmt.validate_plans `function as follows.

```
SELECT apg_plan_mgmt.validate_plans(sql_hash, plan_hash, 'delete') 
FROM apg_plan_mgmt.dba_plans
WHERE last_used < (current_date - interval '7 days');
```

To enable or disabled a plan directly, use the `apg_plan_mgmt.set_plan_enabled` function.

# Exporting and importing managed plans for Aurora PostgreSQL
<a name="AuroraPostgreSQL.Optimize.Maintenance.ExportingImporting"></a>

You can export your managed plans and import them into another DB instance. 

**To export managed plans**  
An authorized user can copy any subset of the `apg_plan_mgmt.plans` table to another table, and then save it using the `pg_dump` command. The following is an example.

```
CREATE TABLE plans_copy AS SELECT * 
FROM apg_plan_mgmt.plans [ WHERE predicates ] ;
```

```
% pg_dump --table apg_plan_mgmt.plans_copy -Ft mysourcedatabase > plans_copy.tar
```

```
DROP TABLE apg_plan_mgmt.plans_copy;
```

**To import managed plans**

1. Copy the .tar file of the exported managed plans to the system where the plans are to be restored.

1. Use the `pg_restore` command to copy the tar file into a new table. 

   ```
   % pg_restore --dbname mytargetdatabase -Ft plans_copy.tar
   ```

1. Merge the `plans_copy` table with the `apg_plan_mgmt.plans` table, as shown in the following example.
**Note**  
In some cases, you might dump from one version of the `apg_plan_mgmt` extension and restore into a different version. In these cases, the columns in the plans table might be different. If so, name the columns explicitly instead of using SELECT \$1. 

   ```
   INSERT INTO apg_plan_mgmt.plans SELECT * FROM plans_copy
    ON CONFLICT ON CONSTRAINT plans_pkey
    DO UPDATE SET
    status = EXCLUDED.status,
    enabled = EXCLUDED.enabled,
    -- Save the most recent last_used date 
    --
    last_used = CASE WHEN EXCLUDED.last_used > plans.last_used 
    THEN EXCLUDED.last_used ELSE plans.last_used END, 
    -- Save statistics gathered by evolve_plan_baselines, if it ran:
    --
    estimated_startup_cost = EXCLUDED.estimated_startup_cost,
    estimated_total_cost = EXCLUDED.estimated_total_cost,
    planning_time_ms = EXCLUDED.planning_time_ms,
    execution_time_ms = EXCLUDED.execution_time_ms,
    total_time_benefit_ms = EXCLUDED.total_time_benefit_ms, 
    execution_time_benefit_ms = EXCLUDED.execution_time_benefit_ms;
   ```

1. Reload the managed plans into shared memory and remove the temporary plans table.

   ```
   SELECT apg_plan_mgmt.reload(); -- refresh shared memory
   DROP TABLE plans_copy;
   ```

# Parameter reference for Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.Parameters"></a>

You can set your preferences for the `apg_plan_mgmt` extension by using the parameters listed in this section. These are available in the custom DB cluster parameter and the DB parameter group associated with your Aurora PostgreSQL DB cluster. These parameters control the behavior of the query plan management feature and how it affects the optimizer. For information about setting up query plan management, see [Turning on Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.overview.md#AuroraPostgreSQL.Optimize.Enable). Changing the parameters following has no effect if the `apg_plan_mgmt` extension isn't set up as detailed in that section. For information about modifying parameters, see [Modifying parameters in a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ModifyingCluster.md) and [DB parameter groups for Amazon Aurora DB instances](USER_WorkingWithDBInstanceParamGroups.md). 

**Topics**
+ [apg\$1plan\$1mgmt.capture\$1plan\$1baselines](#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines)
+ [apg\$1plan\$1mgmt.plan\$1capture\$1threshold](#AuroraPostgreSQL.Optimize.Parameters.plan_capture_threshold)
+ [apg\$1plan\$1mgmt.explain\$1hashes](#AuroraPostgreSQL.Optimize.Parameters.explain_hashes)
+ [apg\$1plan\$1mgmt.log\$1plan\$1enforcement\$1result](#AuroraPostgreSQL.Optimize.Parameters.log_plan_enforcement_result)
+ [apg\$1plan\$1mgmt.max\$1databases](#AuroraPostgreSQL.Optimize.Parameters.max_databases)
+ [apg\$1plan\$1mgmt.max\$1plans](#AuroraPostgreSQL.Optimize.Parameters.max_plans)
+ [apg\$1plan\$1mgmt.plan\$1hash\$1version](#AuroraPostgreSQL.Optimize.Parameters.plan_hash_version)
+ [apg\$1plan\$1mgmt.plan\$1retention\$1period](#AuroraPostgreSQL.Optimize.Parameters.plan_retention_period)
+ [apg\$1plan\$1mgmt.unapproved\$1plan\$1execution\$1threshold](#AuroraPostgreSQL.Optimize.Parameters.unapproved_plan_execution_threshold)
+ [apg\$1plan\$1mgmt.use\$1plan\$1baselines](#AuroraPostgreSQL.Optimize.Parameters.use_plan_baselines)
+ [auto\$1explain.hashes](#AuroraPostgreSQL.Optimize.Parameters.auto_explain.hashes)

## apg\$1plan\$1mgmt.capture\$1plan\$1baselines
<a name="AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines"></a>

Captures query execution plans generated by the optimizer for each SQL statement and stores them in the `dba_plans` view. By default, the maximum number of plans that can be stored is 10,000 as specified by the `apg_plan_mgmt.max_plans` parameter. For reference information, see [apg\$1plan\$1mgmt.max\$1plans](#AuroraPostgreSQL.Optimize.Parameters.max_plans).

You can set this parameter in the custom DB cluster parameter group or in the custom DB parameter group. Changing the value of this parameter doesn't require a reboot. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Parameters.html)

For more information, see [Capturing Aurora PostgreSQL execution plans](AuroraPostgreSQL.Optimize.CapturePlans.md). 

## apg\$1plan\$1mgmt.plan\$1capture\$1threshold
<a name="AuroraPostgreSQL.Optimize.Parameters.plan_capture_threshold"></a>

Specifies a threshold so that if the total cost of the query execution plan is below the threshold, the plan won’t be captured in the `apg_plan_mgmt.dba_plans` view. 

Changing the value of this parameter doesn't require a reboot.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 0 | 0 - 1.79769e\$1308 | Sets the threshold of the `apg_plan_mgmt` query plan total execution cost for capturing plans.   | 

For more information, see [Examining Aurora PostgreSQL query plans in the dba\$1plans view](AuroraPostgreSQL.Optimize.ViewPlans.md).

## apg\$1plan\$1mgmt.explain\$1hashes
<a name="AuroraPostgreSQL.Optimize.Parameters.explain_hashes"></a>

Specifies if the `EXPLAIN [ANALYZE]` shows `sql_hash` and `plan_hash` at the end of its output. Changing the value of this parameter doesn't require a reboot. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Parameters.html)

## apg\$1plan\$1mgmt.log\$1plan\$1enforcement\$1result
<a name="AuroraPostgreSQL.Optimize.Parameters.log_plan_enforcement_result"></a>

Specifies if the results has to be recorded to see if the QPM managed plans are used properly. When a stored generic plan is used, there will be no records written in the log files. Changing the value of this parameter doesn't require a reboot. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Parameters.html)

## apg\$1plan\$1mgmt.max\$1databases
<a name="AuroraPostgreSQL.Optimize.Parameters.max_databases"></a>

Specifies the maximum number of databases on your Aurora PostgreSQL DB cluster's Writer instance that can use query plan management. By default, up to 10 databases can use query plan management. If you have more than 10 databases on the instance, you can change the value of this setting. To find out how many databases are on a given instance, connect to the instance using `psql`. Then, use the psql metacommand, `\l`, to list the databases.

Changing the value of this parameter requires that you reboot the instance for the setting to take effect.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 10 | 10-2147483647 | Maximum number of databases that can use query plan management on the instance. | 

You can set this parameter in the custom DB cluster parameter group or in the custom DB parameter group. 

## apg\$1plan\$1mgmt.max\$1plans
<a name="AuroraPostgreSQL.Optimize.Parameters.max_plans"></a>

Sets the maximum number of SQL statements that the query plan manager can maintain in the `apg_plan_mgmt.dba_plans` view. We recommend setting this parameter to `10000` or higher for all Aurora PostgreSQL versions. 

You can set this parameter in the custom DB cluster parameter group or in the custom DB parameter group. Changing the value of this parameter requires that you reboot the instance for the setting to take effect.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 10000 | 10-2147483647 | Maximum number of plans that can be stored in the `apg_plan_mgmt.dba_plans` view.  Default for Aurora PostgreSQL version 10 and older versions is 1000.  | 

For more information, see [Examining Aurora PostgreSQL query plans in the dba\$1plans view](AuroraPostgreSQL.Optimize.ViewPlans.md).

## apg\$1plan\$1mgmt.plan\$1hash\$1version
<a name="AuroraPostgreSQL.Optimize.Parameters.plan_hash_version"></a>

Specifies the use cases that the plan\$1hash calculation is designed to cover. A higher version of `apg_plan_mgmt.plan_hash_version` covers all the functionality of the lower version. For example, version 3 covers the use cases supported by version 2. 

 Changing the value of this parameter must be followed by a call to `apg_plan_mgmt.validate_plans('update_plan_hash')`. It updates the plan\$1hash values in each database with apg\$1plan\$1mgmt installed and entries in the plans table. For more information, see [Validating plans](AuroraPostgreSQL.Optimize.Deleting.md#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans) 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Parameters.html)

## apg\$1plan\$1mgmt.plan\$1retention\$1period
<a name="AuroraPostgreSQL.Optimize.Parameters.plan_retention_period"></a>

Specifies the number of days to keep plans in the `apg_plan_mgmt.dba_plans` view, after which they're automatically deleted. By default, a plan is deleted when 32 days have elapsed since the plan was last used (the `last_used` column in the `apg_plan_mgmt.dba_plans` view). You can change this setting to any number, 1 and over. 

Changing the value of this parameter requires that you reboot the instance for the setting to take effect.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 32 | 1-2147483647 | Maximum number of days since a plan was last used before it's deleted.  | 

For more information, see [Examining Aurora PostgreSQL query plans in the dba\$1plans view](AuroraPostgreSQL.Optimize.ViewPlans.md).

## apg\$1plan\$1mgmt.unapproved\$1plan\$1execution\$1threshold
<a name="AuroraPostgreSQL.Optimize.Parameters.unapproved_plan_execution_threshold"></a>

Specifies a cost threshold below which an Unapproved plan can be used by the optimizer. By default the threshold is 0, so the optimizer doesn't run Unapproved plans. Setting this parameter to a trivially low cost threshold such as 100 avoids plan enforcement overhead on trivial plans. You can also set this parameter to an extremely large value like 10000000 using the reactive style of plan management. This allows the optimizer to use all chosen plans with no plan enforcement overhead. But, when a bad plan is found, you can manually mark it as "rejected" so that it is not used next time.

The value of this parameter represents a cost estimate for running a given plan. If an Unapproved plan is below that estimated cost, the optimizer uses it for the SQL statement. You can see captured plans and their status (Approved, Unapproved) in the `dba_plans` view. To learn more, see [Examining Aurora PostgreSQL query plans in the dba\$1plans view](AuroraPostgreSQL.Optimize.ViewPlans.md).

Changing the value of this parameter doesn't require a reboot.


| Default | Allowed values | Description | 
| --- | --- | --- | 
| 0 | 0-2147483647 | Estimated plan cost below which an Unapproved plan is used. | 

For more information, see [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md). 

## apg\$1plan\$1mgmt.use\$1plan\$1baselines
<a name="AuroraPostgreSQL.Optimize.Parameters.use_plan_baselines"></a>

Specifies that the optimizer should use one of the Approved plans captured and stored in the `apg_plan_mgmt.dba_plans` view. By default, this parameter is off (false), causing the optimizer to use the minimum-cost plan that it generates without any further assessment. Turning this parameter on (setting it to true) forces the optimizer to choose a query execution plan for the statement from its plan baseline. For more information, see [Using Aurora PostgreSQL managed plans](AuroraPostgreSQL.Optimize.UsePlans.md). To find an image detailing this process, see [How the optimizer chooses which plan to run](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans). 

You can set this parameter in the custom DB cluster parameter group or in the custom DB parameter group. Changing the value of this parameter doesn't require a reboot.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Parameters.html)

You can evaluate response times of different captured plans and change plan status, as needed. For more information, see [Improving Aurora PostgreSQL query plans](AuroraPostgreSQL.Optimize.Maintenance.md). 

## auto\$1explain.hashes
<a name="AuroraPostgreSQL.Optimize.Parameters.auto_explain.hashes"></a>

Specifies if the auto\$1explain output shows sql\$1hash and plan\$1hash. Changing the value of this parameter doesn't require a reboot. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Parameters.html)

# Function reference for Aurora PostgreSQL query plan management
<a name="AuroraPostgreSQL.Optimize.Functions"></a>

The `apg_plan_mgmt` extension provides the following functions.

**Topics**
+ [apg\$1plan\$1mgmt.copy\$1outline](#AuroraPostgreSQL.Optimize.Functions.copy_outline)
+ [apg\$1plan\$1mgmt.delete\$1plan](#AuroraPostgreSQL.Optimize.Functions.delete_plan)
+ [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines)
+ [apg\$1plan\$1mgmt.get\$1explain\$1plan](#AuroraPostgreSQL.Optimize.Functions.get_explain_plan)
+ [apg\$1plan\$1mgmt.plan\$1last\$1used](#AuroraPostgreSQL.Optimize.Functions.plan_last_used)
+ [apg\$1plan\$1mgmt.reload](#AuroraPostgreSQL.Optimize.Functions.reload)
+ [apg\$1plan\$1mgmt.set\$1plan\$1enabled](#AuroraPostgreSQL.Optimize.Functions.set_plan_enabled)
+ [apg\$1plan\$1mgmt.set\$1plan\$1status](#AuroraPostgreSQL.Optimize.Functions.set_plan_status)
+ [apg\$1plan\$1mgmt.update\$1plans\$1last\$1used](#AuroraPostgreSQL.Optimize.Functions.update_plans_last_used)
+ [apg\$1plan\$1mgmt.validate\$1plans](#AuroraPostgreSQL.Optimize.Functions.validate_plans)

## apg\$1plan\$1mgmt.copy\$1outline
<a name="AuroraPostgreSQL.Optimize.Functions.copy_outline"></a>

Copy a given SQL plan hash and plan outline to a target SQL plan hash and outline, thereby overwriting the target's plan hash and outline. This function is available in `apg_plan_mgmt` 2.3 and higher releases. 

**Syntax**

```
apg_plan_mgmt.copy_outline(
    source_sql_hash,
    source_plan_hash,
    target_sql_hash,
    target_plan_hash,
    force_update_target_plan_hash
)
```

**Return value**  
Returns 0 when the copy is successful. Raises exceptions for invalid inputs.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| source\$1sql\$1hash  | The sql\$1hash ID associated with the plan\$1hash to copy to the target query. | 
| source\$1plan\$1hash  | The plan\$1hash ID to copy to the target query. | 
| target\$1sql\$1hash | The sql\$1hash ID of the query to update with the source plan hash and outline. | 
| target\$1plan\$1hash | The plan\$1hash ID of the query to update with the source plan hash and outline. | 
| force\$1update\$1target\$1plan\$1hash | (Optional) The target\$1plan\$1hash ID of the query is updated even if the source plan isn't reproducible for the target\$1sql\$1hash. When set to true, the function can be used to copy plans across schemas where relation names and columns are consistent. | 

**Usage notes**

This function allows you to copy a plan hash and plan outline that uses hints to other, similar statements, and thus saves you from needing to use in-line hint statements at every occurrence in the target statements. If the updated target query results in an invalid plan, this function raises an error and rolls back the attempted update. 

## apg\$1plan\$1mgmt.delete\$1plan
<a name="AuroraPostgreSQL.Optimize.Functions.delete_plan"></a>

Delete a managed plan. 

**Syntax**

```
apg_plan_mgmt.delete_plan(
    sql_hash,
    plan_hash
)
```

**Return value**  
Returns 0 if the delete was successful or -1 if the delete failed.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash  | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. | 

 

## apg\$1plan\$1mgmt.evolve\$1plan\$1baselines
<a name="AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines"></a>

Verifies whether an already approved plan is faster or whether a plan identified by the query optimizer as a minimum cost plan is faster.

**Syntax**

```
apg_plan_mgmt.evolve_plan_baselines(
    sql_hash, 
    plan_hash,
    min_speedup_factor,
    action
)
```

**Return value**

The number of plans that were not faster than the best approved plan. 

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. Use NULL to mean all plans that have the same sql\$1hash ID value. | 
| min\$1speedup\$1factor |  The *minimum speedup factor* can be the number of times faster that a plan must be than the best of the already approved plans to approve it. Alternatively, this factor can be the number of times slower that a plan must be to reject or disable it. This is a positive float value.  | 
| action |  The action the function is to perform. Valid values include the following. Case does not matter.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html)  | 

** Usage notes**

Set specified plans to approved, rejected, or disabled based on whether the planning plus execution time is faster than the best approved plan by a factor that you can set. The action parameter might be set to `'approve'` or `'reject'` to automatically approve or reject a plan that meets the performance criteria. Alternatively, it might be set to '' (empty string) to do the performance experiment and produce a report, but take no action.

You can avoid pointlessly rerunning of the `apg_plan_mgmt.evolve_plan_baselines` function for a plan on which it was recently run. To do so, restrict the plans to just the recently created unapproved plans. Alternatively, you can avoid running the `apg_plan_mgmt.evolve_plan_baselines` function on any approved plan that has a recent `last_verified` timestamp.

Conduct a performance experiment to compare the planning plus execution time of each plan relative to the other plans in the baseline. In some cases, there is only one plan for a statement and the plan is approved. In such a case, compare the planning plus execution time of the plan to the planning plus execution time of using no plan.

The incremental benefit (or disadvantage) of each plan is recorded in the `apg_plan_mgmt.dba_plans` view in the `total_time_benefit_ms` column. When this value is positive, there is a measurable performance advantage to including this plan in the baseline.

In addition to collecting the planning and execution time of each candidate plan, the `last_verified` column of the `apg_plan_mgmt.dba_plans` view is updated with the `current_timestamp`. The `last_verified` timestamp might be used to avoid running this function again on a plan that recently had its performance verified.

## apg\$1plan\$1mgmt.get\$1explain\$1plan
<a name="AuroraPostgreSQL.Optimize.Functions.get_explain_plan"></a>

Generates the text of an `EXPLAIN` statement for the specified SQL statement. 

**Syntax**

```
apg_plan_mgmt.get_explain_plan(
    sql_hash,
    plan_hash,
    [explainOptionList]
)
```

**Return value**  
Returns runtime statistics for the specified SQL statements. Use without `explainOptionList` to return a simple `EXPLAIN` plan.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash  | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. | 
| explainOptionList | A comma-separated list of explain options. Valid values include `'analyze'`, `'verbose'`, `'buffers'`, `'hashes'`, and `'format json'`. If the `explainOptionList` is NULL or an empty string (''), this function generates an `EXPLAIN` statement, without any statistics.  | 

 

**Usage notes**

For the `explainOptionList`, you can use any of the same options that you would use with an `EXPLAIN` statement. The Aurora PostgreSQL optimizer concatenates the list of options that you provide to the `EXPLAIN` statement.

## apg\$1plan\$1mgmt.plan\$1last\$1used
<a name="AuroraPostgreSQL.Optimize.Functions.plan_last_used"></a>

Returns the `last_used` date of the specified plan from shared memory. 

**Note**  
The value in shared memory is always current on the primary DB instance in the DB cluster. The value is only periodically flushed to the `last_used` column of the `apg_plan_mgmt.dba_plans` view.

**Syntax**

```
apg_plan_mgmt.plan_last_used(
    sql_hash,
    plan_hash
)
```

**Return value**  
Returns the `last_used` date.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash  | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. | 

 

## apg\$1plan\$1mgmt.reload
<a name="AuroraPostgreSQL.Optimize.Functions.reload"></a>

Reload plans into shared memory from the `apg_plan_mgmt.dba_plans` view. 

**Syntax**

```
apg_plan_mgmt.reload()
```

**Return value**

None.

**Parameters**

None.

** Usage notes**

Call `reload` for the following situations:
+ Use it to refresh the shared memory of a read-only replica immediately, rather than wait for new plans to propagate to the replica.
+ Use it after importing managed plans.



## apg\$1plan\$1mgmt.set\$1plan\$1enabled
<a name="AuroraPostgreSQL.Optimize.Functions.set_plan_enabled"></a>

Enable or disable a managed plan.

**Syntax**

```
apg_plan_mgmt.set_plan_enabled(
    sql_hash, 
    plan_hash, 
    [true | false]
)
```

**Return value**

Returns 0 if the setting was successful or -1 if the setting failed.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. | 
| enabled |  Boolean value of true or false: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html)  | 

 

## apg\$1plan\$1mgmt.set\$1plan\$1status
<a name="AuroraPostgreSQL.Optimize.Functions.set_plan_status"></a>

Set a managed plan's status to `Approved`, `Unapproved`, `Rejected`, or `Preferred`.

**Syntax**

```
apg_plan_mgmt.set_plan_status(
    sql_hash, 
    plan_hash, 
    status
)
```

**Return value**

Returns 0 if the setting was successful or -1 if the setting failed.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. | 
| status |  A string with one of the following values: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html) The case you use does not matter, however the status value is set to initial uppercase in the `apg_plan_mgmt.dba_plans` view. For more information about these values, see `status` in [Reference for the apg\$1plan\$1mgmt.dba\$1plans view for Aurora PostgreSQL-Compatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md).   | 

 

## apg\$1plan\$1mgmt.update\$1plans\$1last\$1used
<a name="AuroraPostgreSQL.Optimize.Functions.update_plans_last_used"></a>

Immediately updates the plans table with the `last_used` date stored in shared memory.

**Syntax**

```
apg_plan_mgmt.update_plans_last_used()
```

**Return value**

None.

**Parameters**

None.

** Usage notes**

Call `update_plans_last_used` to make sure queries against the `dba_plans.last_used` column use the most current information. If the `last_used` date isn't updated immediately, a background process updates the plans table with the `last_used` date once every hour (by default).

For example, if a statement with a certain `sql_hash` begins to run slowly, you can determine which plans for that statement were executed since the performance regression began. To do that, first flush the data in shared memory to disk so that the `last_used` dates are current, and then query for all plans of the `sql_hash` of the statement with the performance regression. In the query, make sure the `last_used` date is greater than or equal to the date on which the performance regression began. The query identifies the plan or set of plans that might be responsible for the performance regression. You can use `apg_plan_mgmt.get_explain_plan` with `explainOptionList` set to `verbose, hashes`. You can also use `apg_plan_mgmt.evolve_plan_baselines` to analyze the plan and any alternative plans that might perform better.

The `update_plans_last_used` function has an effect only on the primary DB instance of the DB cluster.

## apg\$1plan\$1mgmt.validate\$1plans
<a name="AuroraPostgreSQL.Optimize.Functions.validate_plans"></a>

Validate that the optimizer can still recreate plans. The optimizer validates `Approved`, `Unapproved`, and `Preferred` plans, whether the plan is enabled or disabled. `Rejected` plans are not validated. Optionally, you can use the `apg_plan_mgmt.validate_plans` function to delete or disable invalid plans.

**Syntax**

```
apg_plan_mgmt.validate_plans(
    sql_hash, 
    plan_hash, 
    action)
            
apg_plan_mgmt.validate_plans(
    action)
```

**Return value**

The number of invalid plans.

**Parameters**


****  

| Parameter | Description | 
| --- | --- | 
| sql\$1hash | The sql\$1hash ID of the plan's managed SQL statement. | 
| plan\$1hash | The managed plan's plan\$1hash ID. Use NULL to mean all plans for the same sql\$1hash ID value. | 
| action |  The action the function is to perform for invalid plans. Valid string values include the following. Case does not matter. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html) Any other value is treated like the empty string.  | 

**Usage notes**

Use the form `validate_plans(action)` to validate all the managed plans for all the managed statements in the entire `apg_plan_mgmt.dba_plans` view.

Use the form `validate_plans(sql_hash, plan_hash, action)` to validate a managed plan specified with `plan_hash`, for a managed statement specified with `sql_hash`. 

Use the form `validate_plans(sql_hash, NULL, action)` to validate all the managed plans for the managed statement specified with `sql_hash`.

# Reference for the apg\$1plan\$1mgmt.dba\$1plans view for Aurora PostgreSQL-Compatible Edition
<a name="AuroraPostgreSQL.Optimize.dba_plans_view_Reference"></a>

The columns of plan information in the `apg_plan_mgmt.dba_plans` view include the following.


| dba\$1plans column | Description | 
| --- | --- | 
| cardinality\$1error |  A measure of the error between the estimated cardinality versus the actual cardinality. *Cardinality* is the number of table rows that the plan is to process. If the cardinality error is large, then it increases the likelihood that the plan isn't optimal. This column is populated by the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function.   | 
| compatibility\$1level |  This parameter shows when a query plan was last validated. In Aurora PostgreSQL versions 12.19, 13.15, 14.12, 15.7, 16.3, and later, it displays the Aurora version number. For earlier versions, it displays a feature specific version number.  Keep this parameter value at its default setting. Aurora PostgreSQL automatically sets and updates this value.   | 
| created\$1by | The authenticated user (session\$1user) who created the plan. | 
| enabled |  An indicator of whether the plan is enabled or disabled. All plans are enabled by default. You can disable plans to prevent them from being used by the optimizer. To modify this value, use the [apg\$1plan\$1mgmt.set\$1plan\$1enabled](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.set_plan_enabled) function.   | 
| environment\$1variables |  The PostgreSQL Grand Unified Configuration (GUC) parameters and values that the optimizer has overridden at the time the plan was captured.   | 
| estimated\$1startup\$1cost | The estimated optimizer setup cost before the optimizer delivers rows of a table. | 
| estimated\$1total\$1cost | The estimated optimizer cost to deliver the final table row. | 
| execution\$1time\$1benefit\$1ms | The execution time benefit in milliseconds of enabling the plan. This column is populated by the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function.  | 
| execution\$1time\$1ms | The estimated time in milliseconds that the plan would run. This column is populated by the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function.  | 
| has\$1side\$1effects | A value that indicates that the SQL statement is a data manipulation language (DML) statement or a SELECT statement that contains a VOLATILE function.  | 
| last\$1used | This value is updated to the current date whenever the plan is either executed or when the plan is the query optimizer's minimum-cost plan. This value is stored in shared memory and periodically flushed to disk. To get the most up-to-date value, read the date from shared memory by calling the function apg\$1plan\$1mgmt.plan\$1last\$1used(sql\$1hash, plan\$1hash) instead of reading the last\$1used value. For additional information, see the [apg\$1plan\$1mgmt.plan\$1retention\$1period](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.plan_retention_period) parameter.  | 
| last\$1validated | The most recent date and time when it was verified that the plan could be recreated by either the [apg\$1plan\$1mgmt.validate\$1plans](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.validate_plans) function or the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function. | 
| last\$1verified | The most recent date and time when a plan was verified to be the best-performing plan for the specified parameters by the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function.  | 
| origin |  How the plan was captured with the [apg\$1plan\$1mgmt.capture\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines) parameter. Valid values include the following:  `M` – The plan was captured with manual plan capture. `A` – The plan was captured with automatic plan capture.  | 
| param\$1list |  The parameter values that were passed to the statement if this is a prepared statement.  | 
| plan\$1created | The date and time the plan that was created. | 
| plan\$1hash | The plan identifier. The combination of plan\$1hash and sql\$1hash uniquely identifies a specific plan. | 
| plan\$1outline | A representation of the plan that is used to recreate the actual execution plan, and that is database-independent. Operators in the tree correspond to operators that appear in the EXPLAIN output. | 
| planning\$1time\$1ms |  The actual time to run the planner, in milliseconds. This column is populated by the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function.   | 
| queryId | A statement hash, as calculated by the pg\$1stat\$1statements extension. This isn't a stable or database-independent identifier because it depends on object identifiers (OIDs). The value will be 0 if compute\$1query\$1id is off when capturing the query plan. | 
| sql\$1hash | A hash value of the SQL statement text, normalized with literals removed. | 
| sql\$1text | The full text of the SQL statement. | 
| status |  A plan's status, which determines how the optimizer uses a plan. Valid values include the following.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.dba_plans_view_Reference.html)  | 
| stmt\$1name | The name of the SQL statement within a PREPARE statement. This value is an empty string for an unnamed prepared statement. This value is NULL for a nonprepared statement. | 
| total\$1time\$1benefit\$1ms |  The total time benefit in milliseconds of enabling this plan. This value considers both planning time and execution time. If this value is negative, there is a disadvantage to enabling this plan. This column is populated by the [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Functions.md#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines) function.   | 

# Advanced features in Query Plan Management
<a name="AuroraPostgreSQL.QPM.Advanced"></a>

Following you can find information about the advanced Aurora PostgreSQL Query Plan Management (QPM) features:

**Topics**
+ [Capturing Aurora PostgreSQL execution plans in Replicas](AuroraPostgreSQL.QPM.Plancapturereplicas.md)
+ [Supporting table partition](AuroraPostgreSQL.QPM.Partitiontable.md)

# Capturing Aurora PostgreSQL execution plans in Replicas
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas"></a>

QPM (Query Plan Management) allows you to capture the query plans generated by Aurora Replicas and stores them on the primary DB instance of the Aurora DB cluster. You can collect the query plans from all the Aurora Replicas, and maintain a set of optimal plans in a central persistent table on the primary instance. You can then apply these plans on other Replicas when needed. This helps you to maintain the stability of execution plans and improve performance of the queries across the DB clusters and engine versions.

**Topics**
+ [Prerequisites](#AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq)
+ [Managing plan capture for Aurora Replicas](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing)
+ [Troubleshooting](#AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting)

## Prerequisites
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq"></a>

**Turn on `capture_plan_baselines parameter` in Aurora Replica** - Set `capture_plan_baselines` parameter to automatic or manual to capture plans in Aurora Replicas. For more information, see [apg\$1plan\$1mgmt.capture\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines).

**Install postgres\$1fdw extension** - You must install `postgres_fdw` foreign data wrapper extension to capture plans in Aurora Replicas. Run the following command in each database, to install the extension. 

```
postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;
```

## Managing plan capture for Aurora Replicas
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.managing"></a>

**Turn on plan capture for Aurora Replicas**  
You must have `rds_superuser` privileges to create or remove Plan Capture in Aurora Replicas. For more information on user roles and permissions, see [Understanding PostgreSQL roles and permissions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Roles.html).

To capture plans, call the function apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture in the writer DB instance, as shown in the following:

```
postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('endpoint', 'password');
```
+ endpoint - Aurora Global Database writer endpoint or cluster\$1endpoint provides failover support for Plan Capture in Aurora Replicas.

  For more information on the Aurora Global Database writer endpoint, see [Viewing the endpoints of an Amazon Aurora global database](aurora-global-database-connecting.md#viewing-endpoints).

  For more information about cluster endpoints, see [Cluster endpoints for Amazon Aurora](Aurora.Endpoints.Cluster.md).
+ password - We recommend you to follow the below guidelines while creating the password to enhance the security:
  + It must contain at least 8 characters.
  + It must contain at least one uppercase, one lowercase letter, and one number.
  + It must have at least one special character (`?`, `!`, `#`, `<`, `>`, `*`, and so on).

**Note**  
If you change the endpoint, password, or port number, you must run `apg_plan_mgmt.create_replica_plan_capture()` again with the endpoint and password to re-initialize the plan capture. If not, capturing plans from Aurora Replicas will fail.

**Turn off plan capture for Aurora Replicas**  
You can turn off `capture_plan_baselines` parameter in Aurora Replica by setting its value to `off` in the Parameter group.

**Remove plan capture for Aurora Replicas**  
You can completely remove Plan Capture in Aurora Replicas but make sure before you do. To remove plan capture, call `apg_plan_mgmt.remove_replica_plan_capture` as shown:

```
postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();
```

You must call apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture() again to turn on plan capture in Aurora Replicas with the endpoint and password.

## Troubleshooting
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting"></a>

Following, you can find troubleshooting ideas and workarounds if the plan is not captured in Aurora Replicas as expected.
+ **Parameter settings** - Check if the `capture_plan_baselines` parameter is set to proper value to turn on plan capture.
+ **`postgres_fdw` extension is installed** - Use the following query to check if `postgres_fdw` is installed.

  ```
  postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  ```
+ **create\$1replica\$1plan\$1capture() is called** - Use the following command to check if the user mapping exits. Otherwise, call `create_replica_plan_capture()` to initialize the feature.

  ```
  postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **Endpoint and port number** - Check if the endpoint and port number are appropriate. There won't be any error message displayed if these values are incorrect. 

  Use the following command to verify if the endpoint used in the create() and to check which database it resides in:

  ```
  postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **reload()** - You must call apg\$1plan\$1mgmt.reload() after calling apg\$1plan\$1mgmt.delete\$1plan() in Aurora Replicas to make the delete function effective. This ensures that the change has been successfully implemented.
+ **Password** - You must enter password in create\$1replica\$1plan\$1capture() as per the guidelines mentioned. Otherwise, you will receive an error message. For more information,see [Managing plan capture for Aurora Replicas](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing). Use another password that aligns with the requirements.
+ **Cross-Region connection** - Plan capture in Aurora Replicas is also supported in Aurora global database, where writer instance and Aurora Replicas can be in different regions. Ensure that you use the Aurora Global Database writer endpoint to maintain connectivity after failover or switchover events. For more information on the Aurora Global Database endpoints, see [Viewing the endpoints of an Amazon Aurora Global Database](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-connecting.html#viewing-endpoints). The writer instance and cross-Region Replica must be able to communicate, using VPC Peering. For more information, see [VPC peering](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html). If a cross-Region failover happens, you must reconfigure the endpoint to new primary DB cluster endpoint.
**Note**  
When using a cluster endpoint instead of an Aurora Global Database writer endpoint, you'll need to update the cluster endpoint after performing either a global failover or switchover operation.

# Supporting table partition
<a name="AuroraPostgreSQL.QPM.Partitiontable"></a>

Aurora PostgreSQL Query Plan Management (QPM) supports declarative table partitioning in the following versions:
+ 15.3 and higher 15 versions
+ 14.8 and higher 14 versions
+ 13.11 and higher 13 versions

For more information, see [Table Partitioning](https://www.postgresql.org/docs/current/ddl-partitioning.html).

**Topics**
+ [Setting up table partition](#AuroraPostgreSQL.QPM.Partitiontable.setup)
+ [Capturing plans for table partition](#AuroraPostgreSQL.QPM.Partitiontable.capture)
+ [Enforcing a table partition plan](#AuroraPostgreSQL.QPM.Partitiontable.enforcement)
+ [Naming Convention](#AuroraPostgreSQL.QPM.Partitiontable.naming.convention)

## Setting up table partition
<a name="AuroraPostgreSQL.QPM.Partitiontable.setup"></a>

 To set up table partition in Aurora PostgreSQL QPM, do as follows: 

1. Set `apg_plan_mgmt.plan_hash_version` to 3 or more in the DB cluster parameter group.

1. Navigate to a database that uses Query Plan Management and has entries in `apg_plan_mgmt.dba_plans` view.

1. Call `apg_plan_mgmt.validate_plans('update_plan_hash')` to update the `plan_hash` value in the plans table.

1. Repeat steps 2-3 for all databases with Query Plan Management enabled that have entries in `apg_plan_mgmt.dba_plans` view.

For more information on these parameters, see [Parameter reference for Aurora PostgreSQL query plan management](AuroraPostgreSQL.Optimize.Parameters.md).

## Capturing plans for table partition
<a name="AuroraPostgreSQL.QPM.Partitiontable.capture"></a>

In QPM, different plans are distinguished by their `plan_hash` value. To understand how the `plan_hash` changes, you must first understand similar kind of plans.

The combination of access methods, digit-stripped index names and digit-stripped partition names, accumulated at the Append node level must be constant for plans to be considered the same. The specific partitions accessed in the plans are not significant. In the following example, a table `tbl_a` is created with 4 partitions.

```
postgres=>create table tbl_a(i int, j int, k int, l int, m int) partition by range(i);
CREATE TABLE
postgres=>create table tbl_a1 partition of tbl_a for values from (0) to (1000);
CREATE TABLE
postgres=>create table tbl_a2 partition of tbl_a for values from (1001) to (2000);
CREATE TABLE
postgres=>create table tbl_a3 partition of tbl_a for values from (2001) to (3000);
CREATE TABLE
postgres=>create table tbl_a4 partition of tbl_a for values from (3001) to (4000);
CREATE TABLE
postgres=>create index t_i on tbl_a using btree (i);
CREATE INDEX
postgres=>create index t_j on tbl_a using btree (j);
CREATE INDEX
postgres=>create index t_k on tbl_a using btree (k);
CREATE INDEX
```

The following plans are considered the same because a single scan method is being used to scan `tbl_a` irrespective of the number of partitions that the query looks up.

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 999 and j < 9910 and k > 50;
            
                        QUERY PLAN
-------------------------------------------------------------------
Seq Scan on tbl_a1 tbl_a
    Filter: ((i >= 990) AND (i <= 999) AND (j < 9910) AND (k > 50))
SQL Hash: 1553185667, Plan Hash: -694232056
(3 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1100 and j < 9910 and k > 50;
            
                        QUERY PLAN
-------------------------------------------------------------------
Append
    ->  Seq Scan on tbl_a1 tbl_a_1
            Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
    ->  Seq Scan on tbl_a2 tbl_a_2
            Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
    SQL Hash: 1553185667, Plan Hash: -694232056
    (6 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 2100 and j < 9910 and k > 50;
            
                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Seq Scan on tbl_a1 tbl_a_1
         Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a3 tbl_a_3
         Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
 SQL Hash: 1553185667, Plan Hash: -694232056
(8 rows)
```

The following 3 plans are also considered the same because at the parent level, the access methods, digit-stripped index names and digit-stripped partition names are `SeqScan tbl_a`, `IndexScan (i_idx) tbl_a`.

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1100 and j < 9910 and k > 50;
            
                                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Seq Scan on tbl_a1 tbl_a_1
         Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a2_i_idx on tbl_a2 tbl_a_2
         Index Cond: ((i >= 990) AND (i <= 1100))
         Filter: ((j < 9910) AND (k > 50))
 SQL Hash: 1553185667, Plan Hash: -993736942
(7 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 2100 and j < 9910 and k > 50;
            
                                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 2100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a3_i_idx on tbl_a3 tbl_a_3
         Index Cond: ((i >= 990) AND (i <= 2100))
         Filter: ((j < 9910) AND (k > 50))
 SQL Hash: 1553185667, Plan Hash: -993736942
(10 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 3100 and j < 9910 and k > 50;
            
                                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Seq Scan on tbl_a1 tbl_a_1
         Filter: ((i >= 990) AND (i <= 3100) AND (j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 3100) AND (j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a3 tbl_a_3
         Filter: ((i >= 990) AND (i <= 3100) AND (j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a4_i_idx on tbl_a4 tbl_a_4
         Index Cond: ((i >= 990) AND (i <= 3100))
         Filter: ((j < 9910) AND (k > 50))
 SQL Hash: 1553185667, Plan Hash: -993736942
(11 rows)
```

Irrespective of different order and number of occurrences in child partitions, the access methods, digit-stripped index names and digit-stripped partition names are constant at the parent level for each of the above plans. 

However, the plans would be considered different if any of the following conditions are met:
+ Any additional access methods are used in the plan.

  ```
  postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 2100 and j < 9910 and k > 50;
                      
                                  QUERY PLAN
  --------------------------------------------------------------------------
   Append
     ->  Seq Scan on tbl_a1 tbl_a_1
           Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
     ->  Seq Scan on tbl_a2 tbl_a_2
           Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
     ->  Bitmap Heap Scan on tbl_a3 tbl_a_3
           Recheck Cond: ((i >= 990) AND (i <= 2100))
           Filter: ((j < 9910) AND (k > 50))
           ->  Bitmap Index Scan on tbl_a3_i_idx
                 Index Cond: ((i >= 990) AND (i <= 2100))
   SQL Hash: 1553185667, Plan Hash: 1134525070
  (11 rows)
  ```
+ Any of the access methods in the plan are not used anymore.

  ```
  postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1100 and j < 9910 and k > 50;
                      
                                 QUERY PLAN
  --------------------------------------------------------------------------
   Append
     ->  Seq Scan on tbl_a1 tbl_a_1
           Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
     ->  Seq Scan on tbl_a2 tbl_a_2
           Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
   SQL Hash: 1553185667, Plan Hash: -694232056
  (6 rows)
  ```
+ The index associated with an index method is changed.

  ```
  postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1100 and j < 9910 and k > 50;
                      
                               QUERY PLAN
  --------------------------------------------------------------------------
   Append
     ->  Seq Scan on tbl_a1 tbl_a_1
           Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
     ->  Index Scan using tbl_a2_j_idx on tbl_a2 tbl_a_2
           Index Cond: (j < 9910)
           Filter: ((i >= 990) AND (i <= 1100) AND (k > 50))
   SQL Hash: 1553185667, Plan Hash: -993343726
  (7 rows)
  ```

## Enforcing a table partition plan
<a name="AuroraPostgreSQL.QPM.Partitiontable.enforcement"></a>

Approved plans for partitioned tables are enforced with positional correspondence. The plans are not specific to the partitions, and can be enforced on partitions other than the plans referenced in the original query. Plans also have the capability of being enforced for queries accessing a different number of partitions than the original approved outline.

For example, if the approved outline is for the following plan:

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 2100 and j < 9910 and k > 50;
            
                                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 2100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a3_i_idx on tbl_a3 tbl_a_3
         Index Cond: ((i >= 990) AND (i <= 2100))
         Filter: ((j < 9910) AND (k > 50))   
 SQL Hash: 1553185667, Plan Hash: -993736942
(10 rows)
```

Then, this plan can be enforced on SQL queries referencing 2, 4, or more partitions as well. The possible plans that could arise from these scenarios for 2 and 4 partition access are:

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1100 and j < 9910 and k > 50;
            
                                QUERY PLAN
----------------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 1100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 1100) AND (j < 9910) AND (k > 50))
 Note: An Approved plan was used instead of the minimum cost plan. 
 SQL Hash: 1553185667, Plan Hash: -993736942, Minimum Cost Plan Hash: -1873216041
(8 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 3100 and j < 9910 and k > 50;
            
                                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 3100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 3100) AND (j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a3_i_idx on tbl_a3 tbl_a_3
         Index Cond: ((i >= 990) AND (i <= 3100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a4 tbl_a_4
         Filter: ((i >= 990) AND (i <= 3100) AND (j < 9910) AND (k > 50))
 Note: An Approved plan was used instead of the minimum cost plan.
 SQL Hash: 1553185667, Plan Hash: -993736942, Minimum Cost Plan Hash: -1873216041 
(12 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 3100 and j < 9910 and k > 50;
            
                                QUERY PLAN
----------------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 3100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 3100) AND (j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a3_i_idx on tbl_a3 tbl_a_3
         Index Cond: ((i >= 990) AND (i <= 3100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Index Scan using tbl_a4_i_idx on tbl_a4 tbl_a_4
         Index Cond: ((i >= 990) AND (i <= 3100))
         Filter: ((j < 9910) AND (k > 50))
 Note: An Approved plan was used instead of the minimum cost plan.
 SQL Hash: 1553185667, Plan Hash: -993736942, Minimum Cost Plan Hash: -1873216041
(14 rows)
```

Consider another approved plan with different access methods for each partition:

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 2100 and j < 9910 and k > 50;
            
                                QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 2100))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 2100) AND (j < 9910) AND (k > 50))
   ->  Bitmap Heap Scan on tbl_a3 tbl_a_3
         Recheck Cond: ((i >= 990) AND (i <= 2100))
         Filter: ((j < 9910) AND (k > 50))
         ->  Bitmap Index Scan on tbl_a3_i_idx
               Index Cond: ((i >= 990) AND (i <= 2100))
 SQL Hash: 1553185667, Plan Hash: 2032136998
(12 rows)
```

In this case, any plan that reads from two partitions would fail to be enforced. Unless all of the (access method, index name) combinations from the approved plan are usable, the plan cannot be enforced. For example, the following plans have different plan hashes and the approved plan can't be enforced in these cases:

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1900 and j < 9910 and k > 50;
            
                              QUERY PLAN
-------------------------------------------------------------------------
 Append
   ->  Bitmap Heap Scan on tbl_a1 tbl_a_1
         Recheck Cond: ((i >= 990) AND (i <= 1900))
         Filter: ((j < 9910) AND (k > 50))
         ->  Bitmap Index Scan on tbl_a1_i_idx
               Index Cond: ((i >= 990) AND (i <= 1900))
   ->  Bitmap Heap Scan on tbl_a2 tbl_a_2
         Recheck Cond: ((i >= 990) AND (i <= 1900))
         Filter: ((j < 9910) AND (k > 50))
         ->  Bitmap Index Scan on tbl_a2_i_idx
               Index Cond: ((i >= 990) AND (i <= 1900))
  Note: This is not an Approved plan.  No usable Approved plan was found.
  SQL Hash: 1553185667, Plan Hash: -568647260
(13 rows)
```

```
postgres=>explain (hashes true, costs false) select j, k from tbl_a where i between 990 and 1900 and j < 9910 and k > 50;
            
                              QUERY PLAN
--------------------------------------------------------------------------
 Append
   ->  Index Scan using tbl_a1_i_idx on tbl_a1 tbl_a_1
         Index Cond: ((i >= 990) AND (i <= 1900))
         Filter: ((j < 9910) AND (k > 50))
   ->  Seq Scan on tbl_a2 tbl_a_2
         Filter: ((i >= 990) AND (i <= 1900) AND (j < 9910) AND (k > 50))
 Note: This is not an Approved plan.  No usable Approved plan was found.
 SQL Hash: 1553185667, Plan Hash: -496793743
(8 rows)
```

## Naming Convention
<a name="AuroraPostgreSQL.QPM.Partitiontable.naming.convention"></a>

For QPM to enforce a plan with declarative partitioned tables, you must follow specific naming rules for parent tables, table partitions, and indexes: 
+ **Parent table names** – These names must differ by alphabets or special characters, and not by just digits. For example, tA, tB, and tC are acceptable names for separate parent tables while t1, t2, and t3 are not. 
+ **Individual partition table names** – Partitions of the same parent should differ from one another by digits only. For example, acceptable partition names of tA could be tA1, tA2 or t1A, t2A or even multiple digits.

  Any other differences (letters, special characters) will not guarantee plan enforcement. 
+ **Index names** – In partition table hierarchy, make sure that all indexes have unique names. This means that the non-numeric parts of the names must be different. For example, if you have a partitioned table named `tA` with an index named `tA_col1_idx1`, you can't have another index named `tA_col1_idx2`. However, you can have an index called `tA_a_col1_idx2` because the non-numeric part of the name is unique. This rule applies to indexes created on both the parent table and individual partition tables. 

 Failure to adhere to the above naming conventions may result in failure of approved plans enforcement. The following example illustrates such a failed enforcement: 

```
postgres=>create table t1(i int, j int, k int, l int, m int) partition by range(i);
CREATE TABLE
postgres=>create table t1a partition of t1 for values from (0) to (1000);
CREATE TABLE
postgres=>create table t1b partition of t1 for values from (1001) to (2000);
CREATE TABLE
postgres=>SET apg_plan_mgmt.capture_plan_baselines TO 'manual';
SET
postgres=>explain (hashes true, costs false) select count(*) from t1 where i > 0;

                            QUERY PLAN
--------------------------------------------------------------------------
 Aggregate
   ->  Append
         ->  Seq Scan on t1a t1_1
               Filter: (i > 0)
         ->  Seq Scan on t1b t1_2
               Filter: (i > 0)
 SQL Hash: -1720232281, Plan Hash: -1010664377
(7 rows)
```

```
postgres=>SET apg_plan_mgmt.use_plan_baselines TO 'on';
SET
postgres=>explain (hashes true, costs false) select count(*) from t1 where i > 1000;

                            QUERY PLAN
-------------------------------------------------------------------------
 Aggregate
   ->  Seq Scan on t1b t1
         Filter: (i > 1000)
 Note: This is not an Approved plan. No usable Approved plan was found.
 SQL Hash: -1720232281, Plan Hash: 335531806
(5 rows)
```

Even though the two plans might appear identical, their `Plan Hash` values are different due to the names of the child tables. The table names vary by alpha characters instead of just digits leading to an enforcement failure.

# Working with extensions and foreign data wrappers
<a name="Appendix.PostgreSQL.CommonDBATasks"></a>

To extend the functionality to your Aurora PostgreSQL-Compatible Edition DB cluster, you can install and use various PostgreSQL *extensions*. For example, if your use case calls for intensive data entry across very large tables, you can install the `[pg\$1partman](https://pgxn.org/dist/pg_partman/doc/pg_partman.html)` extension to partition your data and thus spread the workload.

**Note**  
As of Aurora PostgreSQL 14.5, Aurora PostgreSQL supports Trusted Language Extensions for PostgreSQL. This feature is implemented as the extension `pg_tle`, which you can add to your Aurora PostgreSQL. By using this extension, developers can create their own PostgreSQL extensions in a safe environment that simplifies the setup and configuration requirements, as well as much of the preliminary testing for new extensions. For more information, see [Working with Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension.md).

In some cases, rather than installing an extension, you might add a specific *module* to the list of `shared_preload_libraries` in your Aurora PostgreSQL DB cluster's custom DB cluster parameter group. Typically, the default DB cluster parameter group loads only the `pg_stat_statements`, but several other modules are available to add to the list. For example, you can add scheduling capability by adding the `pg_cron` module, as detailed in [Scheduling maintenance with the PostgreSQL pg\$1cron extension](PostgreSQL_pg_cron.md). As another example, you can log query execution plans by loading the `auto_explain` module. To learn more, see [Logging execution plans of queries](https://aws.amazon.com/premiumsupport/knowledge-center/rds-postgresql-tune-query-performance/#) in the AWS knowledge center. 

An extension that provides access to external data is more specifically known as a *foreign data wrapper* (FDW). As one example, the `oracle_fdw` extension allows your Aurora PostgreSQL DB cluster to work with Oracle databases. 

You can also specify precisely which extensions can be installed on your Aurora PostgreSQL DB instance, by listing them in the `rds.allowed_extensions` parameter. For more information, see [Restricting installation of PostgreSQL extensions](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction.html).

Following, you can find information about setting up and using some of the extensions, modules, and FDWs available for Aurora PostgreSQL. For simplicity's sake, these are all referred to as "extensions." You can find listings of extensions that you can use with the currently available Aurora PostgreSQL versions, see [Extension versions for Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html) in the *Release Notes for Aurora PostgreSQL*.
+ [Managing large objects with the lo module](PostgreSQL_large_objects_lo_extension.md)
+ [Managing spatial data with the PostGIS extension](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md)
+ [Managing PostgreSQL partitions with the pg\$1partman extension](PostgreSQL_Partitions.md)
+ [Scheduling maintenance with the PostgreSQL pg\$1cron extension](PostgreSQL_pg_cron.md)
+ [Using pgAudit to log database activity](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)
+ [Using pglogical to synchronize data across instances](Appendix.PostgreSQL.CommonDBATasks.pglogical.md)
+ [Working with Oracle databases by using the oracle\$1fdw extension](postgresql-oracle-fdw.md)
+ [Working with SQL Server databases by using the tds\$1fdw extension](postgresql-tds-fdw.md)

# Using Amazon Aurora delegated extension support for PostgreSQL
<a name="Aurora_delegated_ext"></a>

Using Amazon Aurora delegated extension support for PostgreSQL, you can delegate the extension management to a user who need not be an `rds_superuser`. With this delegated extension support, a new role called `rds_extension` is created and you must assign this to a user to manage other extensions. This role can create, update, and drop extensions.

You can specify the extensions that can be installed on your Aurora PostgreSQL DB instance, by listing them in the `rds.allowed_extensions` parameter. For more information, see [Using PostgreSQL extensions with Amazon RDS for PostgreSQL](https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Extensions.html).

You can restrict the list of extensions available that can be managed by the user with the `rds_extension` role using `rds.allowed_delegated_extensions` parameter.

The delegated extension support is available in the following versions:
+ All higher versions
+ 15.5 and higher 15 versions
+ 14.10 and higher 14 versions
+ 13.13 and higher 13 versions
+ 12.17 and higher 12 versions

**Topics**
+ [Turning on delegate extension support to a user](#AuroraPostgreSQL.delegated_ext_mgmt)
+ [Configuration used in Aurora delegated extension support for PostgreSQL](#AuroraPostgreSQL.delegated_ext_config)
+ [Turning off the support for the delegated extension](#AuroraPostgreSQL.delegated_ext_disable)
+ [Benefits of using Amazon Aurora delegated extension support](#AuroraPostgreSQL.delegated_ext_benefits)
+ [Limitation of Aurora delegated extension support for PostgreSQL](#AuroraPostgreSQL.delegated_ext_limit)
+ [Permissions required for certain extensions](#AuroraPostgreSQL.delegated_ext_perm)
+ [Security Considerations](#AuroraPostgreSQL.delegated_ext_sec)
+ [Drop extension cascade disabled](#AuroraPostgreSQL.delegated_ext_drop)
+ [Example extensions that can be added using delegated extension support](#AuroraPostgreSQL.delegated_ext_support)

## Turning on delegate extension support to a user
<a name="AuroraPostgreSQL.delegated_ext_mgmt"></a>

You must perform the following to enable delegate extension support to a user:

1. **Grant `rds_extension` role to a user** – Connect to the database as `rds_superuser` and execute the following command:

   ```
   Postgres => grant rds_extension to user_name;
   ```

1. **Set the list of extensions available for delegated users to manage** – The `rds.allowed_delegated_extensions` allows you to specify a subset of the available extensions using `rds.allowed_extensions` in the DB cluster parameter. You can perform this at one of the following levels:
   + In the cluster or the instance parameter group, through the AWS Management Console or API. For more information, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).
   + Use the following command at the database level:

     ```
     alter database database_name set rds.allowed_delegated_extensions = 'extension_name_1,
                         extension_name_2,...extension_name_n';
     ```
   + Use the following command at the user level:

     ```
     alter user user_name set rds.allowed_delegated_extensions = 'extension_name_1,
                         extension_name_2,...extension_name_n';
     ```
**Note**  
You need not restart the database after changing the `rds.allowed_delegated_extensions` dynamic parameter.

1. **Allow access to the delegated user to objects created during the extension creation process** – Certain extensions create objects that require additional permissions to be granted before the user with `rds_extension` role can access them. The `rds_superuser` must grant the delegated user access to those objects. One of the options is to use an event trigger to automatically grant permission to the delegated user.

   **Example of event trigger**

   If you want to allow a delegated user with `rds_extension` to use extensions that require setting permissions on their objects created by the extension creation, you can customize the below example of an event trigger and add only the extensions for which you want the delegated users to have access to the full functionality. This event trigger can be created on template1 (the default template), therefore all database created from template1 will have that event trigger. When a delegated user installs the extension, this trigger will automatically grant ownership on the objects created by the extension.

   ```
   CREATE OR REPLACE FUNCTION create_ext()
   
     RETURNS event_trigger AS $$
   
   DECLARE
   
     schemaname TEXT;
     databaseowner TEXT;
   
     r RECORD;
   
   BEGIN
   
     IF tg_tag = 'CREATE EXTENSION' and current_user != 'rds_superuser' THEN
       RAISE NOTICE 'SECURITY INVOKER';
       RAISE NOTICE 'user: %', current_user;
       FOR r IN SELECT * FROM pg_catalog.pg_event_trigger_ddl_commands()
       LOOP
           CONTINUE WHEN r.command_tag != 'CREATE EXTENSION' OR r.object_type != 'extension';
   
           schemaname = (
               SELECT n.nspname
               FROM pg_catalog.pg_extension AS e
               INNER JOIN pg_catalog.pg_namespace AS n
               ON e.extnamespace = n.oid
               WHERE e.oid = r.objid
           );
   
           databaseowner = (
               SELECT pg_catalog.pg_get_userbyid(d.datdba)
               FROM pg_catalog.pg_database d
               WHERE d.datname = current_database()
           );
           RAISE NOTICE 'Record for event trigger %, objid: %,tag: %, current_user: %, schema: %, database_owenr: %', r.object_identity, r.objid, tg_tag, current_user, schemaname, databaseowner;
           IF r.object_identity = 'address_standardizer_data_us' THEN
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.us_gaz TO %I WITH GRANT OPTION;', schemaname, databaseowner);
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.us_lex TO %I WITH GRANT OPTION;', schemaname, databaseowner);
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.us_rules TO %I WITH GRANT OPTION;', schemaname, databaseowner);
           ELSIF r.object_identity = 'dict_int' THEN
               EXECUTE pg_catalog.format('ALTER TEXT SEARCH DICTIONARY %I.intdict OWNER TO %I;', schemaname, databaseowner);
           ELSIF r.object_identity = 'pg_partman' THEN
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.part_config TO %I WITH GRANT OPTION;', schemaname, databaseowner);
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.part_config_sub TO %I WITH GRANT OPTION;', schemaname, databaseowner);
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE %I.custom_time_partitions TO %I WITH GRANT OPTION;', schemaname, databaseowner);
           ELSIF r.object_identity = 'postgis_topology' THEN
               EXECUTE pg_catalog.format('GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA topology TO %I WITH GRANT OPTION;', databaseowner);
               EXECUTE pg_catalog.format('GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA topology TO %I WITH GRANT OPTION;', databaseowner);
               EXECUTE pg_catalog.format('GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA topology TO %I WITH GRANT OPTION;', databaseowner);
               EXECUTE pg_catalog.format('GRANT USAGE ON SCHEMA topology TO %I WITH GRANT OPTION;', databaseowner);
           END IF;
       END LOOP;
     END IF;
   END;
   $$ LANGUAGE plpgsql SECURITY DEFINER;
   
   CREATE EVENT TRIGGER log_create_ext ON ddl_command_end EXECUTE PROCEDURE create_ext();
   ```

## Configuration used in Aurora delegated extension support for PostgreSQL
<a name="AuroraPostgreSQL.delegated_ext_config"></a>


| Configuration Name | Description | Default Value | Notes | Who can modify or grant permission | 
| --- | --- | --- | --- | --- | 
| `rds.allowed_delegated_extensions` | This parameter limits the extensions a rds\$1extension role can manage in a database. It must be a subset of rds.allowed\$1extensions. | empty string | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora_delegated_ext.html) To learn more about setting up this parameter, see [Turning on delegate extension support to a user](#AuroraPostgreSQL.delegated_ext_mgmt). | rds\$1superuser | 
| `rds.allowed_extensions` | This parameter lets the customer limit the extensions that can be installed in the Aurora PostgreSQL DB instance. For more information, see [Restricting installation of PostgreSQL extensions ](https://docs.aws.amazon.com//AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction) | "\$1" | By default, this parameter is set to "\$1", which means that all extensions supported on RDS for PostgreSQL and Aurora PostgreSQL are allowed to be created by users with necessary privileges. Empty means no extensions can be installed in the Aurora PostgreSQL DB instance. | administrator | 
| `rds-delegated_extension_allow_drop_cascade` | This parameter controls the ability for user with `rds_extension` to drop the extension using a cascade option. | off | By default, `rds-delegated_extension_allow_drop_cascade` is set to `off`. This means that users with `rds_extension` are not allowed to drop an extension using the cascade option. To grant that ability, the `rds.delegated_extension_allow_drop_cascade` parameter should be set to `on`. | rds\$1superuser | 

## Turning off the support for the delegated extension
<a name="AuroraPostgreSQL.delegated_ext_disable"></a>

**Turning off partially**  
The delegated users can’t create new extensions but can still update existing extensions.
+ Reset `rds.allowed_delegated_extensions` to the default value in the DB cluster parameter group.
+ Use the following command at the database level:

  ```
  alter database database_name reset rds.allowed_delegated_extensions;
  ```
+ Use the following command at the user level:

  ```
  alter user user_name reset rds.allowed_delegated_extensions;
  ```

**Turning off fully**  
Revoking `rds_extension` role from a user will revert the user to standard permissions. The user can no longer create, update, or drop extensions. 

```
postgres => revoke rds_extension from user_name;
```

## Benefits of using Amazon Aurora delegated extension support
<a name="AuroraPostgreSQL.delegated_ext_benefits"></a>

By using Amazon Aurora delegated extension support for PostgreSQL, you securely delegate the extension management to users who do not have the `rds_superuser` role. This feature provides the following benefits:
+ You can easily delegate extension management to users of your choice.
+ This doesn’t require `rds_superuser` role.
+ Provides ability to support different set of extensions for different databases in the same DB cluster.

## Limitation of Aurora delegated extension support for PostgreSQL
<a name="AuroraPostgreSQL.delegated_ext_limit"></a>
+ Objects created during the extension creation process may require additional privileges for the extension to function properly.

## Permissions required for certain extensions
<a name="AuroraPostgreSQL.delegated_ext_perm"></a>

In order to create, use, or update the following extensions, the delegated user should have the necessary privileges on the following functions, tables, and schema.


| Extensions that need ownership or permissions | Function | Tables | Schema | Text Search Dictionary | Comment | 
| --- | --- | --- | --- | --- | --- | 
| address\$1standardizer\$1data\$1us |  | us\$1gaz, us\$1lex, us\$1lex, I.us\$1rules |   |  |  | 
| amcheck | bt\$1index\$1check, bt\$1index\$1parent\$1check |  |   |  |  | 
| dict\$1int |  |  |  | intdict |  | 
| pg\$1partman |  | custom\$1time\$1partitions, part\$1config, part\$1config\$1sub |  |  |  | 
| pg\$1stat\$1statements |  |  |  |  |  | 
| PostGIS | st\$1tileenvelope | spatial\$1ref\$1sys |  |  |  | 
| postgis\$1raster |  |  |  |  |  | 
| postgis\$1topology |  | topology, layer | topology |  | the delegated user Must be the database owner | 
| log\$1fdw | create\$1foreign\$1table\$1for\$1log\$1file |  |  |  |  | 
| rds\$1tools | role\$1password\$1encryption\$1type |  |  |  |  | 
| postgis\$1tiger\$1geocoder |  | geocode\$1settings\$1default, geocode\$1settings | tiger |  |  | 
| pg\$1freespacemap | pg\$1freespace |  |  |  |  | 
| pg\$1visibility | pg\$1visibility |  |  |  |  | 

## Security Considerations
<a name="AuroraPostgreSQL.delegated_ext_sec"></a>

 Keep in mind that a user with `rds_extension` role will be able to manage extensions on all databases they have the connect privilege on. If the intention is to have a delegated user manage extension on a single database, a good practice is to revoke all privileges from public on each database, then explicitly grant the connect privilege for that specific database to the delegate user. 

 There are several extensions that can allow a user to access information from multiple database. Ensure the users you grant `rds_extension` has cross database capabilities before adding these extensions to `rds.allowed_delegated_extensions`. For example, `postgres_fdw` and `dblink` provide functionality to query across databases on the same instance or remote instances. `log_fdw` reads the postgres engine log files, which are for all databases in the instance, potentially containing slow queries or error messages from multiple databases. `pg_cron` enables running scheduled background jobs on the DB instance and can configure jobs to run in a different database. 

## Drop extension cascade disabled
<a name="AuroraPostgreSQL.delegated_ext_drop"></a>

 The ability to drop the extension with cascade option by a user with the `rds_extension` role is controlled by `rds.delegated_extension_allow_drop_cascade` parameter. By default, `rds-delegated_extension_allow_drop_cascade` is set to `off`. This means that users with the `rds_extension` role are not allowed to drop an extension using the cascade option as shown in the below query. 

```
DROP EXTENSION CASCADE;
```

As this will automatically drop objects that depend on the extension, and in turn all objects that depend on those objects. Attempting to use the cascade option will result in an error.

 To grant that ability, the `rds.delegated_extension_allow_drop_cascade` parameter should be set to `on`. 

 Changing the `rds.delegated_extension_allow_drop_cascade` dynamic parameter doesn't require a database restart. You can do this at one of the following levels: 
+ In the cluster or the instance parameter group, through the AWS Management Console or API.
+ Using the following command at the database level:

  ```
  alter database database_name set rds.delegated_extension_allow_drop_cascade = 'on';
  ```
+ Using the following command at the user level:

  ```
  alter role tenant_user set rds.delegated_extension_allow_drop_cascade = 'on';
  ```

## Example extensions that can be added using delegated extension support
<a name="AuroraPostgreSQL.delegated_ext_support"></a>
+ `rds_tools`

  ```
  extension_test_db=> create extension rds_tools;
  CREATE EXTENSION
  extension_test_db=> SELECT * from rds_tools.role_password_encryption_type() where rolname = 'pg_read_server_files';
  ERROR: permission denied for function role_password_encryption_type
  ```
+ `amcheck`

  ```
  extension_test_db=> CREATE TABLE amcheck_test (id int);
  CREATE TABLE
  extension_test_db=> INSERT INTO amcheck_test VALUES (generate_series(1,100000));
  INSERT 0 100000
  extension_test_db=> CREATE INDEX amcheck_test_btree_idx ON amcheck_test USING btree (id);
  CREATE INDEX
  extension_test_db=> create extension amcheck;
  CREATE EXTENSION
  extension_test_db=> SELECT bt_index_check('amcheck_test_btree_idx'::regclass);
  ERROR: permission denied for function bt_index_check
  extension_test_db=> SELECT bt_index_parent_check('amcheck_test_btree_idx'::regclass);
  ERROR: permission denied for function bt_index_parent_check
  ```
+ `pg_freespacemap`

  ```
  extension_test_db=> create extension pg_freespacemap;
  CREATE EXTENSION
  extension_test_db=> SELECT * FROM pg_freespace('pg_authid');
  ERROR: permission denied for function pg_freespace
  extension_test_db=> SELECT * FROM pg_freespace('pg_authid',0);
  ERROR: permission denied for function pg_freespace
  ```
+ `pg_visibility`

  ```
  extension_test_db=> create extension pg_visibility;
  CREATE EXTENSION
  extension_test_db=> select * from pg_visibility('pg_database'::regclass);
  ERROR: permission denied for function pg_visibility
  ```
+ `postgres_fdw`

  ```
  extension_test_db=> create extension postgres_fdw;
  CREATE EXTENSION
  extension_test_db=> create server myserver foreign data wrapper postgres_fdw options (host 'foo', dbname 'foodb', port '5432');
  ERROR: permission denied for foreign-data wrapper postgres_fdw
  ```

# Managing large objects with the lo module
<a name="PostgreSQL_large_objects_lo_extension"></a>

The lo module (extension) is for database users and developers working with PostgreSQL databases through JDBC or ODBC drivers. Both JDBC and ODBC expect the database to handle deletion of large objects when references to them change. However, PostgreSQL doesn't work that way. PostgreSQL doesn't assume that an object should be deleted when its reference changes. The result is that objects remain on disk, unreferenced. The lo extension includes a function that you use to trigger on reference changes to delete objects if needed.

**Tip**  
To determine if your database can benefit from the lo extension, use the `vacuumlo` utility to check for orphaned large objects. To get counts of orphaned large objects without taking any action, run the utility with the `-n` option (no-op). To learn how, see [vacuumlo utility](#vacuumlo-utility) following. 

The lo module is available for Aurora PostgreSQL 13.7, 12.11, 11.16, 10.21 and higher minor versions.

To install the module (extension), you need `rds_superuser` privileges. Installing the lo extension adds the following to your database:
+ `lo` – This is a large object (lo) data type that you can use for binary large objects (BLOBs) and other large objects. The `lo` data type is a domain of the `oid` data type. In other words, it's an object identifier with optional constraints. For more information, see [Object identifiers](https://www.postgresql.org/docs/14/datatype-oid.html) in the PostgreSQL documentation. In simple terms, you can use the `lo` data type to distinguish your database columns that hold large object references from other object identifiers (OIDs). 
+ `lo_manage` – This is a function that you can use in triggers on table columns that contain large object references. Whenever you delete or modify a value that references a large object, the trigger unlinks the object (`lo_unlink`) from its reference. Use the trigger on a column only if the column is the sole database reference to the large object. 

For more information about the large objects module, see [lo](https://www.postgresql.org/docs/current/lo.html) in the PostgreSQL documentation.

## Installing the lo extension
<a name="PostgreSQL_large_objects_lo_extension.install"></a>

Before installing the lo extension, make sure that you have `rds_superuser` privileges. 

**To install the lo extension**

1. Use `psql` to connect to the primary DB instance of your Aurora PostgreSQL DB cluster.

   ```
   psql --host=your-cluster-instance-1.666666666666.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

   When prompted, enter your password. The `psql` client connects and displays the default administrative connection database, `postgres=>`, as the prompt.

1. Install the extension as follows.

   ```
   postgres=> CREATE EXTENSION lo;
   CREATE EXTENSION
   ```

You can now use the `lo` data type to define columns in your tables. For example, you can create a table (`images`) that contains raster image data. You can use the `lo` data type for a column `raster`, as shown in the following example, which creates a table.

```
postgres=> CREATE TABLE images (image_name text, raster lo);
```

## Using the lo\$1manage trigger function to delete objects
<a name="PostgreSQL_large_objects_lo_extension.using"></a>

You can use the `lo_manage` function in a trigger on a `lo` or other large object columns to clean up (and prevent orphaned objects) when the `lo` is updated or deleted. 

**To set up triggers on columns that reference large objects**
+ Do one of the following:
  + Create a BEFORE UPDATE OR DELETE trigger on each column to contain unique references to large objects, using the column name for the argument.

    ```
    postgres=> CREATE TRIGGER t_raster BEFORE UPDATE OR DELETE ON images
        FOR EACH ROW EXECUTE FUNCTION lo_manage(raster);
    ```
  + Apply a trigger only when the column is being updated.

    ```
    postgres=> CREATE TRIGGER t_raster BEFORE UPDATE OF images
        FOR EACH ROW EXECUTE FUNCTION lo_manage(raster);
    ```

The `lo_manage` trigger function works only in the context of inserting or deleting column data, depending on how you define the trigger. It has no effect when you perform a `DROP` or `TRUNCATE` operation on a database. That means that you should delete object columns from any tables before dropping, to prevent creating orphaned objects.

For example, suppose that you want to drop the database containing the `images` table. You delete the column as follows. 

```
postgres=> DELETE FROM images COLUMN raster
```

Assuming that the `lo_manage` function is defined on that column to handle deletes, you can now safely drop the table.

## Removing orphaned large objects using `vacuumlo`
<a name="PostgreSQL_large_objects_lo_extension.vacuumlo-utility"></a>

The  `vacuumlo` utility identifies and removes orphaned large objects from databases. This utility has been available since PostgreSQL 9.1.24. If your database users routinely work with large objects, we recommend that you run `vacuumlo` occasionally to clean up orphaned large objects.

Before installing the lo extension, you can use `vacuumlo` to assess whether your Aurora PostgreSQL DB cluster can benefit. To do so, run `vacuumlo` with the `-n` option (no-op) to show what would be removed, as shown in the following: 

```
$ vacuumlo -v -n -h your-cluster-instance-1.666666666666.aws-region.rds.amazonaws.com -p 5433 -U postgres docs-lab-spatial-db
Password:*****
Connected to database "docs-lab-spatial-db"
Test run: no large objects will be removed!
Would remove 0 large objects from database "docs-lab-spatial-db".
```

As the output shows, orphaned large objects aren't a problem for this particular database. 

For more information about this utility, see [https://www.postgresql.org/docs/current/vacuumlo.html](https://www.postgresql.org/docs/current/vacuumlo.html) in the PostgreSQL documentation.

## Understanding how `vacuumlo` works
<a name="PostgreSQL_large_objects_lo_extension.vacuumlo-remove"></a>

 The `vacuumlo` command removes orphaned large objects (LOs) from your PostgreSQL database without affecting or conflicting with your user tables.

The command works as follows:

1. `vacuumlo` starts by creating a temporary table containing all the Object IDs (OIDs) of the large objects in your database.

1. `vacuumlo` then scans through every column in the database that uses the data types `oid` or `lo`. If `vacuumlo` finds a matching OID in these columns, it removes the OID from the temporary table. `vacuumlo` checks only columns specifically named `oid` or `lo`, not domains based on these types.

1. The remaining entries in the temporary table represent orphaned LOs, which `vacuumlo` then safely removes.

## Improving `vacuumlo` performance
<a name="PostgreSQL_large_objects_lo_extension.vacuumlo-improve"></a>

 You can potentially improve the performance of `vacuumlo` by increasing the batch size using the `-l` option. This allows `vacuumlo` to process more LOs at once. 

 If your system has sufficient memory and you can accommodate the temporary table completely in memory, increasing the `temp_buffers` setting at the database level may improve performance. This allows the table to reside entirely in memory, which can enhance the overall performance. 

Following query estimates the size of the temporary table:

```
SELECT
    pg_size_pretty(SUM(pg_column_size(oid))) estimated_lo_temp_table_size
FROM
    pg_largeobject_metadata;
```

## Considerations for large objects
<a name="PostgreSQL_large_objects_lo_extension.vacuumlo-consider"></a>

Following you can find some important considerations to note when working with large objects:
+ `Vacuumlo` is the only solution as there is currently no other method to remove orphaned LOs.
+ Tools like pglogical, native logical replication, and AWS DMS that use replication technologies do not support replicating large objects.
+ When designing your database schema, avoid using large objects when possible and consider using alternative data types like `bytea` instead.
+ Run `vacuumlo` regularly, at least weekly, to prevent issues with orphaned LOs.
+ Use a trigger with the `lo_manage` function on tables that store large objects to help prevent orphaned LOs from being created.

# Managing spatial data with the PostGIS extension
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS"></a>

PostGIS is an extension to PostgreSQL for storing and managing spatial information. To learn more about PostGIS, see [PostGIS.net](https://postgis.net/). 

Starting with version 10.5, PostgreSQL supports the libprotobuf 1.3.0 library used by PostGIS for working with map box vector tile data.

Setting up the PostGIS extension requires `rds_superuser` privileges. We recommend that you create a user (role) to manage the PostGIS extension and your spatial data. The PostGIS extension and its related components add thousands of functions to PostgreSQL. Consider creating the PostGIS extension in its own schema if that makes sense for your use case. The following example shows how to install the extension in its own database, but this isn't required.

**Topics**
+ [Step 1: Create a user (role) to manage the PostGIS extension](#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Connect)
+ [Step 2: Load the PostGIS extensions](#Appendix.PostgreSQL.CommonDBATasks.PostGIS.LoadExtensions)
+ [Step 3: Transfer ownership of the extension schemas](#Appendix.PostgreSQL.CommonDBATasks.PostGIS.TransferOwnership)
+ [Step 4: Transfer ownership of the PostGIS tables](#Appendix.PostgreSQL.CommonDBATasks.PostGIS.TransferObjects)
+ [Step 5: Test the extensions](#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Test)
+ [Step 6: Upgrade the PostGIS extension](#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Update)
+ [PostGIS extension versions](#CHAP_PostgreSQL.Extensions.PostGIS)
+ [Upgrading PostGIS 2 to PostGIS 3](#PostgreSQL.Extensions.PostGIS.versions.upgrading.2-to-3)

## Step 1: Create a user (role) to manage the PostGIS extension
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS.Connect"></a>

First, connect to your RDS for PostgreSQL DB instance as a user that has `rds_superuser` privileges. If you kept the default name when you set up your instance, you connect as `postgres`. 

```
psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
```

Create a separate role (user) to administer the PostGIS extension.

```
postgres=>  CREATE ROLE gis_admin LOGIN PASSWORD 'change_me';
CREATE ROLE
```

Grant this role `rds_superuser` privileges, to allow the role to install the extension.

```
postgres=> GRANT rds_superuser TO gis_admin;
GRANT
```

Create a database to use for your PostGIS artifacts. This step is optional. Or you can create a schema in your user database for the PostGIS extensions, but this also isn't required.

```
postgres=> CREATE DATABASE lab_gis;
CREATE DATABASE
```

Give the `gis_admin` all privileges on the `lab_gis` database.

```
postgres=> GRANT ALL PRIVILEGES ON DATABASE lab_gis TO gis_admin;
GRANT
```

Exit the session and reconnect to your RDS for PostgreSQL DB instance as `gis_admin`.

```
postgres=> psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=gis_admin --password --dbname=lab_gis
Password for user gis_admin:...
lab_gis=>
```

Continue setting up the extension as detailed in the next steps.

## Step 2: Load the PostGIS extensions
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS.LoadExtensions"></a>

The PostGIS extension includes several related extensions that work together to provide geospatial functionality. Depending on your use case, you might not need all the extensions created in this step. 

Use `CREATE EXTENSION` statements to load the PostGIS extensions. 

```
CREATE EXTENSION postgis;
CREATE EXTENSION
CREATE EXTENSION postgis_raster;
CREATE EXTENSION
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION
CREATE EXTENSION postgis_topology;
CREATE EXTENSION
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION
```

You can verify the results by running the SQL query shown in the following example, which lists the extensions and their owners. 

```
SELECT n.nspname AS "Name",
  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
  FROM pg_catalog.pg_namespace n
  WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
  ORDER BY 1;
List of schemas
     Name     |   Owner
--------------+-----------
 public       | postgres
 tiger        | rdsadmin
 tiger_data   | rdsadmin
 topology     | rdsadmin
(4 rows)
```

## Step 3: Transfer ownership of the extension schemas
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS.TransferOwnership"></a>

Use the ALTER SCHEMA statements to transfer ownership of the schemas to the `gis_admin` role.

```
ALTER SCHEMA tiger OWNER TO gis_admin;
ALTER SCHEMA
ALTER SCHEMA tiger_data OWNER TO gis_admin; 
ALTER SCHEMA
ALTER SCHEMA topology OWNER TO gis_admin;
ALTER SCHEMA
```

You can confirm the ownership change by running the following SQL query. Or you can use the `\dn` metacommand from the psql command line. 

```
SELECT n.nspname AS "Name",
  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
  FROM pg_catalog.pg_namespace n
  WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
  ORDER BY 1;

       List of schemas
     Name     |     Owner
--------------+---------------
 public       | postgres
 tiger        | gis_admin
 tiger_data   | gis_admin
 topology     | gis_admin
(4 rows)
```

## Step 4: Transfer ownership of the PostGIS tables
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS.TransferObjects"></a>

**Note**  
Do not change ownership of the PostGIS functions. Proper operation and future upgrades of PostGIS require these functions to retain original ownership. For more information about PostGIS permissions, see [PostgreSQL Security](https://postgis.net/workshops/postgis-intro/security.html).

Use the following function to transfer ownership of the PostGIS tables to the `gis_admin` role. Run the following statement from the psql prompt to create the function.

```
CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
CREATE FUNCTION
```

Next, run the following query to run the `exec` function that in turn runs the statements and alters the permissions.

```
SELECT exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO gis_admin;')
  FROM (
    SELECT nspname, relname
    FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid) 
    WHERE nspname in ('tiger','topology') AND
    relkind IN ('r','S','v') ORDER BY relkind = 'S')
s;
```

## Step 5: Test the extensions
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS.Test"></a>

To avoid needing to specify the schema name, add the `tiger` schema to your search path using the following command.

```
SET search_path=public,tiger;
SET
```

Test the `tiger` schema by using the following SELECT statement.

```
SELECT address, streetname, streettypeabbrev, zip
 FROM normalize_address('1 Devonshire Place, Boston, MA 02109') AS na;
address | streetname | streettypeabbrev |  zip
---------+------------+------------------+-------
       1 | Devonshire | Pl               | 02109
(1 row)
```

To learn more about this extension, see [Tiger Geocoder](https://postgis.net/docs/Extras.html#Tiger_Geocoder) in the PostGIS documentation. 

Test access to the `topology` schema by using the following `SELECT` statement. This calls the `createtopology` function to register a new topology object (my\$1new\$1topo) with the specified spatial reference identifier (26986) and default tolerance (0.5). To learn more, see [CreateTopology](https://postgis.net/docs/CreateTopology.html) in the PostGIS documentation. 

```
SELECT topology.createtopology('my_new_topo',26986,0.5);
 createtopology
----------------
              1
(1 row)
```

## Step 6: Upgrade the PostGIS extension
<a name="Appendix.PostgreSQL.CommonDBATasks.PostGIS.Update"></a>

Each new release of PostgreSQL supports one or more versions of the PostGIS extension compatible with that release. Upgrading the PostgreSQL engine to a new version doesn't automatically upgrade the PostGIS extension. Before upgrading the PostgreSQL engine, you typically upgrade PostGIS to the newest available version for the current PostgreSQL version. For details, see [PostGIS extension versions](#CHAP_PostgreSQL.Extensions.PostGIS). 

After the PostgreSQL engine upgrade, you then upgrade the PostGIS extension again, to the version supported for the newly upgraded PostgreSQL engine version. For more information about upgrading the PostgreSQL engine, see [Testing an upgrade of your production DB cluster to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary). 

You can check for available PostGIS extension version updates on your Aurora PostgreSQL DB cluster at any time. To do so, run the following command. This function is available with PostGIS 2.5.0 and higher versions.

```
SELECT postGIS_extensions_upgrade();
```

If your application doesn't support the latest PostGIS version, you can install an older version of PostGIS that's available in your major version as follows.

```
CREATE EXTENSION postgis VERSION "2.5.5";
```

If you want to upgrade to a specific PostGIS version from an older version, you can also use the following command.

```
ALTER EXTENSION postgis UPDATE TO "2.5.5";
```

Depending on the version that you're upgrading from, you might need to use this function again. The result of the first run of the function determines if an additional upgrade function is needed. For example, this is the case for upgrading from PostGIS 2 to PostGIS 3. For more information, see [Upgrading PostGIS 2 to PostGIS 3](#PostgreSQL.Extensions.PostGIS.versions.upgrading.2-to-3).

If you upgraded this extension to prepare for a major version upgrade of the PostgreSQL engine, you can continue with other preliminary tasks. For more information, see [Testing an upgrade of your production DB cluster to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary). 

## PostGIS extension versions
<a name="CHAP_PostgreSQL.Extensions.PostGIS"></a>

We recommend that you install the versions of all extensions such as PostGIS as listed in [Extension versions for Aurora PostgreSQL-Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html) in the *Release Notes for Aurora PostgreSQL*. To get a list of versions that are available in your release, use the following command.

```
SELECT * FROM pg_available_extension_versions WHERE name='postgis';
```

You can find version information in the following sections in the *Release Notes for Aurora PostgreSQL*:
+ [Extension versions for Aurora PostgreSQL 14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.14)
+ [Extension versions for Aurora PostgreSQL-Compatible Edition 13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.13)
+ [Extension versions for Aurora PostgreSQL-Compatible Edition 12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.12)
+ [Extension versions for Aurora PostgreSQL-Compatible Edition 11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.11)
+ [Extension versions for Aurora PostgreSQL-Compatible Edition 10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.10)
+ [Extension versions for Aurora PostgreSQL-Compatible Edition 9.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html#AuroraPostgreSQL.Extensions.96)

## Upgrading PostGIS 2 to PostGIS 3
<a name="PostgreSQL.Extensions.PostGIS.versions.upgrading.2-to-3"></a>

Starting with version 3.0, the PostGIS raster functionality is now a separate extension, `postgis_raster`. This extension has its own installation and upgrade path. This removes dozens of functions, data types, and other artifacts required for raster image processing from the core `postgis` extension. That means that if your use case doesn't require raster processing, you don't need to install the `postgis_raster` extension.

In the following upgrade example, the first upgrade command extracts raster functionality into the `postgis_raster` extension. A second upgrade command is then required to upgrade `postgis_raster` to the new version.

**To upgrade from PostGIS 2 to PostGIS 3**

1. Identify the default version of PostGIS that's available to the PostgreSQL version on your Aurora PostgreSQL DB cluster. To do so, run the following query.

   ```
   SELECT * FROM pg_available_extensions
       WHERE default_version > installed_version;
     name   | default_version | installed_version |                          comment
   ---------+-----------------+-------------------+------------------------------------------------------------
    postgis | 3.1.4           | 2.3.7             | PostGIS geometry and geography spatial types and functions
   (1 row)
   ```

1. Identify the versions of PostGIS installed in each database on the writer instance of your Aurora PostgreSQL DB cluster. In other words, query each user database as follows.

   ```
   SELECT
       e.extname AS "Name",
       e.extversion AS "Version",
       n.nspname AS "Schema",
       c.description AS "Description"
   FROM
       pg_catalog.pg_extension e
       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace
       LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid
       AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass
   WHERE
       e.extname LIKE '%postgis%'
   ORDER BY
       1;
     Name   | Version | Schema |                             Description
   ---------+---------+--------+---------------------------------------------------------------------
    postgis | 2.3.7   | public | PostGIS geometry, geography, and raster spatial types and functions
   (1 row)
   ```

   This mismatch between the default version (PostGIS 3.1.4) and the installed version (PostGIS 2.3.7) means that you need to upgrade the PostGIS extension.

   ```
   ALTER EXTENSION postgis UPDATE;
   ALTER EXTENSION
   WARNING: unpackaging raster
   WARNING: PostGIS Raster functionality has been unpackaged
   ```

1. Run the following query to verify that the raster functionality is now in its own package.

   ```
   SELECT
       probin,
       count(*)
   FROM
       pg_proc
   WHERE
       probin LIKE '%postgis%'
   GROUP BY
       probin;
             probin          | count
   --------------------------+-------
    $libdir/rtpostgis-2.3    | 107
    $libdir/postgis-3        | 487
   (2 rows)
   ```

   The output shows that there's still a difference between versions. The PostGIS functions are version 3 (postgis-3), while the raster functions (rtpostgis) are version 2 (rtpostgis-2.3). To complete the upgrade, you run the upgrade command again, as follows.

   ```
   postgres=> SELECT postgis_extensions_upgrade();
   ```

   You can safely ignore the warning messages. Run the following query again to verify that the upgrade is complete. The upgrade is complete when PostGIS and all related extensions aren't marked as needing upgrade. 

   ```
   SELECT postgis_full_version();
   ```

1. Use the following query to see the completed upgrade process and the separately packaged extensions, and verify that their versions match. 

   ```
   SELECT
       e.extname AS "Name",
       e.extversion AS "Version",
       n.nspname AS "Schema",
       c.description AS "Description"
   FROM
       pg_catalog.pg_extension e
       LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace
       LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid
           AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass
   WHERE
       e.extname LIKE '%postgis%'
   ORDER BY
       1;
         Name      | Version | Schema |                             Description
   ----------------+---------+--------+---------------------------------------------------------------------
    postgis        | 3.1.5   | public | PostGIS geometry, geography, and raster spatial types and functions
    postgis_raster | 3.1.5   | public | PostGIS raster types and functions
   (2 rows)
   ```

   The output shows that the PostGIS 2 extension was upgraded to PostGIS 3, and both `postgis` and the now separate `postgis_raster` extension are version 3.1.5.

After this upgrade completes, if you don't plan to use the raster functionality, you can drop the extension as follows.

```
DROP EXTENSION postgis_raster;
```

# Managing PostgreSQL partitions with the pg\$1partman extension
<a name="PostgreSQL_Partitions"></a>

PostgreSQL table partitioning provides a framework for high-performance handling of data input and reporting. Use partitioning for databases that require very fast input of large amounts of data. Partitioning also provides for faster queries of large tables. Partitioning helps maintain data without impacting the database instance because it requires less I/O resources.

By using partitioning, you can split data into custom-sized chunks for processing. For example, you can partition time-series data for ranges such as hourly, daily, weekly, monthly, quarterly, yearly, custom, or any combination of these. For a time-series data example, if you partition the table by hour, each partition contains one hour of data. If you partition the time-series table by day, the partitions holds one day's worth of data, and so on. The partition key controls the size of a partition. 

When you use an `INSERT` or `UPDATE` SQL command on a partitioned table, the database engine routes the data to the appropriate partition. PostgreSQL table partitions that store the data are child tables of the main table. 

During database query reads, the PostgreSQL optimizer examines the `WHERE` clause of the query and, if possible, directs the database scan to only the relevant partitions.

Starting with version 10, PostgreSQL uses declarative partitioning to implement table partitioning. This is also known as native PostgreSQL partitioning. Before PostgreSQL version 10, you used triggers to implement partitions. 

PostgreSQL table partitioning provides the following features:
+ Creation of new partitions at any time.
+ Variable partition ranges.
+ Detachable and reattachable partitions using data definition language (DDL) statements.

  For example, detachable partitions are useful for removing historical data from the main partition but keeping historical data for analysis.
+ New partitions inherit the parent database table properties, including the following:
  + Indexes
  + Primary keys, which must include the partition key column
  + Foreign keys
  + Check constraints
  + References
+ Creating indexes for the full table or each specific partition.

You can't alter the schema for an individual partition. However, you can alter the parent table (such as adding a new column), which propagates to partitions. 

**Topics**
+ [Overview of the PostgreSQL pg\$1partman extension](#PostgreSQL_Partitions.pg_partman)
+ [Enabling the pg\$1partman extension](#PostgreSQL_Partitions.enable)
+ [Configuring partitions using the create\$1parent function](#PostgreSQL_Partitions.create_parent)
+ [Configuring partition maintenance using the run\$1maintenance\$1proc function](#PostgreSQL_Partitions.run_maintenance_proc)

## Overview of the PostgreSQL pg\$1partman extension
<a name="PostgreSQL_Partitions.pg_partman"></a>

You can use the PostgreSQL `pg_partman` extension to automate the creation and maintenance of table partitions. For more general information, see [PG Partition Manager](https://github.com/pgpartman/pg_partman) in the `pg_partman` documentation.

**Note**  
The `pg_partman` extension is supported on Aurora PostgreSQL versions 12.6 and higher.

Instead of having to manually create each partition, you configure `pg_partman` with the following settings: 
+ Table to be partitioned
+ Partition type
+ Partition key
+ Partition granularity
+ Partition precreation and management options

After you create a PostgreSQL partitioned table, you register it with `pg_partman` by calling the `create_parent` function. Doing this creates the necessary partitions based on the parameters you pass to the function.

The `pg_partman` extension also provides the `run_maintenance_proc` function, which you can call on a scheduled basis to automatically manage partitions. To ensure that the proper partitions are created as needed, schedule this function to run periodically (such as hourly). You can also ensure that partitions are automatically dropped.

## Enabling the pg\$1partman extension
<a name="PostgreSQL_Partitions.enable"></a>

If you have multiple databases inside the same PostgreSQL DB instance for which you want to manage partitions, enable the `pg_partman` extension separately for each database. To enable the `pg_partman` extension for a specific database, create the partition maintenance schema and then create the `pg_partman` extension as follows.

```
CREATE SCHEMA partman;
CREATE EXTENSION pg_partman WITH SCHEMA partman;
```

**Note**  
To create the `pg_partman` extension, make sure that you have `rds_superuser` privileges. 

If you receive an error such as the following, grant the `rds_superuser` privileges to the account or use your superuser account. 

```
ERROR: permission denied to create extension "pg_partman"
HINT: Must be superuser to create this extension.
```

To grant `rds_superuser` privileges, connect with your superuser account and run the following command.

```
GRANT rds_superuser TO user-or-role;
```

For the examples that show using the pg\$1partman extension, we use the following sample database table and partition. This database uses a partitioned table based on a timestamp. A schema `data_mart` contains a table named `events` with a column named `created_at`. The following settings are included in the `events` table:
+  Primary keys `event_id` and `created_at`, which must have the column used to guide the partition.
+ A check constraint `ck_valid_operation` to enforce values for an `operation` table column.
+ Two foreign keys, where one (`fk_orga_membership)` points to the external table `organization` and the other (`fk_parent_event_id`) is a self-referenced foreign key. 
+ Two indexes, where one (`idx_org_id`) is for the foreign key and the other (`idx_event_type`) is for the event type.

The following DDL statements create these objects, which are automatically included on each partition.

```
CREATE SCHEMA data_mart;
CREATE TABLE data_mart.organization ( org_id BIGSERIAL,
        org_name TEXT,
        CONSTRAINT pk_organization PRIMARY KEY (org_id)  
    );

CREATE TABLE data_mart.events(
        event_id        BIGSERIAL, 
        operation       CHAR(1), 
        value           FLOAT(24), 
        parent_event_id BIGINT, 
        event_type      VARCHAR(25), 
        org_id          BIGSERIAL, 
        created_at      timestamp, 
        CONSTRAINT pk_data_mart_event PRIMARY KEY (event_id, created_at), 
        CONSTRAINT ck_valid_operation CHECK (operation = 'C' OR operation = 'D'), 
        CONSTRAINT fk_orga_membership 
            FOREIGN KEY(org_id) 
            REFERENCES data_mart.organization (org_id),
        CONSTRAINT fk_parent_event_id 
            FOREIGN KEY(parent_event_id, created_at) 
            REFERENCES data_mart.events (event_id,created_at)
    ) PARTITION BY RANGE (created_at);

CREATE INDEX idx_org_id     ON  data_mart.events(org_id);
CREATE INDEX idx_event_type ON  data_mart.events(event_type);
```



## Configuring partitions using the create\$1parent function
<a name="PostgreSQL_Partitions.create_parent"></a>

After you enable the `pg_partman` extension, use the `create_parent` function to configure partitions inside the partition maintenance schema. The following example uses the `events` table example created in [Enabling the pg\$1partman extensionConfiguring partition maintenance using the run\$1maintenance\$1proc function](#PostgreSQL_Partitions.enable). Call the `create_parent` function as follows.

```
SELECT partman.create_parent( 
 p_parent_table => 'data_mart.events',
 p_control      => 'created_at',
 p_type         => 'range',
 p_interval     => '1 day',
 p_premake      => 30);
```

The parameters are as follows:
+ `p_parent_table` – The parent partitioned table. This table must already exist and be fully qualified, including the schema. 
+ `p_control` – The column on which the partitioning is to be based. The data type must be an integer or time-based.
+ `p_type` – The type is either `'range'` or `'list'`.
+ `p_interval` – The time interval or integer range for each partition. Example values include `1 day`, `1 hour`, and so on.
+ `p_premake` – The number of partitions to create in advance to support new inserts.

For a complete description of the `create_parent` function, see [Creation Functions](https://github.com/pgpartman/pg_partman/blob/master/doc/pg_partman.md#user-content-creation-functions) in the `pg_partman` documentation.

## Configuring partition maintenance using the run\$1maintenance\$1proc function
<a name="PostgreSQL_Partitions.run_maintenance_proc"></a>

You can run partition maintenance operations to automatically create new partitions, detach partitions, or remove old partitions. Partition maintenance relies on the `run_maintenance_proc` function of the `pg_partman` extension and the `pg_cron` extension, which initiates an internal scheduler. The `pg_cron` scheduler automatically executes SQL statements, functions, and procedures defined in your databases. 

The following example uses the `events` table example created in [Enabling the pg\$1partman extensionConfiguring partition maintenance using the run\$1maintenance\$1proc function](#PostgreSQL_Partitions.enable) to set partition maintenance operations to run automatically. As a prerequisite, add `pg_cron` to the `shared_preload_libraries` parameter in the DB instance's parameter group.

```
CREATE EXTENSION pg_cron;

UPDATE partman.part_config 
SET infinite_time_partitions = true,
    retention = '3 months', 
    retention_keep_table=true 
WHERE parent_table = 'data_mart.events';
SELECT cron.schedule('@hourly', $$CALL partman.run_maintenance_proc()$$);
```

Following, you can find a step-by-step explanation of the preceding example: 

1. Modify the parameter group associated with your DB instance and add `pg_cron` to the `shared_preload_libraries` parameter value. This change requires a DB instance restart for it to take effect. For more information, see [Modifying parameters in a DB parameter group in Amazon Aurora](USER_WorkingWithParamGroups.Modifying.md). 

1. Run the command `CREATE EXTENSION pg_cron;` using an account that has the `rds_superuser` permissions. Doing this enables the `pg_cron` extension. For more information, see [Scheduling maintenance with the PostgreSQL pg\$1cron extension](PostgreSQL_pg_cron.md).

1. Run the command `UPDATE partman.part_config` to adjust the `pg_partman` settings for the `data_mart.events` table. 

1. Run the command `SET` . . . to configure the `data_mart.events` table, with these clauses:

   1. `infinite_time_partitions = true,` – Configures the table to be able to automatically create new partitions without any limit.

   1. `retention = '3 months',` – Configures the table to have a maximum retention of three months. 

   1. `retention_keep_table=true `– Configures the table so that when the retention period is due, the table isn't deleted automatically. Instead, partitions that are older than the retention period are only detached from the parent table.

1. Run the command `SELECT cron.schedule` . . . to make a `pg_cron` function call. This call defines how often the scheduler runs the `pg_partman` maintenance procedure, `partman.run_maintenance_proc`. For this example, the procedure runs every hour. 

For a complete description of the `run_maintenance_proc` function, see [Maintenance Functions](https://github.com/pgpartman/pg_partman/blob/master/doc/pg_partman.md#maintenance-functions) in the `pg_partman` documentation. 

# Scheduling maintenance with the PostgreSQL pg\$1cron extension
<a name="PostgreSQL_pg_cron"></a>

You can use the PostgreSQL `pg_cron` extension to schedule maintenance commands within a PostgreSQL database. For more information about the extension, see [What is pg\$1cron?](https://github.com/citusdata/pg_cron) in the pg\$1cron documentation. 

The `pg_cron` extension is supported on Aurora PostgreSQL engine versions 12.6 and higher version

To learn more about using `pg_cron`, see [Schedule jobs with pg\$1cron on your RDS for PostgreSQL or your Aurora PostgreSQL-Compatible Edition databases](https://aws.amazon.com/blogs/database/schedule-jobs-with-pg_cron-on-your-amazon-rds-for-postgresql-or-amazon-aurora-for-postgresql-databases/).

**Note**  
The `pg_cron` extension version is displayed as a two digit version, for example, 1.6, in the pg\$1available\$1extensions view. While you might see three digit versions, for example, 1.6.4 or 1.6.5, listed in some contexts, you must specify the two digit version when performing an extension upgrade.

**Topics**
+ [Setting up the pg\$1cron extension](#PostgreSQL_pg_cron.enable)
+ [Granting database users permissions to use pg\$1cron](#PostgreSQL_pg_cron.permissions)
+ [Scheduling pg\$1cron jobs](#PostgreSQL_pg_cron.examples)
+ [Reference for the pg\$1cron extension](#PostgreSQL_pg_cron.reference)

## Setting up the pg\$1cron extension
<a name="PostgreSQL_pg_cron.enable"></a>

Set up the `pg_cron` extension as follows:

1. Modify the custom parameter group associated with your PostgreSQL DB instance by adding `pg_cron` to the `shared_preload_libraries` parameter value.

   Restart the PostgreSQL DB instance to have changes to the parameter group take effect. To learn more about working with parameter groups, see [Amazon Aurora PostgreSQL parameters](AuroraPostgreSQL.Reference.ParameterGroups.md).

1. After the PostgreSQL DB instance has restarted, run the following command using an account that has `rds_superuser` permissions. For example, if you used the default settings when you created your Aurora PostgreSQL DB cluster, connect as user `postgres` and create the extension. 

   ```
   CREATE EXTENSION pg_cron;
   ```

   The `pg_cron` scheduler is set in the default PostgreSQL database named `postgres`. The `pg_cron` objects are created in this `postgres` database and all scheduling actions run in this database.

1. You can use the default settings, or you can schedule jobs to run in other databases within your PostgreSQL DB instance. To schedule jobs for other databases within your PostgreSQL DB instance, see the example in [Scheduling a cron job for a database other than the default database](#PostgreSQL_pg_cron.otherDB).

## Granting database users permissions to use pg\$1cron
<a name="PostgreSQL_pg_cron.permissions"></a>

Installing the `pg_cron` extension requires the `rds_superuser` privileges. However, permissions to use the `pg_cron` can be granted (by a member of the `rds_superuser` group/role) to other database users, so that they can schedule their own jobs. We recommend that you grant permissions to the `cron` schema only as needed if it improves operations in your production environment. 

To grant a database user permission in the `cron` schema, run the following command:

```
postgres=> GRANT USAGE ON SCHEMA cron TO db-user;
```

This gives *db-user* permission to access the `cron` schema to schedule cron jobs for the objects that they have permissions to access. If the database user doesn't have permissions, the job fails after posting the error message to the `postgresql.log` file, as shown in the following:

```
2020-12-08 16:41:00 UTC::@:[30647]:ERROR: permission denied for table table-name
2020-12-08 16:41:00 UTC::@:[27071]:LOG: background worker "pg_cron" (PID 30647) exited with exit code 1
```

In other words, make sure that database users that are granted permissions on the `cron` schema also have permissions on the objects (tables, schemas, and so on) that they plan to schedule.

The details of the cron job and its success or failure are also captured in the `cron.job_run_details` table. For more information, see [Tables for scheduling jobs and capturing status](#PostgreSQL_pg_cron.tables).

## Scheduling pg\$1cron jobs
<a name="PostgreSQL_pg_cron.examples"></a>

The following sections show how you can schedule various management tasks using `pg_cron` jobs.

**Note**  
When you create `pg_cron` jobs, check that the `max_worker_processes` setting is larger than the number of `cron.max_running_jobs`. A `pg_cron` job fails if it runs out of background worker processes. The default number of `pg_cron` jobs is `5`. For more information, see [Parameters for managing the pg\$1cron extension](#PostgreSQL_pg_cron.parameters).

**Topics**
+ [Vacuuming a table](#PostgreSQL_pg_cron.vacuum)
+ [Purging the pg\$1cron history table](#PostgreSQL_pg_cron.job_run_details)
+ [Logging errors to the postgresql.log file only](#PostgreSQL_pg_cron.log_run)
+ [Scheduling a cron job for a database other than the default database](#PostgreSQL_pg_cron.otherDB)

### Vacuuming a table
<a name="PostgreSQL_pg_cron.vacuum"></a>

Autovacuum handles vacuum maintenance for most cases. However, you might want to schedule a vacuum of a specific table at a time of your choosing. 

Following is an example of using the `cron.schedule` function to set up a job to use `VACUUM FREEZE` on a specific table every day at 22:00 (GMT).

```
SELECT cron.schedule('manual vacuum', '0 22 * * *', 'VACUUM FREEZE pgbench_accounts');
 schedule
----------
1
(1 row)
```

After the preceding example runs, you can check the history in the `cron.job_run_details` table as follows.

```
postgres=> SELECT * FROM cron.job_run_details;
jobid  | runid | job_pid | database | username | command                        | status    | return_message | start_time                    | end_time
-------+-------+---------+----------+----------+--------------------------------+-----------+----------------+-------------------------------+-------------------------------
 1     | 1     | 3395    | postgres | adminuser| vacuum freeze pgbench_accounts | succeeded | VACUUM         | 2020-12-04 21:10:00.050386+00 | 2020-12-04 21:10:00.072028+00
(1 row)
```

Following is a query of the `cron.job_run_details` table to see the failed jobs.

```
postgres=> SELECT * FROM cron.job_run_details WHERE status = 'failed';
jobid | runid | job_pid | database | username | command                       | status | return_message                                   | start_time                    | end_time
------+-------+---------+----------+----------+-------------------------------+--------+--------------------------------------------------+-------------------------------+------------------------------
 5    | 4     | 30339   | postgres | adminuser| vacuum freeze pgbench_account | failed | ERROR: relation "pgbench_account" does not exist | 2020-12-04 21:48:00.015145+00 | 2020-12-04 21:48:00.029567+00
(1 row)
```

For more information, see [Tables for scheduling jobs and capturing status](#PostgreSQL_pg_cron.tables).

### Purging the pg\$1cron history table
<a name="PostgreSQL_pg_cron.job_run_details"></a>

The `cron.job_run_details` table contains a history of cron jobs that can become very large over time. We recommend that you schedule a job that purges this table. For example, keeping a week's worth of entries might be sufficient for troubleshooting purposes. 

The following example uses the [cron.schedule](#PostgreSQL_pg_cron.schedule) function to schedule a job that runs every day at midnight to purge the `cron.job_run_details` table. The job keeps only the last seven days. Use your `rds_superuser` account to schedule the job such as the following.

```
SELECT cron.schedule('0 0 * * *', $$DELETE 
    FROM cron.job_run_details 
    WHERE end_time < now() - interval '7 days'$$);
```

For more information, see [Tables for scheduling jobs and capturing status](#PostgreSQL_pg_cron.tables).

### Logging errors to the postgresql.log file only
<a name="PostgreSQL_pg_cron.log_run"></a>

To prevent writing to the `cron.job_run_details` table, modify the parameter group associated with the PostgreSQL DB instance and set the `cron.log_run` parameter to off. The `pg_cron` extension no longer writes to the table and captures errors to the `postgresql.log` file only. For more information, see [Modifying parameters in a DB parameter group in Amazon Aurora](USER_WorkingWithParamGroups.Modifying.md). 

Use the following command to check the value of the `cron.log_run` parameter.

```
postgres=> SHOW cron.log_run;
```

For more information, see [Parameters for managing the pg\$1cron extension](#PostgreSQL_pg_cron.parameters).

### Scheduling a cron job for a database other than the default database
<a name="PostgreSQL_pg_cron.otherDB"></a>

The metadata for `pg_cron` is all held in the PostgreSQL default database named `postgres`. Because background workers are used for running the maintenance cron jobs, you can schedule a job in any of your databases within the PostgreSQL DB instance:

**Note**  
Only users with `rds_superuser` role or `rds_superuser` privileges can list all cron jobs in the database. Other users can view only their own jobs in the `cron.job` table.

1. In the cron database, schedule the job as you normally do using the [cron.schedule](#PostgreSQL_pg_cron.schedule).

   ```
   postgres=> SELECT cron.schedule('database1 manual vacuum', '29 03 * * *', 'vacuum freeze test_table');
   ```

1. As a user with the `rds_superuser` role, update the database column for the job that you just created so that it runs in another database within your PostgreSQL DB instance.

   ```
   postgres=> UPDATE cron.job SET database = 'database1' WHERE jobid = 106;
   ```

1.  Verify by querying the `cron.job` table.

   ```
   postgres=> SELECT * FROM cron.job;
   jobid | schedule    | command                        | nodename  | nodeport | database | username  | active | jobname
   ------+-------------+--------------------------------+-----------+----------+----------+-----------+--------+-------------------------
   106   | 29 03 * * * | vacuum freeze test_table       | localhost | 8192     | database1| adminuser | t      | database1 manual vacuum
     1   | 59 23 * * * | vacuum freeze pgbench_accounts | localhost | 8192     | postgres | adminuser | t      | manual vacuum
   (2 rows)
   ```

**Note**  
In some situations, you might add a cron job that you intend to run on a different database. In such cases, the job might try to run in the default database (`postgres`) before you update the correct database column. If the user name has permissions, the job successfully runs in the default database.

## Reference for the pg\$1cron extension
<a name="PostgreSQL_pg_cron.reference"></a>

You can use the following parameters, functions, and tables with the `pg_cron` extension. For more information, see [What is pg\$1cron?](https://github.com/citusdata/pg_cron) in the pg\$1cron documentation.

**Topics**
+ [Parameters for managing the pg\$1cron extension](#PostgreSQL_pg_cron.parameters)
+ [Function reference: cron.schedule](#PostgreSQL_pg_cron.schedule)
+ [Function reference: cron.unschedule](#PostgreSQL_pg_cron.unschedule)
+ [Tables for scheduling jobs and capturing status](#PostgreSQL_pg_cron.tables)

### Parameters for managing the pg\$1cron extension
<a name="PostgreSQL_pg_cron.parameters"></a>

Following is a list of parameters that control the `pg_cron` extension behavior. 


| Parameter | Description | 
| --- | --- | 
| cron.database\$1name |  The database in which `pg_cron` metadata is kept.  | 
| cron.host |  The hostname to connect to PostgreSQL. You can't modify this value.  | 
| cron.log\$1run |  Log every job that runs in the `job_run_details` table. Values are `on` or `off`. For more information, see [Tables for scheduling jobs and capturing status](#PostgreSQL_pg_cron.tables).  | 
| cron.log\$1statement |  Log all cron statements before running them. Values are `on` or `off`.  | 
| cron.max\$1running\$1jobs |  The maximum number of jobs that can run concurrently.  | 
| cron.use\$1background\$1workers |  Use background workers instead of client sessions. You can't modify this value.  | 

Use the following SQL command to display these parameters and their values.

```
postgres=> SELECT name, setting, short_desc FROM pg_settings WHERE name LIKE 'cron.%' ORDER BY name;
```

### Function reference: cron.schedule
<a name="PostgreSQL_pg_cron.schedule"></a>

This function schedules a cron job. The job is initially scheduled in the default `postgres` database. The function returns a `bigint` value representing the job identifier. To schedule jobs to run in other databases within your PostgreSQL DB instance, see the example in [Scheduling a cron job for a database other than the default database](#PostgreSQL_pg_cron.otherDB).

The function has two syntax formats.

**Syntax**  

```
cron.schedule (job_name,
    schedule,
    command
);

cron.schedule (schedule,
    command
);
```

**Parameters**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/PostgreSQL_pg_cron.html)

**Examples**  

```
postgres=> SELECT cron.schedule ('test','0 10 * * *', 'VACUUM pgbench_history');
 schedule
----------
      145
(1 row)

postgres=> SELECT cron.schedule ('0 15 * * *', 'VACUUM pgbench_accounts');
 schedule
----------
      146
(1 row)
```

### Function reference: cron.unschedule
<a name="PostgreSQL_pg_cron.unschedule"></a>

This function deletes a cron job. You can specify either the `job_name` or the `job_id`. A policy makes sure that you are the owner to remove the schedule for the job. The function returns a Boolean indicating success or failure.

The function has the following syntax formats.

**Syntax**  

```
cron.unschedule (job_id);

cron.unschedule (job_name);
```

**Parameters**      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/PostgreSQL_pg_cron.html)

**Examples**  

```
postgres=> SELECT cron.unschedule(108);
 unschedule
------------
 t
(1 row)

postgres=> SELECT cron.unschedule('test');
 unschedule
------------
 t
(1 row)
```

### Tables for scheduling jobs and capturing status
<a name="PostgreSQL_pg_cron.tables"></a>

The following tables are used to schedule the cron jobs and record how the jobs completed. 


| Table | Description | 
| --- | --- | 
| cron.job |  Contains the metadata about each scheduled job. Most interactions with this table should be done by using the `cron.schedule` and `cron.unschedule` functions.  We recommend that you don't give update or insert privileges directly to this table. Doing so would allow the user to update the `username` column to run as `rds-superuser`.   | 
| cron.job\$1run\$1details |  Contains historic information about past scheduled jobs that ran. This is useful to investigate the status, return messages, and start and end time from the job that ran.  To prevent this table from growing indefinitely, purge it on a regular basis. For an example, see [Purging the pg\$1cron history table](#PostgreSQL_pg_cron.job_run_details).   | 

# Using pgAudit to log database activity
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit"></a>

Financial institutions, government agencies, and many industries need to keep *audit logs* to meet regulatory requirements. By using the PostgreSQL Audit extension (pgAudit) with your Aurora PostgreSQL DB cluster, you can capture the detailed records that are typically needed by auditors or to meet regulatory requirements. For example, you can set up the pgAudit extension to track changes made to specific databases and tables, to record the user who made the change, and many other details.

The pgAudit extension builds on the functionality of the native PostgreSQL logging infrastructure by extending the log messages with more detail. In other words, you use the same approach to view your audit log as you do to view any log messages. For more information about PostgreSQL logging, see [Aurora PostgreSQL database log files](USER_LogAccess.Concepts.PostgreSQL.md). 

The pgAudit extension redacts sensitive data such as cleartext passwords from the logs. If your Aurora PostgreSQL DB cluster is configured to log data manipulation language (DML) statements as detailed in [Turning on query logging for your Aurora PostgreSQL DB cluster ](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md), you can avoid the cleartext password issue by using the PostgreSQL Audit extension. 

You can configure auditing on your database instances with a great degree of specificity. You can audit all databases and all users. Or, you can choose to audit only certain databases, users, and other objects. You can also explicitly exclude certain users and databases from being audited. For more information, see [Excluding users or databases from audit logging](Appendix.PostgreSQL.CommonDBATasks.pgaudit.exclude-user-db.md). 

Given the amount of detail that can be captured, we recommend that if you do use pgAudit, you monitor your storage consumption. 

The pgAudit extension is supported on all available Aurora PostgreSQL versions. For a list of pgAudit versions supported by Aurora PostgreSQL version, see [Extension versions for Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html) in the *Release Notes for Aurora PostgreSQL*. 

**Topics**
+ [Setting up the pgAudit extension](Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.md)
+ [Auditing database objects](Appendix.PostgreSQL.CommonDBATasks.pgaudit.auditing.md)
+ [Excluding users or databases from audit logging](Appendix.PostgreSQL.CommonDBATasks.pgaudit.exclude-user-db.md)
+ [Reference for the pgAudit extension](Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference.md)

# Setting up the pgAudit extension
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup"></a>

To set up the pgAudit extension on your Aurora PostgreSQL DB cluster, you first add pgAudit to the shared libraries on the custom DB cluster parameter group for your Aurora PostgreSQL DB cluster. For information about creating a custom DB cluster parameter group, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).  Next, you install the pgAudit extension. Finally, you specify the databases and objects that you want to audit. The procedures in this section show you how. You can use the AWS Management Console or the AWS CLI. 

You must have permissions as the `rds_superuser` role to perform all these tasks.

The steps following assume that your Aurora PostgreSQL DB cluster is associated with a custom DB cluster parameter group. 

## Console
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.CON"></a>

**To set up the pgAudit extension**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose your Aurora PostgreSQL DB cluster's Writer instance .

1. Open the **Configuration** tab for your Aurora PostgreSQL DB cluster writer instance.  Among the Instance details, find the **Parameter group** link. 

1. Choose the link to open the custom parameters associated with your Aurora PostgreSQL DB cluster. 

1. In the **Parameters** search field, type `shared_pre` to find the `shared_preload_libraries` parameter.

1. Choose **Edit parameters** to access the property values.

1. Add `pgaudit` to the list in the **Values** field. Use a comma to separate items in the list of values.   
![\[Image of the shared_preload_libaries parameter with pgAudit added.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg_rpg_shared_preload_pgaudit.png)

1. Reboot the writer instance of your Aurora PostgreSQL DB cluster so that your change to the `shared_preload_libraries` parameter takes effect. 

1. When the instance is available, verify that pgAudit has been initialized. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster, and then run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pgaudit
   (1 row)
   ```

1. With pgAudit initialized, you can now create the extension. You need to create the extension after initializing the library because the `pgaudit` extension installs event triggers for auditing data definition language (DDL) statements. 

   ```
   CREATE EXTENSION pgaudit;
   ```

1. Close the `psql` session.

   ```
   labdb=> \q
   ```

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Find the `pgaudit.log` parameter in the list and set to the appropriate value for your use case. For example, setting the `pgaudit.log` parameter to `write` as shown in the following image captures inserts, updates, deletes, and some other types changes to the log.   
![\[Image of the pgaudit.log parameter with setting.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/rpg_set_pgaudit-log-level.png)

   You can also choose one of the following values for the `pgaudit.log` parameter.
   + none – This is the default. No database changes are logged. 
   + all – Logs everything (read, write, function, role, ddl, misc). 
   + ddl – Logs all data definition language (DDL) statements that aren't included in the `ROLE` class.
   + function – Logs function calls and `DO` blocks.
   + misc – Logs miscellaneous commands, such as `DISCARD`, `FETCH`, `CHECKPOINT`, `VACUUM`, and `SET`.
   + read – Logs `SELECT` and `COPY` when the source is a relation (such as a table) or a query.
   + role – Logs statements related to roles and privileges, such as `GRANT`, `REVOKE`, `CREATE ROLE`, `ALTER ROLE`, and `DROP ROLE`.
   + write – Logs `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE`, and `COPY` when the destination is a relation (table).

1. Choose **Save changes**.

1. Open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose your Aurora PostgreSQL DB cluster's writer instance from the Databases list.

## AWS CLI
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.CLI"></a>

**To setup pgAudit**

To setup pgAudit using the AWS CLI, you call the [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) operation to modify the audit log parameters in your custom parameter group, as shown in the following procedure.

1. Use the following AWS CLI command to add `pgaudit` to the `shared_preload_libraries` parameter.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=pgaudit,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Use the following AWS CLI command to reboot the writer instance of your Aurora PostgreSQL DB cluster so that the pgaudit library is initialized.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

1. When the instance is available, you can verify that `pgaudit` has been initialized. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster, and then run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pgaudit
   (1 row)
   ```

   With pgAudit initialized, you can now create the extension.

   ```
   CREATE EXTENSION pgaudit;
   ```

1. Close the `psql` session so that you can use the AWS CLI.

   ```
   labdb=> \q
   ```

1. Use the following AWS CLI command to specify the classes of statement that want logged by session audit logging. The example sets the `pgaudit.log` parameter to `write`, which captures inserts, updates, and deletes to the log.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=pgaudit.log,ParameterValue=write,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

   You can also choose one of the following values for the `pgaudit.log` parameter.
   + none – This is the default. No database changes are logged. 
   + all – Logs everything (read, write, function, role, ddl, misc). 
   + ddl – Logs all data definition language (DDL) statements that aren't included in the `ROLE` class.
   + function – Logs function calls and `DO` blocks.
   + misc – Logs miscellaneous commands, such as `DISCARD`, `FETCH`, `CHECKPOINT`, `VACUUM`, and `SET`.
   + read – Logs `SELECT` and `COPY` when the source is a relation (such as a table) or a query.
   + role – Logs statements related to roles and privileges, such as `GRANT`, `REVOKE`, `CREATE ROLE`, `ALTER ROLE`, and `DROP ROLE`.
   + write – Logs `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE`, and `COPY` when the destination is a relation (table).

   Reboot the writer instance of your Aurora PostgreSQL DB cluster using the following AWS CLI command.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

# Auditing database objects
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.auditing"></a>

With pgAudit set up on your Aurora PostgreSQL DB cluster and configured for your requirements, more detailed information is captured in the PostgreSQL log. For example, while the default PostgreSQL logging configuration identifies the date and time that a change was made in a database table, with the pgAudit extension the log entry can include the schema, user who made the change, and other details depending on how the extension parameters are configured. You can set up auditing to track changes in the following ways.
+ For each session, by user. For the session level, you can capture the fully qualified command text.
+ For each object, by user and by database. 

The object auditing capability is activated when you create the `rds_pgaudit` role on your system and then add this role to the `pgaudit.role` parameter in your custom parameter parameter group. By default, the `pgaudit.role` parameter is unset and the only allowable value is `rds_pgaudit`. The following steps assume that `pgaudit` has been initialized and that you have created the `pgaudit` extension by following the procedure in [Setting up the pgAudit extension](Appendix.PostgreSQL.CommonDBATasks.pgaudit.basic-setup.md). 

![\[Image of the PostgreSQL log file after setting up pgAudit.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/pgaudit-log-example.png)


As shown in this example, the "LOG: AUDIT: SESSION" line provides information about the table and its schema, among other details. 

**To set up object auditing**

1. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster.

   ```
   psql --host=your-instance-name.aws-region.rds.amazonaws.com --port=5432 --username=postgrespostgres --password --dbname=labdb
   ```

1. Create a database role named `rds_pgaudit` using the following command.

   ```
   labdb=> CREATE ROLE rds_pgaudit;
   CREATE ROLE
   labdb=>
   ```

1. Close the `psql` session.

   ```
   labdb=> \q
   ```

   In the next few steps, use the AWS CLI to modify the audit log parameters in your custom parameter group. 

1. Use the following AWS CLI command to set the `pgaudit.role` parameter to `rds_pgaudit`. By default, this parameter is empty, and `rds_pgaudit` is the only allowable value.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=pgaudit.role,ParameterValue=rds_pgaudit,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Use the following AWS CLI command to reboot the writer instance of your Aurora PostgreSQL DB cluster so that your changes to the parameters take effect.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

1. Run the following command to confirm that the `pgaudit.role` is set to `rds_pgaudit`.

   ```
   SHOW pgaudit.role;
   pgaudit.role 
   ------------------
   rds_pgaudit
   ```

To test pgAudit logging, you can run several example commands that you want to audit. For example, you might run the following commands.

```
CREATE TABLE t1 (id int);
GRANT SELECT ON t1 TO rds_pgaudit;
SELECT * FROM t1;
id 
----
(0 rows)
```

The database logs should contain an entry similar to the following.

```
...
2017-06-12 19:09:49 UTC:...:rds_test@postgres:[11701]:LOG: AUDIT:
OBJECT,1,1,READ,SELECT,TABLE,public.t1,select * from t1;
...
```

For information on viewing the logs, see [Monitoring Amazon Aurora log files](USER_LogAccess.md).

To learn more about the pgAudit extension, see [pgAudit](https://github.com/pgaudit/pgaudit/blob/master/README.md) on GitHub.

# Excluding users or databases from audit logging
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.exclude-user-db"></a>

As discussed in [Aurora PostgreSQL database log files](USER_LogAccess.Concepts.PostgreSQL.md), PostgreSQL logs consume storage space. Using the pgAudit extension adds to the volume of data gathered in your logs to varying degrees, depending on the changes that you track. You might not need to audit every user or database in your Aurora PostgreSQL DB cluster. 

To minimize impacts to your storage and to avoid needlessly capturing audit records, you can exclude users and databases from being audited. You can also change logging within a given session. The following examples show you how. 

**Note**  
Parameter settings at the session level take precedence over the settings in the custom DB cluster parameter group for the Aurora PostgreSQL DB cluster's writer instance. If you don't want database users to bypass your audit logging configuration settings, be sure to change their permissions. 

Suppose that your Aurora PostgreSQL DB cluster is configured to audit the same level of activity for all users and databases. You then decide that you don't want to audit the user `myuser`. You can turn off auditing for `myuser` with the following SQL command.

```
ALTER USER myuser SET pgaudit.log TO 'NONE';
```

Then, you can use the following query to check the `user_specific_settings` column for `pgaudit.log` to confirm that the parameter is set to `NONE`.

```
SELECT
    usename AS user_name,
    useconfig AS user_specific_settings
FROM
    pg_user
WHERE
    usename = 'myuser';
```

You see output such as the following.

```
 user_name | user_specific_settings
-----------+------------------------
 myuser    | {pgaudit.log=NONE}
(1 row)
```

You can turn off logging for a given user in the midst of their session with the database with the following command.

```
ALTER USER myuser IN DATABASE mydatabase SET pgaudit.log TO 'none';
```

Use the following query to check the settings column for pgaudit.log for a specific user and database combination. 

```
SELECT
    usename AS "user_name",
    datname AS "database_name",
    pg_catalog.array_to_string(setconfig, E'\n') AS "settings"
FROM
    pg_catalog.pg_db_role_setting s
    LEFT JOIN pg_catalog.pg_database d ON d.oid = setdatabase
    LEFT JOIN pg_catalog.pg_user r ON r.usesysid = setrole
WHERE
    usename = 'myuser'
    AND datname = 'mydatabase'
ORDER BY
    1,
    2;
```

You see output similar to the following.

```
  user_name | database_name |     settings
-----------+---------------+------------------
 myuser    | mydatabase    | pgaudit.log=none
(1 row)
```

After turning off auditing for `myuser`, you decide that you don't want to track changes to `mydatabase`. You turn off auditing for that specific database by using the following command.

```
ALTER DATABASE mydatabase SET pgaudit.log to 'NONE';
```

Then, use the following query to check the database\$1specific\$1settings column to confirm that pgaudit.log is set to NONE.

```
SELECT
a.datname AS database_name,
b.setconfig AS database_specific_settings
FROM
pg_database a
FULL JOIN pg_db_role_setting b ON a.oid = b.setdatabase
WHERE
a.datname = 'mydatabase';
```

You see output such as the following.

```
 database_name | database_specific_settings
---------------+----------------------------
 mydatabase    | {pgaudit.log=NONE}
(1 row)
```

To return settings to the default setting for myuser, use the following command:

```
ALTER USER myuser RESET pgaudit.log;
```

To return settings to their default setting for a database, use the following command.

```
ALTER DATABASE mydatabase RESET pgaudit.log;
```

To reset user and database to the default setting, use the following command.

```
ALTER USER myuser IN DATABASE mydatabase RESET pgaudit.log;
```

You can also capture specific events to the log by setting the `pgaudit.log` to one of the other allowed values for the `pgaudit.log` parameter. For more information, see [List of allowable settings for the `pgaudit.log` parameter](Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference.md#Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference.pgaudit-log-settings).

```
ALTER USER myuser SET pgaudit.log TO 'read';
ALTER DATABASE mydatabase SET pgaudit.log TO 'function';
ALTER USER myuser IN DATABASE mydatabase SET pgaudit.log TO 'read,function'
```

# Reference for the pgAudit extension
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference"></a>

You can specify the level of detail that you want for your audit log by changing one or more of the parameters listed in this section. 

## Controlling pgAudit behavior
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference.basic-setup.parameters"></a>

You can control the audit logging by changing one or more of the parameters listed in the following table. 


| Parameter | Description | 
| --- | --- | 
| `pgaudit.log`  | Specifies the statement classes that will be logged by session audit logging. Allowable values include ddl, function, misc, read, role, write, none, all. For more information, see [List of allowable settings for the `pgaudit.log` parameter](#Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference.pgaudit-log-settings).  | 
| `pgaudit.log_catalog` | When turned on (set to 1), adds statements to audit trail if all relations in a statement are in pg\$1catalog. | 
| `pgaudit.log_level` | Specifies the log level to use for log entries. Allowed values: debug5, debug4, debug3, debug2, debug1, info, notice, warning, log | 
| `pgaudit.log_parameter` | When turned on (set to 1), parameters passed with the statement are captured in the audit log. | 
| `pgaudit.log_relation` | When turned on (set to 1), the audit log for the session creates a separate log entry for each relation (TABLE, VIEW, and so on) referenced in a SELECT or DML statement. | 
| `pgaudit.log_statement_once` | Specifies whether logging will include the statement text and parameters with the first log entry for a statement/substatement combination or with every entry. | 
| `pgaudit.role` | Specifies the master role to use for object audit logging. The only allowable entry is `rds_pgaudit`. | 

## List of allowable settings for the `pgaudit.log` parameter
<a name="Appendix.PostgreSQL.CommonDBATasks.pgaudit.reference.pgaudit-log-settings"></a>

 


| Value | Description | 
| --- | --- | 
| none | This is the default. No database changes are logged.  | 
| all | Logs everything (read, write, function, role, ddl, misc).  | 
| ddl | Logs all data definition language (DDL) statements that aren't included in the `ROLE` class. | 
| function | Logs function calls and `DO` blocks. | 
| misc | Logs miscellaneous commands, such as `DISCARD`, `FETCH`, `CHECKPOINT`, `VACUUM`, and `SET`. | 
| read | Logs `SELECT` and `COPY` when the source is a relation (such as a table) or a query. | 
| role | Logs statements related to roles and privileges, such as `GRANT`, `REVOKE`, `CREATE ROLE`, `ALTER ROLE`, and `DROP ROLE`. | 
| write | Logs `INSERT`, `UPDATE`, `DELETE`, `TRUNCATE`, and `COPY` when the destination is a relation (table). | 

To log multiple event types with session auditing, use a comma-separated list. To log all event types, set `pgaudit.log` to `ALL`. Reboot your DB instance to apply the changes.

With object auditing, you can refine audit logging to work with specific relations. For example, you can specify that you want audit logging for `READ` operations on one or more tables.

# Using pglogical to synchronize data across instances
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical"></a>

All currently available Aurora PostgreSQL versions support the `pglogical` extension. The pglogical extension predates the functionally similar logical replication feature that was introduced by PostgreSQL in version 10. For more information, see [Overview of PostgreSQL logical replication with Aurora](AuroraPostgreSQL.Replication.Logical.md). 

The `pglogical` extension supports logical replication between two or more Aurora PostgreSQL DB clusters. It also supports replication between different PostgreSQL versions, and between databases running on RDS for PostgreSQL DB instances and Aurora PostgreSQL DB clusters. The `pglogical` extension uses a publish-subscribe model to replicate changes to tables and other objects, such as sequences, from a publisher to a subscriber. It relies on a replication slot to ensure that changes are synchronized from a publisher node to a subscriber node, defined as follows. 
+ The *publisher node* is the Aurora PostgreSQL DB cluster that's the source of data to be replicated to other nodes. The publisher node defines the tables to be replicated in a publication set. 
+ The *subscriber node* is the Aurora PostgreSQL DB cluster that receives WAL updates from the publisher. The subscriber creates a subscription to connect to the publisher and get the decoded WAL data. When the subscriber creates the subscription, the replication slot is created on the publisher node. 

Following, you can find information about setting up the `pglogical` extension. 

**Topics**
+ [Requirements and limitations for the pglogical extension](#Appendix.PostgreSQL.CommonDBATasks.pglogical.requirements-limitations)
+ [Setting up the pglogical extension](Appendix.PostgreSQL.CommonDBATasks.pglogical.basic-setup.md)
+ [Setting up logical replication for Aurora PostgreSQL DB cluster](Appendix.PostgreSQL.CommonDBATasks.pglogical.setup-replication.md)
+ [Reestablishing logical replication after a major upgrade](Appendix.PostgreSQL.CommonDBATasks.pglogical.recover-replication-after-upgrade.md)
+ [Managing logical replication slots for Aurora PostgreSQL](Appendix.PostgreSQL.CommonDBATasks.pglogical.handle-slots.md)
+ [Parameter reference for the pglogical extension](Appendix.PostgreSQL.CommonDBATasks.pglogical.reference.md)

## Requirements and limitations for the pglogical extension
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.requirements-limitations"></a>

All currently available releases of Aurora PostgreSQL support the `pglogical` extension. 

Both the publisher node and the subscriber node must be set up for logical replication.

The tables that you want to replicate from a publisher to a subscriber must have the same names and the same schema. These tables must also contain the same columns, and the columns must use the same data types. Both publisher and subscriber tables must have the same primary keys. We recommend that you use only the PRIMARY KEY as the unique constraint.

The tables on the subscriber node can have more permissive constraints than those on the publisher node for CHECK constraints and NOT NULL constraints. 

The `pglogical` extension provides features such as two-way replication that aren't supported by the logical replication feature built into PostgreSQL (version 10 and higher). For more information, see [PostgreSQL bi-directional replication using pglogical](https://aws.amazon.com/blogs/database/postgresql-bi-directional-replication-using-pglogical/).

# Setting up the pglogical extension
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.basic-setup"></a>

To set up the `pglogical` extension on your Aurora PostgreSQL DB cluster, you add `pglogical` to the shared libraries on the custom DB cluster parameter group for your Aurora PostgreSQL DB cluster. You also need to set the value of the `rds.logical_replication` parameter to `1`, to turn on logical decoding. Finally, you create the extension in the database. You can use the AWS Management Console or the AWS CLI for these tasks. 

You must have permissions as the `rds_superuser` role to perform these tasks.

The steps following assume that your Aurora PostgreSQL DB cluster is associated with a custom DB cluster parameter group. For information about creating a custom DB cluster parameter group, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md). 

## Console
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.basic-setup.CON"></a>

**To set up the pglogical extension**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose your Aurora PostgreSQL DB cluster's Writer instance .

1. Open the **Configuration** tab for your Aurora PostgreSQL DB cluster writer instance.  Among the Instance details, find the **Parameter group** link. 

1. Choose the link to open the custom parameters associated with your Aurora PostgreSQL DB cluster. 

1. In the **Parameters** search field, type `shared_pre` to find the `shared_preload_libraries` parameter.

1. Choose **Edit parameters** to access the property values.

1. Add `pglogical` to the list in the **Values** field. Use a comma to separate items in the list of values.   
![\[Image of the shared_preload_libraries parameter with pglogical added.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg_rpg_shared_preload_pglogical.png)

1. Find the `rds.logical_replication` parameter and set it to `1`, to turn on logical replication.

1. Reboot the writer instance of your Aurora PostgreSQL DB cluster so that your changes take effect. 

1. When the instance is available, you can use `psql` (or pgAdmin) to connect to the writer instance of your Aurora PostgreSQL DB cluster. 

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
   ```

1. To verify that pglogical is initialized, run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pglogical
   (1 row)
   ```

1. Verify the setting that enables logical decoding, as follows.

   ```
   SHOW wal_level;
   wal_level
   -----------
    logical
   (1 row)
   ```

1. Create the extension, as follows.

   ```
   CREATE EXTENSION pglogical;
   EXTENSION CREATED
   ```

1. Choose **Save changes**.

1. Open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose your Aurora PostgreSQL DB cluster's writer instance from the Databases list to select it, and then choose **Reboot** from the Actions menu.

## AWS CLI
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.basic-setup.CLI"></a>

**To setup the pglogical extension**

To setup pglogical using the AWS CLI, you call the [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) operation to modify certain parameters in your custom parameter group as shown in the following procedure.

1. Use the following AWS CLI command to add `pglogical` to the `shared_preload_libraries` parameter.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=pglogical,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Use the following AWS CLI command to set `rds.logical_replication` to `1` to turn on the logical decoding capability for the writer instance of the Aurora PostgreSQL DB cluster. 

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=rds.logical_replication,ParameterValue=1,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Use the following AWS CLI command to reboot the writer instance of your Aurora PostgreSQL DB cluster so that the pglogical library is initialized.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

1. When the instance is available, use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster. 

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
   ```

1. Create the extension, as follows.

   ```
   CREATE EXTENSION pglogical;
   EXTENSION CREATED
   ```

1. Reboot the writer instance of your Aurora PostgreSQL DB cluster using the following AWS CLI command.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

# Setting up logical replication for Aurora PostgreSQL DB cluster
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.setup-replication"></a>

The following procedure shows you how to start logical replication between two Aurora PostgreSQL DB clusters. The steps assume that both the source (publisher) and the target (subscriber) have the `pglogical` extension set up as detailed in [Setting up the pglogical extension](Appendix.PostgreSQL.CommonDBATasks.pglogical.basic-setup.md). 

**Note**  
The `node_name` of a subscriber node can't start with `rds`.

**To create the publisher node and define the tables to replicate**

These steps assume that your Aurora PostgreSQL DB cluster has a writer instance with a database that has one or more tables that you want to replicate to another node. You need to recreate the table structure from the publisher on the subscriber, so first, get the table structure if necessary. You can do that by using the `psql` metacommand `\d tablename` and then creating the same table on the subscriber instance. The following procedure creates an example table on the publisher (source) for demonstration purposes.

1. Use `psql` to connect to the instance that has the table you want to use as a source for subscribers. 

   ```
   psql --host=source-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
   ```

   If you don't have an existing table that you want to replicate, you can create a sample table as follows.

   1. Create an example table using the following SQL statement.

      ```
      CREATE TABLE docs_lab_table (a int PRIMARY KEY);
      ```

   1. Populate the table with generated data by using the following SQL statement.

      ```
      INSERT INTO docs_lab_table VALUES (generate_series(1,5000));
      INSERT 0 5000
      ```

   1. Verify that data exists in the table by using the following SQL statement.

      ```
      SELECT count(*) FROM docs_lab_table;
      ```

1. Identify this Aurora PostgreSQL DB cluster as the publisher node, as follows.

   ```
   SELECT pglogical.create_node(
       node_name := 'docs_lab_provider',
       dsn := 'host=source-instance.aws-region.rds.amazonaws.com port=5432 dbname=labdb');
    create_node
   -------------
      3410995529
   (1 row)
   ```

1. Add the table that you want to replicate to the default replication set. For more information about replication sets, see [Replication sets](https://github.com/2ndQuadrant/pglogical/tree/REL2_x_STABLE/docs#replication-sets) in the pglogical documentation. 

   ```
   SELECT pglogical.replication_set_add_table('default', 'docs_lab_table', 'true', NULL, NULL);
    replication_set_add_table
     ---------------------------
     t
     (1 row)
   ```

The publisher node setup is complete. You can now set up the subscriber node to receive the updates from the publisher.

**To set up the subscriber node and create a subscription to receive updates**

These steps assume that the Aurora PostgreSQL DB cluster has been set up with the `pglogical` extension. For more information, see [Setting up the pglogical extension](Appendix.PostgreSQL.CommonDBATasks.pglogical.basic-setup.md). 

1. Use `psql` to connect to the instance that you want to receive updates from the publisher.

   ```
   psql --host=target-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
   ```

1. On the subscriber Aurora PostgreSQL DB cluster, ,create the same table that exists on the publisher. For this example, the table is `docs_lab_table`. You can create the table as follows.

   ```
   CREATE TABLE docs_lab_table (a int PRIMARY KEY);
   ```

1. Verify that this table is empty.

   ```
   SELECT count(*) FROM docs_lab_table;
    count
   -------
     0
   (1 row)
   ```

1. Identify this Aurora PostgreSQL DB cluster as the subscriber node, as follows.

   ```
   SELECT pglogical.create_node(
       node_name := 'docs_lab_target',
       dsn := 'host=target-instance.aws-region.rds.amazonaws.com port=5432 sslmode=require dbname=labdb user=postgres password=********');
    create_node
   -------------
      2182738256
   (1 row)
   ```

1. Create the subscription. 

   ```
   SELECT pglogical.create_subscription(
      subscription_name := 'docs_lab_subscription',
      provider_dsn := 'host=source-instance.aws-region.rds.amazonaws.com port=5432 sslmode=require dbname=labdb user=postgres password=*******',
      replication_sets := ARRAY['default'],
      synchronize_data := true,
      forward_origins := '{}' );  
    create_subscription
   ---------------------
   1038357190
   (1 row)
   ```

   When you complete this step, the data from the table on the publisher is created in the table on the subscriber. You can verify that this has occurred by using the following SQL query.

   ```
   SELECT count(*) FROM docs_lab_table;
    count
   -------
     5000
   (1 row)
   ```

From this point forward, changes made to the table on the publisher are replicated to the table on the subscriber.

# Reestablishing logical replication after a major upgrade
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.recover-replication-after-upgrade"></a>

Before you can perform a major version upgrade of an Aurora PostgreSQL DB cluster that's set up as a publisher node for logical replication, you must drop all replication slots, even those that aren't active. We recommend that you temporarily divert database transactions from the publisher node, drop the replication slots, upgrade the Aurora PostgreSQL DB cluster, and then re-establish and restart replication.

The replication slots are hosted on the publisher node only. The Aurora PostgreSQL subscriber node in a logical replication scenario has no slots to drop. The Aurora PostgreSQL major version upgrade process supports upgrading the subscriber to a new major version of PostgreSQL independent of the publisher node. However, the upgrade process does disrupt the replication process and interferes with the synchronization of WAL data between publisher node and subscriber node. You need to re-establish logical replication between publisher and subscriber after upgrading the publisher, the subscriber, or both. The following procedure shows you how to determine that replication has been disrupted and how to resolve the issue.  

## Determining that logical replication has been disrupted
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.recover-replication-after-upgrade.identifying-the-issue"></a>

You can determine that the replication process has been disrupted by querying either the publisher node or the subscriber node, as follows.

**To check the publisher node**
+ Use `psql` to connect to the publisher node, and then query the `pg_replication_slots` function. Note the value in the active column. Normally, this will return `t` (true), showing that replication is active. If the query returns `f` (false), it's an indication that replication to the subscriber has stopped. 

  ```
  SELECT slot_name,plugin,slot_type,active FROM pg_replication_slots;
                      slot_name              |      plugin      | slot_type | active
  -------------------------------------------+------------------+-----------+--------
   pgl_labdb_docs_labcb4fa94_docs_lab3de412c | pglogical_output | logical   | f
  (1 row)
  ```

**To check the subscriber node**

On the subscriber node, you can check the status of replication in three different ways.
+ Look through the PostgreSQL logs on the subscriber node to find failure messages. The log identifies failure with messages that include exit code 1, as shown following.

  ```
  2022-07-06 16:17:03 UTC::@:[7361]:LOG: background worker "pglogical apply 16404:2880255011" (PID 14610) exited with exit code 1
  2022-07-06 16:19:44 UTC::@:[7361]:LOG: background worker "pglogical apply 16404:2880255011" (PID 21783) exited with exit code 1
  ```
+ Query the `pg_replication_origin` function. Connect to the database on the subscriber node using `psql` and query the `pg_replication_origin` function, as follows.

  ```
  SELECT * FROM pg_replication_origin;
   roident | roname
  ---------+--------
  (0 rows)
  ```

  The empty result set means that replication has been disrupted. Normally, you see output such as the following.

  ```
     roident |                       roname
    ---------+----------------------------------------------------
           1 | pgl_labdb_docs_labcb4fa94_docs_lab3de412c
    (1 row)
  ```
+ Query the `pglogical.show_subscription_status` function as shown in the following example.

  ```
  SELECT subscription_name,status,slot_name FROM pglogical.show_subscription_status();
       subscription_name | status |              slot_name
  ---====----------------+--------+-------------------------------------
   docs_lab_subscription | down   | pgl_labdb_docs_labcb4fa94_docs_lab3de412c
  (1 row)
  ```

  This output shows that replication has been disrupted. Its status is `down`. Normally, the output shows the status as `replicating`.

If your logical replication process has been disrupted, you can re-establish replication by following these steps.

**To reestablish logical replication between publisher and subscriber nodes**

To re-establish replication, you first disconnect the subscriber from the publisher node and then re-establish the subscription, as outlined in these steps. 

1. Connect to the subscriber node using `psql` as follows.

   ```
   psql --host=222222222222.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
   ```

1. Deactivate the subscription by using the `pglogical.alter_subscription_disable` function.

   ```
   SELECT pglogical.alter_subscription_disable('docs_lab_subscription',true);
    alter_subscription_disable
   ----------------------------
    t
   (1 row)
   ```

1. Get the publisher node's identifier by querying the `pg_replication_origin`, as follows.

   ```
   SELECT * FROM pg_replication_origin;
    roident |               roname
   ---------+-------------------------------------
          1 | pgl_labdb_docs_labcb4fa94_docs_lab3de412c
   (1 row)
   ```

1. Use the response from the previous step with the `pg_replication_origin_create` command to assign the identifier that can be used by the subscription when re-established. 

   ```
   SELECT pg_replication_origin_create('pgl_labdb_docs_labcb4fa94_docs_lab3de412c');
     pg_replication_origin_create
   ------------------------------
                               1
   (1 row)
   ```

1. Turn on the subscription by passing its name with a status of `true`, as shown in the following example.

   ```
   SELECT pglogical.alter_subscription_enable('docs_lab_subscription',true);
     alter_subscription_enable
   ---------------------------
    t
   (1 row)
   ```

Check the status of the node. Its status should be `replicating` as shown in this example.

```
SELECT subscription_name,status,slot_name
  FROM pglogical.show_subscription_status();
             subscription_name |   status    |              slot_name
-------------------------------+-------------+-------------------------------------
 docs_lab_subscription         | replicating | pgl_labdb_docs_lab98f517b_docs_lab3de412c
(1 row)
```

Check the status of the subscriber's replication slot on the publisher node. The slot's `active` column should return `t` (true), indicating that replication has been re-established.

```
SELECT slot_name,plugin,slot_type,active
  FROM pg_replication_slots;
                    slot_name              |      plugin      | slot_type | active
-------------------------------------------+------------------+-----------+--------
 pgl_labdb_docs_lab98f517b_docs_lab3de412c | pglogical_output | logical   | t
(1 row)
```

# Managing logical replication slots for Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.handle-slots"></a>

Before you can perform a major version upgrade on an Aurora PostgreSQL DB cluster's writer instance that's serving as a publisher node in a logical replication scenario, you must drop the replication slots on the instance. The major version upgrade pre-check process notifies you that the upgrade can't proceed until the slots are dropped.

To identify replication slots that were created using the `pglogical` extension, log in to each database and get the name of the nodes. When you query the subscriber node, you get both the publisher and the subscriber nodes in the output, as shown in this example. 

```
SELECT * FROM pglogical.node;
node_id   |     node_name
------------+-------------------
 2182738256 | docs_lab_target
 3410995529 | docs_lab_provider
(2 rows)
```

You can get the details about the subscription with the following query.

```
SELECT sub_name,sub_slot_name,sub_target
  FROM pglogical.subscription;
 sub_name |         sub_slot_name          | sub_target
----------+--------------------------------+------------
  docs_lab_subscription     | pgl_labdb_docs_labcb4fa94_docs_lab3de412c | 2182738256
(1 row)
```

You can now drop the subscription, as follows.

```
SELECT pglogical.drop_subscription(subscription_name := 'docs_lab_subscription');
 drop_subscription
-------------------
                 1
(1 row)
```

After dropping the subscription, you can delete the node.

```
SELECT pglogical.drop_node(node_name := 'docs-lab-subscriber');
 drop_node
-----------
 t
(1 row)
```

You can verify that the node no longer exists, as follows.

```
SELECT * FROM pglogical.node;
 node_id | node_name
---------+-----------
(0 rows)
```

# Parameter reference for the pglogical extension
<a name="Appendix.PostgreSQL.CommonDBATasks.pglogical.reference"></a>

In the table you can find parameters associated with the `pglogical` extension. Parameters such as `pglogical.conflict_log_level` and `pglogical.conflict_resolution` are used to handle update conflicts. Conflicts can emerge when changes are made locally to the same tables that are subscribed to changes from the publisher. Conflicts can also occur during various scenarios, such as two-way replication or when multiple subscribers are replicating from the same publisher. For more information, see [ PostgreSQL bi-directional replication using pglogical](https://aws.amazon.com/blogs/database/postgresql-bi-directional-replication-using-pglogical/). 


| Parameter | Description | 
| --- | --- | 
| pglogical.batch\$1inserts | Batch inserts if possible. Not set by default. Change to '1' to turn on, '0' to turn off. | 
| pglogical.conflict\$1log\$1level | Sets the log level to use for logging resolved conflicts. Supported string values are debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic. | 
| pglogical.conflict\$1resolution | Sets method to use to resolve conflicts when conflicts are resolvable. Supported string values are error, apply\$1remote, keep\$1local, last\$1update\$1wins, first\$1update\$1wins. | 
| pglogical.extra\$1connection\$1options | Connection options to add to all peer node connections. | 
| pglogical.synchronous\$1commit | pglogical specific synchronous commit value | 
| pglogical.use\$1spi | Use SPI (server programming interface) instead of low-level API to apply changes. Set to '1' to turn on, '0' to turn off. For more information about SPI, see [Server Programming Interface](https://www.postgresql.org/docs/current/spi.html) in the PostgreSQL documentation.  | 

# Working with the supported foreign data wrappers for Amazon Aurora PostgreSQL
<a name="Appendix.PostgreSQL.CommonDBATasks.Extensions.foreign-data-wrappers"></a>

A foreign data wrapper (FDW) is a specific type of extension that provides access to external data. For example, the `oracle_fdw` extension allows your Aurora PostgreSQL DB instance to work with Oracle databases. 

Following, you can find information about several supported PostgreSQL foreign data wrappers. 

**Topics**
+ [Using the log\$1fdw extension to access the DB log using SQL](CHAP_PostgreSQL.Extensions.log_fdw.md)
+ [Using the postgres\$1fdw extension to access external data](postgresql-commondbatasks-fdw.md)
+ [Working with MySQL databases by using the mysql\$1fdw extension](postgresql-mysql-fdw.md)
+ [Working with Oracle databases by using the oracle\$1fdw extension](postgresql-oracle-fdw.md)
+ [Working with SQL Server databases by using the tds\$1fdw extension](postgresql-tds-fdw.md)

# Using the log\$1fdw extension to access the DB log using SQL
<a name="CHAP_PostgreSQL.Extensions.log_fdw"></a>

Aurora PostgreSQL DB cluster supports the `log_fdw` extension, which you can use to access your database engine log using a SQL interface. The `log_fdw` extension provides two functions that make it easy to create foreign tables for database logs:
+ `list_postgres_log_files` – Lists the files in the database log directory and the file size in bytes.
+ `create_foreign_table_for_log_file(table_name text, server_name text, log_file_name text)` – Builds a foreign table for the specified file in the current database.

All functions created by `log_fdw` are owned by `rds_superuser`. Members of the `rds_superuser` role can grant access to these functions to other database users.

By default, the log files are generated by Amazon Aurora in `stderr` (standard error) format, as specified in `log_destination` parameter. There are only two options for this parameter, `stderr` and `csvlog` (comma-separated values, CSV). If you add the `csvlog` option to the parameter, Amazon Aurora generates both `stderr` and `csvlog` logs. This can affect the storage capacity on your DB cluster, so you need to be aware of the other parameters that affect log handling. For more information, see [Setting the log destination (`stderr`, `csvlog`)](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md#USER_LogAccess.Concepts.PostgreSQL.Log_Format). 

One benefit of generating `csvlog` logs is that the `log_fdw` extension lets you build foreign tables with the data neatly split into several columns. To do this, your instance needs to be associated with a custom DB parameter group so that you can change the setting for `log_destination`. For more information about how to do so, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

The following example assumes that the `log_destination` parameter includes `cvslog`. 

**To use the log\$1fdw extension**

1. Install the `log_fdw` extension.

   ```
   postgres=> CREATE EXTENSION log_fdw;
   CREATE EXTENSION
   ```

1. Create the log server as a foreign data wrapper.

   ```
   postgres=> CREATE SERVER log_server FOREIGN DATA WRAPPER log_fdw;
   CREATE SERVER
   ```

1. Select all from a list of log files.

   ```
   postgres=> SELECT * FROM list_postgres_log_files() ORDER BY 1;
   ```

   A sample response is as follows.

   ```
             file_name           | file_size_bytes
   ------------------------------+-----------------
    postgresql.log.2023-08-09-22.csv |            1111
    postgresql.log.2023-08-09-23.csv |            1172
    postgresql.log.2023-08-10-00.csv |            1744
    postgresql.log.2023-08-10-01.csv |            1102
   (4 rows)
   ```

1. Create a table with a single 'log\$1entry' column for the selected file.

   ```
   postgres=> SELECT create_foreign_table_for_log_file('my_postgres_error_log',
        'log_server', 'postgresql.log.2023-08-09-22.csv');
   ```

   The response provides no detail other than that the table now exists.

   ```
   -----------------------------------
   (1 row)
   ```

1. Select a sample of the log file. The following code retrieves the log time and error message description.

   ```
   postgres=> SELECT log_time, message FROM my_postgres_error_log ORDER BY 1;
   ```

   A sample response is as follows.

   ```
                log_time             |                                  message
   ----------------------------------+---------------------------------------------------------------------------
   Tue Aug 09 15:45:18.172 2023 PDT | ending log output to stderr
   Tue Aug 09 15:45:18.175 2023 PDT | database system was interrupted; last known up at 2023-08-09 22:43:34 UTC
   Tue Aug 09 15:45:18.223 2023 PDT | checkpoint record is at 0/90002E0
   Tue Aug 09 15:45:18.223 2023 PDT | redo record is at 0/90002A8; shutdown FALSE
   Tue Aug 09 15:45:18.223 2023 PDT | next transaction ID: 0/1879; next OID: 24578
   Tue Aug 09 15:45:18.223 2023 PDT | next MultiXactId: 1; next MultiXactOffset: 0
   Tue Aug 09 15:45:18.223 2023 PDT | oldest unfrozen transaction ID: 1822, in database 1
   (7 rows)
   ```

# Using the postgres\$1fdw extension to access external data
<a name="postgresql-commondbatasks-fdw"></a>

You can access data in a table on a remote database server with the [postgres\$1fdw](https://www.postgresql.org/docs/current/static/postgres-fdw.html) extension. If you set up a remote connection from your PostgreSQL DB instance, access is also available to your read replica. 

**To use postgres\$1fdw to access a remote database server**

1. Install the postgres\$1fdw extension.

   ```
   CREATE EXTENSION postgres_fdw;
   ```

1. Create a foreign data server using CREATE SERVER.

   ```
   CREATE SERVER foreign_server
   FOREIGN DATA WRAPPER postgres_fdw
   OPTIONS (host 'xxx.xx.xxx.xx', port '5432', dbname 'foreign_db');
   ```

1. Create a user mapping to identify the role to be used on the remote server.
**Important**  
To redact the password so that it doesn't appear in the logs, set `log_statement=none` at the session level. Setting at the parameter level doesn't redact the password.

   ```
   CREATE USER MAPPING FOR local_user
   SERVER foreign_server
   OPTIONS (user 'foreign_user', password 'password');
   ```

1. Create a table that maps to the table on the remote server.

   ```
   CREATE FOREIGN TABLE foreign_table (
           id integer NOT NULL,
           data text)
   SERVER foreign_server
   OPTIONS (schema_name 'some_schema', table_name 'some_table');
   ```

# Working with MySQL databases by using the mysql\$1fdw extension
<a name="postgresql-mysql-fdw"></a>

To access a MySQL-compatible database from your Aurora PostgreSQL DB cluster, you can install and use the `mysql_fdw` extension. This foreign data wrapper lets you work with RDS for MySQL, Aurora MySQL, MariaDB, and other MySQL-compatible databases. The connection from Aurora PostgreSQL DB cluster to the MySQL database is encrypted on a best-effort basis, depending on the client and server configurations. However, you can enforce encryption if you like. For more information, see [Using encryption in transit with the extension](#postgresql-mysql-fdw.encryption-in-transit). 

The `mysql_fdw` extension is supported on Amazon Aurora PostgreSQL version 15.4, 14.9, 13.12, 12.16, and higher releases. It supports selects, inserts, updates, and deletes from an RDS for PostgreSQL DB to tables on a MySQL-compatible database instance. 

**Topics**
+ [Setting up your Aurora PostgreSQL DB to use the mysql\$1fdw extension](#postgresql-mysql-fdw.setting-up)
+ [Example: Working with an Aurora MySQL database from Aurora PostgreSQL](#postgresql-mysql-fdw.using-mysql_fdw)
+ [Using encryption in transit with the extension](#postgresql-mysql-fdw.encryption-in-transit)

## Setting up your Aurora PostgreSQL DB to use the mysql\$1fdw extension
<a name="postgresql-mysql-fdw.setting-up"></a>

Setting up the `mysql_fdw` extension on your Aurora PostgreSQL DB cluster involves loading the extension in your DB cluster and then creating the connection point to the MySQL DB instance. For that task, you need to have the following details about the MySQL DB instance:
+ Hostname or endpoint. For an Aurora MySQL DB cluster, you can find the endpoint by using the Console. Choose the Connectivity & security tab and look in the "Endpoint and port" section. 
+ Port number. The default port number for MySQL is 3306. 
+ Name of the database. The DB identifier. 

You also need to provide access on the security group or the access control list (ACL) for the MySQL port, 3306. Both the Aurora PostgreSQL DB cluster and the Aurora MySQL DB cluster need access to port 3306. If access isn't configured correctly, when you try to connect to MySQL-compatible table you see an error message similar to the following:

```
ERROR: failed to connect to MySQL: Can't connect to MySQL server on 'hostname.aws-region.rds.amazonaws.com:3306' (110)
```

In the following procedure, you (as the `rds_superuser` account) create the foreign server. You then grant access to the foreign server to specific users. These users then create their own mappings to the appropriate MySQL user accounts to work with the MySQL DB instance. 

**To use mysql\$1fdw to access a MySQL database server**

1. Connect to your PostgreSQL DB instance using an account that has the `rds_superuser` role. If you accepted the defaults when you created your Aurora PostgreSQL DB cluster , the user name is `postgres`, and you can connect using the `psql` command line tool as follows:

   ```
   psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=postgres –-password
   ```

1. Install the `mysql_fdw` extension as follows:

   ```
   postgres=> CREATE EXTENSION mysql_fdw;
   CREATE EXTENSION
   ```

After the extension is installed on your Aurora PostgreSQL DB cluster , you set up the foreign server that provides the connection to a MySQL database.

**To create the foreign server**

Perform these tasks on the Aurora PostgreSQL DB cluster . The steps assume that you're connected as a user with `rds_superuser` privileges, such as `postgres`. 

1. Create a foreign server in the Aurora PostgreSQL DB cluster :

   ```
   postgres=> CREATE SERVER mysql-db FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'db-name.111122223333.aws-region.rds.amazonaws.com', port '3306');
   CREATE SERVER
   ```

1. Grant the appropriate users access to the foreign server. These should be non-administrator users, that is, users without the `rds_superuser` role.

   ```
   postgres=> GRANT USAGE ON FOREIGN SERVER mysql-db to user1;
   GRANT
   ```

PostgreSQL users create and manage their own connections to the MySQL database through the foreign server.

## Example: Working with an Aurora MySQL database from Aurora PostgreSQL
<a name="postgresql-mysql-fdw.using-mysql_fdw"></a>

Suppose that you have a simple table on an Aurora PostgreSQL DB instance . Your Aurora PostgreSQL users want to query (`SELECT`), `INSERT`, `UPDATE`, and `DELETE` items on that table. Assume that the `mysql_fdw` extension was created on your RDS for PostgreSQL DB instance, as detailed in the preceding procedure. After you connect to the RDS for PostgreSQL DB instance as a user that has `rds_superuser` privileges, you can proceed with the following steps. 

1. On the Aurora PostgreSQL DB instance, create a foreign server: 

   ```
   test=> CREATE SERVER mysqldb FOREIGN DATA WRAPPER mysql_fdw OPTIONS (host 'your-DB.aws-region.rds.amazonaws.com', port '3306');
   CREATE SERVER
   ```

1. Grant usage to a user who doesn't have `rds_superuser` permissions, for example, `user1`:

   ```
   test=> GRANT USAGE ON FOREIGN SERVER mysqldb TO user1;
   GRANT
   ```

1. Connect as *user1*, and then create a mapping to the MySQL user: 

   ```
   test=> CREATE USER MAPPING FOR user1 SERVER mysqldb OPTIONS (username 'myuser', password 'mypassword');
   CREATE USER MAPPING
   ```

1. Create a foreign table linked to the MySQL table:

   ```
   test=> CREATE FOREIGN TABLE mytab (a int, b text) SERVER mysqldb OPTIONS (dbname 'test', table_name '');
   CREATE FOREIGN TABLE
   ```

1. Run a simple query against the foreign table:

   ```
   test=> SELECT * FROM mytab;
   a |   b
   ---+-------
   1 | apple
   (1 row)
   ```

1. You can add, change, and remove data from the MySQL table. For example:

   ```
   test=> INSERT INTO mytab values (2, 'mango');
   INSERT 0 1
   ```

   Run the `SELECT` query again to see the results:

   ```
   test=> SELECT * FROM mytab ORDER BY 1;
    a |   b
   ---+-------
   1 | apple
   2 | mango
   (2 rows)
   ```

## Using encryption in transit with the extension
<a name="postgresql-mysql-fdw.encryption-in-transit"></a>

The connection to MySQL from Aurora PostgreSQL uses encryption in transit (TLS/SSL) by default. However, the connection falls back to non-encrypted when the client and server configuration differ. You can enforce encryption for all outgoing connections by specifying the `REQUIRE SSL` option on the RDS for MySQL user accounts. This same approach also works for MariaDB and Aurora MySQL user accounts. 

For MySQL user accounts configured to `REQUIRE SSL`, the connection attempt fails if a secure connection can't be established.

To enforce encryption for existing MySQL database user accounts, you can use the `ALTER USER` command. The syntax varies, depending on the MySQL version, as shown in the following table. For more information, see [ALTER USER](https://dev.mysql.com/doc/refman/8.0/en/alter-user.html) in *MySQL Reference Manual*.


| MySQL 5.7, MySQL 8.0 | MySQL 5.6 | 
| --- | --- | 
|  `ALTER USER 'user'@'%' REQUIRE SSL;`  |  `GRANT USAGE ON *.* to 'user'@'%' REQUIRE SSL;`  | 

For more information about the `mysql_fdw` extension, see the [mysql\$1fdw](https://github.com/EnterpriseDB/mysql_fdw) documentation. 

# Working with Oracle databases by using the oracle\$1fdw extension
<a name="postgresql-oracle-fdw"></a>

To access an Oracle database from your Aurora PostgreSQL DB cluster you can install and use the `oracle_fdw` extension. This extension is a foreign data wrapper for Oracle databases. To learn more about this extension, see the [oracle\$1fdw](https://github.com/laurenz/oracle_fdw) documentation.

The `oracle_fdw` extension is supported on Aurora PostgreSQL 12.7 (Amazon Aurora release 4.2) and higher versions. 

**Topics**
+ [Turning on the oracle\$1fdw extension](#postgresql-oracle-fdw.enabling)
+ [Example: Using a foreign server linked to an Amazon RDS for Oracle database](#postgresql-oracle-fdw.example)
+ [Working with encryption in transit](#postgresql-oracle-fdw.encryption)
+ [Understanding the pg\$1user\$1mappings view and permissions](#postgresql-oracle-fdw.permissions)

## Turning on the oracle\$1fdw extension
<a name="postgresql-oracle-fdw.enabling"></a>

To use the oracle\$1fdw extension, perform the following procedure. 

**To turn on the oracle\$1fdw extension**
+ Run the following command using an account that has `rds_superuser` permissions.

  ```
  CREATE EXTENSION oracle_fdw;
  ```

## Example: Using a foreign server linked to an Amazon RDS for Oracle database
<a name="postgresql-oracle-fdw.example"></a>

The following example shows the use of a foreign server linked to an Amazon RDS for Oracle database.

**To create a foreign server linked to an RDS for Oracle database**

1. Note the following on the RDS for Oracle DB instance:
   + Endpoint
   + Port
   + Database name

1. Create a foreign server.

   ```
   test=> CREATE SERVER oradb FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver '//endpoint:port/DB_name');
   CREATE SERVER
   ```

1. Grant usage to a user who doesn't have `rds_superuser` privileges, for example `user1`.

   ```
   test=> GRANT USAGE ON FOREIGN SERVER oradb TO user1;
   GRANT
   ```

1. Connect as `user1`, and create a mapping to an Oracle user.

   ```
   test=> CREATE USER MAPPING FOR user1 SERVER oradb OPTIONS (user 'oracleuser', password 'mypassword');
   CREATE USER MAPPING
   ```

1. Create a foreign table linked to an Oracle table.

   ```
   test=> CREATE FOREIGN TABLE mytab (a int) SERVER oradb OPTIONS (table 'MYTABLE');
   CREATE FOREIGN TABLE
   ```

1. Query the foreign table.

   ```
   test=>  SELECT * FROM mytab;
   a
   ---
   1
   (1 row)
   ```

If the query reports the following error, check your security group and access control list (ACL) to make sure that both instances can communicate.

```
ERROR: connection for foreign table "mytab" cannot be established
DETAIL: ORA-12170: TNS:Connect timeout occurred
```

## Working with encryption in transit
<a name="postgresql-oracle-fdw.encryption"></a>

PostgreSQL-to-Oracle encryption in transit is based on a combination of client and server configuration parameters. For an example using Oracle 21c, see [About the Values for Negotiating Encryption and Integrity](https://docs.oracle.com/en/database/oracle/oracle-database/21/dbseg/configuring-network-data-encryption-and-integrity.html#GUID-3A2AF4AA-AE3E-446B-8F64-31C48F27A2B5) in the Oracle documentation. The client used for oracle\$1fdw on Amazon RDS is configured with `ACCEPTED`, meaning that the encryption depends on the Oracle database server configuration and it uses Oracle Security Library (libnnz) for encryption.

If your database is on RDS for Oracle, see [Oracle native network encryption](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.NetworkEncryption.html) to configure the encryption.

## Understanding the pg\$1user\$1mappings view and permissions
<a name="postgresql-oracle-fdw.permissions"></a>

The PostgreSQL catalog `pg_user_mapping` stores the mapping from an Aurora PostgreSQL user to the user on a foreign data (remote) server. Access to the catalog is restricted, but you use the `pg_user_mappings` view to see the mappings. In the following, you can find an example that shows how permissions apply with an example Oracle database, but this information applies more generally to any foreign data wrapper.

In the following output, you can find roles and permissions mapped to three different example users. Users `rdssu1` and `rdssu2` are members of the `rds_superuser` role, and `user1` isn't. The example uses the `psql` metacommand `\du` to list existing roles.

```
test=>  \du
                                                               List of roles
    Role name    |                         Attributes                         |                          Member of
-----------------+------------------------------------------------------------+-------------------------------------------------------------
 rdssu1          |                                                            | {rds_superuser}
 rdssu2          |                                                            | {rds_superuser}
 user1           |                                                            | {}
```

All users, including users that have `rds_superuser` privileges, are allowed to view their own user mappings (`umoptions`) in the `pg_user_mappings` table. As shown in the following example, when `rdssu1` tries to obtain all user mappings, an error is raised even though `rdssu1``rds_superuser` privileges:

```
test=> SELECT * FROM pg_user_mapping;
ERROR: permission denied for table pg_user_mapping
```

Following are some examples.

```
test=> SET SESSION AUTHORIZATION rdssu1;
SET
test=> SELECT * FROM pg_user_mappings;
 umid  | srvid | srvname | umuser | usename    |            umoptions
-------+-------+---------+--------+------------+----------------------------------
 16414 | 16411 | oradb   |  16412 | user1      |
 16423 | 16411 | oradb   |  16421 | rdssu1     | {user=oracleuser,password=mypwd}
 16424 | 16411 | oradb   |  16422 | rdssu2     |
 (3 rows)

test=> SET SESSION AUTHORIZATION rdssu2;
SET
test=> SELECT * FROM pg_user_mappings;
 umid  | srvid | srvname | umuser | usename    |            umoptions
-------+-------+---------+--------+------------+----------------------------------
 16414 | 16411 | oradb   |  16412 | user1      |
 16423 | 16411 | oradb   |  16421 | rdssu1     |
 16424 | 16411 | oradb   |  16422 | rdssu2     | {user=oracleuser,password=mypwd}
 (3 rows)

test=> SET SESSION AUTHORIZATION user1;
SET
test=> SELECT * FROM pg_user_mappings;
 umid  | srvid | srvname | umuser | usename    |           umoptions
-------+-------+---------+--------+------------+--------------------------------
 16414 | 16411 | oradb   |  16412 | user1      | {user=oracleuser,password=mypwd}
 16423 | 16411 | oradb   |  16421 | rdssu1     |
 16424 | 16411 | oradb   |  16422 | rdssu2     |
 (3 rows)
```

Because of implementation differences between `information_schema._pg_user_mappings` and `pg_catalog.pg_user_mappings`, a manually created `rds_superuser` requires additional permissions to view passwords in `pg_catalog.pg_user_mappings`.

No additional permissions are required for an `rds_superuser` to view passwords in `information_schema._pg_user_mappings`.

Users who don't have the `rds_superuser` role can view passwords in `pg_user_mappings` only under the following conditions:
+ The current user is the user being mapped and owns the server or holds the `USAGE` privilege on it.
+ The current user is the server owner and the mapping is for `PUBLIC`.

# Working with SQL Server databases by using the tds\$1fdw extension
<a name="postgresql-tds-fdw"></a>

You can use the PostgreSQL `tds_fdw` extension to access databases that support the tabular data stream (TDS) protocol, such as Sybase and Microsoft SQL Server databases. This foreign data wrapper lets you connect from your Aurora PostgreSQL DB cluster to databases that use the TDS protocol, including Amazon RDS for Microsoft SQL Server. For more information, see [tds-fdw/tds\$1fdw](https://github.com/tds-fdw/tds_fdw) documentation on GitHub. 

The `tds_fdw` extension is supported on Amazon Aurora PostgreSQL version 13.6 and higher releases. 

## Setting up your Aurora PostgreSQL DB to use the tds\$1fdw extension
<a name="postgresql-tds-fdw-setting-up"></a>

In the following procedures, you can find an example of setting up and using the `tds_fdw` with an Aurora PostgreSQL DB cluster. Before you can connect to a SQL Server database using `tds_fdw`, you need to get the following details for the instance:
+ Hostname or endpoint. For an RDS for SQL Server DB instance, you can find the endpoint by using the Console. Choose the Connectivity & security tab and look in the "Endpoint and port" section. 
+ Port number. The default port number for Microsoft SQL Server is 1433. 
+ Name of the database. The DB identifier. 

You also need to provide access on the security group or the access control list (ACL) for the SQL Server port, 1433. Both the Aurora PostgreSQL DB cluster and the RDS for SQL Server DB instance need access to port 1433. If access isn't configured correctly, when you try to query the Microsoft SQL Server you see the following error message:

```
ERROR: DB-Library error: DB #: 20009, DB Msg: Unable to connect:
Adaptive Server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 0, OS Msg: Success, Level: 9
```

**To use tds\$1fdw to connect to a SQL Server database**

1. Connect to your Aurora PostgreSQL DB cluster's primary instance using an account that has the `rds_superuser` role:

   ```
   psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-password
   ```

1. Install the `tds_fdw` extension:

   ```
   test=> CREATE EXTENSION tds_fdw;
   CREATE EXTENSION
   ```

After the extension is installed on your Aurora PostgreSQL DB cluster , you set up the foreign server.

**To create the foreign server**

Perform these tasks on the Aurora PostgreSQL DB cluster using an account that has `rds_superuser` privileges. 

1. Create a foreign server in the Aurora PostgreSQL DB cluster:

   ```
   test=> CREATE SERVER sqlserverdb FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing');
   CREATE SERVER
   ```

   To access non-ASCII data on the SQLServer side, create a server link with the character\$1set option in the Aurora PostgreSQL DB cluster:

   ```
   test=> CREATE SERVER sqlserverdb FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing', character_set 'UTF-8');
   CREATE SERVER
   ```

1. Grant permissions to a user who doesn't have `rds_superuser` role privileges, for example, `user1`:

   ```
   test=> GRANT USAGE ON FOREIGN SERVER sqlserverdb TO user1;
   ```

1. Connect as user1 and create a mapping to a SQL Server user:

   ```
   test=> CREATE USER MAPPING FOR user1 SERVER sqlserverdb OPTIONS (username 'sqlserveruser', password 'password');
   CREATE USER MAPPING
   ```

1. Create a foreign table linked to a SQL Server table:

   ```
   test=> CREATE FOREIGN TABLE mytab (a int) SERVER sqlserverdb OPTIONS (table 'MYTABLE');
   CREATE FOREIGN TABLE
   ```

1. Query the foreign table:

   ```
   test=> SELECT * FROM mytab;
    a
   ---
    1
   (1 row)
   ```

### Using encryption in transit for the connection
<a name="postgresql-tds-fdw-ssl-tls-encryption"></a>

The connection from Aurora PostgreSQL to SQL Server uses encryption in transit (TLS/SSL) depending on the SQL Server database configuration. If the SQL Server isn't configured for encryption, the RDS for PostgreSQL client making the request to the SQL Server database falls back to unencrypted.

You can enforce encryption for the connection to RDS for SQL Server DB instances by setting the `rds.force_ssl` parameter. To learn how, see [Forcing connections to your DB instance to use SSL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html#SQLServer.Concepts.General.SSL.Forcing). For more information about SSL/TLS configuration for RDS for SQL Server, see [Using SSL with a Microsoft SQL Server DB instance](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html). 

# Working with Trusted Language Extensions for PostgreSQL
<a name="PostgreSQL_trusted_language_extension"></a>

Trusted Language Extensions for PostgreSQL is an open source development kit for building PostgreSQL extensions. It allows you to build high performance PostgreSQL extensions and safely run them on your Aurora PostgreSQL DB cluster. By using Trusted Language Extensions (TLE) for PostgreSQL, you can create PostgreSQL extensions that follow the documented approach for extending PostgreSQL functionality. For more information, see [Packaging Related Objects into an Extension](https://www.postgresql.org/docs/current/extend-extensions.html) in the PostgreSQL documentation. 

One key benefit of TLE is that you can use it in environments that don't provide access to the file system underlying the PostgreSQL instance. Previously, installing a new extension required access to the file system. TLE removes this constraint. It provides a development environment for creating new extensions for any PostgreSQL database, including those running on your Aurora PostgreSQL DB clusters.

TLE is designed to prevent access to unsafe resources for the extensions that you create using TLE. Its runtime environment limits the impact of any extension defect to a single database connection. TLE also gives database administrators fine-grained control over who can install extensions, and it provides a permissions model for running them.

TLE is supported on Aurora PostgreSQL version 14.5 and higher versions.

The Trusted Language Extensions development environment and runtime are packaged as the `pg_tle` PostgreSQL extension, version 1.0.1. It supports creating extensions in JavaScript, Perl, Tcl, PL/pgSQL, and SQL. You install the `pg_tle` extension in your Aurora PostgreSQL DB cluster in the same way that you install other PostgreSQL extensions. After the `pg_tle` is set up, developers can use it to create new PostgreSQL extensions, known as *TLE extensions*.

 

In the following topics, you can find information about how to set up Trusted Language Extensions and how to get started creating your own TLE extensions.

**Topics**
+ [Terminology](PostgreSQL_trusted_language_extension-terminology.md)
+ [Requirements for using Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension-requirements.md)
+ [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md)
+ [Overview of Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension.overview.md)
+ [Creating TLE extensions for Aurora PostgreSQL](PostgreSQL_trusted_language_extension-creating-TLE-extensions.md)
+ [Dropping your TLE extensions from a database](PostgreSQL_trusted_language_extension-creating-TLE-extensions.dropping-TLEs.md)
+ [Uninstalling Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension-uninstalling-pg_tle-devkit.md)
+ [Using PostgreSQL hooks with your TLE extensions](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md)
+ [Function reference for Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension-functions-reference.md)
+ [Hooks reference for Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension-hooks-reference.md)

# Terminology
<a name="PostgreSQL_trusted_language_extension-terminology"></a>

To help you better understand Trusted Language Extensions, view the following glossary for terms used in this topic. 

**Trusted Language Extensions for PostgreSQL**  
*Trusted Language Extensions for PostgreSQL* is the official name of the open source development kit that's packaged as the `pg_tle` extension. It's available for use on any PostgreSQL system. For more information, see [aws/pg\$1tle](https://github.com/aws/pg_tle) on GitHub.

**Trusted Language Extensions**  
*Trusted Language Extensions* is the short name for Trusted Language Extensions for PostgreSQL. This shortened name and its abbreviation (TLE) are also used in this documentation.

**trusted language**  
A *trusted language* is a programming or scripting language that has specific security attributes. For example, trusted languages typically restrict access to the file system, and they limit use of specified networking properties. The TLE development kit is designed to support trusted languages. PostgreSQL supports several different languages that are used to create trusted or untrusted extensions. For an example, see [Trusted and Untrusted PL/Perl](https://www.postgresql.org/docs/current/plperl-trusted.html) in the PostgreSQL documentation. When you create an extension using Trusted Language Extensions, the extension inherently uses trusted language mechanisms.

**TLE extension**  
A *TLE extension* is a PostgreSQL extension that's been created by using the Trusted Language Extensions (TLE) development kit. 

# Requirements for using Trusted Language Extensions for PostgreSQL
<a name="PostgreSQL_trusted_language_extension-requirements"></a>

The following are requirements for setting up and using the TLE development kit.
+ ** Aurora PostgreSQL versions ** – Trusted Language Extensions is supported on Aurora PostgreSQL version 14.5 and higher versions only.
  + If you need to upgrade your Aurora PostgreSQL DB cluster, see [Upgrading Amazon Aurora PostgreSQL DB clusters](USER_UpgradeDBInstance.PostgreSQL.md). 
  + If you don't yet have an Aurora DB cluster running PostgreSQL, you can create one. For more information, see [Creating and connecting to an Aurora PostgreSQL DB cluster](CHAP_GettingStartedAurora.CreatingConnecting.AuroraPostgreSQL.md).  
+ **Requires `rds_superuser` privileges** – To set up and configure the `pg_tle` extension, your database user role must have the permissions of the `rds_superuser` role. By default, this role is granted to the `postgres` user that creates the Aurora PostgreSQL DB cluster. 
+ **Requires a custom DB parameter group** – Your Aurora PostgreSQL DB cluster must be configured with a custom DB parameter group. You use the custom DB parameter group for the writer instance of your Aurora PostgreSQL DB cluster. 
  + If your Aurora PostgreSQL DB cluster isn't configured with a custom DB parameter group, you should create one and associate it with the writer instance of your Aurora PostgreSQL DB cluster. For a short summary of steps, see [Creating and applying a custom DB parameter group](#PostgreSQL_trusted_language_extension-requirements-create-custom-params).
  + If your Aurora PostgreSQL DB cluster is already configured using a custom DB parameter group, you can set up Trusted Language Extensions. For details, see [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md).

## Creating and applying a custom DB parameter group
<a name="PostgreSQL_trusted_language_extension-requirements-create-custom-params"></a>

Use the following steps to create a custom DB parameter group and configure your Aurora PostgreSQL DB cluster to use it. 

### Console
<a name="PostgreSQL_trusted_language_extension-requirements-custom-parameters.CON"></a>

**To create a custom DB parameter group and use it with your Aurora PostgreSQL DB cluster**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Choose Parameter groups from the Amazon RDS menu. 

1. Choose **Create parameter group**.

1. In the **Parameter group details** page, enter the following information.
   + For **Parameter group family**, choose aurora-postgresql14. 
   + For **Type**, choose DB Parameter Group.
   + For **Group name**, give your parameter group a meaningful name in the context of your operations.
   + For **Description**, enter a useful description so that others on your team can easily find it.

1. Choose **Create**. Your custom DB parameter group is created in your AWS Region. You can now modify your Aurora PostgreSQL DB cluster to use it by following the next steps.

1. Choose **Databases** from the Amazon RDS menu.

1. Choose the Aurora PostgreSQL DB cluster that you want to use with TLE from among those listed, and then choose **Modify.** 

1. In the Modify DB cluster settings page, find **Database options** and use the selector to choose your custom DB parameter group. 

1. Choose **Continue** to save the change.

1. Choose **Apply immediately** so that you can continue setting up the Aurora PostgreSQL DB cluster to use TLE.

To continue setting up your system for Trusted Language Extensions, see [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md).

For more information working with DB cluster and DB parameter groups, see [DB cluster parameter groups for Amazon Aurora DB clusters](USER_WorkingWithDBClusterParamGroups.md). 

### AWS CLI
<a name="PostgreSQL_trusted_language_extension-requirements-custom-parameters-CLI"></a>

You can avoid specifying the `--region` argument when you use CLI commands by configuring your AWS CLI with your default AWS Region. For more information, see [Configuration basics](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) in the *AWS Command Line Interface User Guide*. 

**To create a custom DB parameter group and use it with your Aurora PostgreSQL DB cluster**

1. Use the [create-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) AWS CLI command to create a custom DB parameter group based on aurora-postgresql14 for your AWS Region. Note that in this step you create a DB parameter group to apply to the writer instance of your Aurora PostgreSQL DB cluster. 

   For Linux, macOS, or Unix:

   ```
   aws rds create-db-parameter-group \
     --region aws-region \
     --db-parameter-group-name custom-params-for-pg-tle \
     --db-parameter-group-family aurora-postgresql14 \
     --description "My custom DB parameter group for Trusted Language Extensions"
   ```

   For Windows:

   ```
   aws rds create-db-parameter-group ^
     --region aws-region ^
     --db-parameter-group-name custom-params-for-pg-tle ^
     --db-parameter-group-family aurora-postgresql14 ^
     --description "My custom DB parameter group for Trusted Language Extensions"
   ```

   Your custom DB parameter group is available in your AWS Region, so you can modify the writer instance of your Aurora PostgreSQL DB cluster to use it. 

1. Use the [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) AWS CLI command to apply your custom DB parameter group to the writer instance of your Aurora PostgreSQL DB cluster. This command immediately reboots the active instance.

   For Linux, macOS, or Unix:

   ```
   aws rds modify-db-instance \
     --region aws-region \
     --db-instance-identifier your-writer-instance-name \
     --db-parameter-group-name custom-params-for-pg-tle \
     --apply-immediately
   ```

   For Windows:

   ```
   aws rds modify-db-instance ^
     --region aws-region ^
     --db-instance-identifier your-writer-instance-name ^
     --db-parameter-group-name custom-params-for-pg-tle ^
     --apply-immediately
   ```

To continue setting up your system for Trusted Language Extensions, see [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md).

For more information, see [DB parameter groups for Amazon Aurora DB instances](USER_WorkingWithDBInstanceParamGroups.md) . 

# Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster
<a name="PostgreSQL_trusted_language_extension-setting-up"></a>

The following steps assume that your Aurora PostgreSQL DB cluster is associated with a custom DB cluster parameter group. You can use the AWS Management Console or the AWS CLI for these steps.

When you set up Trusted Language Extensions in your Aurora PostgreSQL DB cluster , you install it in a specific database for use by the database users who have permissions on that database. 

## Console
<a name="PostgreSQL_trusted_language_extension-setting-up.CON"></a>

**To set up Trusted Language Extensions**

Perform the following steps using an account that's a member of the `rds_superuser` group (role).

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose your Aurora PostgreSQL DB cluster's Writer instance .

1. Open the **Configuration** tab for your Aurora PostgreSQL DB cluster writer instance.  Among the Instance details, find the **Parameter group** link.

1. Choose the link to open the custom parameters associated with your Aurora PostgreSQL DB cluster. 

1. In the **Parameters** search field, type `shared_pre` to find the `shared_preload_libraries` parameter.

1. Choose **Edit parameters** to access the property values.

1. Add `pg_tle` to the list in the **Values** field. Use a comma to separate items in the list of values.  
![\[Image of the shared_preload_libraries parameter with pg_tle added.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg_rpg_shared_preload_pg_tle.png)

1. Reboot the writer instance of your Aurora PostgreSQL DB cluster so that your change to the `shared_preload_libraries` parameter takes effect.

1. When the instance is available, verify that `pg_tle` has been initialized. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster, and then run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_tle
   (1 row)
   ```

1. With the `pg_tle` extension initialized, you can now create the extension. 

   ```
   CREATE EXTENSION pg_tle;
   ```

   You can verify that the extension is installed by using the following `psql` metacommand.

   ```
   labdb=> \dx
                            List of installed extensions
     Name   | Version |   Schema   |                Description
   ---------+---------+------------+--------------------------------------------
    pg_tle  | 1.0.1   | pgtle      | Trusted-Language Extensions for PostgreSQL
    plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
   ```

1. Grant the `pgtle_admin` role to the primary user name that you created for your Aurora PostgreSQL DB cluster when you set it up. If you accepted the default, it's `postgres`. 

   ```
   labdb=> GRANT pgtle_admin TO postgres;
   GRANT ROLE
   ```

   You can verify that the grant has occurred by using the `psql` metacommand as shown in the following example. Only the `pgtle_admin` and `postgres` roles are shown in the output. For more information, see [Understanding PostgreSQL roles and permissions](Appendix.PostgreSQL.CommonDBATasks.Roles.md). 

   ```
   labdb=> \du
                             List of roles
       Role name    |           Attributes            |               Member of
   -----------------+---------------------------------+-----------------------------------
   pgtle_admin     | Cannot login                     | {}
   postgres        | Create role, Create DB          +| {rds_superuser,pgtle_admin}
                   | Password valid until infinity    |...
   ```

1. Close the `psql` session using the `\q` metacommand.

   ```
   \q
   ```

To get started creating TLE extensions, see [Example: Creating a trusted language extension using SQL](PostgreSQL_trusted_language_extension-creating-TLE-extensions.md#PostgreSQL_trusted_language_extension-simple-example). 

## AWS CLI
<a name="PostgreSQL_trusted_language_extension-setting-up-CLI"></a>

You can avoid specifying the `--region` argument when you use CLI commands by configuring your AWS CLI with your default AWS Region. For more information, see [Configuration basics](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) in the *AWS Command Line Interface User Guide*.

**To set up Trusted Language Extensions**

1. Use the [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI command to add `pg_tle` to the `shared_preload_libraries` parameter.

   ```
   aws rds modify-db-parameter-group \
      --db-parameter-group-name custom-param-group-name \
      --parameters "ParameterName=shared_preload_libraries,ParameterValue=pg_tle,ApplyMethod=pending-reboot" \
      --region aws-region
   ```

1. Use the [reboot-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/reboot-db-instance) AWS CLI command to reboot the writer instance of your Aurora PostgreSQL DB cluster and initialize the `pg_tle` library.

   ```
   aws rds reboot-db-instance \
       --db-instance-identifier writer-instance \
       --region aws-region
   ```

1. When the instance is available, you can verify that `pg_tle` has been initialized. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster, and then run the following command.

   ```
   SHOW shared_preload_libraries;
   shared_preload_libraries 
   --------------------------
   rdsutils,pg_tle
   (1 row)
   ```

   With `pg_tle` initialized, you can now create the extension.

   ```
   CREATE EXTENSION pg_tle;
   ```

1. Grant the `pgtle_admin` role to the primary user name that you created for your Aurora PostgreSQL DB cluster when you set it up. If you accepted the default, it's `postgres`.

   ```
   GRANT pgtle_admin TO postgres;
   GRANT ROLE
   ```

1. Close the `psql` session as follows.

   ```
   labdb=> \q
   ```

To get started creating TLE extensions, see [Example: Creating a trusted language extension using SQL](PostgreSQL_trusted_language_extension-creating-TLE-extensions.md#PostgreSQL_trusted_language_extension-simple-example). 

# Overview of Trusted Language Extensions for PostgreSQL
<a name="PostgreSQL_trusted_language_extension.overview"></a>

Trusted Language Extensions for PostgreSQL is a PostgreSQL extension that you install in your Aurora PostgreSQL DB cluster in the same way that you set up other PostgreSQL extensions. In the following image of an example database in the pgAdmin client tool, you can view some of the components that comprise the `pg_tle` extension.

![\[Image showing some of the components that make up the TLE development kit.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-pg_tle-installed-view-in-pgAdmin.png)


You can see the following details.

1. The Trusted Language Extensions (TLE) for PostgreSQL development kit is packaged as the `pg_tle` extension. As such, `pg_tle` is added to the available extensions for the database in which it's installed.

1. TLE has its own schema, `pgtle`. This schema contains helper functions (3) for installing and managing the extensions that you create.

1. TLE provides over a dozen helper functions for installing, registering, and managing your extensions. To learn more about these functions, see [Function reference for Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension-functions-reference.md). 

Other components of the `pg_tle` extension include the following:
+ **The `pgtle_admin` role** – The `pgtle_admin` role is created when the `pg_tle` extension is installed. This role is privileged and should be treated as such. We strongly recommend that you follow the principle of *least privilege* when granting the `pgtle_admin` role to database users. In other words, grant the `pgtle_admin` role only to database users that are allowed to create, install, and manage new TLE extensions, such as `postgres`.
+ **The `pgtle.feature_info` table** – The `pgtle.feature_info` table is a protected table that contains information about your TLEs, hooks, and the custom stored procedures and functions that they use. If you have `pgtle_admin` privileges, you use the following Trusted Language Extensions functions to add and update that information in the table.
  + [pgtle.register\$1feature](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.register_feature)
  + [pgtle.register\$1feature\$1if\$1not\$1exists](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.register_feature_if_not_exists)
  + [pgtle.unregister\$1feature](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.unregister_feature)
  + [pgtle.unregister\$1feature\$1if\$1exists](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.unregister_feature_if_exists)

# Creating TLE extensions for Aurora PostgreSQL
<a name="PostgreSQL_trusted_language_extension-creating-TLE-extensions"></a>

You can install any extensions that you create with TLE in any Aurora PostgreSQL DB cluster that has the `pg_tle` extension installed. The `pg_tle` extension is scoped to the PostgreSQL database in which it's installed. The extensions that you create using TLE are scoped to the same database. 

Use the various `pgtle` functions to install the code that makes up your TLE extension. The following Trusted Language Extensions functions all require the `pgtle_admin` role.
+ [pgtle.install\$1extension](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.install_extension)
+ [pgtle.install\$1update\$1path](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.install_update_path)
+ [pgtle.register\$1feature](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.register_feature)
+ [pgtle.register\$1feature\$1if\$1not\$1exists](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.register_feature_if_not_exists)
+ [pgtle.set\$1default\$1version](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.set_default_version)
+ [pgtle.uninstall\$1extension(name)](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.uninstall_extension-name)
+ [pgtle.uninstall\$1extension(name, version)](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.uninstall_extension-name-version)
+ [pgtle.uninstall\$1extension\$1if\$1exists](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.uninstall_extension_if_exists)
+ [pgtle.uninstall\$1update\$1path](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.uninstall_update_path)
+ [pgtle.uninstall\$1update\$1path\$1if\$1exists](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.uninstall_update_path_if_exists)
+ [pgtle.unregister\$1feature](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.unregister_feature)
+ [pgtle.unregister\$1feature\$1if\$1exists](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.unregister_feature_if_exists)

## Example: Creating a trusted language extension using SQL
<a name="PostgreSQL_trusted_language_extension-simple-example"></a>

The following example shows you how to create a TLE extension named `pg_distance` that contains a few SQL functions for calculating distances using different formulas. In the listing, you can find the function for calculating the Manhattan distance and the function for calculating the Euclidean distance. For more information about the difference between these formulas, see [Taxicab geometry](https://en.wikipedia.org/wiki/Taxicab_geometry) and [Euclidean geometry](https://en.wikipedia.org/wiki/Euclidean_geometry) in Wikipedia. 

You can use this example in your own Aurora PostgreSQL DB cluster if you have the `pg_tle` extension set up as detailed in [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md).

**Note**  
You need to have the privileges of the `pgtle_admin` role to follow this procedure.

**To create the example TLE extension**

The following steps use an example database named `labdb`. This database is owned by the `postgres` primary user. The `postgres` role also has the permissions of the `pgtle_admin` role.

1. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster. 

   ```
   psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com
   --port=5432 --username=postgres --password --dbname=labdb
   ```

1. Create a TLE extension named `pg_distance` by copying the following code and pasting it into your `psql` session console.

   ```
   SELECT pgtle.install_extension
   (
    'pg_distance',
    '0.1',
     'Distance functions for two points',
   $_pg_tle_$
       CREATE FUNCTION dist(x1 float8, y1 float8, x2 float8, y2 float8, norm int)
       RETURNS float8
       AS $$
         SELECT (abs(x2 - x1) ^ norm + abs(y2 - y1) ^ norm) ^ (1::float8 / norm);
       $$ LANGUAGE SQL;
   
       CREATE FUNCTION manhattan_dist(x1 float8, y1 float8, x2 float8, y2 float8)
       RETURNS float8
       AS $$
         SELECT dist(x1, y1, x2, y2, 1);
       $$ LANGUAGE SQL;
   
       CREATE FUNCTION euclidean_dist(x1 float8, y1 float8, x2 float8, y2 float8)
       RETURNS float8
       AS $$
         SELECT dist(x1, y1, x2, y2, 2);
       $$ LANGUAGE SQL;
   $_pg_tle_$
   );
   ```

   You see the output, such as the following.

   ```
   install_extension
   ---------------
    t
   (1 row)
   ```

   The artifacts that make up the `pg_distance` extension are now installed in your database. These artifacts include the control file and the code for the extension, which are items that need to be present so that the extension can be created using the `CREATE EXTENSION` command. In other words, you still need to create the extension to make its functions available to database users.

1. To create the extension, use the `CREATE EXTENSION` command as you do for any other extension. As with other extensions, the database user needs to have the `CREATE` permissions in the database.

   ```
   CREATE EXTENSION pg_distance;
   ```

1. To test the `pg_distance` TLE extension, you can use it to calculate the [Manhattan distance](https://en.wikipedia.org/wiki/Taxicab_geometry) between four points.

   ```
   labdb=> SELECT manhattan_dist(1, 1, 5, 5);
   8
   ```

   To calculate the [Euclidean distance](https://en.wikipedia.org/wiki/Euclidean_geometry) between the same set of points, you can use the following.

   ```
   labdb=> SELECT euclidean_dist(1, 1, 5, 5);
   5.656854249492381
   ```

The `pg_distance` extension loads the functions in the database and makes them available to any users with permissions on the database.

## Modifying your TLE extension
<a name="PostgreSQL_trusted_language_extension-simple-example.modify"></a>

To improve query performance for the functions packaged in this TLE extension, add the following two PostgreSQL attributes to their specifications.
+ `IMMUTABLE` – The `IMMUTABLE` attribute ensures that the query optimizer can use optimizations to improve query response times. For more information, see [Function Volatility Categories](https://www.postgresql.org/docs/current/xfunc-volatility.html) in the PostgreSQL documentation.
+ `PARALLEL SAFE` – The `PARALLEL SAFE` attribute is another attribute that allows PostgreSQL to run the function in parallel mode. For more information, see [CREATE FUNCTION](https://www.postgresql.org/docs/current/sql-createfunction.html) in the PostgreSQL documentation.

In the following example, you can see how the `pgtle.install_update_path` function is used to add these attributes to each function to create a version `0.2` of the `pg_distance` TLE extension. For more information about this function, see [pgtle.install\$1update\$1path](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.install_update_path). You need to have the `pgtle_admin` role to perform this task. 

**To update an existing TLE extension and specify the default version**

1. Connect to the writer instance of your Aurora PostgreSQL DB cluster using `psql` or another client tool, such as pgAdmin.

   ```
   psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com
   --port=5432 --username=postgres --password --dbname=labdb
   ```

1. Modify the existing TLE extension by copying the following code and pasting it into your `psql` session console.

   ```
   SELECT pgtle.install_update_path
   (
    'pg_distance',
    '0.1',
    '0.2',
   $_pg_tle_$
       CREATE OR REPLACE FUNCTION dist(x1 float8, y1 float8, x2 float8, y2 float8, norm int)
       RETURNS float8
       AS $$
         SELECT (abs(x2 - x1) ^ norm + abs(y2 - y1) ^ norm) ^ (1::float8 / norm);
       $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
   
       CREATE OR REPLACE FUNCTION manhattan_dist(x1 float8, y1 float8, x2 float8, y2 float8)
       RETURNS float8
       AS $$
         SELECT dist(x1, y1, x2, y2, 1);
       $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
   
       CREATE OR REPLACE FUNCTION euclidean_dist(x1 float8, y1 float8, x2 float8, y2 float8)
       RETURNS float8
       AS $$
         SELECT dist(x1, y1, x2, y2, 2);
       $$ LANGUAGE SQL IMMUTABLE PARALLEL SAFE;
   $_pg_tle_$
   );
   ```

   You see a response similar to the following.

   ```
   install_update_path
   ---------------------
    t
   (1 row)
   ```

   You can make this version of the extension the default version, so that database users don't have to specify a version when they create or update the extension in their database.

1. To specify that the modified version (version 0.2) of your TLE extension is the default version, use the `pgtle.set_default_version` function as shown in the following example.

   ```
   SELECT pgtle.set_default_version('pg_distance', '0.2');
   ```

   For more information about this function, see [pgtle.set\$1default\$1version](PostgreSQL_trusted_language_extension-functions-reference.md#pgtle.set_default_version).

1. With the code in place, you can update the installed TLE extension in the usual way, by using `ALTER EXTENSION ... UPDATE` command, as shown here:

   ```
   ALTER EXTENSION pg_distance UPDATE;
   ```

# Dropping your TLE extensions from a database
<a name="PostgreSQL_trusted_language_extension-creating-TLE-extensions.dropping-TLEs"></a>

You can drop your TLE extensions by using the `DROP EXTENSION` command in the same way that you do for other PostgreSQL extensions. Dropping the extension doesn't remove the installation files that make up the extension, which allows users to re-create the extension. To remove the extension and its installation files, do the following two-step process.

**To drop the TLE extension and remove its installation files**

1. Use `psql` or another client tool to connect to the writer instance of your Aurora PostgreSQL DB cluster. 

   ```
   psql --host=cluster-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=dbname
   ```

1. Drop the extension as you would any PostgreSQL extension.

   ```
   DROP EXTENSION your-TLE-extension
   ```

   For example, if you create the `pg_distance` extension as detailed in [Example: Creating a trusted language extension using SQL](PostgreSQL_trusted_language_extension-creating-TLE-extensions.md#PostgreSQL_trusted_language_extension-simple-example), you can drop the extension as follows.

   ```
   DROP EXTENSION pg_distance;
   ```

   You see output confirming that the extension has been dropped, as follows.

   ```
   DROP EXTENSION
   ```

   At this point, the extension is no longer active in the database. However, its installation files and control file are still available in the database, so database users can create the extension again if they like.
   + If you want to leave the extension files intact so that database users can create your TLE extension, you can stop here.
   + If you want to remove all files that make up the extension, continue to the next step.

1. To remove all installation files for your extension, use the `pgtle.uninstall_extension` function. This function removes all the code and control files for your extension.

   ```
   SELECT pgtle.uninstall_extension('your-tle-extension-name');
   ```

   For example, to remove all `pg_distance` installation files, use the following command.

   ```
   SELECT pgtle.uninstall_extension('pg_distance');
    uninstall_extension
   ---------------------
    t
   (1 row)
   ```

# Uninstalling Trusted Language Extensions for PostgreSQL
<a name="PostgreSQL_trusted_language_extension-uninstalling-pg_tle-devkit"></a>

If you no longer want to create your own TLE extensions using TLE, you can drop the `pg_tle` extension and remove all artifacts. This action includes dropping any TLE extensions in the database and dropping the `pgtle` schema.

**To drop the `pg_tle` extension and its schema from a database**

1. Use `psql` or another client tool to connect to the writer instance of your Aurora PostgreSQL DB cluster. 

   ```
   psql --host=cluster-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=dbname
   ```

1. Drop the `pg_tle` extension from the database. If the database has your own TLE extensions still running in the database, you need to also drop those extensions. To do so, you can use the `CASCADE` keyword, as shown in the following.

   ```
   DROP EXTENSION pg_tle CASCADE;
   ```

   If the `pg_tle` extension isn't still active in the database, you don't need to use the `CASCADE` keyword.

1. Drop the `pgtle` schema. This action removes all the management functions from the database.

   ```
   DROP SCHEMA pgtle CASCADE;
   ```

   The command returns the following when the process completes.

   ```
   DROP SCHEMA
   ```

   The `pg_tle` extension, its schema and functions, and all artifacts are removed. To create new extensions using TLE, go through the setup process again. For more information, see [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md). 

# Using PostgreSQL hooks with your TLE extensions
<a name="PostgreSQL_trusted_language_extension.overview.tles-and-hooks"></a>

A *hook* is a callback mechanism available in PostgreSQL that allows developers to call custom functions or other routines during regular database operations. The TLE development kit supports PostgreSQL hooks so that you can integrate custom functions with PostgreSQL behavior at runtime. For example, you can use a hook to associate the authentication process with your own custom code, or to modify the query planning and execution process for your specific needs.

Your TLE extensions can use hooks. If a hook is global in scope, it applies across all databases. Therefore, if your TLE extension uses a global hook, then you need to create your TLE extension in all databases that your users can access.

When you use the `pg_tle` extension to build your own Trusted Language Extensions, you can use the available hooks from a SQL API to build out the functions of your extension. You should register any hooks with `pg_tle`. For some hooks, you might also need to set various configuration parameters. For example, the `passcode` check hook can be set to on, off, or require. For more information about specific requirements for available `pg_tle` hooks, see [Hooks reference for Trusted Language Extensions for PostgreSQL](PostgreSQL_trusted_language_extension-hooks-reference.md). 

## Example: Creating an extension that uses a PostgreSQL hook
<a name="PostgreSQL_trusted_language_extension-example-hook"></a>

The example discussed in this section uses a PostgreSQL hook to check the password provided during specific SQL operations and prevents database users from setting their passwords to any of those contained in the `password_check.bad_passwords` table. The table contains the top-ten most commonly used, but easily breakable choices for passwords. 

To set up this example in your Aurora PostgreSQL DB cluster, you must have already installed Trusted Language Extensions. For details, see [Setting up Trusted Language Extensions in your Aurora PostgreSQL DB cluster](PostgreSQL_trusted_language_extension-setting-up.md). 

**To set up the password-check hook example**

1. Use `psql` to connect to the writer instance of your Aurora PostgreSQL DB cluster. 

   ```
   psql --host=db-instance-123456789012.aws-region.rds.amazonaws.com
   --port=5432 --username=postgres --password --dbname=labdb
   ```

1. Copy the code from the [Password-check hook code listing](#PostgreSQL_trusted_language_extension-example-hook_code_listing) and paste it into your database.

   ```
   SELECT pgtle.install_extension (
     'my_password_check_rules',
     '1.0',
     'Do not let users use the 10 most commonly used passwords',
   $_pgtle_$
     CREATE SCHEMA password_check;
     REVOKE ALL ON SCHEMA password_check FROM PUBLIC;
     GRANT USAGE ON SCHEMA password_check TO PUBLIC;
   
     CREATE TABLE password_check.bad_passwords (plaintext) AS
     VALUES
       ('123456'),
       ('password'),
       ('12345678'),
       ('qwerty'),
       ('123456789'),
       ('12345'),
       ('1234'),
       ('111111'),
       ('1234567'),
       ('dragon');
     CREATE UNIQUE INDEX ON password_check.bad_passwords (plaintext);
   
     CREATE FUNCTION password_check.passcheck_hook(username text, password text, password_type pgtle.password_types, valid_until timestamptz, valid_null boolean)
     RETURNS void AS $$
       DECLARE
         invalid bool := false;
       BEGIN
         IF password_type = 'PASSWORD_TYPE_MD5' THEN
           SELECT EXISTS(
             SELECT 1
             FROM password_check.bad_passwords bp
             WHERE ('md5' || md5(bp.plaintext || username)) = password
           ) INTO invalid;
           IF invalid THEN
             RAISE EXCEPTION 'Cannot use passwords from the common password dictionary';
           END IF;
         ELSIF password_type = 'PASSWORD_TYPE_PLAINTEXT' THEN
           SELECT EXISTS(
             SELECT 1
             FROM password_check.bad_passwords bp
             WHERE bp.plaintext = password
           ) INTO invalid;
           IF invalid THEN
             RAISE EXCEPTION 'Cannot use passwords from the common password dictionary';
           END IF;
         END IF;
       END
     $$ LANGUAGE plpgsql SECURITY DEFINER;
   
     GRANT EXECUTE ON FUNCTION password_check.passcheck_hook TO PUBLIC;
   
     SELECT pgtle.register_feature('password_check.passcheck_hook', 'passcheck');
   $_pgtle_$
   );
   ```

   When the extension has been loaded into your database, you see the output such as the following.

   ```
    install_extension
   -------------------
    t
   (1 row)
   ```

1. While still connected to the database, you can now create the extension. 

   ```
   CREATE EXTENSION my_password_check_rules;
   ```

1. You can confirm that the extension has been created in the database by using the following `psql` metacommand.

   ```
   \dx
                           List of installed extensions
             Name           | Version |   Schema   |                         Description
   -------------------------+---------+------------+-------------------------------------------------------------
    my_password_check_rules | 1.0     | public     | Prevent use of any of the top-ten most common bad passwords
    pg_tle                  | 1.0.1   | pgtle      | Trusted-Language Extensions for PostgreSQL
    plpgsql                 | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

1. Open another terminal session to work with the AWS CLI. You need to modify your custom DB parameter group to turn on the password-check hook. To do so, use the [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) CLI command as shown in the following example.

   ```
   aws rds modify-db-parameter-group \
       --region aws-region \
       --db-parameter-group-name your-custom-parameter-group \
       --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
   ```

   It might take a few minutes for the change to the parameter group setting to take effect. This parameter is dynamic, however, so you don't need to restart the writer instance of the Aurora PostgreSQL DB cluster for the setting to take effect.

1. Open the `psql` session and query the database to verify that the password\$1check hook has been turned on.

   ```
   labdb=> SHOW pgtle.enable_password_check;
   pgtle.enable_password_check
   -----------------------------
   on
   (1 row)
   ```

The password-check hook is now active. You can test it by creating a new role and using one of the bad passwords, as shown in the following example.

```
CREATE ROLE test_role PASSWORD 'password';
ERROR:  Cannot use passwords from the common password dictionary
CONTEXT:  PL/pgSQL function password_check.passcheck_hook(text,text,pgtle.password_types,timestamp with time zone,boolean) line 21 at RAISE
SQL statement "SELECT password_check.passcheck_hook(
    $1::pg_catalog.text, 
    $2::pg_catalog.text, 
    $3::pgtle.password_types, 
    $4::pg_catalog.timestamptz, 
    $5::pg_catalog.bool)"
```

The output has been formatted for readability.

The following example shows that `pgsql` interactive metacommand `\password` behavior is also affected by the password\$1check hook. 

```
postgres=> SET password_encryption TO 'md5';
SET
postgres=> \password
Enter new password for user "postgres":*****
Enter it again:*****
ERROR:  Cannot use passwords from the common password dictionary
CONTEXT:  PL/pgSQL function password_check.passcheck_hook(text,text,pgtle.password_types,timestamp with time zone,boolean) line 12 at RAISE
SQL statement "SELECT password_check.passcheck_hook($1::pg_catalog.text, $2::pg_catalog.text, $3::pgtle.password_types, $4::pg_catalog.timestamptz, $5::pg_catalog.bool)"
```

You can drop this TLE extension and uninstall its source files if you want. For more information, see [Dropping your TLE extensions from a databaseDropping your TLE extensions from a database](PostgreSQL_trusted_language_extension-creating-TLE-extensions.dropping-TLEs.md). 

### Password-check hook code listing
<a name="PostgreSQL_trusted_language_extension-example-hook_code_listing"></a>

The example code shown here defines the specification for the `my_password_check_rules` TLE extension. When you copy this code and paste it into your database, the code for the `my_password_check_rules` extension is loaded into the database, and the `password_check` hook is registered for use by the extension.

```
SELECT pgtle.install_extension (
  'my_password_check_rules',
  '1.0',
  'Do not let users use the 10 most commonly used passwords',
$_pgtle_$
  CREATE SCHEMA password_check;
  REVOKE ALL ON SCHEMA password_check FROM PUBLIC;
  GRANT USAGE ON SCHEMA password_check TO PUBLIC;

  CREATE TABLE password_check.bad_passwords (plaintext) AS
  VALUES
    ('123456'),
    ('password'),
    ('12345678'),
    ('qwerty'),
    ('123456789'),
    ('12345'),
    ('1234'),
    ('111111'),
    ('1234567'),
    ('dragon');
  CREATE UNIQUE INDEX ON password_check.bad_passwords (plaintext);

  CREATE FUNCTION password_check.passcheck_hook(username text, password text, password_type pgtle.password_types, valid_until timestamptz, valid_null boolean)
  RETURNS void AS $$
    DECLARE
      invalid bool := false;
    BEGIN
      IF password_type = 'PASSWORD_TYPE_MD5' THEN
        SELECT EXISTS(
          SELECT 1
          FROM password_check.bad_passwords bp
          WHERE ('md5' || md5(bp.plaintext || username)) = password
        ) INTO invalid;
        IF invalid THEN
          RAISE EXCEPTION 'Cannot use passwords from the common password dictionary';
        END IF;
      ELSIF password_type = 'PASSWORD_TYPE_PLAINTEXT' THEN
        SELECT EXISTS(
          SELECT 1
          FROM password_check.bad_passwords bp
          WHERE bp.plaintext = password
        ) INTO invalid;
        IF invalid THEN
          RAISE EXCEPTION 'Cannot use passwords from the common password dictionary';
        END IF;
      END IF;
    END
  $$ LANGUAGE plpgsql SECURITY DEFINER;

  GRANT EXECUTE ON FUNCTION password_check.passcheck_hook TO PUBLIC;

  SELECT pgtle.register_feature('password_check.passcheck_hook', 'passcheck');
$_pgtle_$
);
```

# Function reference for Trusted Language Extensions for PostgreSQL
<a name="PostgreSQL_trusted_language_extension-functions-reference"></a>

View the following reference documentation about functions available in Trusted Language Extensions for PostgreSQL. Use these functions to install, register, update, and manage your *TLE extensions*, that is, the PostgreSQL extensions that you develop using the Trusted Language Extensions development kit.

**Topics**
+ [pgtle.available\$1extensions](#pgtle.available_extensions)
+ [pgtle.available\$1extension\$1versions](#pgtle.available_extension_versions)
+ [pgtle.extension\$1update\$1paths](#pgtle.extension_update_paths)
+ [pgtle.install\$1extension](#pgtle.install_extension)
+ [pgtle.install\$1update\$1path](#pgtle.install_update_path)
+ [pgtle.register\$1feature](#pgtle.register_feature)
+ [pgtle.register\$1feature\$1if\$1not\$1exists](#pgtle.register_feature_if_not_exists)
+ [pgtle.set\$1default\$1version](#pgtle.set_default_version)
+ [pgtle.uninstall\$1extension(name)](#pgtle.uninstall_extension-name)
+ [pgtle.uninstall\$1extension(name, version)](#pgtle.uninstall_extension-name-version)
+ [pgtle.uninstall\$1extension\$1if\$1exists](#pgtle.uninstall_extension_if_exists)
+ [pgtle.uninstall\$1update\$1path](#pgtle.uninstall_update_path)
+ [pgtle.uninstall\$1update\$1path\$1if\$1exists](#pgtle.uninstall_update_path_if_exists)
+ [pgtle.unregister\$1feature](#pgtle.unregister_feature)
+ [pgtle.unregister\$1feature\$1if\$1exists](#pgtle.unregister_feature_if_exists)

## pgtle.available\$1extensions
<a name="pgtle.available_extensions"></a>

The `pgtle.available_extensions` function is a set-returning function. It returns all available TLE extensions in the database. Each returned row contains information about a single TLE extension.

### Function prototype
<a name="pgtle.available_extensions-prototype"></a>

```
pgtle.available_extensions()
```

### Role
<a name="pgtle.available_extensions-role"></a>

None.

### Arguments
<a name="pgtle.available_extensions-arguments"></a>

None.

### Output
<a name="pgtle.available_extensions-output"></a>
+ `name` – The name of the TLE extension.
+ `default_version` – The version of the TLE extension to use when `CREATE EXTENSION` is called without a version specified.
+ `description` – A more detailed description about the TLE extension.

### Usage example
<a name="pgtle.available_extensions-usage-example"></a>

```
SELECT * FROM pgtle.available_extensions();
```

## pgtle.available\$1extension\$1versions
<a name="pgtle.available_extension_versions"></a>

The `available_extension_versions` function is a set-returning function. It returns a list of all available TLE extensions and their versions. Each row contains information about a specific version of the given TLE extension, including whether it requires a specific role.

### Function prototype
<a name="pgtle.available_extension_versions-prototype"></a>

```
pgtle.available_extension_versions()
```

### Role
<a name="pgtle.available_extension_versions-role"></a>

None.

### Arguments
<a name="pgtle.available_extension_versions-arguments"></a>

None.

### Output
<a name="pgtle.available_extension_versions-output"></a>
+ `name` – The name of the TLE extension.
+ `version` – The version of the TLE extension.
+ `superuser` – This value is always `false` for your TLE extensions. The permissions needed to create the TLE extension or update it are the same as for creating other objects in the given database. 
+ `trusted` – This value is always `false` for a TLE extension.
+ `relocatable` – This value is always `false` for a TLE extension.
+ `schema` – Specifies the name of the schema in which the TLE extension is installed.
+ `requires` – An array containing the names of other extensions needed by this TLE extension.
+ `description` – A detailed description of the TLE extension.

For more information about output values, see [Packaging Related Objects into an Extension > Extension Files](https://www.postgresql.org/docs/current/extend-extensions.html#id-1.8.3.20.11) in the PostgreSQL documentation.

### Usage example
<a name="pgtle.available_extension_versions-example"></a>

```
SELECT * FROM pgtle.available_extension_versions();
```

## pgtle.extension\$1update\$1paths
<a name="pgtle.extension_update_paths"></a>

The `extension_update_paths` function is a set-returning function. It returns a list of all the possible update paths for a TLE extension. Each row includes the available upgrades or downgrades for that TLE extension.

### Function prototype
<a name="pgtle.extension_update_paths-prototype"></a>

```
pgtle.extension_update_paths(name)
```

### Role
<a name="pgtle.extension_update_paths-role"></a>

None.

### Arguments
<a name="pgtle.extension_update_paths-arguments"></a>

`name` – The name of the TLE extension from which to get upgrade paths.

### Output
<a name="pgtle.extension_update_paths-output"></a>
+ `source` – The source version for an update.
+ `target` – The target version for an update.
+ `path` – The upgrade path used to update a TLE extension from `source` version to `target` version, for example, `0.1--0.2`.

### Usage example
<a name="pgtle.extension_update_paths-example"></a>

```
SELECT * FROM pgtle.extension_update_paths('your-TLE');
```

## pgtle.install\$1extension
<a name="pgtle.install_extension"></a>

The `install_extension` function lets you install the artifacts that make up your TLE extension in the database, after which it can be created using the `CREATE EXTENSION` command.

### Function prototype
<a name="pgtle.install_extension-prototype"></a>

```
pgtle.install_extension(name text, version text, description text, ext text, requires text[] DEFAULT NULL::text[])
```

### Role
<a name="pgtle.install_extension-role"></a>

None.

### Arguments
<a name="pgtle.install_extension-arguments"></a>
+ `name` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.
+ `version` – The version of the TLE extension.
+ `description` – A detailed description about the TLE extension. This description is displayed in the `comment` field in `pgtle.available_extensions()`.
+ `ext` – The contents of the TLE extension. This value contains objects such as functions.
+ `requires` – An optional parameter that specifies dependencies for this TLE extension. The `pg_tle` extension is automatically added as a dependency.

Many of these arguments are the same as those that are included in an extension control file for installing a PostgreSQL extension on the file system of a PostgreSQL instance. For more information, see the [Extension Files](http://www.postgresql.org/docs/current/extend-extensions.html#id-1.8.3.20.11) in [Packaging Related Objects into an Extension](https://www.postgresql.org/docs/current/extend-extensions.html) in the PostgreSQL documentation.

### Output
<a name="pgtle.install_extension-output"></a>

This functions returns `OK` on success and `NULL` on error.
+ `OK` – The TLE extension has been successfully installed in the database.
+ `NULL` – The TLE extension hasn't been successfully installed in the database.

### Usage example
<a name="pgtle.install_extension-example"></a>

```
SELECT pgtle.install_extension(
 'pg_tle_test',
 '0.1',
 'My first pg_tle extension',
$_pgtle_$
  CREATE FUNCTION my_test()
  RETURNS INT
  AS $$
    SELECT 42;
  $$ LANGUAGE SQL IMMUTABLE;
$_pgtle_$
);
```

## pgtle.install\$1update\$1path
<a name="pgtle.install_update_path"></a>

The `install_update_path` function provides an update path between two different versions of a TLE extension. This function allows users of your TLE extension to update its version by using the `ALTER EXTENSION ... UPDATE` syntax.

### Function prototype
<a name="pgtle.install_update_path-prototype"></a>

```
pgtle.install_update_path(name text, fromvers text, tovers text, ext text)
```

### Role
<a name="pgtle.install_update_path-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.install_update_path-arguments"></a>
+ `name` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.
+ `fromvers` – The source version of the TLE extension for the upgrade.
+ `tovers` – The destination version of the TLE extension for the upgrade.
+ `ext` – The contents of the update. This value contains objects such as functions.

### Output
<a name="pgtle.install_update_path-output"></a>

None.

### Usage example
<a name="pgtle.install_update_path-example"></a>

```
SELECT pgtle.install_update_path('pg_tle_test', '0.1', '0.2',
  $_pgtle_$
    CREATE OR REPLACE FUNCTION my_test()
    RETURNS INT
    AS $$
      SELECT 21;
    $$ LANGUAGE SQL IMMUTABLE;
  $_pgtle_$
);
```

## pgtle.register\$1feature
<a name="pgtle.register_feature"></a>

The `register_feature` function adds the specified internal PostgreSQL feature to the `pgtle.feature_info` table. PostgreSQL hooks are an example of an internal PostgreSQL feature. The Trusted Language Extensions development kit supports the use of PostgreSQL hooks. Currently, this function supports the following feature.
+ `passcheck` – Registers the password-check hook with your procedure or function that customizes PostgreSQL's password-check behavior.

### Function prototype
<a name="pgtle.register_feature-prototype"></a>

```
pgtle.register_feature(proc regproc, feature pg_tle_feature)
```

### Role
<a name="pgtle.register_feature-role"></a>

`pgtle_admin` 

### Arguments
<a name="pgtle.register_feature-arguments"></a>
+ `proc` – The name of a stored procedure or function to use for the feature.
+ `feature` – The name of the `pg_tle` feature (such as `passcheck`) to register with the function.

### Output
<a name="pgtle.register_feature-output"></a>

None.

### Usage example
<a name="pgtle.register_feature-example"></a>

```
SELECT pgtle.register_feature('pw_hook', 'passcheck');
```

## pgtle.register\$1feature\$1if\$1not\$1exists
<a name="pgtle.register_feature_if_not_exists"></a>

The `pgtle.register_feature_if_not_exists` function adds the specified PostgreSQL feature to the `pgtle.feature_info` table and identifies the TLE extension or other procedure or function that uses the feature. For more information about hooks and Trusted Language Extensions, see [Using PostgreSQL hooks with your TLE extensions](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md). 

### Function prototype
<a name="pgtle.register_feature_if_not_exists-prototype"></a>

```
pgtle.register_feature_if_not_exists(proc regproc, feature pg_tle_feature)
```

### Role
<a name="pgtle.register_feature_if_not_exists-role"></a>

`pgtle_admin` 

### Arguments
<a name="pgtle.register_feature_if_not_exists-arguments"></a>
+ `proc` – The name of a stored procedure or function that contains the logic (code) to use as a feature for your TLE extension. For example, the `pw_hook` code.
+ `feature` – The name of the PostgreSQL feature to register for the TLE function. Currently, the only available feature is the `passcheck` hook. For more information, see [Password-check hook (passcheck)](PostgreSQL_trusted_language_extension-hooks-reference.md#passcheck_hook). 

### Output
<a name="pgtle.register_feature_if_not_exists-output"></a>

Returns `true` after registering the feature for the specified extension. Returns `false` if the feature is already registered.

### Usage example
<a name="pgtle.register_feature_if_not_exists-example"></a>

```
SELECT pgtle.register_feature_if_not_exists('pw_hook', 'passcheck');
```

## pgtle.set\$1default\$1version
<a name="pgtle.set_default_version"></a>

The `set_default_version` function lets you specify a `default_version` for your TLE extension. You can use this function to define an upgrade path and designate the version as the default for your TLE extension. When database users specify your TLE extension in the `CREATE EXTENSION` and `ALTER EXTENSION ... UPDATE` commands, that version of your TLE extension is created in the database for that user.

This function returns `true` on success. If the TLE extension specified in the `name` argument doesn't exist, the function returns an error. Similarly, if the `version` of the TLE extension doesn't exist, it returns an error.

### Function prototype
<a name="pgtle.set_default_version-prototype"></a>

```
pgtle.set_default_version(name text, version text)
```

### Role
<a name="pgtle.set_default_version-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.set_default_version-arguments"></a>
+ `name` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.
+ `version` – The version of the TLE extension to set the default.

### Output
<a name="pgtle.set_default_version-output"></a>
+ `true` – When setting default version succeeds, the function returns `true`.
+ `ERROR` – Returns an error message if a TLE extension with the specified name or version doesn't exist. 

### Usage example
<a name="pgtle.set_default_version-example"></a>

```
SELECT * FROM pgtle.set_default_version('my-extension', '1.1');
```

## pgtle.uninstall\$1extension(name)
<a name="pgtle.uninstall_extension-name"></a>

The `uninstall_extension` function removes all versions of a TLE extension from a database. This function prevents future calls of `CREATE EXTENSION` from installing the TLE extension. If the TLE extension doesn't exist in the database, an error is raised.

The `uninstall_extension` function won't drop a TLE extension that's currently active in the database. To remove a TLE extension that's currently active, you need to explicitly call `DROP EXTENSION` to remove it. 

### Function prototype
<a name="pgtle.uninstall_extension-name-prototype"></a>

```
pgtle.uninstall_extension(extname text)
```

### Role
<a name="pgtle.uninstall_extension-name-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.uninstall_extension-name-arguments"></a>
+ `extname` – The name of the TLE extension to uninstall. This name is the same as the one used with `CREATE EXTENSION` to load the TLE extension for use in a given database. 

### Output
<a name="pgtle.uninstall_extension-name-output"></a>

None. 

### Usage example
<a name="pgtle.uninstall_extension-name-example"></a>

```
SELECT * FROM pgtle.uninstall_extension('pg_tle_test');
```

## pgtle.uninstall\$1extension(name, version)
<a name="pgtle.uninstall_extension-name-version"></a>

The `uninstall_extension(name, version)` function removes the specified version of the TLE extension from the database. This function prevents `CREATE EXTENSION` and `ALTER EXTENSION` from installing or updating a TLE extension to the specified version. This function also removes all update paths for the specified version of the TLE extension. This function won't uninstall the TLE extension if it's currently active in the database. You must explicitly call `DROP EXTENSION` to remove the TLE extension. To uninstall all versions of a TLE extension, see [pgtle.uninstall\$1extension(name)](#pgtle.uninstall_extension-name).

### Function prototype
<a name="pgtle.uninstall_extension-name-version-prototype"></a>

```
pgtle.uninstall_extension(extname text, version text)
```

### Role
<a name="pgtle.uninstall_extension-name-version-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.uninstall_extension-name-version-arguments"></a>
+ `extname` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.
+ `version` – The version of the TLE extension to uninstall from the database.

### Output
<a name="pgtle.uninstall_extension-name-version-output"></a>

None. 

### Usage example
<a name="pgtle.uninstall_extension-name-version-example"></a>

```
SELECT * FROM pgtle.uninstall_extension('pg_tle_test', '0.2');
```

## pgtle.uninstall\$1extension\$1if\$1exists
<a name="pgtle.uninstall_extension_if_exists"></a>

The `uninstall_extension_if_exists` function removes all versions of a TLE extension from a given database. If the TLE extension doesn't exist, the function returns silently (no error message is raised). If the specified extension is currently active within a database, this function doesn't drop it. You must explicitly call `DROP EXTENSION` to remove the TLE extension before using this function to uninstall its artifacts.

### Function prototype
<a name="pgtle.uninstall_extension_if_exists-prototype"></a>

```
pgtle.uninstall_extension_if_exists(extname text)
```

### Role
<a name="pgtle.uninstall_extension_if_exists-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.uninstall_extension_if_exists-arguments"></a>
+ `extname` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.

### Output
<a name="pgtle.uninstall_extension_if_exists-output"></a>

The `uninstall_extension_if_exists` function returns `true` after uninstalling the specified extension. If the specified extension doesn't exist, the function returns `false`.
+ `true` – Returns `true` after uninstalling the TLE extension.
+ `false` – Returns `false` when the TLE extension doesn't exist in the database.

### Usage example
<a name="pgtle.uninstall_extension_if_exists-example"></a>

```
SELECT * FROM pgtle.uninstall_extension_if_exists('pg_tle_test');
```

## pgtle.uninstall\$1update\$1path
<a name="pgtle.uninstall_update_path"></a>

The `uninstall_update_path` function removes the specific update path from a TLE extension. This prevents `ALTER EXTENSION ... UPDATE TO` from using this as an update path.

If the TLE extension is currently being used by one of the versions on this update path, it remains in the database.

If the update path specified doesn't exist, this function raises an error.

### Function prototype
<a name="pgtle.uninstall_update_path-prototype"></a>

```
pgtle.uninstall_update_path(extname text, fromvers text, tovers text)
```

### Role
<a name="pgtle.uninstall_update_path-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.uninstall_update_path-arguments"></a>
+ `extname` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.
+ `fromvers` – The source version of the TLE extension used on the update path.
+  `tovers` – The destination version of the TLE extension used on the update path.

### Output
<a name="pgtle.uninstall_update_path-output"></a>

None.

### Usage example
<a name="pgtle.uninstall_update_path-example"></a>

```
SELECT * FROM pgtle.uninstall_update_path('pg_tle_test', '0.1', '0.2');
```

## pgtle.uninstall\$1update\$1path\$1if\$1exists
<a name="pgtle.uninstall_update_path_if_exists"></a>

The `uninstall_update_path_if_exists` function is similar to `uninstall_update_path` in that it removes the specified update path from a TLE extension. However, if the update path doesn't exist, this function doesn't raise an error message. Instead, the function returns `false`.

### Function prototype
<a name="pgtle.uninstall_update_path_if_exists-prototype"></a>

```
pgtle.uninstall_update_path_if_exists(extname text, fromvers text, tovers text)
```

### Role
<a name="pgtle.uninstall_update_path_if_exists-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.uninstall_update_path_if_exists-arguments"></a>
+ `extname` – The name of the TLE extension. This value is used when calling `CREATE EXTENSION`.
+ `fromvers` – The source version of the TLE extension used on the update path.
+ `tovers` – The destination version of the TLE extension used on the update path.

### Output
<a name="pgtle.uninstall_update_path_if_exists-output"></a>
+ `true` – The function has successfully updated the path for the TLE extension.
+ `false` – The function wasn't able to update the path for the TLE extension.

### Usage example
<a name="pgtle.uninstall_update_path_if_exists-example"></a>

```
SELECT * FROM pgtle.uninstall_update_path_if_exists('pg_tle_test', '0.1', '0.2');
```

## pgtle.unregister\$1feature
<a name="pgtle.unregister_feature"></a>

The `unregister_feature` function provides a way to remove functions that were registered to use `pg_tle` features, such as hooks. For information about registering a feature, see [pgtle.register\$1feature](#pgtle.register_feature).

### Function prototype
<a name="pgtle.unregister_feature-prototype"></a>

```
pgtle.unregister_feature(proc regproc, feature pg_tle_features)
```

### Role
<a name="pgtle.unregister_feature-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.unregister_feature-arguments"></a>
+ `proc` – The name of a stored function to register with a `pg_tle` feature.
+ `feature` – The name of the `pg_tle` feature to register with the function. For example, `passcheck` is a feature that can be registered for use by the trusted language extensions that you develop. For more information, see [Password-check hook (passcheck)](PostgreSQL_trusted_language_extension-hooks-reference.md#passcheck_hook). 

### Output
<a name="pgtle.unregister_feature-output"></a>

None.

### Usage example
<a name="pgtle.unregister_feature-example"></a>

```
SELECT * FROM pgtle.unregister_feature('pw_hook', 'passcheck');
```

## pgtle.unregister\$1feature\$1if\$1exists
<a name="pgtle.unregister_feature_if_exists"></a>

The `unregister_feature` function provides a way to remove functions that were registered to use `pg_tle` features, such as hooks. For more information, see [Using PostgreSQL hooks with your TLE extensions](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md). Returns `true` after successfully unregistering the feature. Returns `false` if the feature wasn't registered.

For information about registering `pg_tle` features for your TLE extensions, see [pgtle.register\$1feature](#pgtle.register_feature).

### Function prototype
<a name="pgtle.unregister_feature_if_exists-prototype"></a>

```
pgtle.unregister_feature_if_exists('proc regproc', 'feature pg_tle_features')
```

### Role
<a name="pgtle.unregister_feature_if_exists-role"></a>

`pgtle_admin`

### Arguments
<a name="pgtle.unregister_feature_if_exists-arguments"></a>
+ `proc` – The name of the stored function that was registered to include a `pg_tle` feature.
+ `feature` – The name of the `pg_tle` feature that was registered with the trusted language extension.

### Output
<a name="pgtle.unregister_feature_if_exists-output"></a>

Returns `true` or `false`, as follows.
+ `true` – The function has successfully unregistered the feature from extension.
+ `false` – The function wasn't able to unregister the feature from the TLE extension.

### Usage example
<a name="pgtle.unregister_feature_if_exists-example"></a>

```
SELECT * FROM pgtle.unregister_feature_if_exists('pw_hook', 'passcheck');
```

# Hooks reference for Trusted Language Extensions for PostgreSQL
<a name="PostgreSQL_trusted_language_extension-hooks-reference"></a>

Trusted Language Extensions for PostgreSQL supports PostgreSQL hooks. A *hook* is an internal callback mechanism available to developers for extending PostgreSQL's core functionality. By using hooks, developers can implement their own functions or procedures for use during various database operations, thereby modifying PostgreSQL's behavior in some way. For example, you can use a `passcheck` hook to customize how PostgreSQL handles the passwords supplied when creating or changing passwords for users (roles).

View the following documentation to learn about the passcheck hook available for your TLE extensions. To learn more about the available hooks including the client authentication hook, see [Trusted Language Extensions hooks](https://github.com/aws/pg_tle/blob/main/docs/04_hooks.md).

## Password-check hook (passcheck)
<a name="passcheck_hook"></a>

The `passcheck` hook is used to customize PostgreSQL behavior during the password-checking process for the following SQL commands and `psql` metacommand.
+ `CREATE ROLE username ...PASSWORD` – For more information, see [CREATE ROLE](https://www.postgresql.org/docs/current/sql-createrole.html) in the PostgreSQL documentation.
+ `ALTER ROLE username...PASSWORD` – For more information, see [ALTER ROLE](https://www.postgresql.org/docs/current/sql-alterrole.html) in the PostgreSQL documentation.
+ `\password username` – This interactive `psql` metacommand securely changes the password for the specified user by hashing the password before transparently using the `ALTER ROLE ... PASSWORD` syntax. The metacommand is a secure wrapper for the `ALTER ROLE ... PASSWORD` command, thus the hook applies to the behavior of the `psql` metacommand.

For an example, see [Password-check hook code listing](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md#PostgreSQL_trusted_language_extension-example-hook_code_listing).

**Contents**
+ [Function prototype](#passcheck_hook-prototype)
+ [Arguments](#passcheck_hook-arguments)
+ [Configuration](#passcheck_hook-configuration)
+ [Usage notes](#passcheck_hook-usage)

### Function prototype
<a name="passcheck_hook-prototype"></a>

```
passcheck_hook(username text, password text, password_type pgtle.password_types, valid_until timestamptz, valid_null boolean)
```

### Arguments
<a name="passcheck_hook-arguments"></a>

A `passcheck` hook function takes the following arguments.
+ `username` – The name (as text) of the role (username) that's setting a password.
+ `password` – The plaintext or hashed password. The password entered should match the type specified in `password_type`.
+ `password_type` – Specify the `pgtle.password_type` format of the password. This format can be one of the following options.
  + `PASSWORD_TYPE_PLAINTEXT` – A plaintext password.
  + `PASSWORD_TYPE_MD5` – A password that's been hashed using MD5 (message digest 5) algorithm.
  + `PASSWORD_TYPE_SCRAM_SHA_256` – A password that's been hashed using SCRAM-SHA-256 algorithm.
+ `valid_until` – Specify the time when the password becomes invalid. This argument is optional. If you use this argument, specify the time as a `timestamptz` value.
+ `valid_null` – If this Boolean is set to `true`, the `valid_until` option is set to `NULL`.

### Configuration
<a name="passcheck_hook-configuration"></a>

The function `pgtle.enable_password_check` controls whether the passcheck hook is active. The passcheck hook has three possible settings.
+ `off` – Turns off the `passcheck` password-check hook. This is the default value.
+ `on` – Turns on the `passcode` password-check hook so that passwords are checked against the table.
+ `require` – Requires a password check hook to be defined.

### Usage notes
<a name="passcheck_hook-usage"></a>

To turn the `passcheck` hook on or off, you need to modify the custom DB parameter group for the writer instance of your Aurora PostgreSQL DB cluster.

For Linux, macOS, or Unix:

```
aws rds modify-db-parameter-group \
    --region aws-region \
    --db-parameter-group-name your-custom-parameter-group \
    --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
```

For Windows:

```
aws rds modify-db-parameter-group ^
    --region aws-region ^
    --db-parameter-group-name your-custom-parameter-group ^
    --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
```

# Amazon Aurora PostgreSQL reference
<a name="AuroraPostgreSQL.Reference"></a>

In the following topics, you can find information about collations, functions, parameters, and wait events in Amazon Aurora PostgreSQL.

**Topics**
+ [Aurora PostgreSQL collations for EBCDIC and other mainframe migrations](#AuroraPostgreSQL.Reference.Collations.mainframe.migration)
+ [Collations supported in Aurora PostgreSQL](PostgreSQL-Collations.md)
+ [Aurora PostgreSQL functions reference](Appendix.AuroraPostgreSQL.Functions.md)
+ [Amazon Aurora PostgreSQL parameters](AuroraPostgreSQL.Reference.ParameterGroups.md)
+ [Amazon Aurora PostgreSQL wait events](AuroraPostgreSQL.Reference.Waitevents.md)

## Aurora PostgreSQL collations for EBCDIC and other mainframe migrations
<a name="AuroraPostgreSQL.Reference.Collations.mainframe.migration"></a>

Migrating mainframe applications to new platforms such as AWS ideally preserves application behavior. To preserve application behavior on a new platform exactly as it was on the mainframe requires that migrated data be collated using the same collation and sorting rules. For example, many Db2 migration solutions shift null values to u0180 (Unicode position 0180), so these collations sort u0180 first. This is one example of how collations can vary from their mainframe source and why it's necessary to choose a collation that better maps to the original EBCDIC collation. 

Aurora PostgreSQL 14.3 and higher versions provide many ICU and EBCDIC collations to support such migration to AWS using the AWS Mainframe Modernization service. To learn more about this service, see [What is AWS Mainframe Modernization?](https://docs.aws.amazon.com/m2/latest/userguide/what-is-m2.html) 

 In the following table, you can find Aurora PostgreSQL–provided collations. These collations follow EBCDIC rules and ensure that mainframe applications function the same on AWS as they did in the mainframe environment. The collation name includes the relevant code page, (cp*nnnn*), so that you can choose the appropriate collation for your mainframe source. For example, use `en-US-cp037-x-icu` for to achieve the collation behavior for EBCDIC data that originated from a mainframe application that used code page 037.


| EBCDIC collations  | AWS Blu Age collations | AWS Micro Focus collations | 
| --- | --- | --- | 
| da-DK-cp1142-x-icu | da-DK-cp1142b-x-icu | da-DK-cp1142m-x-icu | 
| da-DK-cp277-x-icu | da-DK-cp277b-x-icu | – | 
| de-DE-cp1141-x-icu | de-DE-cp1141b-x-icu | de-DE-cp1141m-x-icu | 
| de-DE-cp273-x-icu | de-DE-cp273b-x-icu | – | 
| en-GB-cp1146-x-icu | en-GB-cp1146b-x-icu | en-GB-cp1146m-x-icu | 
| en-GB-cp285-x-icu | en-GB-cp285b-x-icu | – | 
| en-US-cp037-x-icu | en-US-cp037b-x-icu | – | 
| en-US-cp1140-x-icu | en-US-cp1140b-x-icu | en-US-cp1140m-x-icu | 
| es-ES-cp1145-x-icu | es-ES-cp1145b-x-icu | es-ES-cp1145m-x-icu | 
| es-ES-cp284-x-icu | es-ES-cp284b-x-icu | – | 
| fi-FI-cp1143-x-icu | fi-FI-cp1143b-x-icu | fi-FI-cp1143m-x-icu | 
| fi-FI-cp278-x-icu | fi-FI-cp278b-x-icu | – | 
| fr-FR-cp1147-x-icu | fr-FR-cp1147b-x-icu | fr-FR-cp1147m-x-icu | 
| fr-FR-cp297-x-icu | fr-FR-cp297b-x-icu | – | 
| it-IT-cp1144-x-icu | it-IT-cp1144b-x-icu | it-IT-cp1144m-x-icu | 
| it-IT-cp280-x-icu | it-IT-cp280b-x-icu | – | 
| nl-BE-cp1148-x-icu | nl-BE-cp1148b-x-icu | nl-BE-cp1148m-x-icu | 
| nl-BE-cp500-x-icu | nl-BE-cp500b-x-icu | – | 

To learn more about AWS Blu Age, see [Tutorial: Managed Runtime for AWS Blu Age](https://docs.aws.amazon.com/m2/latest/userguide/tutorial-runtime-ba.html) in the *AWS Mainframe Modernization User Guide*. 

For more information about working with AWS Micro Focus, see [Tutorial: Managed Runtime for Micro Focus](https://docs.aws.amazon.com/m2/latest/userguide/tutorial-runtime.html) in the *AWS Mainframe Modernization User Guide*.

For more information about managing collations in PostgreSQL, see [Collation Support](https://www.postgresql.org/docs/current/collation.html) in the PostgreSQL documentation.

# Collations supported in Aurora PostgreSQL
<a name="PostgreSQL-Collations"></a>

Collations are set of rules that determine how character strings stored in the database are sorted and compared. Collations play a fundamental role in the computer system and are included as part of the operating system. Collations change over time when new characters are added to languages or when ordering rules change.

Collation libraries define specific rules and algorithms for a collation. The most popular collation libraries used within PostgreSQL are GNU C (glibc) and Internationalization components for Unicode (ICU). By default, Aurora PostgreSQL uses the glibc collation that includes unicode character sort orders for multi-byte character sequences.

When you create a new Aurora PostgreSQL DB cluster, it checks the operating system for the available collation. The PostgreSQL parameters of the `CREATE DATABASE` command `LC_COLLATE` and `LC_CTYPE` are used to specify a collation, which stands as the default collation in that database. Alternatively, you can also use the `LOCALE` parameter in `CREATE DATABASE` to set these parameters. This determines the default collation for character strings in the database and the rules for classifying characters as letters, numbers, or symbols. You can also choose a collation to use on a column, index, or on a query.

Aurora PostgreSQL depends on the glibc library in the operating system for collation support. Aurora PostgreSQL instance is periodically updated with the latest versions of the operating system. These updates sometimes include a newer version of the glibc library. Rarely, newer versions of glibc change the sort order or collation of some characters, which can cause the data to sort differently or produce invalid index entries. If you discover sort order issues for collation during an update, you might need to rebuild the indexes.

To reduce the possible impacts of the glibc updates, Aurora PostgreSQL now includes an independent default collation library. This collation library is available in Aurora PostgreSQL 14.6, 13.9, 12.13, 11.18 and newer minor version releases. It is compatible with glibc 2.26-59.amzn2, and provides sort order stability to prevent incorrect query results.

# Aurora PostgreSQL functions reference
<a name="Appendix.AuroraPostgreSQL.Functions"></a>

Following, you can find a list of Aurora PostgreSQL functions that are available for your Aurora DB clusters that run the Aurora PostgreSQL-Compatible Edition DB engine. These Aurora PostgreSQL functions are in addition to the standard PostgreSQL functions. For more information about standard PostgreSQL functions, see [PostgreSQL–Functions and Operators](https://www.postgresql.org/docs/current/functions.html). 

## Overview
<a name="Appendix.AuroraPostgreSQL.Functions.Overview"></a>

You can use the following functions for Amazon RDS DB instances running Aurora PostgreSQL:
+ [aurora\$1db\$1instance\$1identifier](aurora_db_instance_identifier.md)
+ [aurora\$1ccm\$1status](aurora_ccm_status.md)
+ [aurora\$1global\$1db\$1instance\$1status](aurora_global_db_instance_status.md)
+ [aurora\$1global\$1db\$1status](aurora_global_db_status.md)
+ [aurora\$1list\$1builtins](aurora_list_builtins.md)
+ [aurora\$1replica\$1status](aurora_replica_status.md)
+ [aurora\$1stat\$1activity](aurora_stat_activity.md)
+ [aurora\$1stat\$1backend\$1waits](aurora_stat_backend_waits.md)
+ [aurora\$1stat\$1bgwriter](aurora_stat_bgwriter.md)
+ [aurora\$1stat\$1database](aurora_stat_database.md)
+ [aurora\$1stat\$1dml\$1activity](aurora_stat_dml_activity.md)
+ [aurora\$1stat\$1get\$1db\$1commit\$1latency](aurora_stat_get_db_commit_latency.md)
+ [aurora\$1stat\$1logical\$1wal\$1cache](aurora_stat_logical_wal_cache.md)
+ [aurora\$1stat\$1memctx\$1usage](aurora_stat_memctx_usage.md)
+ [aurora\$1stat\$1optimized\$1reads\$1cache](aurora_stat_optimized_reads_cache.md)
+ [aurora\$1stat\$1plans](aurora_stat_plans.md)
+ [aurora\$1stat\$1reset\$1wal\$1cache](aurora_stat_reset_wal_cache.md)
+ [aurora\$1stat\$1statements](aurora_stat_statements.md)
+ [aurora\$1stat\$1system\$1waits](aurora_stat_system_waits.md)
+ [aurora\$1stat\$1wait\$1event](aurora_stat_wait_event.md)
+ [aurora\$1stat\$1wait\$1type](aurora_stat_wait_type.md)
+  [aurora\$1version](aurora_version.md) 
+ [aurora\$1volume\$1logical\$1start\$1lsn](aurora_volume_logical_start_lsn.md)
+ [aurora\$1wait\$1report](aurora_wait_report.md) 

# aurora\$1db\$1instance\$1identifier
<a name="aurora_db_instance_identifier"></a>

Reports the name of the DB instance name to which you're connected.

## Syntax
<a name="aurora_db_instance_identifier-syntax"></a>



```
aurora_db_instance_identifier()
```

## Arguments
<a name="aurora_db_instance_identifier-arguments"></a>

None

## Return type
<a name="aurora_db_instance_identifier-return-type"></a>

VARCHAR string

## Usage notes
<a name="aurora_db_instance_identifier-usage-notes"></a>

This function displays the name of Aurora PostgreSQL-Compatible Edition cluster's DB instance for your database client or application connection. 

This function is available starting with the release of Aurora PostgreSQL versions 13.7, 12.11, 11.16, 10.21 and for all other later versions. 

## Examples
<a name="aurora_db_instance_identifier-examples"></a>

The following example shows results of calling the `aurora_db_instance_identifier` function.

```
=> SELECT aurora_db_instance_identifier();
aurora_db_instance_identifier 
-------------------------------
 test-my-instance-name
```

You can join the results of this function with the `aurora_replica_status` function to obtain details about the DB instance for your connection. The [aurora\$1replica\$1status](aurora_replica_status.md) alone doesn't provide show you which DB instance you're using. The following example shows you how. 

```
=> SELECT *
    FROM aurora_replica_status() rt, 
         aurora_db_instance_identifier() di
    WHERE rt.server_id = di;
-[ RECORD 1 ]----------------------+-----------------------
server_id                          | test-my-instance-name
session_id                         | MASTER_SESSION_ID
durable_lsn                        | 88492069
highest_lsn_rcvd                   | 
current_read_lsn                   | 
cur_replay_latency_in_usec         | 
active_txns                        | 
is_current                         | t
last_transport_error               | 0
last_error_timestamp               | 
last_update_timestamp              | 2022-06-03 11:18:25+00
feedback_xmin                      | 
feedback_epoch                     | 
replica_lag_in_msec                | 
log_stream_speed_in_kib_per_second | 0
log_buffer_sequence_number         | 0
oldest_read_view_trx_id            | 
oldest_read_view_lsn               | 
pending_read_ios                   | 819
```

# aurora\$1ccm\$1status
<a name="aurora_ccm_status"></a>

Displays the status of cluster cache manager. 

## Syntax
<a name="aurora_ccm_status-syntax"></a>

 

```
aurora_ccm_status()
```

## Arguments
<a name="aurora_ccm_status-arguments"></a>

None.

## Return type
<a name="aurora_ccm_status-return-type"></a>

SETOF record with the following columns:
+ `buffers_sent_last_minute` – The number of buffers sent to the designated reader in the past minute. 
+ `buffers_found_last_minute` – The number of frequently accessed buffers identified during the past minute. 
+ `buffers_sent_last_scan` – The number of buffers sent to the designated reader during the last complete scan of the buffer cache. 
+ `buffers_found_last_scan` – The number of frequently accessed buffers sent during the last complete scan of the buffer cache. Buffers that are already cached on the designated reader aren't sent. 
+ `buffers_sent_current_scan` – The number of buffers sent during the current scan. 
+ `buffers_found_current_scan` – The number of frequently accessed buffers that were identified in the current scan. 
+ `current_scan_progress` – The number of buffers visited so far during the current scan.

## Usage notes
<a name="aurora_ccm_status-usage-notes"></a>

You can use this function to check and monitor the cluster cache management (CCM) feature. This function works only if CCM is active on your Aurora PostgreSQL DB cluster. To use this function you connect to the Write DB instance on your Aurora PostgreSQL DB cluster.

You turn on CCM for an Aurora PostgreSQL DB cluster by setting the `apg_ccm_enabled` to 1 in the cluster's custom DB cluster parameter group. To learn how, see [Configuring cluster cache management](AuroraPostgreSQL.cluster-cache-mgmt.md#AuroraPostgreSQL.cluster-cache-mgmt.Configure). 

Cluster cache management is active on an Aurora PostgreSQL DB cluster when the cluster has an Aurora Reader instance configured as follows:
+ The Aurora Reader instance uses same DB instance class type and size as the cluster's Writer instance. 
+ The Aurora Reader instance is configured as Tier-0 for the cluster. If the cluster has more than one Reader, this is its only Tier-0 Reader. 

Setting more than one Reader to Tier-0 disables CCM. When CCM is disabled, calling this function returns the following error message:

```
ERROR: Cluster Cache Manager is disabled
```

You can also the PostgreSQL pg\$1buffercache extension to analyze the buffer cache. For more information, see [pg\$1buffercache](https://www.postgresql.org/docs/current/pgbuffercache.html) in the PostgreSQL documentation. 

For more information, see [Introduction to Aurora PostgreSQL cluster cache management](https://aws.amazon.com/blogs/database/introduction-to-aurora-postgresql-cluster-cache-management/).

## Examples
<a name="aurora_ccm_status-examples"></a>

The following example shows the results of calling the `aurora_ccm_status` function. This first example shows CCM statistics.

```
=> SELECT * FROM aurora_ccm_status();
 buffers_sent_last_minute | buffers_found_last_minute | buffers_sent_last_scan | buffers_found_last_scan | buffers_sent_current_scan | buffers_found_current_scan | current_scan_progress
--------------------------+---------------------------+------------------------+-------------------------+---------------------------+----------------------------+-----------------------
                  2242000 |                   2242003 |               17920442 |                17923410 |                  14098000 |                   14100964 |              15877443
```

For more complete detail, you can use expanded display, as shown following:

```
\x
Expanded display is on.
SELECT *  FROM aurora_ccm_status();
[ RECORD 1 ]-----------------------+---------
buffers_sent_last_minute           | 2242000
buffers_found_last_minute          | 2242003
buffers_sent_last_scan             | 17920442
buffers_found_last_scan            | 17923410
buffers_sent_current_scan          | 14098000
buffers_found_current_scan         | 14100964
current_scan_progress              | 15877443
```

This example shows how to check warm rate and warm percentage.

```
=> SELECT buffers_sent_last_minute * 8/60 AS warm_rate_kbps,
100 * (1.0-buffers_sent_last_scan/buffers_found_last_scan) AS warm_percent 
FROM aurora_ccm_status ();
 warm_rate_kbps | warm_percent
----------------+--------------
 16523 |        100.0
```

# aurora\$1global\$1db\$1instance\$1status
<a name="aurora_global_db_instance_status"></a>

Displays the status of all Aurora instances, including replicas in an Aurora global DB cluster. 

## Syntax
<a name="aurora_global_db_instance_status-syntax"></a>

 

```
aurora_global_db_instance_status()
```

## Arguments
<a name="aurora_global_db_instance_status-arguments"></a>

None

## Return type
<a name="aurora_global_db_instance_status-return-type"></a>

SETOF record with the following columns:
+ `server_id` – The identifier of the DB instance. 
+ `session_id` – A unique identifier for the current session. A value of `MASTER_SESSION_ID` identifies the Writer (primary) DB instance. 
+ `aws_region` – The AWS Region in which this global DB instance runs. For a list of Regions, see [Region availability](Concepts.RegionsAndAvailabilityZones.md#Aurora.Overview.Availability). 
+ `durable_lsn` – The log sequence number (LSN) made durable in storage. A log sequence number (LSN) is a unique sequential number that identifies a record in the database transaction log. LSNs are ordered such that a larger LSN represents a later transaction.
+ `highest_lsn_rcvd` – The highest LSN received by the DB instance from the writer DB instance. 
+ `feedback_epoch` – The epoch that the DB instance uses when it generates hot standby information. A *hot standby* is a DB instance that supports connections and queries while the primary DB is in recovery or standby mode. The hot standby information includes the epoch (point in time) and other details about the DB instance that's being used as a hot standby. For more information, see [Hot Standby](https://www.postgresql.org/docs/current/hot-standby.html) in the PostgreSQL documentation. 
+ `feedback_xmin` – The minimum (oldest) active transaction ID used by the DB instance. 
+ `oldest_read_view_lsn` – The oldest LSN used by the DB instance to read from storage. 
+ `visibility_lag_in_msec` – How far this DB instance is lagging behind the writer DB instance in milliseconds.

## Usage notes
<a name="aurora_global_db_instance_status-usage-notes"></a>

This function shows replication statistics for an Aurora DB cluster. For each Aurora PostgreSQL DB instance in the cluster, the function shows a row of data that includes any cross-Region replicas in a global database configuration.

You can run this function from any instance in an Aurora PostgreSQL DB cluster or an Aurora PostgreSQL global database. The function returns details about lag for all replica instances.

To learn more about monitoring lag using this function (`aurora_global_db_instance_status`) or by using using `aurora_global_db_status`, see [Monitoring Aurora PostgreSQL-based global databases](aurora-global-database-monitoring.md#aurora-global-database-monitoring.postgres).

For more information about Aurora global databases, see [Overview of Amazon Aurora Global Database](aurora-global-database.md#aurora-global-database-overview). 

To get started with Aurora global databases, see [Getting started with Amazon Aurora Global Database](aurora-global-database-getting-started.md) or see [Amazon Aurora FAQs](https://aws.amazon.com/rds/aurora/faqs/). 

## Examples
<a name="aurora_global_db_instance_status-examples"></a>

This example shows cross-Region instance stats.

```
=> SELECT *
  FROM aurora_global_db_instance_status();
                server_id                 |              session_id              |  aws_region  | durable_lsn | highest_lsn_rcvd | feedback_epoch | feedback_xmin | oldest_read_view_lsn | visibility_lag_in_msec
------------------------------------------+--------------------------------------+--------------+-------------+------------------+----------------+---------------+----------------------+------------------------
 db-119-001-instance-01                   | MASTER_SESSION_ID                    | eu-west-1    |  2534560273 |           [NULL] |         [NULL] |        [NULL] |               [NULL] |                 [NULL]
 db-119-001-instance-02                   | 4ecff34d-d57c-409c-ba28-278b31d6fc40 | eu-west-1    |  2534560266 |       2534560273 |              0 |      19669196 |           2534560266 |                      6
 db-119-001-instance-03                   | 3e8a20fc-be86-43d5-95e5-bdf19d27ad6b | eu-west-1    |  2534560266 |       2534560273 |              0 |      19669196 |           2534560266 |                      6
 db-119-001-instance-04                   | fc1b0023-e8b4-4361-bede-2a7e926cead6 | eu-west-1    |  2534560266 |       2534560273 |              0 |      19669196 |           2534560254 |                     23
 db-119-001-instance-05                   | 30319b74-3f08-4e13-9728-e02aa1aa8649 | eu-west-1    |  2534560266 |       2534560273 |              0 |      19669196 |           2534560254 |                     23
 db-119-001-global-instance-1             | a331ffbb-d982-49ba-8973-527c96329c60 | eu-central-1 |  2534560254 |       2534560266 |              0 |      19669196 |           2534560247 |                    996
 db-119-001-global-instance-1             | e0955367-7082-43c4-b4db-70674064a9da | eu-west-2    |  2534560254 |       2534560266 |              0 |      19669196 |           2534560247 |                     14
 db-119-001-global-instance-1-eu-west-2a  | 1248dc12-d3a4-46f5-a9e2-85850491a897 | eu-west-2    |  2534560254 |       2534560266 |              0 |      19669196 |           2534560247 |                      0
```

This example shows how to check global replica lag in milliseconds. 

```
=> SELECT CASE
          WHEN 'MASTER_SESSION_ID' = session_id THEN 'Primary'
         ELSE 'Secondary'
      END AS global_role,
      aws_region,
      server_id,
      visibility_lag_in_msec
  FROM aurora_global_db_instance_status()
  ORDER BY 1, 2, 3;
   global_role |  aws_region  |                server_id                | visibility_lag_in_msec
-------------+--------------+-----------------------------------------+------------------------
 Primary     | eu-west-1    | db-119-001-instance-01                  |                 [NULL]
 Secondary   | eu-central-1 | db-119-001-global-instance-1            |                     13
 Secondary   | eu-west-1    | db-119-001-instance-02                  |                     10
 Secondary   | eu-west-1    | db-119-001-instance-03                  |                      9
 Secondary   | eu-west-1    | db-119-001-instance-04                  |                      2
 Secondary   | eu-west-1    | db-119-001-instance-05                  |                     18
 Secondary   | eu-west-2    | db-119-001-global-instance-1            |                     14
 Secondary   | eu-west-2    | db-119-001-global-instance-1-eu-west-2a |                     13
```

This example shows how to check min, max and average lag per AWS Region from the global database configuration.

```
=> SELECT 'Secondary' global_role,
       aws_region,
       min(visibility_lag_in_msec) min_lag_in_msec,
       max(visibility_lag_in_msec) max_lag_in_msec,
       round(avg(visibility_lag_in_msec),0) avg_lag_in_msec
  FROM aurora_global_db_instance_status()
 WHERE aws_region NOT IN (SELECT   aws_region
                              FROM aurora_global_db_instance_status()
                             WHERE session_id='MASTER_SESSION_ID')
                          GROUP BY aws_region
UNION ALL
SELECT  'Primary' global_role,
        aws_region,
        NULL,
        NULL,
        NULL
    FROM aurora_global_db_instance_status()
   WHERE session_id='MASTER_SESSION_ID'
ORDER BY 1, 5;
 global_role |  aws_region  | min_lag_in_msec | max_lag_in_msec | avg_lag_in_msec
------------+--------------+-----------------+-----------------+-----------------
 Primary    | eu-west-1    |          [NULL] |          [NULL] |          [NULL]
 Secondary  | eu-central-1 |             133 |             133 |             133
 Secondary  | eu-west-2    |               0 |             495 |             248
```

# aurora\$1global\$1db\$1status
<a name="aurora_global_db_status"></a>

Displays information about various aspects of Aurora global database lag, specifically, lag of the underlying Aurora storage (so called durability lag) and lag between the recovery point objective (RPO).

## Syntax
<a name="aurora_global_db_status-syntax"></a>

 

```
aurora_global_db_status()
```

## Arguments
<a name="aurora_global_db_status-arguments"></a>

None.

## Return type
<a name="aurora_global_db_status-return-type"></a>

SETOF record with the following columns:
+ `aws_region` – The AWS Region that this DB cluster is in. For a complete listing of AWS Regions by engine, see [Regions and Availability Zones](Concepts.RegionsAndAvailabilityZones.md). 
+ `highest_lsn_written` – The highest log sequence number (LSN) that currently exists on this DB cluster. A log sequence number (LSN) is a unique sequential number that identifies a record in the database transaction log. LSNs are ordered such that a larger LSN represents a later transaction. 
+ `durability_lag_in_msec` – The difference in the timestamp values between the `highest_lsn_written` on a secondary DB cluster and the `highest_lsn_written` on the primary DB cluster. A value of -1 identifies the primary DB cluster of the Aurora global database. 
+ `rpo_lag_in_msec` – The recovery point objective (RPO) lag. The RPO lag is the time it takes for the most recent user transaction COMMIT to be stored on a secondary DB cluster after it's been stored on the primary DB cluster of the Aurora global database. A value of -1 denotes the primary DB cluster (and thus, lag isn't relevant). 

  In simple terms, this metric calculates the recovery point objective for each Aurora PostgreSQL DB cluster in the Aurora global database, that is, how much data might be lost if there were an outage. As with lag, RPO is measured in time.
+ `last_lag_calculation_time` – The timestamp that specifies when values were last calculated for `durability_lag_in_msec` and `rpo_lag_in_msec`. A time value such as `1970-01-01 00:00:00+00` means this is the primary DB cluster. 
+ `feedback_epoch` – The epoch that the secondary DB cluster uses when it generates hot standby information. A *hot standby* is a DB instance that supports connections and queries while the primary DB is in recovery or standby mode. The hot standby information includes the epoch (point in time) and other details about the DB instance that's being used as a hot standby. For more information, see [Hot Standby](https://www.postgresql.org/docs/current/hot-standby.html) in the PostgreSQL documentation.
+ `feedback_xmin` – The minimum (oldest) active transaction ID used by a secondary DB cluster.

## Usage notes
<a name="aurora_global_db_status-usage-notes"></a>

All currently available Aurora PostgreSQL versions support this function. This function shows replication statistics for an Aurora global database. It shows one row for each DB cluster in an Aurora PostgreSQL global database. You can run this function from any instance in your Aurora PostgreSQL global database.

To evaluate Aurora global database replication lag, which is the visible data lag, see [aurora\$1global\$1db\$1instance\$1status](aurora_global_db_instance_status.md).

To learn more about using `aurora_global_db_status` and `aurora_global_db_instance_status` to monitor Aurora global database lag, see [Monitoring Aurora PostgreSQL-based global databases](aurora-global-database-monitoring.md#aurora-global-database-monitoring.postgres). For more information about Aurora global databases, see [Overview of Amazon Aurora Global Database](aurora-global-database.md#aurora-global-database-overview). 

## Examples
<a name="aurora_global_db_status-examples"></a>

This example shows how to display cross-region storage statistics.

```
=> SELECT CASE 
          WHEN '-1' = durability_lag_in_msec THEN 'Primary'
          ELSE 'Secondary'
       END AS global_role,
       *
  FROM aurora_global_db_status();
 global_role | aws_region | highest_lsn_written | durability_lag_in_msec | rpo_lag_in_msec | last_lag_calculation_time  | feedback_epoch | feedback_xmin
-------------+------------+---------------------+------------------------+-----------------+----------------------------+----------------+---------------
 Primary     | eu-west-1  |           131031557 |                     -1 |              -1 | 1970-01-01 00:00:00+00     |              0 |             0
 Secondary   | eu-west-2  |           131031554 |                    410 |               0 | 2021-06-01 18:59:36.124+00 |              0 |         12640
 Secondary   | eu-west-3  |           131031554 |                    410 |               0 | 2021-06-01 18:59:36.124+00 |              0 |         12640
```

# aurora\$1list\$1builtins
<a name="aurora_list_builtins"></a>

Lists all available Aurora PostgreSQL built-in functions, along with brief descriptions and function details.

## Syntax
<a name="aurora_list_builtins-syntax"></a>

 

```
aurora_list_builtins()
```

## Arguments
<a name="aurora_list_builtins-arguments"></a>

None

## Return type
<a name="aurora_list_builtins-return-type"></a>

SETOF record

## Examples
<a name="aurora_list_builtins-examples"></a>

The following example shows results from calling the `aurora_list_builtins` function.

```
=> SELECT * 
FROM aurora_list_builtins();
     
               Name                | Result data type |                   Argument data types                    | Type | Volatility |  Parallel  | Security |                             Description
-----------------------------------+------------------+----------------------------------------------------------+------+------------+------------+----------+---------------------------------------------------------------------
 aurora_version                    | text             |                                                          | func | stable     | safe       | invoker  | Amazon Aurora PostgreSQL-Compatible Edition version string
 aurora_stat_wait_type             | SETOF record     | OUT type_id smallint, OUT type_name text                 | func | volatile   | restricted | invoker  | Lists all supported wait types
 aurora_stat_wait_event            | SETOF record     | OUT type_id smallint, OUT event_id integer, OUT event_na.| func | volatile   | restricted | invoker  | Lists all supported wait events
                                   |                  |.me text                                                  |      |            |            |          |
 aurora_list_builtins              | SETOF record     | OUT "Name" text, OUT "Result data type" text, OUT "Argum.| func | stable     | safe       | invoker  | Lists all Aurora built-in functions
                                   |                  |.ent data types" text, OUT "Type" text, OUT "Volatility" .|      |            |            |          |
                                   |                  |.text, OUT "Parallel" text, OUT "Security" text, OUT "Des.|      |            |            |          |
                                   |                  |.cription" text                                           |      |            |            |          |
 .
 .
 .
 aurora_stat_file                  | SETOF record     | OUT filename text, OUT allocated_bytes bigint, OUT used_.| func | stable     | safe       | invoker  | Lists all files present in Aurora storage
                                   |                  |.bytes bigint                                             |      |            |            |          |
 aurora_stat_get_db_commit_latency | bigint           | oid                                                      | func | stable     | restricted | invoker  | Per DB commit latency in microsecs
```

# aurora\$1replica\$1status
<a name="aurora_replica_status"></a>

Displays the status of all Aurora PostgreSQL reader nodes. 

## Syntax
<a name="aurora_replica_status-syntax"></a>

 

```
aurora_replica_status()
```

## Arguments
<a name="aurora_replica_status-arguments"></a>

None

## Return type
<a name="aurora_replica_status-return-type"></a>

SETOF record with the following columns:
+ `server_id` – The DB instance ID (identifier). 
+ `session_id` – A unique identifier for the current session, returned for primary instance and reader instances as follows:
  + For the primary instance, `session_id` is always ``MASTER_SESSION_ID’`.
  + For reader instances, `session_id` is always the `UUID` (universally unique identifier) of the reader instance.
+ `durable_lsn` – The log sequence number (LSN) that's been saved in storage.
  + For the primary volume, the primary volume durable LSN (VDL) that's currently in effect.
  + For any secondary volumes, the VDL of the primary up to which the secondary has successfully been applied.
**Note**  
A log sequence number (LSN) is a unique sequential number that identifies a record in the database transaction log. LSNs are ordered such that a larger LSN represents a transaction that's occurred later in the sequence.
+ `highest_lsn_rcvd` – The highest (most recent) LSN received by the DB instance from the writer DB instance.
+ `current_read_lsn` – The LSN of the most recent snapshot that's been applied to all readers. 
+ `cur_replay_latency_in_usec` – The number of microseconds that it's expected to take to replay the log on the secondary. 
+ `active_txns` – The number of currently active transactions.
+ `is_current` – Not used.
+ `last_transport_error` – Last replication error code.
+ `last_error_timestamp` – Timestamp of last replication error.
+ `last_update_timestamp` – Timestamp of last update to replica status. From Aurora PostgreSQL 13.9, the `last_update_timestamp` value for the DB instance that you are connected to is set to `NULL`.
+ `feedback_xmin` – The hot standby feedback\$1xmin of the replica. The minimum (oldest) active transaction ID used by the DB instance.
+ `feedback_epoch` – The epoch the DB instance uses when it generates hot standby information.
+ `replica_lag_in_msec` – Time that reader instance lags behind writer instance, in milliseconds.
+ `log_stream_speed_in_kib_per_second` – The log stream throughput in kilobytes per second.
+ `log_buffer_sequence_number` – The log buffer sequence number.
+ `oldest_read_view_trx_id` – Not used.
+ `oldest_read_view_lsn` – The oldest LSN used by the DB instance to read from storage.
+ `pending_read_ios` – The outstanding page reads that are still pending on replica. 
+ `read_ios` – The total number of page reads on replica.
+ `iops` – Not used.
+ `cpu` – CPU usage of the Aurora Storage Daemon for each node in the cluster. For information about CPU usage by the instance, see [Instance-level metrics for Amazon Aurora](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances).

## Usage notes
<a name="aurora_replica_status-usage-notes"></a>

All currently available Aurora PostgreSQL versions support this function. The `aurora_replica_status` function returns values from an Aurora PostgreSQL DB cluster's replica status manager. You can use this function to obtain information about the status of replication on your Aurora PostgreSQL DB cluster, including metrics for all DB instances in your Aurora DB cluster. For example, you can do the following:
+ **Get information about the type of instance (writer, reader) in the Aurora PostgreSQL DB cluster** – You can obtain this information by checking the values of the following columns: 
  + `server_id` – Contains the name of the instance that you specified when you created the instance. In some cases, such as for the primary (writer) instance, the name is typically created for you by appending *-instance-1* to the name that you create for your Aurora PostgreSQL DB cluster.
  + `session_id` – The `session_id` field indicates whether the instance is a reader or a writer. For a writer instance, `session_id` is always set to `"MASTER_SESSION_ID"`. For a reader instance, `session_id` is set to the `UUID` of the specific reader.
+ **Diagnose common replication issues, such as replica lag** – Replica lag is the time in milliseconds that the page cache of a reader instance is behind that of the writer instance. This lag occurs because Aurora clusters use asynchronous replication, as described in [Replication with Amazon Aurora](Aurora.Replication.md). It's shown in the `replica_lag_in_msec` column in the results returned by this function. Lag can also occur when a query is cancelled due to conflicts with recovery on a standby server. You can check `pg_stat_database_conflicts()` to verify that such a conflict is causing the replica lag (or not). For more information, see [The Statistics Collector](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-CONFLICTS-VIEW) in the *PostgreSQL documentation*. To learn more about high availability and replication, see [Amazon Aurora FAQs](https://aws.amazon.com/rds/aurora/faqs/#High_Availability_and_Replication). 

  Amazon CloudWatch stores `replica_lag_in_msec` results over time, as the `AuroraReplicaLag` metric. For information about using CloudWatch metrics for Aurora, see [Monitoring Amazon Aurora metrics with Amazon CloudWatch](monitoring-cloudwatch.md) 

To learn more about troubleshooting Aurora read replicas and restarts, see [Why did my Amazon Aurora read replica fall behind and restart?](https://aws.amazon.com/premiumsupport/knowledge-center/aurora-read-replica-restart/) in the [AWS Support Center](https://console.aws.amazon.com/support/home#/). 

## Examples
<a name="aurora_replica_status-examples"></a>

The following example shows how to get the replication status of all instances in an Aurora PostgreSQL DB cluster:

```
=> SELECT * 
FROM aurora_replica_status();
```

The following example shows the writer instance in the `docs-lab-apg-main` Aurora PostgreSQL DB cluster: 

```
=> SELECT server_id, 
    CASE 
        WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer'
        ELSE 'reader' 
    END AS instance_role
FROM aurora_replica_status() 
WHERE session_id = 'MASTER_SESSION_ID';
        server_id       | instance_role
------------------------+---------------
 db-119-001-instance-01 | writer
```

The following example example lists all reader instances in a cluster:

```
=> SELECT server_id, 
    CASE 
        WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer'
        ELSE 'reader' 
    END AS instance_role
FROM aurora_replica_status() 
WHERE session_id <> 'MASTER_SESSION_ID';
        server_id       | instance_role
------------------------+---------------
db-119-001-instance-02  | reader
db-119-001-instance-03  | reader
db-119-001-instance-04  | reader
db-119-001-instance-05  | reader
(4 rows)
```

The following example lists all instances, how far each instance is lagging behind the writer, and how long since the last update: 

```
=> SELECT server_id, 
    CASE 
        WHEN 'MASTER_SESSION_ID' = session_id THEN 'writer'
        ELSE 'reader' 
    END AS instance_role,
    replica_lag_in_msec AS replica_lag_ms,
    round(extract (epoch FROM (SELECT age(clock_timestamp(), last_update_timestamp))) * 1000) AS last_update_age_ms
FROM aurora_replica_status()
ORDER BY replica_lag_in_msec NULLS FIRST;
       server_id        | instance_role | replica_lag_ms | last_update_age_ms
------------------------+---------------+----------------+--------------------
 db-124-001-instance-03 | writer        |         [NULL] |               1756
 db-124-001-instance-01 | reader        |             13 |               1756
 db-124-001-instance-02 | reader        |             13 |               1756
(3 rows)
```

# aurora\$1stat\$1activity
<a name="aurora_stat_activity"></a>

Returns one row per server process, showing information related to the current activity of that process.

## Syntax
<a name="aurora_stat_activity-syntax"></a>

 

```
aurora_stat_activity();
```

## Arguments
<a name="aurora_stat_activity-arguments"></a>

None

## Return type
<a name="aurora_stat_activity-return-type"></a>

Returns one row per server process. In additional to `pg_stat_activity` columns, the following field is added:
+ planid – plan identifier

## Usage notes
<a name="aurora_stat_activity-usage-notes"></a>

A supplementary view to `pg_stat_activity` returning the same columns with an additional `plan_id` column which shows the current query execution plan.

`aurora_compute_plan_id` must be enabled for the view to return a plan\$1id.

This function is available from Aurora PostgreSQL versions 14.10, 15.5, and for all other later versions.

## Examples
<a name="aurora_stat_activity-examples"></a>

The example query below aggregates the top load by query\$1id and plan\$1id.

```
db1=# select count(*), query_id, plan_id
db1-# from aurora_stat_activity() where state = 'active'
db1-# and pid <> pg_backend_pid()
db1-# group by query_id, plan_id
db1-# order by 1 desc;   

count |  query_id             |  plan_id 
-------+----------------------+-------------
 11    | -5471422286312252535 | -2054628807
 3     | -6907107586630739258 | -815866029
 1     | 5213711845501580017  |  300482084
(3 rows)
```

If the plan used for query\$1id changes, a new plan\$1id will be reported by aurora\$1stat\$1activity.

```
count  |  query_id            |  plan_id 
-------+----------------------+-------------
 10    | -5471422286312252535 | 1602979607
 1     | -6907107586630739258 | -1809935983
 1     | -2446282393000597155 | -207532066
(3 rows)
```

# aurora\$1stat\$1backend\$1waits
<a name="aurora_stat_backend_waits"></a>

Displays statistics for wait activity for a specific backend process. 

## Syntax
<a name="aurora_stat_backend_waits-syntax"></a>

 

```
aurora_stat_backend_waits(pid)
```

## Arguments
<a name="aurora_stat_backend_waits-arguments"></a>

`pid` – The ID for the backend process. You can obtain process IDs by using the `pg_stat_activity` view.

## Return type
<a name="aurora_stat_backend_waits-return-type"></a>

SETOF record with the following columns:
+ `type_id` – A number that denotes the type of wait event, such as `1` for a lightweight lock (`LWLock`), `3` for a lock, or `6` for a client session, to name some examples. These values become meaningful when you join the results of this function with columns from `aurora_stat_wait_type` function, as shown in the [Examples](#aurora_stat_backend_waits-examples). 
+ `event_id` – An identifying number for the wait event. Join this value with the columns from `aurora_stat_wait_event` to obtain meaningful event names. 
+ `waits` – A count of the number of waits accumulated for the specified process ID.
+ `wait_time` – Wait time in milliseconds.

## Usage notes
<a name="aurora_stat_backend_waits-usage-notes"></a>

You can use this function to analyze specific backend (session) wait events that occurred since a connection opened. To get more meaningful information about wait event names and types, you can combine this function `aurora_stat_wait_type` and `aurora_stat_wait_event`, by using JOIN as shown in the examples. 

## Examples
<a name="aurora_stat_backend_waits-examples"></a>

This example shows all waits, types, and event names for a backend process ID 3027. 

```
=> SELECT type_name, event_name, waits, wait_time
        FROM aurora_stat_backend_waits(3027)
NATURAL JOIN aurora_stat_wait_type()
NATURAL JOIN aurora_stat_wait_event();
type_name |       event_name       | waits | wait_time
-----------+------------------------+-------+------------
 LWLock    | ProcArrayLock          |     3 |         27
 LWLock    | wal_insert             |   423 |      16336
 LWLock    | buffer_content         | 11840 |    1033634
 LWLock    | lock_manager           | 23821 |    5664506
 Lock      | tuple                  | 10258 |  152280165
 Lock      | transactionid          | 78340 | 1239808783
 Client    | ClientRead             | 34072 |   17616684
 IO        | ControlFileSyncUpdate  |     2 |          0
 IO        | ControlFileWriteUpdate |     4 |         32
 IO        | RelationMapRead        |     2 |        795
 IO        | WALWrite               | 36666 |      98623
 IO        | XactSync               |  4867 |    7331963
```

This example shows current and cumulative wait types and wait events for all active sessions (`pg_stat_activity state <> 'idle'`) (but without the current session that's invoking the function (`pid <> pg_backend_pid()`).

```
=> SELECT a.pid,
             a.usename,
             a.app_name,
             a.current_wait_type,
             a.current_wait_event,
             a.current_state,
             wt.type_name AS wait_type,
             we.event_name AS wait_event,
             a.waits,
             a.wait_time
        FROM (SELECT pid,
                     usename,
                     left(application_name,16) AS app_name,
                     coalesce(wait_event_type,'CPU') AS current_wait_type,
                     coalesce(wait_event,'CPU') AS current_wait_event,
                     state AS current_state,
                     (aurora_stat_backend_waits(pid)).*
                FROM pg_stat_activity
               WHERE pid <> pg_backend_pid()
                 AND state <> 'idle') a
NATURAL JOIN aurora_stat_wait_type() wt
NATURAL JOIN aurora_stat_wait_event() we;
  pid  | usename  | app_name | current_wait_type | current_wait_event | current_state | wait_type |       wait_event       | waits | wait_time
-------+----------+----------+-------------------+--------------------+---------------+-----------+------------------------+-------+-----------
 30099 | postgres | pgbench  | Lock              | transactionid      | active        | LWLock    | wal_insert             |  1937 |     29975
 30099 | postgres | pgbench  | Lock              | transactionid      | active        | LWLock    | buffer_content         | 22903 |    760498
 30099 | postgres | pgbench  | Lock              | transactionid      | active        | LWLock    | lock_manager           | 10012 |    223207
 30099 | postgres | pgbench  | Lock              | transactionid      | active        | Lock      | tuple                  | 20315 |  63081529
 .
 .
 .
 30099 | postgres | pgbench  | Lock              | transactionid      | active        | IO        | WALWrite               | 93293 |    237440
 30099 | postgres | pgbench  | Lock              | transactionid      | active        | IO        | XactSync               | 13010 |  19525143
 30100 | postgres | pgbench  | Lock              | transactionid      | active        | LWLock    | ProcArrayLock          |     6 |        53
 30100 | postgres | pgbench  | Lock              | transactionid      | active        | LWLock    | wal_insert             |  1913 |     25450
 30100 | postgres | pgbench  | Lock              | transactionid      | active        | LWLock    | buffer_content         | 22874 |    778005
 .
 .
 .
 30109 | postgres | pgbench  | IO                | XactSync           | active        | LWLock    | ProcArrayLock          |     3 |        71
 30109 | postgres | pgbench  | IO                | XactSync           | active        | LWLock    | wal_insert             |  1940 |     27741
 30109 | postgres | pgbench  | IO                | XactSync           | active        | LWLock    | buffer_content         | 22962 |    776352
 30109 | postgres | pgbench  | IO                | XactSync           | active        | LWLock    | lock_manager           |  9879 |    218826
 30109 | postgres | pgbench  | IO                | XactSync           | active        | Lock      | tuple                  | 20401 |  63581306
 30109 | postgres | pgbench  | IO                | XactSync           | active        | Lock      | transactionid          | 50769 | 211645008
 30109 | postgres | pgbench  | IO                | XactSync           | active        | Client    | ClientRead             | 89901 |  44192439
```

This example shows current and the top three (3) cumulative wait type and wait events for all active sessions (`pg_stat_activity state <> 'idle'`) excluding current session (`pid <>pg_backend_pid()`).

```
=> SELECT top3.*
       FROM (SELECT a.pid,
                    a.usename,
                    a.app_name,
                    a.current_wait_type,
                    a.current_wait_event,
                    a.current_state,
                    wt.type_name AS wait_type,
                    we.event_name AS wait_event,
                    a.waits,
                    a.wait_time,
                    RANK() OVER (PARTITION BY pid ORDER BY a.wait_time DESC)
               FROM (SELECT pid,
                            usename,
                            left(application_name,16) AS app_name,
                            coalesce(wait_event_type,'CPU') AS current_wait_type,
                            coalesce(wait_event,'CPU') AS current_wait_event,
                            state AS current_state,
                            (aurora_stat_backend_waits(pid)).*
                       FROM pg_stat_activity
                      WHERE pid <> pg_backend_pid()
                        AND state <> 'idle') a
       NATURAL JOIN aurora_stat_wait_type() wt
       NATURAL JOIN aurora_stat_wait_event() we) top3
 WHERE RANK <=3;
  pid  | usename  | app_name | current_wait_type | current_wait_event | current_state | wait_type |   wait_event    |  waits  | wait_time  | rank
-------+----------+----------+-------------------+--------------------+---------------+-----------+-----------------+---------+------------+------
 20567 | postgres | psql     | CPU               | CPU                | active        | LWLock    | wal_insert      |   25000 |   67512003 |    1
 20567 | postgres | psql     | CPU               | CPU                | active        | IO        | WALWrite        | 3071758 |    1016961 |    2
 20567 | postgres | psql     | CPU               | CPU                | active        | IO        | BufFileWrite    |   20750 |     184559 |    3
 27743 | postgres | pgbench  | Lock              | transactionid      | active        | Lock      | transactionid   |  237350 | 1265580011 |    1
 27743 | postgres | pgbench  | Lock              | transactionid      | active        | Lock      | tuple           |   93641 |  341472318 |    2
 27743 | postgres | pgbench  | Lock              | transactionid      | active        | Client    | ClientRead      |  417556 |  204796837 |    3
 .
 .
 .
 27745 | postgres | pgbench  | IO                | XactSync           | active        | Lock      | transactionid   |  238068 | 1265816822 |    1
 27745 | postgres | pgbench  | IO                | XactSync           | active        | Lock      | tuple           |   93210 |  338312247 |    2
 27745 | postgres | pgbench  | IO                | XactSync           | active        | Client    | ClientRead      |  419157 |  207836533 |    3
 27746 | postgres | pgbench  | Lock              | transactionid      | active        | Lock      | transactionid   |  237621 | 1264528811 |    1
 27746 | postgres | pgbench  | Lock              | transactionid      | active        | Lock      | tuple           |   93563 |  339799310 |    2
 27746 | postgres | pgbench  | Lock              | transactionid      | active        | Client    | ClientRead      |  417304 |  208372727 |    3
```

# aurora\$1stat\$1bgwriter
<a name="aurora_stat_bgwriter"></a>

`aurora_stat_bgwriter` is a statistics view showing information about Optimized Reads cache writes.

## Syntax
<a name="aurora_stat_bgwriter-syntax"></a>

 

```
aurora_stat_bgwriter()
```

## Arguments
<a name="aurora_stat_bgwriter-arguments"></a>

None

## Return type
<a name="aurora_stat_bgwriter-return-type"></a>

SETOF record with all `pg_stat_bgwriter` columns and the following additional columns. For more information on `pg_stat_bgwriter` columns, see [https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW).

You can reset stats for this function using `pg_stat_reset_shared("bgwriter")`.
+ `orcache_blks_written` – Total number of optimized reads cache data blocks written. 
+ `orcache_blk_write_time` – If `track_io_timing` is enabled, it tracks the total time spent writing optimized reads cache data file blocks, in milliseconds. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING). 

## Usage notes
<a name="aurora_stat_bgwriter-usage-notes"></a>

This function is available in the following Aurora PostgreSQL versions:
+ 15.4 and higher 15 versions
+ 14.9 and higher 14 versions

## Examples
<a name="aurora_stat_bgwriter-examples"></a>

```
=> select * from aurora_stat_bgwriter();    
-[ RECORD 1 ]-----------------+-----------
orcache_blks_written          | 246522
orcache_blk_write_time        | 339276.404
```

# aurora\$1stat\$1database
<a name="aurora_stat_database"></a>

It carries all columns of pg\$1stat\$1database and adds new columns in the end.

## Syntax
<a name="aurora_stat_database-syntax"></a>

 

```
aurora_stat_database()
```

## Arguments
<a name="aurora_stat_database-arguments"></a>

None

## Return type
<a name="aurora_stat_database-return-type"></a>

SETOF record with all `pg_stat_database` columns and the following additional columns. For more information on `pg_stat_database` columns, see [https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-DATABASE-VIEW).
+ `storage_blks_read` – Total number of shared blocks read from aurora storage in this database. 
+ `orcache_blks_hit` – Total number of optimized reads cache hits in this database. 
+ `local_blks_read` – Total number of local blocks read in this database. 
+ `storage_blk_read_time` – If `track_io_timing` is enabled, it tracks the total time spent reading data file blocks from aurora storage, in milliseconds, otherwise the value is zero. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING). 
+ `local_blk_read_time` – If `track_io_timing` is enabled, it tracks the total time spent reading local data file blocks, in milliseconds, otherwise the value is zero. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING).
+ `orcache_blk_read_time` – If `track_io_timing` is enabled, it tracks the total time spent reading data file blocks from optimized reads cache, in milliseconds, otherwise the value is zero. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING). 

**Note**  
The value of `blks_read` is the sum of `storage_blks_read`, `orcache_blks_hit`, and `local_blks_read`.  
The value of `blk_read_time` is the sum of `storage_blk_read_time`, `orcache_blk_read_time`, and `local_blk_read_time`.

## Usage notes
<a name="aurora_stat_database-usage-notes"></a>

This function is available in the following Aurora PostgreSQL versions:
+ 15.4 and higher 15 versions
+ 14.9 and higher 14 versions

## Examples
<a name="aurora_stat_database-examples"></a>

The following example shows how it carries all the `pg_stat_database` columns and appends 6 new columns in the end:

```
=> select * from aurora_stat_database() where datid=14717;    
-[ RECORD 1 ]------------+------------------------------
datid                    | 14717
datname                  | postgres
numbackends              | 1
xact_commit              | 223
xact_rollback            | 4
blks_read                | 1059
blks_hit                 | 11456
tup_returned             | 27746
tup_fetched              | 5220
tup_inserted             | 165
tup_updated              | 42
tup_deleted              | 91
conflicts                | 0
temp_files               | 0
temp_bytes               | 0
deadlocks                | 0
checksum_failures        |
checksum_last_failure    |
blk_read_time            | 3358.689
blk_write_time           | 0
session_time             | 1076007.997
active_time              | 3684.371
idle_in_transaction_time | 0
sessions                 | 10
sessions_abandoned       | 0
sessions_fatal           | 0
sessions_killed          | 0
stats_reset              | 2023-01-12 20:15:17.370601+00
orcache_blks_hit         | 425
orcache_blk_read_time    | 89.934
storage_blks_read        | 623
storage_blk_read_time    | 3254.914
local_blks_read          | 0
local_blk_read_time      | 0
```

# aurora\$1stat\$1dml\$1activity
<a name="aurora_stat_dml_activity"></a>

Reports cumulative activity for each type of data manipulation language (DML) operation on a database in an Aurora PostgreSQL cluster.

## Syntax
<a name="aurora_stat_dml_activity-syntax"></a>

 

```
aurora_stat_dml_activity(database_oid)
```

## Arguments
<a name="aurora_stat_dml_activity-arguments"></a>

 *database\$1oid*   
The object ID (OID) of the database in the Aurora PostgreSQL cluster.

## Return type
<a name="aurora_stat_dml_activity-return-type"></a>

SETOF record

## Usage notes
<a name="aurora_stat_dml_activity-usage-notes"></a>

The `aurora_stat_dml_activity` function is only available with Aurora PostgreSQL release 3.1 compatible with PostgreSQL engine 11.6 and later.

Use this function on Aurora PostgreSQL clusters with a large number of databases to identify which databases have more or slower DML activity, or both.

The `aurora_stat_dml_activity` function returns the number of times the operations ran and the cumulative latency in microseconds for SELECT, INSERT, UPDATE, and DELETE operations. The report includes only successful DML operations.

You can reset this statistic by using the PostgreSQL statistics access function `pg_stat_reset`. You can check the last time this statistic was reset by using the `pg_stat_get_db_stat_reset_time` function. For more information about PostgreSQL statistics access functions, see [The Statistics Collector](https://www.postgresql.org/docs/9.1/monitoring-stats.html) in the PostgreSQL documentation.

## Examples
<a name="aurora_stat_dml_activity-examples"></a>

The following example shows how to report DML activity statistics for the connected database.

```
––Define the oid variable from connected database by using \gset
=> SELECT oid, 
          datname 
     FROM pg_database 
    WHERE datname=(select current_database()) \gset
=> SELECT * 
     FROM aurora_stat_dml_activity(:oid);
select_count | select_latency_microsecs | insert_count | insert_latency_microsecs | update_count | update_latency_microsecs | delete_count | delete_latency_microsecs
--------------+--------------------------+--------------+--------------------------+--------------+--------------------------+--------------+--------------------------
       178957 |                 66684115 |       171065 |                 28876649 |       519538 |            1454579206167 |            1 |                    53027


–– Showing the same results with expanded display on
=> SELECT * 
     FROM aurora_stat_dml_activity(:oid);
-[ RECORD 1 ]------------+--------------
select_count             | 178957
select_latency_microsecs | 66684115
insert_count             | 171065
insert_latency_microsecs | 28876649
update_count             | 519538
update_latency_microsecs | 1454579206167
delete_count             | 1
delete_latency_microsecs | 53027
```

The following example shows DML activity statistics for all databases in the Aurora PostgreSQL cluster. This cluster has two databases, `postgres` and `mydb`. The comma-separated list corresponds with the `select_count`, `select_latency_microsecs`, `insert_count`, `insert_latency_microsecs`, `update_count`, `update_latency_microsecs`, `delete_count`, and `delete_latency_microsecs` fields.

Aurora PostgreSQL creates and uses a system database named `rdsadmin` to support administrative operations such as backups, restores, health checks, replication, and so on. These DML operations have no impact on your Aurora PostgreSQL cluster.

```
=> SELECT oid, 
    datname, 
    aurora_stat_dml_activity(oid) 
    FROM pg_database;
oid  |    datname     |                    aurora_stat_dml_activity
-------+----------------+-----------------------------------------------------------------
 14006 | template0      | (,,,,,,,)
 16384 | rdsadmin       | (2346623,1211703821,4297518,817184554,0,0,0,0)
     1 | template1      | (,,,,,,,)
 14007 | postgres       | (178961,66716329,171065,28876649,519538,1454579206167,1,53027)
 16401 | mydb           | (200246,64302436,200036,107101855,600000,83659417514,0,0)
```

The following example shows DML activity statistics for all databases, organized in columns for better readability.

```
SELECT db.datname,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 1), '()') AS select_count,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 2), '()') AS select_latency_microsecs,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 3), '()') AS insert_count,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 4), '()') AS insert_latency_microsecs,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 5), '()') AS update_count,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 6), '()') AS update_latency_microsecs,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 7), '()') AS delete_count,
       BTRIM(SPLIT_PART(db.asdmla::TEXT, ',', 8), '()') AS delete_latency_microsecs 
FROM  (SELECT datname,
              aurora_stat_dml_activity(oid) AS asdmla 
         FROM pg_database
      ) AS db;
      
    datname     | select_count | select_latency_microsecs | insert_count | insert_latency_microsecs | update_count | update_latency_microsecs | delete_count | delete_latency_microsecs
----------------+--------------+--------------------------+--------------+--------------------------+--------------+--------------------------+--------------+--------------------------
 template0      |              |                          |              |                          |              |                          |              |
 rdsadmin       | 4206523      | 2478812333               | 7009414      | 1338482258               | 0            | 0                        | 0            | 0
 template1      |              |                          |              |                          |              |                          |              |
 fault_test     | 66           | 452099                   | 0            | 0                        | 0            | 0                        | 0            | 0
 db_access_test | 1            | 5982                     | 0            | 0                        | 0            | 0                        | 0            | 0
 postgres       | 42035        | 95179203                 | 5752         | 2678832898               | 21157        | 441883182488             | 2            | 1520
 mydb           | 71           | 453514                   | 0            | 0                        | 1            | 190                      | 1            | 152
```

The following example shows the average cumulative latency (cumulative latency divided by count) for each DML operation for the database with the OID `16401`.

```
=> SELECT select_count, 
          select_latency_microsecs, 
          select_latency_microsecs/NULLIF(select_count,0) select_latency_per_exec,
          insert_count, 
          insert_latency_microsecs, 
          insert_latency_microsecs/NULLIF(insert_count,0) insert_latency_per_exec,
          update_count, 
          update_latency_microsecs, 
          update_latency_microsecs/NULLIF(update_count,0) update_latency_per_exec,
          delete_count, 
          delete_latency_microsecs, 
          delete_latency_microsecs/NULLIF(delete_count,0) delete_latency_per_exec
     FROM aurora_stat_dml_activity(16401);
-[ RECORD 1 ]------------+-------------
select_count             | 451312
select_latency_microsecs | 80205857
select_latency_per_exec  | 177
insert_count             | 451001
insert_latency_microsecs | 123667646
insert_latency_per_exec  | 274
update_count             | 1353067
update_latency_microsecs | 200900695615
update_latency_per_exec  | 148478
delete_count             | 12
delete_latency_microsecs | 448
delete_latency_per_exec  | 37
```

# aurora\$1stat\$1get\$1db\$1commit\$1latency
<a name="aurora_stat_get_db_commit_latency"></a>

Gets the cumulative commit latency in microseconds for Aurora PostgreSQL databases. *Commit latency* is measured as the time between when a client submits a commit request and when it receives the commit acknowledgement.

## Syntax
<a name="aurora_stat_get_db_commit_latency-syntax"></a>

 

```
aurora_stat_get_db_commit_latency(database_oid)
```

## Arguments
<a name="aurora_stat_get_db_commit_latency-arguments"></a>

 *database\$1oid*   
The object ID (OID) of the Aurora PostgreSQL database.

## Return type
<a name="aurora_stat_get_db_commit_latency-return-type"></a>

SETOF record

## Usage notes
<a name="aurora_stat_get_db_commit_latency-usage-notes"></a>

Amazon CloudWatch uses this function to calculate the average commit latency. For more information about Amazon CloudWatch metrics and how to troubleshoot high commit latency, see [Viewing metrics in the Amazon RDS console](USER_Monitoring.md) and [Making better decisions about Amazon RDS with Amazon CloudWatch metrics](https://aws.amazon.com/blogs/database/making-better-decisions-about-amazon-rds-with-amazon-cloudwatch-metrics/).

You can reset this statistic by using the PostgreSQL statistics access function `pg_stat_reset`. You can check the last time this statistic was reset by using the `pg_stat_get_db_stat_reset_time` function. For more information about PostgreSQL statistics access functions, see [The Statistics Collector](https://www.postgresql.org/docs/9.1/monitoring-stats.html) in the PostgreSQL documentation.

## Examples
<a name="aurora_stat_get_db_commit_latency-examples"></a>

The following example gets the cumulative commit latency for each database in the `pg_database` cluster.

```
=> SELECT oid, 
    datname, 
    aurora_stat_get_db_commit_latency(oid) 
    FROM pg_database;
     
  oid  |    datname     | aurora_stat_get_db_commit_latency
-------+----------------+-----------------------------------
 14006 | template0      |                                 0
 16384 | rdsadmin       |                         654387789
     1 | template1      |                                 0
 16401 | mydb           |                            229556
 69768 | postgres       |                             22011
```

The following example gets the cumulative commit latency for the currently connected database. Before calling the `aurora_stat_get_db_commit_latency` function, the example first uses `\gset` to define a variable for the `oid` argument and sets its value from the connected database.

```
––Get the oid value from the connected database before calling aurora_stat_get_db_commit_latency
=> SELECT oid
     FROM pg_database
    WHERE datname=(SELECT current_database()) \gset
=> SELECT * 
     FROM aurora_stat_get_db_commit_latency(:oid);
   
 aurora_stat_get_db_commit_latency
-----------------------------------
                        1424279160
```

The following example gets the cumulative commit latency for the `mydb` database in the `pg_database` cluster. Then, it resets this statistic by using the `pg_stat_reset` function and shows the results. Finally, it uses the `pg_stat_get_db_stat_reset_time` function to check the last time this statistic was reset.

```
=> SELECT oid,
    datname,
    aurora_stat_get_db_commit_latency(oid)
    FROM pg_database
    WHERE datname = 'mydb';
     
  oid  |  datname  | aurora_stat_get_db_commit_latency
-------+-----------+-----------------------------------
 16427 | mydb      |                           3320370


=> SELECT pg_stat_reset();
 pg_stat_reset
---------------

    
=> SELECT oid,
          datname,
          aurora_stat_get_db_commit_latency(oid)
     FROM pg_database
    WHERE datname = 'mydb';    
  oid  |  datname  | aurora_stat_get_db_commit_latency
-------+-----------+-----------------------------------
 16427 | mydb      |                                 6
    
    
=> SELECT * 
     FROM pg_stat_get_db_stat_reset_time(16427);
     
 pg_stat_get_db_stat_reset_time
--------------------------------
 2021-04-29 21:36:15.707399+00
```

# aurora\$1stat\$1logical\$1wal\$1cache
<a name="aurora_stat_logical_wal_cache"></a>

Shows logical write-ahead log (WAL) cache usage per slot.

## Syntax
<a name="aurora_stat_logical_wal_cache-syntax"></a>



```
SELECT * FROM aurora_stat_logical_wal_cache()
```

## Arguments
<a name="aurora_stat_logical_wal_cache-arguments"></a>

None

## Return type
<a name="aurora_stat_logical_wal_cache-return-type"></a>

SETOF record with the following columns:
+ `name` – The name of the replication slot. 
+ `active_pid` – ID of the walsender process. 
+ `cache_hit` – The total number of wal cache hits since last reset. 
+ `cache_miss` – The total number of wal cache misses since last reset. 
+ `blks_read` – The total number of wal cache read requests. 
+ `hit_rate` – The WAL cache hit rate (cache\$1hit / blks\$1read). 
+ `last_reset_timestamp` – Last time that the counter was reset. 

## Usage notes
<a name="aurora_stat_logical_wal_cache-usage-notes"></a>

This function is available for the following Aurora PostgreSQL versions.
+ 15.2 and all higher versions
+ 14.7 and higher versions
+ 13.8 and higher versions
+ 12.12 and higher versions
+ 11.17 and higher versions

## Examples
<a name="aurora_stat_logical_wal_cache-examples"></a>

The following example shows two replication slots with only one active. `aurora_stat_logical_wal_cache` function.

```
=> SELECT * 
     FROM aurora_stat_logical_wal_cache();
    name    | active_pid | cache_hit | cache_miss | blks_read | hit_rate |     last_reset_timestamp
------------+------------+-----------+------------+-----------+----------+-------------------------------
 test_slot1 |      79183 |        24 |          0 |        24 | 100.00%  | 2022-08-05 17:39:56.830635+00
 test_slot2 |            |         1 |          0 |         1 | 100.00%  | 2022-08-05 17:34:04.036795+00
(2 rows)
```

# aurora\$1stat\$1memctx\$1usage
<a name="aurora_stat_memctx_usage"></a>

Reports the memory context usage for each PostgreSQL process.

## Syntax
<a name="aurora_stat_memctx_usage-syntax"></a>

```
aurora_stat_memctx_usage()
```

## Arguments
<a name="aurora_stat_memctx_usage-arguments"></a>

None

## Return type
<a name="aurora_stat_memctx_usage-return-type"></a>

SETOF record with the following columns:
+ `pid` – The ID of the process. 
+ `name` – The name of the memory context. 
+ `allocated` – The number of bytes obtained from the underlying memory subsystem by the memory context. 
+ `used` – The number of bytes committed to clients of the memory context. 
+ `instances` – The count of currently existing contexts of this type. 

## Usage notes
<a name="aurora_stat_memctx_usage-usage-notes"></a>

This function displays the memory context usage for each PostgreSQL process. Some processes are labeled `anonymous`. The processes aren't exposed because they contain restricted keywords.

This function is available starting with the following Aurora PostgreSQL versions:
+ 15.3 and higher 15 versions
+ 14.8 and higher 14 versions
+ 13.11 and higher 13 versions
+ 12.15 and higher 12 versions
+ 11.20 and higher 11 versions

## Examples
<a name="aurora_stat_memctx_usage-examples"></a>

The following example shows the results of calling the `aurora_stat_memctx_usage` function.

```
=> SELECT * 
     FROM aurora_stat_memctx_usage();
  
    pid| name                            | allocated |   used  | instances 
-------+---------------------------------+-----------+---------+-----------
123864 | Miscellaneous                   |     19520 |   15064 |         3 
123864 | Aurora File Context             |      8192 |     616 |         1 
123864 | Aurora WAL Context              |      8192 |     296 |         1 
123864 | CacheMemoryContext              |    524288 |  422600 |         1 
123864 | Catalog tuple context           |     16384 |   13736 |         1 
123864 | ExecutorState                   |     32832 |   28304 |         1 
123864 | ExprContext                     |      8192 |    1720 |         1 
123864 | GWAL record construction        |      1024 |     832 |         1 
123864 | MdSmgr                          |      8192 |     296 |         1 
123864 | MessageContext                  |    532480 |  353832 |         1 
123864 | PortalHeapMemory                |      1024 |     488 |         1 
123864 | PortalMemory                    |      8192 |     576 |         1 
123864 | printtup                        |      8192 |     296 |         1 
123864 | RelCache hash table entries     |      8192 |    8152 |         1 
123864 | RowDescriptionContext           |      8192 |    1344 |         1 
123864 | smgr relation context           |      8192 |     296 |         1 
123864 | Table function arguments        |      8192 |     352 |         1 
123864 | TopTransactionContext           |      8192 |     632 |         1 
123864 | TransactionAbortContext         |     32768 |     296 |         1 
123864 | WAL record construction         |     50216 |   43904 |         1 
123864 | hash table                      |     65536 |   52744 |         6 
123864 | Relation metadata               |    191488 |  124240 |        87 
104992 | Miscellaneous                   |      9280 |    7728 |         3 
104992 | Aurora File Context             |      8192 |     376 |         1 
104992 | Aurora WAL Context              |      8192 |     296 |         1 
104992 ||Autovacuum Launcher             |      8192 |     296 |         1 
104992 | Autovacuum database list        |     16384 |     744 |         2 
104992 | CacheMemoryContext              |    262144 |  140288 |         1 
104992 | Catalog tuple context           |      8192 |     296 |         1 
104992 | GWAL record construction        |      1024 |     832 |         1 
104992 | MdSmgr                          |      8192 |     296 |         1 
104992 | PortalMemory                    |      8192 |     296 |         1 
104992 | RelCache hash table entries     |      8192 |     296 |         1 
104992 | smgr relation context           |      8192 |     296 |         1 
104992 | Autovacuum start worker (tmp)   |      8192 |     296 |         1 
104992 | TopTransactionContext           |     16384 |     592 |         2 
104992 | TransactionAbortContext         |     32768 |     296 |         1 
104992 | WAL record construction         |     50216 |   43904 |         1 
104992 | hash table                      |     49152 |   34024 |         4 
(39 rows)
```

Some restricted keywords will be hidden and the output will look as follows:

```
postgres=>SELECT * 
     FROM aurora_stat_memctx_usage();
   
    pid| name                            | allocated |   used  | instances 
-------+---------------------------------+-----------+---------+-----------
  5482 | anonymous                       |      8192 |     456 |         1 
  5482 | anonymous                       |      8192 |     296 |         1
```

# aurora\$1stat\$1optimized\$1reads\$1cache
<a name="aurora_stat_optimized_reads_cache"></a>

This function shows tiered cache stats.

## Syntax
<a name="aurora_stat_optimized_reads_cache-syntax"></a>

 

```
aurora_stat_optimized_reads_cache()
```

## Arguments
<a name="aurora_stat_optimized_reads_cache-arguments"></a>

None

## Return type
<a name="aurora_stat_optimized_reads_cache-return-type"></a>

SETOF record with the following columns:
+ `total_size` – Total optimized reads cache size. 
+ `used_size` – Used page size in optimized reads cache. 

## Usage notes
<a name="aurora_stat_optimized_reads_cache-usage-notes"></a>

This function is available in the following Aurora PostgreSQL versions:
+ 15.4 and higher 15 versions
+ 14.9 and higher 14 versions

## Examples
<a name="aurora_stat_optimized_reads_cache-examples"></a>

The following example shows the output on a r6gd.8xlarge instance :

```
=> select pg_size_pretty(total_size) as total_size, pg_size_pretty(used_size) 
                as used_size from aurora_stat_optimized_reads_cache();    
total_size | used_size
-----------+-----------
1054 GB    | 975 GB
```

# aurora\$1stat\$1plans
<a name="aurora_stat_plans"></a>

Returns a row for every tracked execution plan. 

## Syntax
<a name="aurora_stat_plans-syntax"></a>

 

```
aurora_stat_plans(
    showtext
)
```

## Arguments
<a name="aurora_stat_plans-arguments"></a>
+ showtext – Show the query and plan text. Valid values are NULL, true or false. True will show the query and plan text.

## Return type
<a name="aurora_stat_plans-return-type"></a>

Returns a row for each tracked plan that contains all the columns from `aurora_stat_statements` and the following additional columns.
+ planid – plan identifier
+ explain\$1plan – explain plan text
+ plan\$1type:
  + `no plan` - no plan was captured
  + `estimate` - plan captured with estimated costs
  + `actual` - plan captured with EXPLAIN ANALYZE
+ plan\$1captured\$1time – last time a plan was captured

## Usage notes
<a name="aurora_stat_plans-usage-notes"></a>

`aurora_compute_plan_id` must be enabled and `pg_stat_statements` must be in `shared_preload_libraries` for the plans to be tracked.

The number of plans available is controlled by the value set in the `pg_stat_statements.max` parameter. When `aurora_compute_plan_id` is enabled, you can track the plans up to this specified value in `aurora_stat_plans`.

This function is available from Aurora PostgreSQL versions 14.10, 15.5, and for all other later versions.

## Examples
<a name="aurora_stat_plans-examples"></a>

In the example below, the two plans that are for the query identifier -5471422286312252535 are captured and the statements statistics are tracked by the planid.

```
db1=# select calls, total_exec_time, planid, plan_captured_time, explain_plan
db1-# from aurora_stat_plans(true)
db1-# where queryid = '-5471422286312252535'   

calls    |  total_exec_time   |   planid    |      plan_captured_time       |                           explain_plan                           
---------+--------------------+-------------+-------------------------------+------------------------------------------------------------------
 1532632 |  3209846.097107853 |  1602979607 | 2023-10-31 03:27:16.925497+00 | Update on pgbench_branches                                      +
         |                    |             |                               |   ->  Bitmap Heap Scan on pgbench_branches                      +
         |                    |             |                               |         Recheck Cond: (bid = 76)                                +
         |                    |             |                               |         ->  Bitmap Index Scan on pgbench_branches_pkey          +
         |                    |             |                               |               Index Cond: (bid = 76)
   61365 | 124078.18012200127 | -2054628807 | 2023-10-31 03:20:09.85429+00  | Update on pgbench_branches                                      +
         |                    |             |                               |   ->  Index Scan using pgbench_branches_pkey on pgbench_branches+
         |                    |             |                               |         Index Cond: (bid = 17)
```

# aurora\$1stat\$1reset\$1wal\$1cache
<a name="aurora_stat_reset_wal_cache"></a>

Resets the counter for logical wal cache. 

## Syntax
<a name="aurora_stat_reset_wal_cache-syntax"></a>

To reset a specific slot

```
SELECT * FROM aurora_stat_reset_wal_cache('slot_name')
```

To reset all slots

```
SELECT * FROM aurora_stat_reset_wal_cache(NULL)
```

## Arguments
<a name="aurora_stat_reset_wal_cache-arguments"></a>

`NULL` or `slot_name`

## Return type
<a name="aurora_stat_reset_wal_cache-return-type"></a>

Status message, text string
+ Reset the logical wal cache counter – Success message. This text is returned when the function succeeds. 
+ Replication slot not found. Please try again. – Failure message. This text is returned when the function doesn't succeed.

## Usage notes
<a name="aurora_stat_reset_wal_cache-usage-notes"></a>

This function is available for the following versions.
+ Aurora PostgreSQL 14.5 and higher
+ Aurora PostgreSQL version 13.8 and higher
+ Aurora PostgreSQL version 12.12 and higher
+ Aurora PostgreSQLversion 11.17 and higher

## Examples
<a name="aurora_stat_reset_wal_cache-examples"></a>

The following example uses the `aurora_stat_reset_wal_cache` function to reset a slot named `test_results`, and then tries to reset a slot that doesn't exist.

```
=> SELECT * 
     FROM aurora_stat_reset_wal_cache('test_slot');
aurora_stat_reset_wal_cache
--------------------------------------
 Reset the logical wal cache counter.
(1 row)
=> SELECT * 
     FROM aurora_stat_reset_wal_cache('slot-not-exist');
aurora_stat_reset_wal_cache
-----------------------------------------------
 Replication slot not found. Please try again.
(1 row)
```

# aurora\$1stat\$1resource\$1usage
<a name="aurora_stat_resource_usage"></a>

Reports the real-time resource utilization which consists of backend resource metrics and cpu usage for all Aurora PostgreSQL backend processes.

## Syntax
<a name="aurora_stat_resource_usage-syntax"></a>

```
aurora_stat_resource_usage()
```

## Arguments
<a name="aurora_stat_resource_usage-arguments"></a>

None

## Return type
<a name="aurora_stat_resource_usage-return-type"></a>

SETOF record with columns:
+ pid - Process identifier
+ allocated\$1memory - Total memory allocated by process in bytes
+ used\$1memory - Actually used memory by process in bytes
+ cpu\$1usage\$1percent - CPU usage percentage of the process

## Usage notes
<a name="aurora_stat_resource_usage-usage-notes"></a>

This function displays the backend resource usage for each Aurora PostgreSQL backend process.

This function is available starting with the following Aurora PostgreSQL versions:
+ Aurora PostgreSQL 17.5 and higher 17 versions
+ Aurora PostgreSQL 16.9 and higher 16 versions
+ Aurora PostgreSQL 15.13 and higher 15 versions
+ Aurora PostgreSQL 14.18 and higher 14 versions
+ Aurora PostgreSQL 13.21 and higher 13 versions

## Examples
<a name="aurora_stat_resource_usage-examples"></a>

The following example shows the output of the `aurora_stat_resource_usage` function.

```
=> select * from aurora_stat_resource_usage();
 pid  | allocated_memory | used_memory |   cpu_usage_percent   
------+------------------+-------------+-----------------------
  666 |          1074032 |      333544 |   0.00729274882897963
  667 |           787312 |      287360 | 0.0029263928146372746
  668 |          3076776 |     1563488 |  0.006013116835953961
  684 |           803744 |      307480 |  0.002226855426881142
 2401 |          1232992 |      943144 |                     0
  647 |             8000 |         944 |   0.48853387812429855
  659 |           319344 |      243000 | 0.0004135602076683591
  663 |           262000 |      185736 |  0.008181301476644002
  664 |             9024 |        1216 |   0.10992313082653653
(9 rows)
```

# aurora\$1stat\$1statements
<a name="aurora_stat_statements"></a>

Displays all `pg_stat_statements` columns and adds more columns in the end. 

## Syntax
<a name="aurora_stat_statements-syntax"></a>

 

```
aurora_stat_statements(showtext boolean)
```

## Arguments
<a name="aurora_stat_statements-arguments"></a>

*showtext boolean*

## Return type
<a name="aurora_stat_statements-return-type"></a>

SETOF record with all `pg_stat_statements` columns and the following additional columns. For more information on `pg_stat_statements` columns, see [https://www.postgresql.org/docs/current/pgstatstatements.html](https://www.postgresql.org/docs/current/pgstatstatements.html).

You can reset stats for this function using `pg_stat_statements_reset()`.
+ `storage_blks_read` – Total number of shared blocks read from aurora storage by this statement. 
+ `orcache_blks_hit` – Total number of optimized reads cache hits by this statement. 
+ `storage_blk_read_time` – If `track_io_timing` is enabled, it tracks the total time the statement spent reading shared blocks from aurora storage, in milliseconds, otherwise the value is zero. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING). 
+ `local_blk_read_time` – If `track_io_timing` is enabled, it tracks the total time the statement spent reading local blocks, in milliseconds, otherwise the value is zero. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING).
+ `orcache_blk_read_time` – If `track_io_timing` is enabled, it tracks the total time the statement spent reading shared blocks from optimized reads cache, in milliseconds, otherwise the value is zero. For more information, see [track\$1io\$1timing](https://www.postgresql.org/docs/current/runtime-config-statistics.html#GUC-TRACK-IO-TIMING). 
+ `total_plan_peakmem` – Total sum of peak memory values during planning phase for all calls to this statement. To see the average peak memory during planning for the statement, divide this value by the number of calls.
+ `min_plan_peakmem` – Smallest peak memory value seen during planning across all calls to this statement.
+ `max_plan_peakmem` – Largest peak memory value during planning seen across all calls to this statement.
+ `total_exec_peakmem` – Total sum of peak memory values during execution phase for all calls to this statement. To see the average peak memory during execution for the statement, divide this value by the number of calls.
+ `min_exec_peakmem` –Smallest peak memory value, in bytes, seen during execution across all calls to this statement. 
+ `max_exec_peakmem` – Largest peak memory value, in bytes, seen during execution across all calls to this statement.

**Note**  
`total_plan_peakmen`, `min_plan_peakmem`, and `max_plan_peakmem` are only monitored when the setting `pg_stat_statements.track_planning` is turned on.

## Usage notes
<a name="aurora_stat_statements-usage-notes"></a>

To use the aurora\$1stat\$1statements() function, you must include `pg_stat_statements` extension in the `shared_preload_libraries` parameter.

This function is available in the following Aurora PostgreSQL versions:
+ 15.4 and higher 15 versions
+ 14.9 and higher 14 versions

The columns showing peak memory are available from the following versions:
+ 16.3 and higher versions
+ 15.7 and higher versions
+ 14.12 and higher versions

## Examples
<a name="aurora_stat_statements-examples"></a>

The following example shows how it carries all the pg\$1stat\$1statements columns and append 11 new columns in the end:

```
=> select * from aurora_stat_statements(true) where query like 'with window_max%';
-[ RECORD 1 ]----------+------------------------------------------------------------------------------------------------
userid                 | 16409
dbid                   | 5
toplevel               | t
queryid                | -8347523682669847482
query                  | with window_max as (select custid, max(scratch) over (order by scratch rows between $1 preceding 
and $2 following) wmax from ts) select sum(wmax), max(custid) from window_max
plans                  | 0
total_plan_time        | 0
min_plan_time          | 0
max_plan_time          | 0
mean_plan_time         | 0
stddev_plan_time       | 0
calls                  | 4
total_exec_time        | 254.105121
min_exec_time          | 57.503164000000005
max_exec_time          | 68.687418
mean_exec_time         | 63.52628025
stddev_exec_time       | 5.150765359979643
rows                   | 4
shared_blks_hit        | 200192
shared_blks_read       | 0
shared_blks_dirtied    | 0
shared_blks_written    | 0
local_blks_hit         | 0
local_blks_read        | 0
local_blks_dirtied     | 0
local_blks_written     | 0
temp_blks_read         | 0
temp_blks_written      | 0
blk_read_time          | 0
blk_write_time         | 0
temp_blk_read_time     | 0
temp_blk_write_time    | 0
wal_records            | 0
wal_fpi                | 0
wal_bytes              | 0
jit_functions          | 0
jit_generation_time    | 0
jit_inlining_count     | 0
jit_inlining_time      | 0
jit_optimization_count | 0
jit_optimization_time  | 0
jit_emission_count     | 0
jit_emission_time      | 0
storage_blks_read      | 0
orcache_blks_hit       | 0
storage_blk_read_time  | 0
local_blk_read_time    | 0
orcache_blk_read_time  | 0
total_plan_peakmem     | 0
min_plan_peakmem       | 0
max_plan_peakmem       | 0
total_exec_peakmem     | 6356224
min_exec_peakmem       | 1589056
max_exec_peakmem       | 1589056
```

# aurora\$1stat\$1system\$1waits
<a name="aurora_stat_system_waits"></a>

Reports wait event information for the Aurora PostgreSQL DB instance.

## Syntax
<a name="aurora_stat_system_waits-syntax"></a>

 

```
aurora_stat_system_waits()
```

## Arguments
<a name="aurora_stat_system_waits-arguments"></a>

None

## Return type
<a name="aurora_stat_system_waits-return-type"></a>

SETOF record

## Usage notes
<a name="aurora_stat_system_waits-usage-notes"></a>

This function returns the cumulative number of waits and cumulative wait time for each wait event generated by the DB instance that you're currently connected to.

The returned recordset includes the following fields:
+ `type_id` – The ID of the type of wait event.
+ `event_id` – The ID of the wait event.
+ `waits` – The number of times the wait event occurred.
+ `wait_time` – The total amount of time in microseconds spent waiting for this event.

Statistics returned by this function are reset when a DB instance restarts.

## Examples
<a name="aurora_stat_system_waits-examples"></a>

The following example shows results from calling the `aurora_stat_system_waits` function.

```
=> SELECT * 
    FROM aurora_stat_system_waits();    
 type_id | event_id  |   waits   |  wait_time
---------+-----------+-----------+--------------
       1 |  16777219 |        11 |        12864
       1 |  16777220 |       501 |       174473
       1 |  16777270 |     53171 |     23641847
       1 |  16777271 |        23 |       319668
       1 |  16777274 |        60 |        12759
.
.
.
      10 | 167772231 |    204596 |    790945212
      10 | 167772232 |         2 |        47729
      10 | 167772234 |         1 |          888
      10 | 167772235 |         2 |           64
```

The following example shows how you can use this function together with `aurora_stat_wait_event` and `aurora_stat_wait_type` to produce more readable results.

```
=> SELECT type_name,
             event_name,
             waits,
             wait_time
        FROM aurora_stat_system_waits()
NATURAL JOIN aurora_stat_wait_event()
NATURAL JOIN aurora_stat_wait_type();

 type_name |       event_name       |  waits   |  wait_time
-----------+------------------------+----------+--------------
 LWLock    | XidGenLock             |       11 |        12864
 LWLock    | ProcArrayLock          |      501 |       174473
 LWLock    | buffer_content         |    53171 |     23641847
 LWLock    | rdsutils               |        2 |        12764
 Lock      | tuple                  |    75686 |   2033956052
 Lock      | transactionid          |  1765147 |  47267583409
 Activity  | AutoVacuumMain         |   136868 |  56305604538
 Activity  | BgWriterHibernate      |     7486 |  55266949471
 Activity  | BgWriterMain           |     7487 |   1508909964
.
.
.
 IO        | SLRURead               |        3 |        11756
 IO        | WALWrite               | 52544463 |    388850428
 IO        | XactSync               |   187073 |    597041642
 IO        | ClogRead               |        2 |        47729
 IO        | OutboundCtrlRead       |        1 |          888
 IO        | OutboundCtrlWrite      |        2 |           64
```

# aurora\$1stat\$1wait\$1event
<a name="aurora_stat_wait_event"></a>

Lists all supported wait events for Aurora PostgreSQL. For information about Aurora PostgreSQL wait events, see [Amazon Aurora PostgreSQL wait events](AuroraPostgreSQL.Reference.Waitevents.md).

## Syntax
<a name="aurora_stat_wait_event-syntax"></a>

 

```
aurora_stat_wait_event()
```

## Arguments
<a name="aurora_stat_wait_event-arguments"></a>

None

## Return type
<a name="aurora_stat_wait_event-return-type"></a>

SETOF record with the following columns:
+ type\$1id – The ID of the type of wait event.
+ event\$1id – The ID of the wait event.
+ type\$1name – Wait type name
+ event\$1name – Wait event name

## Usage notes
<a name="aurora_stat_wait_event-usage-notes"></a>

To see event names with event types instead of IDs, use this function together with other functions such as `aurora_stat_wait_type` and `aurora_stat_system_waits`. Wait event names returned by this function are the same as those returned by the `aurora_wait_report` function.

## Examples
<a name="aurora_stat_wait_event-examples"></a>

The following example shows results from calling the `aurora_stat_wait_event` function.

```
=>  SELECT * 
    FROM aurora_stat_wait_event();
    
 type_id | event_id  |                event_name
---------+-----------+-------------------------------------------
       1 |  16777216 | <unassigned:0>
       1 |  16777217 | ShmemIndexLock
       1 |  16777218 | OidGenLock
       1 |  16777219 | XidGenLock
.
.
.
       9 | 150994945 | PgSleep
       9 | 150994946 | RecoveryApplyDelay
      10 | 167772160 | BufFileRead
      10 | 167772161 | BufFileWrite
      10 | 167772162 | ControlFileRead
.
.
.
      10 | 167772226 | WALInitWrite
      10 | 167772227 | WALRead
      10 | 167772228 | WALSync
      10 | 167772229 | WALSyncMethodAssign
      10 | 167772230 | WALWrite
      10 | 167772231 | XactSync
.
.
.
      11 | 184549377 | LsnAllocate
```

The following example joins `aurora_stat_wait_type` and `aurora_stat_wait_event` to return type names and event names for improved readability.

```
=> SELECT *
    FROM aurora_stat_wait_type() t 
    JOIN aurora_stat_wait_event() e 
      ON t.type_id = e.type_id; 

 type_id | type_name | type_id | event_id  |                event_name
---------+-----------+---------+-----------+-------------------------------------------
       1 | LWLock    |       1 |  16777216 | <unassigned:0>
       1 | LWLock    |       1 |  16777217 | ShmemIndexLock
       1 | LWLock    |       1 |  16777218 | OidGenLock
       1 | LWLock    |       1 |  16777219 | XidGenLock
       1 | LWLock    |       1 |  16777220 | ProcArrayLock
.
.
.
       3 | Lock      |       3 |  50331648 | relation
       3 | Lock      |       3 |  50331649 | extend
       3 | Lock      |       3 |  50331650 | page
       3 | Lock      |       3 |  50331651 | tuple
.
.
.
      10 | IO        |      10 | 167772214 | TimelineHistorySync
      10 | IO        |      10 | 167772215 | TimelineHistoryWrite
      10 | IO        |      10 | 167772216 | TwophaseFileRead
      10 | IO        |      10 | 167772217 | TwophaseFileSync
.
.
.
      11 | LSN       |      11 | 184549376 | LsnDurable
```

# aurora\$1stat\$1wait\$1type
<a name="aurora_stat_wait_type"></a>

Lists all supported wait types for Aurora PostgreSQL.

## Syntax
<a name="aurora_stat_wait_type-syntax"></a>

 

```
aurora_stat_wait_type()
```

## Arguments
<a name="aurora_stat_wait_type-arguments"></a>

None

## Return type
<a name="aurora_stat_wait_type-return-type"></a>

SETOF record with the following columns:
+ type\$1id – The ID of the type of wait event.
+ type\$1name – Wait type name.

## Usage notes
<a name="aurora_stat_wait_type-usage-notes"></a>

To see wait event names with wait event types instead of IDs, use this function together with other functions such as `aurora_stat_wait_event` and `aurora_stat_system_waits`. Wait type names returned by this function are the same as those returned by the `aurora_wait_report` function.

## Examples
<a name="aurora_stat_wait_type-examples"></a>

The following example shows results from calling the `aurora_stat_wait_type` function.

```
=> SELECT * 
     FROM aurora_stat_wait_type();     
 type_id | type_name
---------+-----------
       1 | LWLock
       3 | Lock
       4 | BufferPin
       5 | Activity
       6 | Client
       7 | Extension
       8 | IPC
       9 | Timeout
      10 | IO
      11 | LSN
```

# aurora\$1version
<a name="aurora_version"></a>

Returns the string value of the Amazon Aurora PostgreSQL-Compatible Edition version number. 

## Syntax
<a name="aurora_version-syntax"></a>

 

```
aurora_version()
```

## Arguments
<a name="aurora_version-arguments"></a>

None

## Return type
<a name="aurora_version-return-type"></a>

CHAR or VARCHAR string

## Usage notes
<a name="aurora_version-usage-notes"></a>

This function displays the version of the Amazon Aurora PostgreSQL-Compatible Edition database engine. The version number is returned as a string formatted as *major*.*minor*.*patch*. For more information about Aurora PostgreSQL version numbers, see [Aurora version number](AuroraPostgreSQL.Updates.md#AuroraPostgreSQL.Updates.Versions.AuroraNumber). 

You can choose when to apply minor version upgrades by setting the maintenance window for your Aurora PostgreSQL DB cluster. To learn how, see [Maintaining an Amazon Aurora DB cluster](USER_UpgradeDBInstance.Maintenance.md). 

Starting with the release of Aurora PostgreSQL versions 13.3, 12.8, 11.13, 10.18, and for all other later versions, Aurora version numbers follow PostgreSQL version numbers. For more information about all Aurora PostgreSQL releases, see [Amazon Aurora PostgreSQL updates](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html) in the *Release Notes for Aurora PostgreSQL*. 

## Examples
<a name="aurora_version-examples"></a>

The following example shows the results of calling the `aurora_version` function on an Aurora PostgreSQL DB cluster running [PostgreSQL 12.7, Aurora PostgreSQL release 4.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.42) and then running the same function on a cluster running [Aurora PostgreSQL version 13.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.133X). 

```
=> SELECT * FROM aurora_version();
aurora_version
----------------
 4.2.2
SELECT * FROM aurora_version();
aurora_version
----------------
 13.3.0
```

This example shows how to use the function with various options to get more detail about the Aurora PostgreSQL version. This example has an Aurora version number that's distinct from the PostgreSQL version number.

```
=> SHOW SERVER_VERSION;
 server_version
----------------
 12.7
(1 row)

=> SELECT * FROM aurora_version();
aurora_version
----------------
 4.2.2
(1 row)
    
=> SELECT current_setting('server_version') AS "PostgreSQL Compatiblility";
PostgreSQL Compatiblility
---------------------------
 12.7
(1 row)

=> SELECT version() AS "PostgreSQL Compatiblility Full String";
PostgreSQL Compatiblility Full String
-------------------------------------------------------------------------------------------------------------
 PostgreSQL 12.7 on aarch64-unknown-linux-gnu, compiled by aarch64-unknown-linux-gnu-gcc (GCC) 7.4.0, 64-bit
(1 row) 
    
=> SELECT 'Aurora: '
    || aurora_version()
    || ' Compatible with PostgreSQL: '
    || current_setting('server_version') AS "Instance Version";
Instance Version
------------------------------------------------
 Aurora: 4.2.2 Compatible with PostgreSQL: 12.7
(1 row)
```

This next example uses the function with the same options in the previous example. This example doesn't have an Aurora version number that's distinct from the PostgreSQL version number.

```
=> SHOW SERVER_VERSION;
server_version
----------------
 13.3

=> SELECT * FROM aurora_version();
aurora_version
----------------
 13.3.0
=> SELECT current_setting('server_version') AS "PostgreSQL Compatiblility";
PostgreSQL Compatiblility
---------------------------
 13.3

=> SELECT version() AS "PostgreSQL Compatiblility Full String";
PostgreSQL Compatiblility Full String
-------------------------------------------------------------------------------------------------
 PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 7.4.0, 64-bit
=> SELECT 'Aurora: ' 
    || aurora_version() 
    || ' Compatible with PostgreSQL: ' 
    || current_setting('server_version') AS "Instance Version";
Instance Version
-------------------------------------------------------
 Aurora: 13.3.0 Compatible with PostgreSQL: 13.3
```

# aurora\$1volume\$1logical\$1start\$1lsn
<a name="aurora_volume_logical_start_lsn"></a>

Returns the log sequence number (LSN) used for identifying the beginning of a record in the logical write-ahead log (WAL) stream of the Aurora cluster volume.

## Syntax
<a name="aurora_volume_logical_start_lsn-syntax"></a>

 

```
aurora_volume_logical_start_lsn()
```

## Arguments
<a name="aurora_volume_logical_start_lsn-arguments"></a>

None

## Return type
<a name="aurora_volume_logical_start_lsn-return-type"></a>

`pg_lsn`

## Usage notes
<a name="aurora_volume_logical_start_lsn-usage-notes"></a>

This function identifies the beginning of the record in the logical WAL stream for a given Aurora cluster volume. You can use this function while performing major version upgrade using logical replication and Aurora fast cloning to determine the LSN at which a snapshot or database clone is taken. You can then use logical replication to continuously stream the newer data recorded after the LSN and synchronize the changes from publisher to subscriber. 

For more information on using logical replication for a major version upgrade, see [Using logical replication to perform a major version upgrade for Aurora PostgreSQL](AuroraPostgreSQL.MajorVersionUpgrade.md). 

This function is available on the following versions of Aurora PostgreSQL:
+ 15.2 and higher 15 versions
+ 14.3 and higher 14 versions
+ 13.6 and higher 13 versions
+ 12.10 and higher 12 versions
+ 11.15 and higher 11 versions
+ 10.20 and higher 10 versions

## Examples
<a name="aurora_volume_logical_start_lsn-examples"></a>

You can obtain the log sequence number (LSN) using the following query:

```
postgres=> SELECT aurora_volume_logical_start_lsn();
            
aurora_volume_logical_start_lsn 
---------------
0/402E2F0
(1 row)
```

# aurora\$1wait\$1report
<a name="aurora_wait_report"></a>

This function shows wait event activity over a period of time. 

## Syntax
<a name="aurora_wait_report-syntax"></a>

 

```
aurora_wait_report([time])
```

## Arguments
<a name="aurora_wait_report-arguments"></a>

 *time (optional) *   
The time in seconds. Default is 10 seconds.

## Return type
<a name="aurora_wait_report-return-type"></a>

SETOF record with the following columns:
+ type\$1name – Wait type name
+ event\$1name – Wait event name
+ wait – Number of waits
+ wait\$1time – Wait time in milliseconds 
+ ms\$1per\$1wait – Average milliseconds by the number of an wait
+ waits\$1per\$1xact – Average waits by the number of one transaction
+ ms\$1per\$1xact – Average milliseconds by the number of transactions

## Usage notes
<a name="aurora_wait_report-usage-notes"></a>

This function is available as of Aurora PostgreSQL release 1.1 compatible with PostgreSQL 9.6.6 and higher versions.

To use this function, you need to first create the Aurora PostgreSQL `aurora_stat_utils` extension, as follows:

```
=> CREATE extension aurora_stat_utils;
CREATE EXTENSION
```

For more information about available Aurora PostgreSQL extension versions, see [Extension versions for Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html) in *Release Notes for Aurora PostgreSQL*.

This function calculates the instance-level wait events by comparing two snapshots of statistics data from aurora\$1stat\$1system\$1waits() function and pg\$1stat\$1database PostgreSQL Statistics Views. 

For more information about `aurora_stat_system_waits()` and `pg_stat_database`, see [The Statistics Collector](https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-DATABASE-VIEW) in the *PostgreSQL documentation*.

When run, this function takes an initial snapshot, waits the number of seconds specified, and then takes a second snapshot. The function compares the two snapshots and returns the difference. This difference represents the instance's activity for that time interval. 

On the writer instance, the function also displays the number of committed transactions and TPS (transactions per second). This function returns information at the instance level and includes all databases on the instance. 

## Examples
<a name="aurora_wait_report-examples"></a>

This example shows how to create aurora\$1stat\$1utils extension to be able to use aurora\$1wait\$1report function. 

```
=> CREATE extension aurora_stat_utils;
CREATE EXTENSION
```

This example shows how to check wait report for 10 seconds. 

```
=> SELECT *
     FROM aurora_wait_report();
NOTICE:  committed 34 transactions in 10 seconds (tps 3)
 type_name |    event_name     | waits | wait_time | ms_per_wait | waits_per_xact | ms_per_xact
-----------+-------------------+-------+-----------+-------------+----------------+-------------
 Client    | ClientRead        |    26 |  30003.00 |    1153.961 |           0.76 |     882.441
 Activity  | WalWriterMain     |    50 |  10051.32 |     201.026 |           1.47 |     295.627
 Timeout   | PgSleep           |     1 |  10049.52 |   10049.516 |           0.03 |     295.574
 Activity  | BgWriterHibernate |     1 |  10048.15 |   10048.153 |           0.03 |     295.534
 Activity  | AutoVacuumMain    |    18 |   9941.66 |     552.314 |           0.53 |     292.402
 Activity  | BgWriterMain      |     1 |    201.09 |     201.085 |           0.03 |       5.914
 IO        | XactSync          |    15 |     25.34 |       1.690 |           0.44 |       0.745
 IO        | RelationMapRead   |    12 |      0.54 |       0.045 |           0.35 |       0.016
 IO        | WALWrite          |    84 |      0.21 |       0.002 |           2.47 |       0.006
 IO        | DataFileExtend    |     1 |      0.02 |       0.018 |           0.03 |       0.001
```

This example shows how to check wait report for 60 seconds. 

```
=> SELECT *
     FROM aurora_wait_report(60);
NOTICE:  committed 1544 transactions in 60 seconds (tps 25)
 type_name |       event_name       |  waits  | wait_time | ms_per_wait | waits_per_xact | ms_per_xact
-----------+------------------------+---------+-----------+-------------+----------------+-------------
 Lock      | transactionid          |    6422 | 477000.53 |      74.276 |           4.16 |     308.938
 Client    | ClientRead             |    8265 | 270752.99 |      32.759 |           5.35 |     175.358
 Activity  | CheckpointerMain       |       1 |  60100.25 |   60100.246 |           0.00 |      38.925
 Timeout   | PgSleep                |       1 |  60098.49 |   60098.493 |           0.00 |      38.924
 Activity  | WalWriterMain          |     296 |  60010.99 |     202.740 |           0.19 |      38.867
 Activity  | AutoVacuumMain         |     107 |  59827.84 |     559.139 |           0.07 |      38.749
 Activity  | BgWriterMain           |     290 |  58821.83 |     202.834 |           0.19 |      38.097
 IO        | XactSync               |    1295 |  55220.13 |      42.641 |           0.84 |      35.764
 IO        | WALWrite               | 6602259 |  47810.94 |       0.007 |        4276.07 |      30.966
 Lock      | tuple                  |     473 |  29880.67 |      63.173 |           0.31 |      19.353
 LWLock    | buffer_mapping         |     142 |   3540.13 |      24.930 |           0.09 |       2.293
 Activity  | BgWriterHibernate      |     290 |   1124.15 |       3.876 |           0.19 |       0.728
 IO        | BufFileRead            |    7615 |    618.45 |       0.081 |           4.93 |       0.401
 LWLock    | buffer_content         |      73 |    345.93 |       4.739 |           0.05 |       0.224
 LWLock    | lock_manager           |      62 |    191.44 |       3.088 |           0.04 |       0.124
 IO        | RelationMapRead        |      72 |      5.16 |       0.072 |           0.05 |       0.003
 LWLock    | ProcArrayLock          |       1 |      2.01 |       2.008 |           0.00 |       0.001
 IO        | ControlFileWriteUpdate |       2 |      0.03 |       0.013 |           0.00 |       0.000
 IO        | DataFileExtend         |       1 |      0.02 |       0.018 |           0.00 |       0.000
 IO        | ControlFileSyncUpdate  |       1 |      0.00 |       0.000 |           0.00 |       0.000
```

# Amazon Aurora PostgreSQL parameters
<a name="AuroraPostgreSQL.Reference.ParameterGroups"></a>

You manage your Amazon Aurora DB cluster in the same way that you manage Amazon RDS DB instances, by using parameters in a DB parameter group. However, Amazon Aurora differs from Amazon RDS in that an Aurora DB cluster has multiple DB instances. Some of the parameters that you use to manage your Amazon Aurora DB cluster apply to the entire cluster, while other parameters apply only to a given DB instance in the DB cluster, as follows:
+ **DB cluster parameter group** – A DB cluster parameter group contains the set of engine configuration parameters that apply throughout the Aurora DB cluster. For example, cluster cache management is a feature of an Aurora DB cluster that's controlled by the `apg_ccm_enabled` parameter which is part of the DB cluster parameter group. The DB cluster parameter group also contains default settings for the DB parameter group for the DB instances that make up the cluster. 
+ **DB parameter group** – A DB parameter group is the set of engine configuration values that apply to a specific DB instance of that engine type. The DB parameter groups for the PostgreSQL DB engine are used by an RDS for PostgreSQL DB instance and Aurora PostgreSQL DB cluster. These configuration settings apply to properties that can vary among the DB instances within an Aurora cluster, such as the sizes for memory buffers. 

You manage cluster-level parameters in DB cluster parameter groups. You manage instance-level parameters in DB parameter groups. You can manage parameters using the Amazon RDS console, the AWS CLI, or the Amazon RDS API. There are separate commands for managing cluster-level parameters and instance-level parameters.
+ To manage cluster-level parameters in a DB cluster parameter group, use the [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) AWS CLI command.
+ To manage instance-level parameters in a DB parameter group for a DB instance in a DB cluster, use the [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI command.

To learn more about the AWS CLI, see [Using the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-using.html) in the *AWS Command Line Interface User Guide*.

For more information about parameter groups, see [Parameter groups for Amazon Aurora](USER_WorkingWithParamGroups.md).

## Viewing Aurora PostgreSQL DB cluster and DB parameters
<a name="AuroraPostgreSQL.Reference.ParameterGroups-viewing-parameters"></a>

You can view all available default parameter groups for RDS for PostgreSQL DB instances and for Aurora PostgreSQL DB clusters in the AWS Management Console. The default parameter groups for all DB engines and DB cluster types and versions are listed for each AWS Region. Any custom parameter groups are also listed. 

Rather than viewing in the AWS Management Console, you can also list parameters contained in DB cluster parameter groups and DB parameter groups by using the AWS CLI or the Amazon RDS API. For example, to list parameters in a DB cluster parameter group you use the [describe-db-cluster-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-parameters.html) AWS CLI command as follows:

```
aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-postgresql12
```

The command returns detailed JSON descriptions of each parameter. To reduce the amount of information returned, you can specify what you want by using the `--query` option. For example, you can get the parameter name, its description, and allowed values for the default Aurora PostgreSQL 12 DB cluster parameter group as follows: 

For Linux, macOS, or Unix:

```
aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-postgresql12 \
    --query 'Parameters[].[{ParameterName:ParameterName,Description:Description,ApplyType:ApplyType,AllowedValues:AllowedValues}]'
```

For Windows:

```
aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-postgresql12 ^
    --query "Parameters[].[{ParameterName:ParameterName,Description:Description,ApplyType:ApplyType,AllowedValues:AllowedValues}]"
```

An Aurora DB cluster parameter group includes the DB instance parameter group and default values for a given Aurora DB engine. You can get the list of DB parameters from the same default Aurora PostgreSQL default parameter group by usng the [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) AWS CLI command as shown following.

For Linux, macOS, or Unix:

```
aws rds describe-db-parameters --db-parameter-group-name default.aurora-postgresql12 \
    --query 'Parameters[].[{ParameterName:ParameterName,Description:Description,ApplyType:ApplyType,AllowedValues:AllowedValues}]'
```

For Windows:

```
aws rds describe-db-parameters --db-parameter-group-name default.aurora-postgresql12 ^
    --query "Parameters[].[{ParameterName:ParameterName,Description:Description,ApplyType:ApplyType,AllowedValues:AllowedValues}]"
```

The preceding commands return lists of parameters from the DB cluster or DB parameter group with descriptions and other details specified in the query. Following is an example response.

```
[
    [
        {
            "ParameterName": "apg_enable_batch_mode_function_execution",
            "ApplyType": "dynamic",
            "Description": "Enables batch-mode functions to process sets of rows at a time.",
            "AllowedValues": "0,1"
        }
    ],
    [
        {
            "ParameterName": "apg_enable_correlated_any_transform",
            "ApplyType": "dynamic",
            "Description": "Enables the planner to transform correlated ANY Sublink (IN/NOT IN subquery) to JOIN when possible.",
            "AllowedValues": "0,1"
        }
    ],...
```

Following are tables containing values for the default DB cluster parameter and DB parameter for Aurora PostgreSQL version 14.

## Aurora PostgreSQL cluster-level parameters
<a name="AuroraPostgreSQL.Reference.Parameters.Cluster"></a>

You can view the cluster-level parameters available for a specific Aurora PostgreSQL version using the AWS Management console, the AWS CLI, or the Amazon RDS API. For information about viewing the parameters in an Aurora PostgreSQL DB cluster parameter groups in the RDS console, see [Viewing parameter values for a DB cluster parameter groupin Amazon Aurora](USER_WorkingWithParamGroups.ViewingCluster.md).

Some cluster-level parameters aren't available in all versions and some are being deprecated. For information about viewing the parameters of a specific Aurora PostgreSQL version, see [Viewing Aurora PostgreSQL DB cluster and DB parameters](#AuroraPostgreSQL.Reference.ParameterGroups-viewing-parameters).

For example, the following table lists the parameters available in the default DB cluster parameter group for Aurora PostgreSQL version 14. If you create an Aurora PostgreSQL DB cluster without specifying your own custom DB parameter group, your DB cluster is created using the default Aurora DB cluster parameter group for the version chosen, such as `default.aurora-postgresql14`, `default.aurora-postgresql13`, and so on. 

For a listing of the DB instance parameters for this same default DB cluster parameter group, see [Aurora PostgreSQL instance-level parameters](#AuroraPostgreSQL.Reference.Parameters.Instance).


| Parameter name | Description | Default | 
| --- | --- | --- | 
| ansi\$1constraint\$1trigger\$1ordering | Change the firing order of constraint triggers to be compatible with the ANSI SQL standard. | –  | 
| ansi\$1force\$1foreign\$1key\$1checks | Ensure referential actions such as cascaded delete or cascaded update will always occur regardless of the various trigger contexts that exist for the action. | –  | 
| ansi\$1qualified\$1update\$1set\$1target | Support table and schema qualifiers in UPDATE ... SET statements. | –  | 
| apg\$1ccm\$1enabled | Enable or disable cluster cache management for the cluster. | –  | 
| apg\$1enable\$1batch\$1mode\$1function\$1execution | Enables batch-mode functions to process sets of rows at a time. | –  | 
| apg\$1enable\$1correlated\$1any\$1transform | Enables the planner to transform correlated ANY Sublink (IN/NOT IN subquery) to JOIN when possible. | –  | 
| apg\$1enable\$1function\$1migration | Enables the planner to migrate eligible scalar functions to the FROM clause. | –  | 
| apg\$1enable\$1not\$1in\$1transform | Enables the planner to transform NOT IN subquery to ANTI JOIN when possible. | –  | 
| apg\$1enable\$1remove\$1redundant\$1inner\$1joins | Enables the planner to remove redundant inner joins. | –  | 
| apg\$1enable\$1semijoin\$1push\$1down | Enables the use of semijoin filters for hash joins. | –  | 
| apg\$1plan\$1mgmt.capture\$1plan\$1baselines | Capture plan baseline mode. manual - enable plan capture for any SQL statement, off - disable plan capture, automatic - enable plan capture for for statements in pg\$1stat\$1statements that satisfy the eligibility criteria. | off  | 
| apg\$1plan\$1mgmt.max\$1databases | Sets the maximum number of databases that that may manage queries using apg\$1plan\$1mgmt. | 10  | 
| apg\$1plan\$1mgmt.max\$1plans | Sets the maximum number of plans that may be cached by apg\$1plan\$1mgmt. | 10000  | 
| apg\$1plan\$1mgmt.plan\$1retention\$1period | Maximum number of days since a plan was last\$1used before a plan will be automatically deleted. | 32  | 
| apg\$1plan\$1mgmt.unapproved\$1plan\$1execution\$1threshold | Estimated total plan cost below which an Unapproved plan will be executed. | 0  | 
| apg\$1plan\$1mgmt.use\$1plan\$1baselines | Use only approved or fixed plans for managed statements. | false  | 
| application\$1name | Sets the application name to be reported in statistics and logs. | –  | 
| array\$1nulls | Enable input of NULL elements in arrays. | –  | 
| aurora\$1compute\$1plan\$1id | Monitors query execution plans to detect the execution plans contributing to current database load and to track performance statistics of execution plans over time. For more information, see [Monitoring query execution plans for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html). | on  | 
| authentication\$1timeout | (s) Sets the maximum allowed time to complete client authentication. | –  | 
| auto\$1explain.log\$1analyze | Use EXPLAIN ANALYZE for plan logging. | –  | 
| auto\$1explain.log\$1buffers | Log buffers usage. | –  | 
| auto\$1explain.log\$1format | EXPLAIN format to be used for plan logging. | –  | 
| auto\$1explain.log\$1min\$1duration | Sets the minimum execution time above which plans will be logged. | –  | 
| auto\$1explain.log\$1nested\$1statements | Log nested statements. | –  | 
| auto\$1explain.log\$1timing | Collect timing data, not just row counts. | –  | 
| auto\$1explain.log\$1triggers | Include trigger statistics in plans. | –  | 
| auto\$1explain.log\$1verbose | Use EXPLAIN VERBOSE for plan logging. | –  | 
| auto\$1explain.sample\$1rate | Fraction of queries to process. | –  | 
| autovacuum | Starts the autovacuum subprocess. | –  | 
| autovacuum\$1analyze\$1scale\$1factor | Number of tuple inserts, updates or deletes prior to analyze as a fraction of reltuples. | 0.05  | 
| autovacuum\$1analyze\$1threshold | Minimum number of tuple inserts, updates or deletes prior to analyze. | –  | 
| autovacuum\$1freeze\$1max\$1age | Age at which to autovacuum a table to prevent transaction ID wraparound. | –  | 
| autovacuum\$1max\$1workers | Sets the maximum number of simultaneously running autovacuum worker processes. | GREATEST(DBInstanceClassMemory/64371566592,3)  | 
| autovacuum\$1multixact\$1freeze\$1max\$1age | Multixact age at which to autovacuum a table to prevent multixact wraparound. | –  | 
| autovacuum\$1naptime | (s) Time to sleep between autovacuum runs. | 5  | 
| autovacuum\$1vacuum\$1cost\$1delay | (ms) Vacuum cost delay in milliseconds, for autovacuum. | 5  | 
| autovacuum\$1vacuum\$1cost\$1limit | Vacuum cost amount available before napping, for autovacuum. | GREATEST(log(DBInstanceClassMemory/21474836480)\$1600,200)  | 
| autovacuum\$1vacuum\$1insert\$1scale\$1factor | Number of tuple inserts prior to vacuum as a fraction of reltuples. | –  | 
| autovacuum\$1vacuum\$1insert\$1threshold | Minimum number of tuple inserts prior to vacuum, or -1 to disable insert vacuums. | –  | 
| autovacuum\$1vacuum\$1scale\$1factor | Number of tuple updates or deletes prior to vacuum as a fraction of reltuples. | 0.1  | 
| autovacuum\$1vacuum\$1threshold | Minimum number of tuple updates or deletes prior to vacuum. | –  | 
| autovacuum\$1work\$1mem | (kB) Sets the maximum memory to be used by each autovacuum worker process. | GREATEST(DBInstanceClassMemory/32768,131072)  | 
| babelfishpg\$1tds.default\$1server\$1name | Default Babelfish server name | Microsoft SQL Server  | 
| babelfishpg\$1tds.listen\$1addresses | Sets the host name or IP address(es) to listen TDS to. | \$1  | 
| babelfishpg\$1tds.port | Sets the TDS TCP port the server listens on. | 1433  | 
| babelfishpg\$1tds.tds\$1debug\$1log\$1level | Sets logging level in TDS, 0 disables logging | 1  | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1precision | Sets the default precision of numeric type to be sent in the TDS column metadata if the engine does not specify one. | 38  | 
| babelfishpg\$1tds.tds\$1default\$1numeric\$1scale | Sets the default scale of numeric type to be sent in the TDS column metadata if the engine does not specify one. | 8  | 
| babelfishpg\$1tds.tds\$1default\$1packet\$1size | Sets the default packet size for all the SQL Server clients being connected | 4096  | 
| babelfishpg\$1tds.tds\$1default\$1protocol\$1version | Sets a default TDS protocol version for all the clients being connected | DEFAULT  | 
| babelfishpg\$1tds.tds\$1ssl\$1encrypt | Sets the SSL Encryption option | 0  | 
| babelfishpg\$1tds.tds\$1ssl\$1max\$1protocol\$1version | Sets the maximum SSL/TLS protocol version to use for tds session. | TLSv1.2  | 
| babelfishpg\$1tds.tds\$1ssl\$1min\$1protocol\$1version | Sets the minimum SSL/TLS protocol version to use for tds session. | TLSv1.2 from Aurora PostgreSQL version 16, TLSv1 for versions older than Aurora PostgreSQL version 16  | 
| babelfishpg\$1tsql.default\$1locale | Default locale to be used for collations created by CREATE COLLATION. | en-US  | 
| babelfishpg\$1tsql.migration\$1mode | Defines if multiple user databases are supported | multi-db from Aurora PostgreSQL version 16, single-db for versions older than Aurora PostgreSQL version 16  | 
| babelfishpg\$1tsql.server\$1collation\$1name | Name of the default server collation | sql\$1latin1\$1general\$1cp1\$1ci\$1as  | 
| babelfishpg\$1tsql.version | Sets the output of @@VERSION variable | default  | 
| backend\$1flush\$1after | (8Kb) Number of pages after which previously performed writes are flushed to disk. | –  | 
| backslash\$1quote | Sets whether \$1\$1 is allowed in string literals. | –  | 
| backtrace\$1functions | Log backtrace for errors in these functions. | –  | 
| bytea\$1output | Sets the output format for bytea. | –  | 
| check\$1function\$1bodies | Check function bodies during CREATE FUNCTION. | –  | 
| client\$1connection\$1check\$1interval | Sets the time interval between checks for disconnection while running queries. | –  | 
| client\$1encoding | Sets the clients character set encoding. | UTF8  | 
| client\$1min\$1messages | Sets the message levels that are sent to the client. | –  | 
| compute\$1query\$1id | Compute query identifiers. | auto  | 
| config\$1file | Sets the servers main configuration file. | /rdsdbdata/config/postgresql.conf  | 
| constraint\$1exclusion | Enables the planner to use constraints to optimize queries. | –  | 
| cpu\$1index\$1tuple\$1cost | Sets the planners estimate of the cost of processing each index entry during an index scan. | –  | 
| cpu\$1operator\$1cost | Sets the planners estimate of the cost of processing each operator or function call. | –  | 
| cpu\$1tuple\$1cost | Sets the planners estimate of the cost of processing each tuple (row). | –  | 
| cron.database\$1name | Sets the database to store pg\$1cron metadata tables | postgres  | 
| cron.log\$1run | Log all jobs runs into the job\$1run\$1details table | on  | 
| cron.log\$1statement | Log all cron statements prior to execution. | off  | 
| cron.max\$1running\$1jobs | Maximum number of jobs that can run concurrently. | 5  | 
| cron.use\$1background\$1workers | Enables background workers for pg\$1cron | on  | 
| cursor\$1tuple\$1fraction | Sets the planners estimate of the fraction of a cursors rows that will be retrieved. | –  | 
| data\$1directory | Sets the servers data directory. | /rdsdbdata/db  | 
| datestyle | Sets the display format for date and time values. | –  | 
| db\$1user\$1namespace | Enables per-database user names. | –  | 
| deadlock\$1timeout | (ms) Sets the time to wait on a lock before checking for deadlock. | –  | 
| debug\$1pretty\$1print | Indents parse and plan tree displays. | –  | 
| debug\$1print\$1parse | Logs each querys parse tree. | –  | 
| debug\$1print\$1plan | Logs each querys execution plan. | –  | 
| debug\$1print\$1rewritten | Logs each querys rewritten parse tree. | –  | 
| default\$1statistics\$1target | Sets the default statistics target. | –  | 
| default\$1tablespace | Sets the default tablespace to create tables and indexes in. | –  | 
| default\$1toast\$1compression | Sets the default compression method for compressible values. | –  | 
| default\$1transaction\$1deferrable | Sets the default deferrable status of new transactions. | –  | 
| default\$1transaction\$1isolation | Sets the transaction isolation level of each new transaction. | –  | 
| default\$1transaction\$1read\$1only | Sets the default read-only status of new transactions. | –  | 
| effective\$1cache\$1size | (8kB) Sets the planners assumption about the size of the disk cache. | SUM(DBInstanceClassMemory/12038,-50003)  | 
| effective\$1io\$1concurrency | Number of simultaneous requests that can be handled efficiently by the disk subsystem. | –  | 
| enable\$1async\$1append | Enables the planners use of async append plans. | –  | 
| enable\$1bitmapscan | Enables the planners use of bitmap-scan plans. | –  | 
| enable\$1gathermerge | Enables the planners use of gather merge plans. | –  | 
| enable\$1hashagg | Enables the planners use of hashed aggregation plans. | –  | 
| enable\$1hashjoin | Enables the planners use of hash join plans. | –  | 
| enable\$1incremental\$1sort | Enables the planners use of incremental sort steps. | –  | 
| enable\$1indexonlyscan | Enables the planners use of index-only-scan plans. | –  | 
| enable\$1indexscan | Enables the planners use of index-scan plans. | –  | 
| enable\$1material | Enables the planners use of materialization. | –  | 
| enable\$1memoize | Enables the planners use of memoization | –  | 
| enable\$1mergejoin | Enables the planners use of merge join plans. | –  | 
| enable\$1nestloop | Enables the planners use of nested-loop join plans. | –  | 
| enable\$1parallel\$1append | Enables the planners use of parallel append plans. | –  | 
| enable\$1parallel\$1hash | Enables the planners user of parallel hash plans. | –  | 
| enable\$1partition\$1pruning | Enable plan-time and run-time partition pruning. | –  | 
| enable\$1partitionwise\$1aggregate | Enables partitionwise aggregation and grouping. | –  | 
| enable\$1partitionwise\$1join | Enables partitionwise join. | –  | 
| enable\$1seqscan | Enables the planners use of sequential-scan plans. | –  | 
| enable\$1sort | Enables the planners use of explicit sort steps. | –  | 
| enable\$1tidscan | Enables the planners use of TID scan plans. | –  | 
| escape\$1string\$1warning | Warn about backslash escapes in ordinary string literals. | –  | 
| exit\$1on\$1error | Terminate session on any error. | –  | 
| extra\$1float\$1digits | Sets the number of digits displayed for floating-point values. | –  | 
| force\$1parallel\$1mode | Forces use of parallel query facilities. | –  | 
| from\$1collapse\$1limit | Sets the FROM-list size beyond which subqueries are not collapsed. | –  | 
| geqo | Enables genetic query optimization. | –  | 
| geqo\$1effort | GEQO: effort is used to set the default for other GEQO parameters. | –  | 
| geqo\$1generations | GEQO: number of iterations of the algorithm. | –  | 
| geqo\$1pool\$1size | GEQO: number of individuals in the population. | –  | 
| geqo\$1seed | GEQO: seed for random path selection. | –  | 
| geqo\$1selection\$1bias | GEQO: selective pressure within the population. | –  | 
| geqo\$1threshold | Sets the threshold of FROM items beyond which GEQO is used. | –  | 
| gin\$1fuzzy\$1search\$1limit | Sets the maximum allowed result for exact search by GIN. | –  | 
| gin\$1pending\$1list\$1limit | (kB) Sets the maximum size of the pending list for GIN index. | –  | 
| hash\$1mem\$1multiplier | Multiple of work\$1mem to use for hash tables. | –  | 
| hba\$1file | Sets the servers hba configuration file. | /rdsdbdata/config/pg\$1hba.conf  | 
| hot\$1standby\$1feedback | Allows feedback from a hot standby to the primary that will avoid query conflicts. | on  | 
| huge\$1pages | Reduces overhead when a DB instance is working with large contiguous chunks of memory, such as that used by shared buffers. It is turned on by default for all the DB instance classes other than t3.medium,db.t3.large,db.t4g.medium,db.t4g.large instance classes.  | on  | 
| ident\$1file | Sets the servers ident configuration file. | /rdsdbdata/config/pg\$1ident.conf  | 
| idle\$1in\$1transaction\$1session\$1timeout | (ms) Sets the maximum allowed duration of any idling transaction. | 86400000  | 
| idle\$1session\$1timeout | Terminate any session that has been idle (that is, waiting for a client query), but not within an open transaction, for longer than the specified amount of time | –  | 
| intervalstyle | Sets the display format for interval values. | –  | 
| join\$1collapse\$1limit | Sets the FROM-list size beyond which JOIN constructs are not flattened. | –  | 
| krb\$1caseins\$1users  | Sets whether GSSAPI (Generic Security Service API) user names should be treated case-insensitively (true) or not. By default, this parameter is set to false, so Kerberos expects user names to be case sensitive. For more information, see [GSSAPI Authentication](https://www.postgresql.org/docs/current/gssapi-auth.html) in the PostgreSQL documentation.  | false | 
| lc\$1messages | Sets the language in which messages are displayed. | –  | 
| lc\$1monetary | Sets the locale for formatting monetary amounts. | –  | 
| lc\$1numeric | Sets the locale for formatting numbers. | –  | 
| lc\$1time | Sets the locale for formatting date and time values. | –  | 
| listen\$1addresses | Sets the host name or IP address(es) to listen to. | \$1  | 
| lo\$1compat\$1privileges | Enables backward compatibility mode for privilege checks on large objects. | 0  | 
| log\$1autovacuum\$1min\$1duration | (ms) Sets the minimum execution time above which autovacuum actions will be logged. | 10000  | 
| log\$1connections | Logs each successful connection. | –  | 
| log\$1destination | Sets the destination for server log output. | stderr  | 
| log\$1directory | Sets the destination directory for log files. | /rdsdbdata/log/error  | 
| log\$1disconnections | Logs end of a session, including duration. | –  | 
| log\$1duration | Logs the duration of each completed SQL statement. | –  | 
| log\$1error\$1verbosity | Sets the verbosity of logged messages. | –  | 
| log\$1executor\$1stats | Writes executor performance statistics to the server log. | –  | 
| log\$1file\$1mode | Sets the file permissions for log files. | 0644  | 
| log\$1filename | Sets the file name pattern for log files. | postgresql.log.%Y-%m-%d-%H%M  | 
| logging\$1collector | Start a subprocess to capture stderr output and/or csvlogs into log files. | 1  | 
| log\$1hostname | Logs the host name in the connection logs. | 0  | 
| logical\$1decoding\$1work\$1mem | (kB) This much memory can be used by each internal reorder buffer before spilling to disk. | –  | 
| log\$1line\$1prefix | Controls information prefixed to each log line. | %t:%r:%u@%d:%p]:  | 
| log\$1lock\$1waits | Logs long lock waits. | –  | 
| log\$1min\$1duration\$1sample | (ms) Sets the minimum execution time above which a sample of statements will be logged. Sampling is determined by log\$1statement\$1sample\$1rate. | –  | 
| log\$1min\$1duration\$1statement | (ms) Sets the minimum execution time above which statements will be logged. | –  | 
| log\$1min\$1error\$1statement | Causes all statements generating error at or above this level to be logged. | –  | 
| log\$1min\$1messages | Sets the message levels that are logged. | –  | 
| log\$1parameter\$1max\$1length | (B) When logging statements, limit logged parameter values to first N bytes. | –  | 
| log\$1parameter\$1max\$1length\$1on\$1error | (B) When reporting an error, limit logged parameter values to first N bytes. | –  | 
| log\$1parser\$1stats | Writes parser performance statistics to the server log. | –  | 
| log\$1planner\$1stats | Writes planner performance statistics to the server log. | –  | 
| log\$1replication\$1commands | Logs each replication command. | –  | 
| log\$1rotation\$1age | (min) Automatic log file rotation will occur after N minutes. | 60  | 
| log\$1rotation\$1size | (kB) Automatic log file rotation will occur after N kilobytes. | 100000  | 
| log\$1statement | Sets the type of statements logged. | –  | 
| log\$1statement\$1sample\$1rate | Fraction of statements exceeding log\$1min\$1duration\$1sample to be logged. | –  | 
| log\$1statement\$1stats | Writes cumulative performance statistics to the server log. | –  | 
| log\$1temp\$1files | (kB) Log the use of temporary files larger than this number of kilobytes. | –  | 
| log\$1timezone | Sets the time zone to use in log messages. | UTC  | 
| log\$1transaction\$1sample\$1rate | Set the fraction of transactions to log for new transactions. | –  | 
| log\$1truncate\$1on\$1rotation | Truncate existing log files of same name during log rotation. | 0  | 
| maintenance\$1io\$1concurrency | A variant of effective\$1io\$1concurrency that is used for maintenance work. | 1  | 
| maintenance\$1work\$1mem | (kB) Sets the maximum memory to be used for maintenance operations. | GREATEST(DBInstanceClassMemory/63963136\$11024,65536)  | 
| max\$1connections | Sets the maximum number of concurrent connections. | LEAST(DBInstanceClassMemory/9531392,5000)  | 
| max\$1files\$1per\$1process | Sets the maximum number of simultaneously open files for each server process. | –  | 
| max\$1locks\$1per\$1transaction | Sets the maximum number of locks per transaction. | 64  | 
| max\$1logical\$1replication\$1workers | Maximum number of logical replication worker processes. | –  | 
| max\$1parallel\$1maintenance\$1workers | Sets the maximum number of parallel processes per maintenance operation. | –  | 
| max\$1parallel\$1workers | Sets the maximum number of parallel workers than can be active at one time. | GREATEST(\$1DBInstanceVCPU/2,8)  | 
| max\$1parallel\$1workers\$1per\$1gather | Sets the maximum number of parallel processes per executor node. | –  | 
| max\$1pred\$1locks\$1per\$1page | Sets the maximum number of predicate-locked tuples per page. | –  | 
| max\$1pred\$1locks\$1per\$1relation | Sets the maximum number of predicate-locked pages and tuples per relation. | –  | 
| max\$1pred\$1locks\$1per\$1transaction | Sets the maximum number of predicate locks per transaction. | –  | 
| max\$1prepared\$1transactions | Sets the maximum number of simultaneously prepared transactions. | 0  | 
| max\$1replication\$1slots | Sets the maximum number of replication slots that the server can support. | 20  | 
| max\$1slot\$1wal\$1keep\$1size | (MB) Replication slots will be marked as failed, and segments released for deletion or recycling, if this much space is occupied by WAL on disk. | –  | 
| max\$1stack\$1depth | (kB) Sets the maximum stack depth, in kilobytes. | 6144  | 
| max\$1standby\$1streaming\$1delay | (ms) Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data. | 14000  | 
| max\$1sync\$1workers\$1per\$1subscription | Maximum number of synchronization workers per subscription | 2  | 
| max\$1wal\$1senders | Sets the maximum number of simultaneously running WAL sender processes. | 10  | 
| max\$1worker\$1processes | Sets the maximum number of concurrent worker processes. | GREATEST(\$1DBInstanceVCPU\$12,8)  | 
| min\$1dynamic\$1shared\$1memory | (MB) Amount of dynamic shared memory reserved at startup. | –  | 
| min\$1parallel\$1index\$1scan\$1size | (8kB) Sets the minimum amount of index data for a parallel scan. | –  | 
| min\$1parallel\$1table\$1scan\$1size | (8kB) Sets the minimum amount of table data for a parallel scan. | –  | 
| old\$1snapshot\$1threshold | (min) Time before a snapshot is too old to read pages changed after the snapshot was taken. | –  | 
| orafce.nls\$1date\$1format | Emulate oracles date output behaviour. | –  | 
| orafce.timezone | Specify timezone used for sysdate function. | –  | 
| parallel\$1leader\$1participation | Controls whether Gather and Gather Merge also run subplans. | –  | 
| parallel\$1setup\$1cost | Sets the planners estimate of the cost of starting up worker processes for parallel query. | –  | 
| parallel\$1tuple\$1cost | Sets the planners estimate of the cost of passing each tuple (row) from worker to master backend. | –  | 
| password\$1encryption | Encrypt passwords. | –  | 
| pgaudit.log | Specifies which classes of statements will be logged by session audit logging. | –  | 
| pgaudit.log\$1catalog | Specifies that session logging should be enabled in the case where all relations in a statement are in pg\$1catalog. | –  | 
| pgaudit.log\$1level | Specifies the log level that will be used for log entries. | –  | 
| pgaudit.log\$1parameter | Specifies that audit logging should include the parameters that were passed with the statement. | –  | 
| pgaudit.log\$1relation | Specifies whether session audit logging should create a separate log entry for each relation (TABLE, VIEW, etc.) referenced in a SELECT or DML statement. | –  | 
| pgaudit.log\$1statement\$1once | Specifies whether logging will include the statement text and parameters with the first log entry for a statement/substatement combination or with every entry. | –  | 
| pgaudit.role | Specifies the master role to use for object audit logging. | –  | 
| pg\$1bigm.enable\$1recheck | It specifies whether to perform Recheck which is an internal process of full text search. | on  | 
| pg\$1bigm.gin\$1key\$1limit | It specifies the maximum number of 2-grams of the search keyword to be used for full text search. | 0  | 
| pg\$1bigm.last\$1update | It reports the last updated date of the pg\$1bigm module. | 2013.11.22  | 
| pg\$1bigm.similarity\$1limit | It specifies the minimum threshold used by the similarity search. | 0.3  | 
| pg\$1hint\$1plan.debug\$1print | Logs results of hint parsing. | –  | 
| pg\$1hint\$1plan.enable\$1hint | Force planner to use plans specified in the hint comment preceding to the query. | –  | 
| pg\$1hint\$1plan.enable\$1hint\$1table | Force planner to not get hint by using table lookups. | –  | 
| pg\$1hint\$1plan.message\$1level | Message level of debug messages. | –  | 
| pg\$1hint\$1plan.parse\$1messages | Message level of parse errors. | –  | 
| pglogical.batch\$1inserts | Batch inserts if possible | –  | 
| pglogical.conflict\$1log\$1level | Sets log level used for logging resolved conflicts. | –  | 
| pglogical.conflict\$1resolution | Sets method used for conflict resolution for resolvable conflicts. | –  | 
| pglogical.extra\$1connection\$1options | connection options to add to all peer node connections | –  | 
| pglogical.synchronous\$1commit | pglogical specific synchronous commit value | –  | 
| pglogical.use\$1spi | Use SPI instead of low-level API for applying changes | –  | 
| pgtle.clientauth\$1databases\$1to\$1skip | List of databases to skip for clientauth feature. | –  | 
| pgtle.clientauth\$1db\$1name | Controls which database is used for clientauth feature. | –  | 
| pgtle.clientauth\$1num\$1parallel\$1workers | Number of background workers used for clientauth feature. | –  | 
| pgtle.clientauth\$1users\$1to\$1skip | List of users to skip for clientauth feature. | –  | 
| pgtle.enable\$1clientauth | Enables the clientauth feature. | –  | 
| pgtle.passcheck\$1db\$1name | Sets which database is used for cluster-wide passcheck feature. | –  | 
| pg\$1prewarm.autoprewarm | Starts the autoprewarm worker. | –  | 
| pg\$1prewarm.autoprewarm\$1interval | Sets the interval between dumps of shared buffers | –  | 
| pg\$1similarity.block\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.block\$1threshold | Sets the threshold used by the Block similarity function. | –  | 
| pg\$1similarity.block\$1tokenizer | Sets the tokenizer for Block similarity function. | –  | 
| pg\$1similarity.cosine\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.cosine\$1threshold | Sets the threshold used by the Cosine similarity function. | –  | 
| pg\$1similarity.cosine\$1tokenizer | Sets the tokenizer for Cosine similarity function. | –  | 
| pg\$1similarity.dice\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.dice\$1threshold | Sets the threshold used by the Dice similarity measure. | –  | 
| pg\$1similarity.dice\$1tokenizer | Sets the tokenizer for Dice similarity measure. | –  | 
| pg\$1similarity.euclidean\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.euclidean\$1threshold | Sets the threshold used by the Euclidean similarity measure. | –  | 
| pg\$1similarity.euclidean\$1tokenizer | Sets the tokenizer for Euclidean similarity measure. | –  | 
| pg\$1similarity.hamming\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.hamming\$1threshold | Sets the threshold used by the Block similarity metric. | –  | 
| pg\$1similarity.jaccard\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.jaccard\$1threshold | Sets the threshold used by the Jaccard similarity measure. | –  | 
| pg\$1similarity.jaccard\$1tokenizer | Sets the tokenizer for Jaccard similarity measure. | –  | 
| pg\$1similarity.jaro\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.jaro\$1threshold | Sets the threshold used by the Jaro similarity measure. | –  | 
| pg\$1similarity.jarowinkler\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.jarowinkler\$1threshold | Sets the threshold used by the Jarowinkler similarity measure. | –  | 
| pg\$1similarity.levenshtein\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.levenshtein\$1threshold | Sets the threshold used by the Levenshtein similarity measure. | –  | 
| pg\$1similarity.matching\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.matching\$1threshold | Sets the threshold used by the Matching Coefficient similarity measure. | –  | 
| pg\$1similarity.matching\$1tokenizer | Sets the tokenizer for Matching Coefficient similarity measure. | –  | 
| pg\$1similarity.mongeelkan\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.mongeelkan\$1threshold | Sets the threshold used by the Monge-Elkan similarity measure. | –  | 
| pg\$1similarity.mongeelkan\$1tokenizer | Sets the tokenizer for Monge-Elkan similarity measure. | –  | 
| pg\$1similarity.nw\$1gap\$1penalty | Sets the gap penalty used by the Needleman-Wunsch similarity measure. | –  | 
| pg\$1similarity.nw\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.nw\$1threshold | Sets the threshold used by the Needleman-Wunsch similarity measure. | –  | 
| pg\$1similarity.overlap\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.overlap\$1threshold | Sets the threshold used by the Overlap Coefficient similarity measure. | –  | 
| pg\$1similarity.overlap\$1tokenizer | Sets the tokenizer for Overlap Coefficientsimilarity measure. | –  | 
| pg\$1similarity.qgram\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.qgram\$1threshold | Sets the threshold used by the Q-Gram similarity measure. | –  | 
| pg\$1similarity.qgram\$1tokenizer | Sets the tokenizer for Q-Gram measure. | –  | 
| pg\$1similarity.swg\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.swg\$1threshold | Sets the threshold used by the Smith-Waterman-Gotoh similarity measure. | –  | 
| pg\$1similarity.sw\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.sw\$1threshold | Sets the threshold used by the Smith-Waterman similarity measure. | –  | 
| pg\$1stat\$1statements.max | Sets the maximum number of statements tracked by pg\$1stat\$1statements. | –  | 
| pg\$1stat\$1statements.save | Save pg\$1stat\$1statements statistics across server shutdowns. | –  | 
| pg\$1stat\$1statements.track | Selects which statements are tracked by pg\$1stat\$1statements. | –  | 
| pg\$1stat\$1statements.track\$1planning | Selects whether planning duration is tracked by pg\$1stat\$1statements. | –  | 
| pg\$1stat\$1statements.track\$1utility | Selects whether utility commands are tracked by pg\$1stat\$1statements. | –  | 
| plan\$1cache\$1mode | Controls the planner selection of custom or generic plan. | –  | 
| port | Sets the TCP port the server listens on. | EndPointPort  | 
| postgis.gdal\$1enabled\$1drivers | Enable or disable GDAL drivers used with PostGIS in Postgres 9.3.5 and above. | ENABLE\$1ALL  | 
| quote\$1all\$1identifiers | When generating SQL fragments, quote all identifiers. | –  | 
| random\$1page\$1cost | Sets the planners estimate of the cost of a nonsequentially fetched disk page. | –  | 
| rdkit.dice\$1threshold | Lower threshold of Dice similarity. Molecules with similarity lower than threshold are not similar by \$1 operation. | –  | 
| rdkit.do\$1chiral\$1sss | Should stereochemistry be taken into account in substructure matching. If false, no stereochemistry information is used in substructure matches. | –  | 
| rdkit.tanimoto\$1threshold | Lower threshold of Tanimoto similarity. Molecules with similarity lower than threshold are not similar by % operation. | –  | 
| rds.accepted\$1password\$1auth\$1method | Force authentication for connections with password stored locally. | md5\$1scram  | 
| rds.adaptive\$1autovacuum | RDS parameter to enable/disable adaptive autovacuum. | 1  | 
| rds.babelfish\$1status | RDS parameter to enable/disable Babelfish for Aurora PostgreSQL. | off  | 
| rds.enable\$1plan\$1management | Enable or disable the apg\$1plan\$1mgmt extension. | 0  | 
| rds.extensions | List of extensions provided by RDS | address\$1standardizer, address\$1standardizer\$1data\$1us, apg\$1plan\$1mgmt, aurora\$1stat\$1utils, amcheck, autoinc, aws\$1commons, aws\$1ml, aws\$1s3, aws\$1lambda, bool\$1plperl, bloom, btree\$1gin, btree\$1gist, citext, cube, dblink, dict\$1int, dict\$1xsyn, earthdistance, fuzzystrmatch, hll, hstore, hstore\$1plperl, insert\$1username, intagg, intarray, ip4r, isn, jsonb\$1plperl, lo, log\$1fdw, ltree, moddatetime, old\$1snapshot, oracle\$1fdw, orafce, pgaudit, pgcrypto, pglogical, pgrouting, pgrowlocks, pgstattuple, pgtap, pg\$1bigm, pg\$1buffercache, pg\$1cron, pg\$1freespacemap, pg\$1hint\$1plan, pg\$1partman, pg\$1prewarm, pg\$1proctab, pg\$1repack, pg\$1similarity, pg\$1stat\$1statements, pg\$1trgm, pg\$1visibility, plcoffee, plls, plperl, plpgsql, plprofiler, pltcl, plv8, postgis, postgis\$1tiger\$1geocoder, postgis\$1raster, postgis\$1topology, postgres\$1fdw, prefix, rdkit, rds\$1tools, refint, sslinfo, tablefunc, tds\$1fdw, test\$1parser, tsm\$1system\$1rows, tsm\$1system\$1time, unaccent, uuid-ossp  | 
| rds.force\$1admin\$1logging\$1level | See log messages for RDS admin user actions in customer databases. | –  | 
| rds.force\$1autovacuum\$1logging\$1level | See log messages related to autovacuum operations. | WARNING  | 
| rds.force\$1ssl | Force SSL connections. | 0  | 
| rds.global\$1db\$1rpo | (s) Recovery point objective threshold, in seconds, that blocks user commits when it is violated.  This parameter is meant for Aurora PostgreSQL-based global databases. For a nonglobal database, leave it at the default value. For more information about using this parameter, see [Managing RPOs for Aurora PostgreSQL–based global databases](aurora-global-database-disaster-recovery.md#aurora-global-database-manage-recovery).   | –  | 
| rds.logical\$1replication | Enables logical decoding. | 0  | 
| rds.logically\$1replicate\$1unlogged\$1tables | Unlogged tables are logically replicated. | 1  | 
| rds.log\$1retention\$1period | Amazon RDS will delete PostgreSQL log that are older than N minutes. | 4320  | 
| rds.pg\$1stat\$1ramdisk\$1size | Size of the stats ramdisk in MB. A nonzero value will setup the ramdisk. This parameter is only available in Aurora PostgreSQL 14 and lower versions. | 0  | 
| rds.rds\$1superuser\$1reserved\$1connections | Sets the number of connection slots reserved for rds\$1superusers. This parameter is only available in versions 15 and earlier. For more information, see the PostgreSQL documentation [reserved connections](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-RESERVED-CONNECTIONS).  | 2  | 
| rds.restrict\$1password\$1commands | restricts password-related commands to members of rds\$1password | –  | 
| rds.superuser\$1variables | List of superuser-only variables for which we elevate rds\$1superuser modification statements. | session\$1replication\$1role  | 
| recovery\$1init\$1sync\$1method | Sets the method for synchronizing the data directory before crash recovery. | syncfs  | 
| remove\$1temp\$1files\$1after\$1crash | Remove temporary files after backend crash. | 0  | 
| restart\$1after\$1crash | Reinitialize server after backend crash. | –  | 
| row\$1security | Enable row security. | –  | 
| search\$1path | Sets the schema search order for names that are not schema-qualified. | –  | 
| seq\$1page\$1cost | Sets the planners estimate of the cost of a sequentially fetched disk page. | –  | 
| session\$1replication\$1role | Sets the sessions behavior for triggers and rewrite rules. | –  | 
| shared\$1buffers | (8kB) Sets the number of shared memory buffers used by the server. | SUM(DBInstanceClassMemory/12038,-50003)  | 
| shared\$1preload\$1libraries | Lists shared libraries to preload into server. | pg\$1stat\$1statements  | 
| ssl | Enables SSL connections. | 1  | 
| ssl\$1ca\$1file | Location of the SSL server authority file. | /rdsdbdata/rds-metadata/ca-cert.pem  | 
| ssl\$1cert\$1file | Location of the SSL server certificate file. | /rdsdbdata/rds-metadata/server-cert.pem  | 
| ssl\$1ciphers | Sets the list of allowed TLS ciphers to be used on secure connections. | –  | 
| ssl\$1crl\$1dir | Location of the SSL certificate revocation list directory. | /rdsdbdata/rds-metadata/ssl\$1crl\$1dir/  | 
| ssl\$1key\$1file |  Location of the SSL server private key file | /rdsdbdata/rds-metadata/server-key.pem  | 
| ssl\$1max\$1protocol\$1version | Sets the maximum SSL/TLS protocol version allowed | –  | 
| ssl\$1min\$1protocol\$1version | Sets the minimum SSL/TLS protocol version allowed | TLSv1.2  | 
| standard\$1conforming\$1strings | Causes ... strings to treat backslashes literally. | –  | 
| statement\$1timeout | (ms) Sets the maximum allowed duration of any statement. | –  | 
| stats\$1temp\$1directory | Writes temporary statistics files to the specified directory. | /rdsdbdata/db/pg\$1stat\$1tmp  | 
| superuser\$1reserved\$1connections | Sets the number of connection slots reserved for superusers. | 3  | 
| synchronize\$1seqscans | Enable synchronized sequential scans. | –  | 
| synchronous\$1commit | Sets the current transactions synchronization level. | on  | 
| tcp\$1keepalives\$1count | Maximum number of TCP keepalive retransmits. | –  | 
| tcp\$1keepalives\$1idle | (s) Time between issuing TCP keepalives. | –  | 
| tcp\$1keepalives\$1interval | (s) Time between TCP keepalive retransmits. | –  | 
| temp\$1buffers | (8kB) Sets the maximum number of temporary buffers used by each session. | –  | 
| temp\$1file\$1limit | Constrains the total amount disk space in kilobytes that a given PostgreSQL process can use for temporary files, excluding space used for explicit temporary tables | -1  | 
| temp\$1tablespaces | Sets the tablespace(s) to use for temporary tables and sort files. | –  | 
| timezone | Sets the time zone for displaying and interpreting time stamps. | UTC  | 
| track\$1activities | Collects information about executing commands. | –  | 
| track\$1activity\$1query\$1size | Sets the size reserved for pg\$1stat\$1activity.current\$1query, in bytes. | 4096  | 
| track\$1commit\$1timestamp | Collects transaction commit time. | –  | 
| track\$1counts | Collects statistics on database activity. | –  | 
| track\$1functions | Collects function-level statistics on database activity. | pl  | 
| track\$1io\$1timing | Collects timing statistics on database IO activity. | 1  | 
| track\$1wal\$1io\$1timing | Collects timing statistics for WAL I/O activity. | –  | 
| transform\$1null\$1equals | Treats expr=NULL as expr IS NULL. | –  | 
| update\$1process\$1title | Updates the process title to show the active SQL command. | –  | 
| vacuum\$1cost\$1delay | (ms) Vacuum cost delay in milliseconds. | –  | 
| vacuum\$1cost\$1limit | Vacuum cost amount available before napping. | –  | 
| vacuum\$1cost\$1page\$1dirty | Vacuum cost for a page dirtied by vacuum. | –  | 
| vacuum\$1cost\$1page\$1hit | Vacuum cost for a page found in the buffer cache. | –  | 
| vacuum\$1cost\$1page\$1miss | Vacuum cost for a page not found in the buffer cache. | 0  | 
| vacuum\$1defer\$1cleanup\$1age | Number of transactions by which VACUUM and HOT cleanup should be deferred, if any. | –  | 
| vacuum\$1failsafe\$1age | Age at which VACUUM should trigger failsafe to avoid a wraparound outage. | 1200000000  | 
| vacuum\$1freeze\$1min\$1age | Minimum age at which VACUUM should freeze a table row. | –  | 
| vacuum\$1freeze\$1table\$1age | Age at which VACUUM should scan whole table to freeze tuples. | –  | 
| vacuum\$1multixact\$1failsafe\$1age | Multixact age at which VACUUM should trigger failsafe to avoid a wraparound outage. | 1200000000  | 
| vacuum\$1multixact\$1freeze\$1min\$1age | Minimum age at which VACUUM should freeze a MultiXactId in a table row. | –  | 
| vacuum\$1multixact\$1freeze\$1table\$1age | Multixact age at which VACUUM should scan whole table to freeze tuples. | –  | 
| wal\$1buffers | (8kB) Sets the number of disk-page buffers in shared memory for WAL. | –  | 
| wal\$1receiver\$1create\$1temp\$1slot | Sets whether a WAL receiver should create a temporary replication slot if no permanent slot is configured. | 0  | 
| wal\$1receiver\$1status\$1interval | (s) Sets the maximum interval between WAL receiver status reports to the primary. | –  | 
| wal\$1receiver\$1timeout | (ms) Sets the maximum wait time to receive data from the primary. | 30000  | 
| wal\$1sender\$1timeout | (ms) Sets the maximum time to wait for WAL replication. | –  | 
| work\$1mem | (kB) Sets the maximum memory to be used for query workspaces. | –  | 
| xmlbinary | Sets how binary values are to be encoded in XML. | –  | 
| xmloption | Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments. | – | 

## Aurora PostgreSQL instance-level parameters
<a name="AuroraPostgreSQL.Reference.Parameters.Instance"></a>

You can view the instance-level parameters available for a specific Aurora PostgreSQL version using the AWS Management console, the AWS CLI, or the Amazon RDS API. For information about viewing the parameters in an Aurora PostgreSQL DB parameter groups in the RDS console, see [Viewing parameter values for a DB parameter group in Amazon Aurora](USER_WorkingWithParamGroups.Viewing.md). 

Some instance-level parameters aren't available in all versions and some are being deprecated. For information about viewing the parameters of a specific Aurora PostgreSQL version, see [Viewing Aurora PostgreSQL DB cluster and DB parameters](#AuroraPostgreSQL.Reference.ParameterGroups-viewing-parameters).

For example, the following table lists the parameters that apply to a specific DB instance in an Aurora PostgreSQL DB cluster. This list was generated by running the [describe-db-parameters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-parameters.html) AWS CLI command with `default.aurora-postgresql14` for the `--db-parameter-group-name` value. 

For a listing of the DB cluster parameters for this same default DB parameter group, see [Aurora PostgreSQL cluster-level parameters](#AuroraPostgreSQL.Reference.Parameters.Cluster).


| Parameter name | Description | Default | 
| --- | --- | --- | 
| apg\$1enable\$1batch\$1mode\$1function\$1execution | Enables batch-mode functions to process sets of rows at a time. | –  | 
| apg\$1enable\$1correlated\$1any\$1transform | Enables the planner to transform correlated ANY Sublink (IN/NOT IN subquery to JOIN when possible. | –  | 
| apg\$1enable\$1function\$1migration | Enables the planner to migrate eligible scalar functions to the FROM clause. | –  | 
| apg\$1enable\$1not\$1in\$1transform | Enables the planner to transform NOT IN subquery to ANTI JOIN when possible. | –  | 
| apg\$1enable\$1remove\$1redundant\$1inner\$1joins | Enables the planner to remove redundant inner joins. | –  | 
| apg\$1enable\$1semijoin\$1push\$1down | Enables the use of semijoin filters for hash joins. | –  | 
| apg\$1plan\$1mgmt.capture\$1plan\$1baselines | Capture plan baseline mode. manual - enable plan capture for any SQL statement, off - disable plan capture, automatic - enable plan capture for for statements in pg\$1stat\$1statements that satisfy the eligibility criteria. | off  | 
| apg\$1plan\$1mgmt.max\$1databases | Sets the maximum number of databases that that may manage queries using apg\$1plan\$1mgmt. | 10  | 
| apg\$1plan\$1mgmt.max\$1plans | Sets the maximum number of plans that may be cached by apg\$1plan\$1mgmt. | 10000  | 
| apg\$1plan\$1mgmt.plan\$1retention\$1period | Maximum number of days since a plan was last\$1used before a plan will be automatically deleted. | 32  | 
| apg\$1plan\$1mgmt.unapproved\$1plan\$1execution\$1threshold | Estimated total plan cost below which an Unapproved plan will be executed. | 0  | 
| apg\$1plan\$1mgmt.use\$1plan\$1baselines | Use only approved or fixed plans for managed statements. | false  | 
| application\$1name | Sets the application name to be reported in statistics and logs. | –  | 
| aurora\$1compute\$1plan\$1id | Monitors query execution plans to detect the execution plans contributing to current database load and to track performance statistics of execution plans over time. For more information, see [Monitoring query execution plans for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Monitoring.Query.Plans.html). | on  | 
| aurora\$1temp\$1space\$1size | (MB) Sets size of the allocated space for Optimized Reads-enabled temporary objects on Aurora I/O-Optimized clusters with supported instance classes. | DBInstanceClassMemory/524288 | 
| authentication\$1timeout | (s Sets the maximum allowed time to complete client authentication. | –  | 
| auto\$1explain.log\$1analyze | Use EXPLAIN ANALYZE for plan logging. | –  | 
| auto\$1explain.log\$1buffers | Log buffers usage. | –  | 
| auto\$1explain.log\$1format | EXPLAIN format to be used for plan logging. | –  | 
| auto\$1explain.log\$1min\$1duration | Sets the minimum execution time above which plans will be logged. | –  | 
| auto\$1explain.log\$1nested\$1statements | Log nested statements. | –  | 
| auto\$1explain.log\$1timing | Collect timing data, not just row counts. | –  | 
| auto\$1explain.log\$1triggers | Include trigger statistics in plans. | –  | 
| auto\$1explain.log\$1verbose | Use EXPLAIN VERBOSE for plan logging. | –  | 
| auto\$1explain.sample\$1rate | Fraction of queries to process. | –  | 
| babelfishpg\$1tds.listen\$1addresses | Sets the host name or IP address(es to listen TDS to. | \$1  | 
| babelfishpg\$1tds.tds\$1debug\$1log\$1level | Sets logging level in TDS, 0 disables logging | 1  | 
| backend\$1flush\$1after | (8Kb Number of pages after which previously performed writes are flushed to disk. | –  | 
| bytea\$1output | Sets the output format for bytea. | –  | 
| check\$1function\$1bodies | Check function bodies during CREATE FUNCTION. | –  | 
| client\$1connection\$1check\$1interval | Sets the time interval between checks for disconnection while running queries. | –  | 
| client\$1min\$1messages | Sets the message levels that are sent to the client. | –  | 
| config\$1file | Sets the servers main configuration file. | /rdsdbdata/config/postgresql.conf  | 
| constraint\$1exclusion | Enables the planner to use constraints to optimize queries. | –  | 
| cpu\$1index\$1tuple\$1cost | Sets the planners estimate of the cost of processing each index entry during an index scan. | –  | 
| cpu\$1operator\$1cost | Sets the planners estimate of the cost of processing each operator or function call. | –  | 
| cpu\$1tuple\$1cost | Sets the planners estimate of the cost of processing each tuple (row. | –  | 
| cron.database\$1name | Sets the database to store pg\$1cron metadata tables | postgres  | 
| cron.log\$1run | Log all jobs runs into the job\$1run\$1details table | on  | 
| cron.log\$1statement | Log all cron statements prior to execution. | off  | 
| cron.max\$1running\$1jobs | Maximum number of jobs that can run concurrently. | 5  | 
| cron.use\$1background\$1workers | Enables background workers for pg\$1cron | on  | 
| cursor\$1tuple\$1fraction | Sets the planners estimate of the fraction of a cursors rows that will be retrieved. | –  | 
| db\$1user\$1namespace | Enables per-database user names. | –  | 
| deadlock\$1timeout | (ms Sets the time to wait on a lock before checking for deadlock. | –  | 
| debug\$1pretty\$1print | Indents parse and plan tree displays. | –  | 
| debug\$1print\$1parse | Logs each querys parse tree. | –  | 
| debug\$1print\$1plan | Logs each querys execution plan. | –  | 
| debug\$1print\$1rewritten | Logs each querys rewritten parse tree. | –  | 
| default\$1statistics\$1target | Sets the default statistics target. | –  | 
| default\$1transaction\$1deferrable | Sets the default deferrable status of new transactions. | –  | 
| default\$1transaction\$1isolation | Sets the transaction isolation level of each new transaction. | –  | 
| default\$1transaction\$1read\$1only | Sets the default read-only status of new transactions. | –  | 
| effective\$1cache\$1size | (8kB Sets the planners assumption about the size of the disk cache. | SUM(DBInstanceClassMemory/12038,-50003  | 
| effective\$1io\$1concurrency | Number of simultaneous requests that can be handled efficiently by the disk subsystem. | –  | 
| enable\$1async\$1append | Enables the planners use of async append plans. | –  | 
| enable\$1bitmapscan | Enables the planners use of bitmap-scan plans. | –  | 
| enable\$1gathermerge | Enables the planners use of gather merge plans. | –  | 
| enable\$1hashagg | Enables the planners use of hashed aggregation plans. | –  | 
| enable\$1hashjoin | Enables the planners use of hash join plans. | –  | 
| enable\$1incremental\$1sort | Enables the planners use of incremental sort steps. | –  | 
| enable\$1indexonlyscan | Enables the planners use of index-only-scan plans. | –  | 
| enable\$1indexscan | Enables the planners use of index-scan plans. | –  | 
| enable\$1material | Enables the planners use of materialization. | –  | 
| enable\$1memoize | Enables the planners use of memoization | –  | 
| enable\$1mergejoin | Enables the planners use of merge join plans. | –  | 
| enable\$1nestloop | Enables the planners use of nested-loop join plans. | –  | 
| enable\$1parallel\$1append | Enables the planners use of parallel append plans. | –  | 
| enable\$1parallel\$1hash | Enables the planners user of parallel hash plans. | –  | 
| enable\$1partition\$1pruning | Enable plan-time and run-time partition pruning. | –  | 
| enable\$1partitionwise\$1aggregate | Enables partitionwise aggregation and grouping. | –  | 
| enable\$1partitionwise\$1join | Enables partitionwise join. | –  | 
| enable\$1seqscan | Enables the planners use of sequential-scan plans. | –  | 
| enable\$1sort | Enables the planners use of explicit sort steps. | –  | 
| enable\$1tidscan | Enables the planners use of TID scan plans. | –  | 
| escape\$1string\$1warning | Warn about backslash escapes in ordinary string literals. | –  | 
| exit\$1on\$1error | Terminate session on any error. | –  | 
| force\$1parallel\$1mode | Forces use of parallel query facilities. | –  | 
| from\$1collapse\$1limit | Sets the FROM-list size beyond which subqueries are not collapsed. | –  | 
| geqo | Enables genetic query optimization. | –  | 
| geqo\$1effort | GEQO: effort is used to set the default for other GEQO parameters. | –  | 
| geqo\$1generations | GEQO: number of iterations of the algorithm. | –  | 
| geqo\$1pool\$1size | GEQO: number of individuals in the population. | –  | 
| geqo\$1seed | GEQO: seed for random path selection. | –  | 
| geqo\$1selection\$1bias | GEQO: selective pressure within the population. | –  | 
| geqo\$1threshold | Sets the threshold of FROM items beyond which GEQO is used. | –  | 
| gin\$1fuzzy\$1search\$1limit | Sets the maximum allowed result for exact search by GIN. | –  | 
| gin\$1pending\$1list\$1limit | (kB Sets the maximum size of the pending list for GIN index. | –  | 
| hash\$1mem\$1multiplier | Multiple of work\$1mem to use for hash tables. | –  | 
| hba\$1file | Sets the servers hba configuration file. | /rdsdbdata/config/pg\$1hba.conf  | 
| hot\$1standby\$1feedback | Allows feedback from a hot standby to the primary that will avoid query conflicts. | on  | 
| ident\$1file | Sets the servers ident configuration file. | /rdsdbdata/config/pg\$1ident.conf  | 
| idle\$1in\$1transaction\$1session\$1timeout | (ms Sets the maximum allowed duration of any idling transaction. | 86400000  | 
| idle\$1session\$1timeout | Terminate any session that has been idle (that is, waiting for a client query, but not within an open transaction, for longer than the specified amount of time | –  | 
| join\$1collapse\$1limit | Sets the FROM-list size beyond which JOIN constructs are not flattened. | –  | 
| lc\$1messages | Sets the language in which messages are displayed. | –  | 
| listen\$1addresses | Sets the host name or IP address(es to listen to. | \$1  | 
| lo\$1compat\$1privileges | Enables backward compatibility mode for privilege checks on large objects. | 0  | 
| log\$1connections | Logs each successful connection. | –  | 
| log\$1destination | Sets the destination for server log output. | stderr  | 
| log\$1directory | Sets the destination directory for log files. | /rdsdbdata/log/error  | 
| log\$1disconnections | Logs end of a session, including duration. | –  | 
| log\$1duration | Logs the duration of each completed SQL statement. | –  | 
| log\$1error\$1verbosity | Sets the verbosity of logged messages. | –  | 
| log\$1executor\$1stats | Writes executor performance statistics to the server log. | –  | 
| log\$1file\$1mode | Sets the file permissions for log files. | 0644  | 
| log\$1filename | Sets the file name pattern for log files. | postgresql.log.%Y-%m-%d-%H%M  | 
| logging\$1collector | Start a subprocess to capture stderr output and/or csvlogs into log files. | 1  | 
| log\$1hostname | Logs the host name in the connection logs. | 0  | 
| logical\$1decoding\$1work\$1mem | (kB This much memory can be used by each internal reorder buffer before spilling to disk. | –  | 
| log\$1line\$1prefix | Controls information prefixed to each log line. | %t:%r:%u@%d:%p]:  | 
| log\$1lock\$1waits | Logs long lock waits. | –  | 
| log\$1min\$1duration\$1sample | (ms Sets the minimum execution time above which a sample of statements will be logged. Sampling is determined by log\$1statement\$1sample\$1rate. | –  | 
| log\$1min\$1duration\$1statement | (ms Sets the minimum execution time above which statements will be logged. | –  | 
| log\$1min\$1error\$1statement | Causes all statements generating error at or above this level to be logged. | –  | 
| log\$1min\$1messages | Sets the message levels that are logged. | –  | 
| log\$1parameter\$1max\$1length | (B When logging statements, limit logged parameter values to first N bytes. | –  | 
| log\$1parameter\$1max\$1length\$1on\$1error | (B When reporting an error, limit logged parameter values to first N bytes. | –  | 
| log\$1parser\$1stats | Writes parser performance statistics to the server log. | –  | 
| log\$1planner\$1stats | Writes planner performance statistics to the server log. | –  | 
| log\$1replication\$1commands | Logs each replication command. | –  | 
| log\$1rotation\$1age | (min Automatic log file rotation will occur after N minutes. | 60  | 
| log\$1rotation\$1size | (kB Automatic log file rotation will occur after N kilobytes. | 100000  | 
| log\$1statement | Sets the type of statements logged. | –  | 
| log\$1statement\$1sample\$1rate | Fraction of statements exceeding log\$1min\$1duration\$1sample to be logged. | –  | 
| log\$1statement\$1stats | Writes cumulative performance statistics to the server log. | –  | 
| log\$1temp\$1files | (kB Log the use of temporary files larger than this number of kilobytes. | –  | 
| log\$1timezone | Sets the time zone to use in log messages. | UTC  | 
| log\$1truncate\$1on\$1rotation | Truncate existing log files of same name during log rotation. | 0  | 
| maintenance\$1io\$1concurrency | A variant of effective\$1io\$1concurrency that is used for maintenance work. | 1  | 
| maintenance\$1work\$1mem | (kB Sets the maximum memory to be used for maintenance operations. | GREATEST(DBInstanceClassMemory/63963136\$11024,65536  | 
| max\$1connections | Sets the maximum number of concurrent connections. | LEAST(DBInstanceClassMemory/9531392,5000  | 
| max\$1files\$1per\$1process | Sets the maximum number of simultaneously open files for each server process. | –  | 
| max\$1locks\$1per\$1transaction | Sets the maximum number of locks per transaction. | 64  | 
| max\$1parallel\$1maintenance\$1workers | Sets the maximum number of parallel processes per maintenance operation. | –  | 
| max\$1parallel\$1workers | Sets the maximum number of parallel workers than can be active at one time. | GREATEST(\$1DBInstanceVCPU/2,8  | 
| max\$1parallel\$1workers\$1per\$1gather | Sets the maximum number of parallel processes per executor node. | –  | 
| max\$1pred\$1locks\$1per\$1page | Sets the maximum number of predicate-locked tuples per page. | –  | 
| max\$1pred\$1locks\$1per\$1relation | Sets the maximum number of predicate-locked pages and tuples per relation. | –  | 
| max\$1pred\$1locks\$1per\$1transaction | Sets the maximum number of predicate locks per transaction. | –  | 
| max\$1slot\$1wal\$1keep\$1size | (MB Replication slots will be marked as failed, and segments released for deletion or recycling, if this much space is occupied by WAL on disk. | –  | 
| max\$1stack\$1depth | (kB Sets the maximum stack depth, in kilobytes. | 6144  | 
| max\$1standby\$1streaming\$1delay | (ms Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data. | 14000  | 
| max\$1worker\$1processes | Sets the maximum number of concurrent worker processes. | GREATEST(\$1DBInstanceVCPU\$12,8  | 
| min\$1dynamic\$1shared\$1memory | (MB Amount of dynamic shared memory reserved at startup. | –  | 
| min\$1parallel\$1index\$1scan\$1size | (8kB Sets the minimum amount of index data for a parallel scan. | –  | 
| min\$1parallel\$1table\$1scan\$1size | (8kB Sets the minimum amount of table data for a parallel scan. | –  | 
| old\$1snapshot\$1threshold | (min Time before a snapshot is too old to read pages changed after the snapshot was taken. | –  | 
| parallel\$1leader\$1participation | Controls whether Gather and Gather Merge also run subplans. | –  | 
| parallel\$1setup\$1cost | Sets the planners estimate of the cost of starting up worker processes for parallel query. | –  | 
| parallel\$1tuple\$1cost | Sets the planners estimate of the cost of passing each tuple (row from worker to master backend. | –  | 
| pgaudit.log | Specifies which classes of statements will be logged by session audit logging. | –  | 
| pgaudit.log\$1catalog | Specifies that session logging should be enabled in the case where all relations in a statement are in pg\$1catalog. | –  | 
| pgaudit.log\$1level | Specifies the log level that will be used for log entries. | –  | 
| pgaudit.log\$1parameter | Specifies that audit logging should include the parameters that were passed with the statement. | –  | 
| pgaudit.log\$1relation | Specifies whether session audit logging should create a separate log entry for each relation (TABLE, VIEW, etc. referenced in a SELECT or DML statement. | –  | 
| pgaudit.log\$1statement\$1once | Specifies whether logging will include the statement text and parameters with the first log entry for a statement/substatement combination or with every entry. | –  | 
| pgaudit.role | Specifies the master role to use for object audit logging. | –  | 
| pg\$1bigm.enable\$1recheck | It specifies whether to perform Recheck which is an internal process of full text search. | on  | 
| pg\$1bigm.gin\$1key\$1limit | It specifies the maximum number of 2-grams of the search keyword to be used for full text search. | 0  | 
| pg\$1bigm.last\$1update | It reports the last updated date of the pg\$1bigm module. | 2013.11.22  | 
| pg\$1bigm.similarity\$1limit | It specifies the minimum threshold used by the similarity search. | 0.3  | 
| pg\$1hint\$1plan.debug\$1print | Logs results of hint parsing. | –  | 
| pg\$1hint\$1plan.enable\$1hint | Force planner to use plans specified in the hint comment preceding to the query. | –  | 
| pg\$1hint\$1plan.enable\$1hint\$1table | Force planner to not get hint by using table lookups. | –  | 
| pg\$1hint\$1plan.message\$1level | Message level of debug messages. | –  | 
| pg\$1hint\$1plan.parse\$1messages | Message level of parse errors. | –  | 
| pglogical.batch\$1inserts | Batch inserts if possible | –  | 
| pglogical.conflict\$1log\$1level | Sets log level used for logging resolved conflicts. | –  | 
| pglogical.conflict\$1resolution | Sets method used for conflict resolution for resolvable conflicts. | –  | 
| pglogical.extra\$1connection\$1options | connection options to add to all peer node connections | –  | 
| pglogical.synchronous\$1commit | pglogical specific synchronous commit value | –  | 
| pglogical.use\$1spi | Use SPI instead of low-level API for applying changes | –  | 
| pg\$1similarity.block\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.block\$1threshold | Sets the threshold used by the Block similarity function. | –  | 
| pg\$1similarity.block\$1tokenizer | Sets the tokenizer for Block similarity function. | –  | 
| pg\$1similarity.cosine\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.cosine\$1threshold | Sets the threshold used by the Cosine similarity function. | –  | 
| pg\$1similarity.cosine\$1tokenizer | Sets the tokenizer for Cosine similarity function. | –  | 
| pg\$1similarity.dice\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.dice\$1threshold | Sets the threshold used by the Dice similarity measure. | –  | 
| pg\$1similarity.dice\$1tokenizer | Sets the tokenizer for Dice similarity measure. | –  | 
| pg\$1similarity.euclidean\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.euclidean\$1threshold | Sets the threshold used by the Euclidean similarity measure. | –  | 
| pg\$1similarity.euclidean\$1tokenizer | Sets the tokenizer for Euclidean similarity measure. | –  | 
| pg\$1similarity.hamming\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.hamming\$1threshold | Sets the threshold used by the Block similarity metric. | –  | 
| pg\$1similarity.jaccard\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.jaccard\$1threshold | Sets the threshold used by the Jaccard similarity measure. | –  | 
| pg\$1similarity.jaccard\$1tokenizer | Sets the tokenizer for Jaccard similarity measure. | –  | 
| pg\$1similarity.jaro\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.jaro\$1threshold | Sets the threshold used by the Jaro similarity measure. | –  | 
| pg\$1similarity.jarowinkler\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.jarowinkler\$1threshold | Sets the threshold used by the Jarowinkler similarity measure. | –  | 
| pg\$1similarity.levenshtein\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.levenshtein\$1threshold | Sets the threshold used by the Levenshtein similarity measure. | –  | 
| pg\$1similarity.matching\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.matching\$1threshold | Sets the threshold used by the Matching Coefficient similarity measure. | –  | 
| pg\$1similarity.matching\$1tokenizer | Sets the tokenizer for Matching Coefficient similarity measure. | –  | 
| pg\$1similarity.mongeelkan\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.mongeelkan\$1threshold | Sets the threshold used by the Monge-Elkan similarity measure. | –  | 
| pg\$1similarity.mongeelkan\$1tokenizer | Sets the tokenizer for Monge-Elkan similarity measure. | –  | 
| pg\$1similarity.nw\$1gap\$1penalty | Sets the gap penalty used by the Needleman-Wunsch similarity measure. | –  | 
| pg\$1similarity.nw\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.nw\$1threshold | Sets the threshold used by the Needleman-Wunsch similarity measure. | –  | 
| pg\$1similarity.overlap\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.overlap\$1threshold | Sets the threshold used by the Overlap Coefficient similarity measure. | –  | 
| pg\$1similarity.overlap\$1tokenizer | Sets the tokenizer for Overlap Coefficientsimilarity measure. | –  | 
| pg\$1similarity.qgram\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.qgram\$1threshold | Sets the threshold used by the Q-Gram similarity measure. | –  | 
| pg\$1similarity.qgram\$1tokenizer | Sets the tokenizer for Q-Gram measure. | –  | 
| pg\$1similarity.swg\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.swg\$1threshold | Sets the threshold used by the Smith-Waterman-Gotoh similarity measure. | –  | 
| pg\$1similarity.sw\$1is\$1normalized | Sets if the result value is normalized or not. | –  | 
| pg\$1similarity.sw\$1threshold | Sets the threshold used by the Smith-Waterman similarity measure. | –  | 
| pg\$1stat\$1statements.max | Sets the maximum number of statements tracked by pg\$1stat\$1statements. | –  | 
| pg\$1stat\$1statements.save | Save pg\$1stat\$1statements statistics across server shutdowns. | –  | 
| pg\$1stat\$1statements.track | Selects which statements are tracked by pg\$1stat\$1statements. | –  | 
| pg\$1stat\$1statements.track\$1planning | Selects whether planning duration is tracked by pg\$1stat\$1statements. | –  | 
| pg\$1stat\$1statements.track\$1utility | Selects whether utility commands are tracked by pg\$1stat\$1statements. | –  | 
| postgis.gdal\$1enabled\$1drivers | Enable or disable GDAL drivers used with PostGIS in Postgres 9.3.5 and above. | ENABLE\$1ALL  | 
| quote\$1all\$1identifiers | When generating SQL fragments, quote all identifiers. | –  | 
| random\$1page\$1cost | Sets the planners estimate of the cost of a nonsequentially fetched disk page. | –  | 
| rds.enable\$1memory\$1management | Improves memory management capabilities in Aurora PostgreSQL 12.17, 13.13, 14.10, 15.5, and higher versions that prevents stability issues and database restarts caused by insufficient free memory. For more information, see [Improved memory management in Aurora PostgreSQLLimitation](AuroraPostgreSQL.BestPractices.memory.management.md). | True  | 
| rds.force\$1admin\$1logging\$1level | See log messages for RDS admin user actions in customer databases. | –  | 
| rds.log\$1retention\$1period | Amazon RDS will delete PostgreSQL log that are older than N minutes. | 4320  | 
| rds.memory\$1allocation\$1guard | Improves memory management capabilities in Aurora PostgreSQL 11.21, 12.16, 13.12, 14.9, 15.4, and older versions that prevents stability issues and database restarts caused by insufficient free memory. For more information, see [Improved memory management in Aurora PostgreSQLLimitation](AuroraPostgreSQL.BestPractices.memory.management.md). | False  | 
| rds.pg\$1stat\$1ramdisk\$1size | Size of the stats ramdisk in MB. A nonzero value will setup the ramdisk. | 0  | 
| rds.rds\$1superuser\$1reserved\$1connections | Sets the number of connection slots reserved for rds\$1superusers. This parameter is only available in versions 15 and earlier. For more information, see the PostgreSQL documentation [reserved connections](https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-RESERVED-CONNECTIONS).  | 2  | 
| rds.superuser\$1variables | List of superuser-only variables for which we elevate rds\$1superuser modification statements. | session\$1replication\$1role  | 
| remove\$1temp\$1files\$1after\$1crash | Remove temporary files after backend crash. | 0  | 
| restart\$1after\$1crash | Reinitialize server after backend crash. | –  | 
| row\$1security | Enable row security. | –  | 
| search\$1path | Sets the schema search order for names that are not schema-qualified. | –  | 
| seq\$1page\$1cost | Sets the planners estimate of the cost of a sequentially fetched disk page. | –  | 
| session\$1replication\$1role | Sets the sessions behavior for triggers and rewrite rules. | –  | 
| shared\$1buffers | (8kB) Sets the number of shared memory buffers used by the server. | SUM(DBInstanceClassMemory/12038,-50003)  | 
| shared\$1preload\$1libraries | Lists shared libraries to preload into server. | pg\$1stat\$1statements  | 
| ssl\$1ca\$1file | Location of the SSL server authority file. | /rdsdbdata/rds-metadata/ca-cert.pem  | 
| ssl\$1cert\$1file | Location of the SSL server certificate file. | /rdsdbdata/rds-metadata/server-cert.pem  | 
| ssl\$1crl\$1dir | Location of the SSL certificate revocation list directory. | /rdsdbdata/rds-metadata/ssl\$1crl\$1dir/  | 
| ssl\$1key\$1file |  Location of the SSL server private key file | /rdsdbdata/rds-metadata/server-key.pem  | 
| standard\$1conforming\$1strings | Causes ... strings to treat backslashes literally. | –  | 
| statement\$1timeout | (ms Sets the maximum allowed duration of any statement. | –  | 
| stats\$1temp\$1directory | Writes temporary statistics files to the specified directory. | /rdsdbdata/db/pg\$1stat\$1tmp  | 
| superuser\$1reserved\$1connections | Sets the number of connection slots reserved for superusers. | 3  | 
| synchronize\$1seqscans | Enable synchronized sequential scans. | –  | 
| tcp\$1keepalives\$1count | Maximum number of TCP keepalive retransmits. | –  | 
| tcp\$1keepalives\$1idle | (s Time between issuing TCP keepalives. | –  | 
| tcp\$1keepalives\$1interval | (s Time between TCP keepalive retransmits. | –  | 
| temp\$1buffers | (8kB Sets the maximum number of temporary buffers used by each session. | –  | 
| temp\$1file\$1limit | Constrains the total amount disk space in kilobytes that a given PostgreSQL process can use for temporary files, excluding space used for explicit temporary tables | -1  | 
| temp\$1tablespaces | Sets the tablespace(s to use for temporary tables and sort files. | –  | 
| track\$1activities | Collects information about executing commands. | –  | 
| track\$1activity\$1query\$1size | Sets the size reserved for pg\$1stat\$1activity.current\$1query, in bytes. | 4096  | 
| track\$1counts | Collects statistics on database activity. | –  | 
| track\$1functions | Collects function-level statistics on database activity. | pl  | 
| track\$1io\$1timing | Collects timing statistics on database IO activity. | 1  | 
| transform\$1–\$1equals | Treats expr=– as expr IS –. | –  | 
| update\$1process\$1title | Updates the process title to show the active SQL command. | –  | 
| wal\$1receiver\$1status\$1interval | (s Sets the maximum interval between WAL receiver status reports to the primary. | –  | 
| work\$1mem | (kB Sets the maximum memory to be used for query workspaces. | –  | 
| xmlbinary | Sets how binary values are to be encoded in XML. | –  | 
| xmloption | Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments. | – | 

# Amazon Aurora PostgreSQL wait events
<a name="AuroraPostgreSQL.Reference.Waitevents"></a>

The following are common wait events for Aurora PostgreSQL. To learn more about wait events and tuning your Aurora PostgreSQL DB cluster, see [Tuning with wait events for Aurora PostgreSQL](AuroraPostgreSQL.Tuning.md). 

**Activity:ArchiverMain**  
The archiver process is waiting for activity.

**Activity:AutoVacuumMain**  
The autovacuum launcher process is waiting for activity.

**Activity:BgWriterHibernate**  
The background writer process is hibernating while waiting for activity.

**Activity:BgWriterMain**  
The background writer process is waiting for activity.

**Activity:CheckpointerMain**  
The checkpointer process is waiting for activity.

**Activity:LogicalApplyMain**  
The logical replication apply process is waiting for activity.

**Activity:LogicalLauncherMain**  
The logical replication launcher process is waiting for activity.

**Activity:PgStatMain**  
The statistics collector process is waiting for activity.

**Activity:RecoveryWalAll**  
A process is waiting for the write-ahead log (WAL) from a stream at recovery.

**Activity:RecoveryWalStream**  
The startup process is waiting for the write-ahead log (WAL) to arrive during streaming recovery.

**Activity:SysLoggerMain**  
The syslogger process is waiting for activity.

**Activity:WalReceiverMain**  
The write-ahead log (WAL) receiver process is waiting for activity.

**Activity:WalSenderMain**  
The write-ahead log (WAL) sender process is waiting for activity.

**Activity:WalWriterMain**  
The write-ahead log (WAL) writer process is waiting for activity.

**BufferPin:BufferPin**  
A process is waiting to acquire an exclusive pin on a buffer.

**Client:GSSOpenServer**  
A process is waiting to read data from the client while establishing a Generic Security Service Application Program Interface (GSSAPI) session.

**Client:ClientRead**  
A backend process is waiting to receive data from a PostgreSQL client. For more information, see [Client:ClientRead](apg-waits.clientread.md).

**Client:ClientWrite**  
A backend process is waiting to send more data to a PostgreSQL client. For more information, see [Client:ClientWrite](apg-waits.clientwrite.md).

**Client:LibPQWalReceiverConnect**  
A process is waiting in the write-ahead log (WAL) receiver to establish connection to remote server.

**Client:LibPQWalReceiverReceive**  
A process is waiting in the write-ahead log (WAL) receiver to receive data from remote server.

**Client:SSLOpenServer**  
A process is waiting for Secure Sockets Layer (SSL) while attempting connection.

**Client:WalReceiverWaitStart**  
A process is waiting for startup process to send initial data for streaming replication.

**Client:WalSenderWaitForWAL**  
A process is waiting for the write-ahead log (WAL) to be flushed in the WAL sender process.

**Client:WalSenderWriteData**  
A process is waiting for any activity when processing replies from the write-ahead log (WAL) receiver in the WAL sender process.

**CPU**  
A backend process is active in or is waiting for CPU. For more information, see [CPU](apg-waits.cpu.md).

**Extension:extension**  
A backend process is waiting for a condition defined by an extension or module.

**IO:AuroraEnhancedLogicalWALRead**  
A backend process is fetching log records from the change data capture (CDC) volume.

**IO:AuroraOptimizedReadsCacheRead**  
A process is waiting for a read from Optimized Reads tiered cache because the page isn't available in shared memory.

**IO:AuroraOptimizedReadsCacheSegmentTruncate**  
A process is waiting for an Optimized Reads tiered cache segment file to be truncated.

**IO:AuroraOptimizedReadsCacheWrite**  
The background writer process is waiting to write in Optimized Reads tiered cache.

**IO:AuroraStorageLogAllocate**  
A session is allocating metadata and preparing for a transaction log write.

**IO:BufFileRead**  
When operations require more memory than the amount defined by working memory parameters, the engine creates temporary files on disk. This wait event occurs when operations read from the temporary files. For more information, see [IO:BufFileRead and IO:BufFileWrite](apg-waits.iobuffile.md).

**IO:BufFileWrite**  
When operations require more memory than the amount defined by working memory parameters, the engine creates temporary files on disk. This wait event occurs when operations write to the temporary files. For more information, see [IO:BufFileRead and IO:BufFileWrite](apg-waits.iobuffile.md).

**IO:ControlFileRead**  
A process is waiting for a read from the `pg_control` file.

**IO:ControlFileSync**  
A process is waiting for the `pg_control` file to reach durable storage.

**IO:ControlFileSyncUpdate**  
A process is waiting for an update to the `pg_control` file to reach durable storage.

**IO:ControlFileWrite**  
A process is waiting for a write to the `pg_control` file.

**IO:ControlFileWriteUpdate**  
A process is waiting for a write to update the `pg_control` file.

**IO:CopyFileRead**  
A process is waiting for a read during a file copy operation.

**IO:CopyFileWrite**  
A process is waiting for a write during a file copy operation.

**IO:DataFileExtend**  
A process is waiting for a relation data file to be extended.

**IO:DataFileFlush**  
A process is waiting for a relation data file to reach durable storage.

**IO:DataFileImmediateSync**  
A process is waiting for an immediate synchronization of a relation data file to durable storage.

**IO:DataFilePrefetch**  
A process is waiting for an asynchronous prefetch from a relation data file.

**IO:DataFileSync**  
A process is waiting for changes to a relation data file to reach durable storage.

**IO:DataFileRead**  
A backend process tried to find a page in the shared buffers, didn't find it, and so read it from storage. For more information, see [IO:DataFileRead](apg-waits.iodatafileread.md).

**IO:DataFileTruncate**  
A process is waiting for a relation data file to be truncated.

**IO:DataFileWrite**  
A process is waiting for a write to a relation data file.

**IO:DSMFillZeroWrite**  
A process is waiting to write zero bytes to a dynamic shared memory backing file.

**IO:LockFileAddToDataDirRead**  
A process is waiting for a read while adding a line to the data directory lock file.

**IO:LockFileAddToDataDirSync**  
A process is waiting for data to reach durable storage while adding a line to the data directory lock file.

**IO:LockFileAddToDataDirWrite**  
A process is waiting for a write while adding a line to the data directory lock file.

**IO:LockFileCreateRead**  
A process is waiting to read while creating the data directory lock file.

**IO:LockFileCreateSync**  
A process is waiting for data to reach durable storage while creating the data directory lock file.

**IO:LockFileCreateWrite**  
A process is waiting for a write while creating the data directory lock file.

**IO:LockFileReCheckDataDirRead**  
A process is waiting for a read during recheck of the data directory lock file.

**IO:LogicalRewriteCheckpointSync**  
A process is waiting for logical rewrite mappings to reach durable storage during a checkpoint.

**IO:LogicalRewriteMappingSync**  
A process is waiting for mapping data to reach durable storage during a logical rewrite.

**IO:LogicalRewriteMappingWrite**  
A process is waiting for a write of mapping data during a logical rewrite.

**IO:LogicalRewriteSync**  
A process is waiting for logical rewrite mappings to reach durable storage.

**IO:LogicalRewriteTruncate**  
A process is waiting for the truncation of mapping data during a logical rewrite.

**IO:LogicalRewriteWrite**  
A process is waiting for a write of logical rewrite mappings.

**IO:RelationMapRead**  
A process is waiting for a read of the relation map file.

**IO:RelationMapSync**  
A process is waiting for the relation map file to reach durable storage.

**IO:RelationMapWrite**  
A process is waiting for a write to the relation map file.

**IO:ReorderBufferRead**  
A process is waiting for a read during reorder buffer management.

**IO:ReorderBufferWrite**  
A process is waiting for a write during reorder buffer management.

**IO:ReorderLogicalMappingRead**  
A process is waiting for a read of a logical mapping during reorder buffer management.

**IO:ReplicationSlotRead**  
A process is waiting for a read from a replication slot control file.

**IO:ReplicationSlotRestoreSync**  
A process is waiting for a replication slot control file to reach durable storage while restoring it to memory.

**IO:ReplicationSlotSync**  
A process is waiting for a replication slot control file to reach durable storage.

**IO:ReplicationSlotWrite**  
A process is waiting for a write to a replication slot control file.

**IO:SLRUFlushSync**  
A process is waiting for simple least-recently used (SLRU) data to reach durable storage during a checkpoint or database shutdown.

**IO:SLRURead**  
A process is waiting for a read of a simple least-recently used (SLRU) page.

**IO:SLRUSync**  
A process is waiting for simple least-recently used (SLRU) data to reach durable storage following a page write.

**IO:SLRUWrite**  
A process is waiting for a write of a simple least-recently used (SLRU) page.

**IO:SnapbuildRead**  
A process is waiting for a read of a serialized historical catalog snapshot.

**IO:SnapbuildSync**  
A process is waiting for a serialized historical catalog snapshot to reach durable storage.

**IO:SnapbuildWrite**  
A process is waiting for a write of a serialized historical catalog snapshot.

**IO:TimelineHistoryFileSync**  
A process is waiting for a timeline history file received through streaming replication to reach durable storage.

**IO:TimelineHistoryFileWrite**  
A process is waiting for a write of a timeline history file received through streaming replication.

**IO:TimelineHistoryRead**  
A process is waiting for a read of a timeline history file.

**IO:TimelineHistorySync**  
A process is waiting for a newly created timeline history file to reach durable storage.

**IO:TimelineHistoryWrite**  
A process is waiting for a write of a newly created timeline history file.

**IO:TwophaseFileRead**  
A process is waiting for a read of a two phase state file.

**IO:TwophaseFileSync**  
A process is waiting for a two phase state file to reach durable storage.

**IO:TwophaseFileWrite**  
A process is waiting for a write of a two phase state file.

**IO:WALBootstrapSync**  
A process is waiting for the write-ahead log (WAL) to reach durable storage during bootstrapping.

**IO:WALBootstrapWrite**  
A process is waiting for a write of a write-ahead log (WAL) page during bootstrapping.

**IO:WALCopyRead**  
A process is waiting for a read when creating a new write-ahead log (WAL) segment by copying an existing one.

**IO:WALCopySync**  
A process is waiting for a new write-ahead log (WAL) segment created by copying an existing one to reach durable storage. 

**IO:WALCopyWrite**  
A process is waiting for a write when creating a new write-ahead log (WAL) segment by copying an existing one.

**IO:WALInitSync**  
A process is waiting for a newly initialized write-ahead log (WAL) file to reach durable storage.

**IO:WALInitWrite**  
A process is waiting for a write while initializing a new write-ahead log (WAL) file.

**IO:WALRead**  
A process is waiting for a read from a write-ahead log (WAL) file.

**IO:WALSenderTimelineHistoryRead**  
A process is waiting for a read from a timeline history file during a WAL sender timeline command.

**IO:WALSync**  
A process is waiting for a write-ahead log (WAL) file to reach durable storage.

**IO:WALSyncMethodAssign**  
A process is waiting for data to reach durable storage while assigning a new write-ahead log (WAL) sync method.

**IO:WALWrite**  
A process is waiting for a write to a write-ahead log (WAL) file.

**IO:XactSync**  
A backend process is waiting for the Aurora storage subsystem to acknowledge the commit of a regular transaction, or the commit or rollback of a prepared transaction. For more information, see [IO:XactSync](apg-waits.xactsync.md).

**IPC:AuroraLogicalSchemaUpdate**  
Two backend processes are attempting to insert the same entry into the schema cache. One process will continue while the other waits for it to complete.

**IPC:AuroraOptimizedReadsCacheWriteStop**  
A process is waiting for the background writer to stop writing into Optimized Reads tiered cache.

**IPC:BackupWaitWalArchive**  
A process is waiting for write-ahead log (WAL) files required for a backup to be successfully archived.

**IPC:BgWorkerShutdown**  
A process is waiting for a background worker to shut down.

**IPC:BgWorkerStartup**  
A process is waiting for a background worker to start. 

**IPC:BtreePage**  
A process is waiting for the page number needed to continue a parallel B-tree scan to become available. 

**IPC:CheckpointDone**  
A process is waiting for a checkpoint to complete. 

**IPC:CheckpointStart**  
A process is waiting for a checkpoint to start. 

**IPC:ClogGroupUpdate**  
A process is waiting for the group leader to update the transaction status at a transaction's end.

**IPC:DamRecordTxAck**  
A backend process has generated a database activity streams event and is waiting for the event to become durable. For more information, see [IPC:DamRecordTxAck](apg-waits.ipcdamrecordtxac.md).

**IPC:ExecuteGather**  
A process is waiting for activity from a child process while executing a Gather plan node. 

**IPC:Hash/Batch/Allocating**  
A process is waiting for an elected parallel hash participant to allocate a hash table.

**IPC:Hash/Batch/Electing**  
A process is electing a parallel hash participant to allocate a hash table.

**IPC:Hash/Batch/Loading**  
A process is waiting for other parallel hash participants to finish loading a hash table.

**IPC:Hash/Build/Allocating**  
A process is waiting for an elected parallel hash participant to allocate the initial hash table.

**IPC:Hash/Build/Electing**  
A process is electing a parallel hash participant to allocate the initial hash table.

**IPC:Hash/Build/HashingInner**  
A process is waiting for other parallel hash participants to finish hashing the inner relation.

**IPC:Hash/Build/HashingOuter**  
A process is waiting for other parallel hash participants to finish partitioning the outer relation.

**IPC:Hash/GrowBatches/Allocating**  
A process is waiting for an elected parallel hash participant to allocate more batches.

**IPC:Hash/GrowBatches/Deciding**  
A process is electing a parallel hash participant to decide on future batch growth.

**IPC:Hash/GrowBatches/Electing**  
A process is electing a parallel hash participant to allocate more batches.

**IPC:Hash/GrowBatches/Finishing**  
A process is waiting for an elected parallel hash participant to decide on future batch growth.

**IPC:Hash/GrowBatches/Repartitioning**  
A process is waiting for other parallel hash participants to finishing repartitioning.

**IPC:Hash/GrowBuckets/Allocating**  
A process is waiting for an elected parallel hash participant to finish allocating more buckets.

**IPC:Hash/GrowBuckets/Electing**  
A process is electing a parallel hash participant to allocate more buckets.

**IPC:Hash/GrowBuckets/Reinserting**  
A process is waiting for other parallel hash participants to finish inserting tuples into new buckets.

**IPC:HashBatchAllocate**  
A process is waiting for an elected parallel hash participant to allocate a hash table. 

**IPC:HashBatchElect**  
A process is waiting to elect a parallel hash participant to allocate a hash table. 

**IPC:HashBatchLoad**  
A process is waiting for other parallel hash participants to finish loading a hash table. 

**IPC:HashBuildAllocate**  
A process is waiting for an elected parallel hash participant to allocate the initial hash table. 

**IPC:HashBuildElect**  
A process is waiting to elect a parallel hash participant to allocate the initial hash table. 

**IPC:HashBuildHashInner**  
A process is waiting for other parallel hash participants to finish hashing the inner relation. 

**IPC:'HashBuildHashOuter**  
A process is waiting for other parallel hash participants to finish partitioning the outer relation. 

**IPC:HashGrowBatchesAllocate**  
A process is waiting for an elected parallel hash participant to allocate more batches. 

**IPC:'HashGrowBatchesDecide**  
A process is waiting to elect a parallel hash participant to decide on future batch growth. 

**IPC:HashGrowBatchesElect**  
A process is waiting to elect a parallel hash participant to allocate more batches. 

**IPC:HashGrowBatchesFinish**  
A process is waiting for an elected parallel hash participant to decide on future batch growth. 

**IPC:HashGrowBatchesRepartition**  
A process is waiting for other parallel hash participants to finish repartitioning. 

**IPC:HashGrowBucketsAllocate**  
A process is waiting for an elected parallel hash participant to finish allocating more buckets. 

**IPC:HashGrowBucketsElect**  
A process is waiting to elect a parallel hash participant to allocate more buckets. 

**IPC:HashGrowBucketsReinsert**  
A process is waiting for other parallel hash participants to finish inserting tuples into new buckets. 

**IPC:LogicalSyncData**  
A process is waiting for a logical replication remote server to send data for initial table synchronization. 

**IPC:LogicalSyncStateChange**  
A process is waiting for a logical replication remote server to change state. 

**IPC:MessageQueueInternal**  
A process is waiting for another process to be attached to a shared message queue. 

**IPC:MessageQueuePutMessage**  
A process is waiting to write a protocol message to a shared message queue. 

**IPC:MessageQueueReceive**  
A process is waiting to receive bytes from a shared message queue. 

**IPC:MessageQueueSend**  
A process is waiting to send bytes to a shared message queue. 

**IPC:ParallelBitmapScan**  
A process is waiting for a parallel bitmap scan to become initialized. 

**IPC:ParallelCreateIndexScan**  
A process is waiting for parallel CREATE INDEX workers to finish a heap scan. 

**IPC:ParallelFinish**  
A process is waiting for parallel workers to finish computing. 

**IPC:ProcArrayGroupUpdate**  
A process is waiting for the group leader to clear the transaction ID at transaction end. 

**IPC:ProcSignalBarrier**  
A process is waiting for a barrier event to be processed by all backends. 

**IPC:Promote**  
A process is waiting for standby promotion. 

**IPC:RecoveryConflictSnapshot**  
A process is waiting for recovery conflict resolution for a vacuum cleanup. 

**IPC:RecoveryConflictTablespace**  
A process is waiting for recovery conflict resolution for dropping a tablespace. 

**IPC:RecoveryPause**  
A process is waiting for recovery to be resumed. 

**IPC:ReplicationOriginDrop**  
A process is waiting for a replication origin to become inactive so it can be dropped. 

**IPC:ReplicationSlotDrop**  
A process is waiting for a replication slot to become inactive so it can be dropped. 

**IPC:SafeSnapshot**  
A process is waiting to obtain a valid snapshot for a READ ONLY DEFERRABLE transaction. 

**IPC:SyncRep**  
A process is waiting for confirmation from a remote server during synchronous replication. 

**IPC:XactGroupUpdate**  
A process is waiting for the group leader to update the transaction status at transaction end.

**Lock:advisory**  
A backend process requested an advisory lock and is waiting for it. For more information, see [Lock:advisory](apg-waits.lockadvisory.md).

**Lock:extend**  
A backend process is waiting for a lock to be released so that it can extend a relation. This lock is needed because only one backend process can extend a relation at a time. For more information, see [Lock:extend](apg-waits.lockextend.md).

**Lock:frozenid**  
A process is waiting to update `pg_database.datfrozenxid` and `pg_database.datminmxid`. 

**Lock:object**  
A process is waiting to get a lock on a nonrelation database object.

**Lock:page**  
A process is waiting to get a lock on a page of a relation.

**Lock:Relation**  
A backend process is waiting to acquire a lock on a relation that is locked by another transaction. For more information, see [Lock:Relation](apg-waits.lockrelation.md).

**Lock:spectoken**  
A process is waiting to get a speculative insertion lock.

**Lock:speculative token**  
A process is waiting to acquire a speculative insertion lock.

**Lock:transactionid**  
A transaction is waiting for a row-level lock. For more information, see [Lock:transactionid](apg-waits.locktransactionid.md).

**Lock:tuple**  
A backend process is waiting to acquire a lock on a tuple while another backend process holds a conflicting lock on the same tuple. For more information, see [Lock:tuple](apg-waits.locktuple.md).

**Lock:userlock**  
A process is waiting to get a user lock.

**Lock:virtualxid**  
A process is waiting to get a virtual transaction ID lock.

**LWLock:AddinShmemInit**  
A process is waiting to manage an extension's space allocation in shared memory.

**LWLock:AddinShmemInitLock**  
A process is waiting to manage space allocation in shared memory.

**LWLock:async**  
A process is waiting for I/O on an async (notify) buffer.

**LWLock:AsyncCtlLock**  
A process is waiting to read or update a shared notification state.

**LWLock:AsyncQueueLock**  
A process is waiting to read or update notification messages. 

**LWLock:AuroraOptimizedReadsCacheMapping**  
A process is waiting to associate a data block with a page in the Optimized Reads tiered cache.

**LWLock:AutoFile**  
A process is waiting to update the `postgresql.auto.conf` file.

**LWLock:AutoFileLock**  
A process is waiting to update the `postgresql.auto.conf` file.

**LWLock:Autovacuum**  
A process is waiting to read or update the current state of autovacuum workers.

**LWLock:AutovacuumLock**  
An autovacuum worker or launcher is waiting to update or read the current state of autovacuum workers.

**LWLock:AutovacuumSchedule**  
A process is waiting to ensure that a table selected for autovacuum still needs vacuuming.

**LWLock:AutovacuumScheduleLock**  
A process is waiting to ensure that the table it has selected for a vacuum still needs vacuuming. 

**LWLock:BackendRandomLock**  
A process is waiting to generate a random number. 

**LWLock:BackgroundWorker**  
A process is waiting to read or update background worker state.

**LWLock:BackgroundWorkerLock**  
A process is waiting to read or update the background worker state.

**LWLock:BtreeVacuum**  
A process is waiting to read or update vacuum-related information for a B-tree index.

**LWLock:BtreeVacuumLock**  
A process is waiting to read or update vacuum-related information for a B-tree index.

**LWLock:buffer\$1content**  
A backend process is waiting to acquire a lightweight lock on the contents of a shared memory buffer. For more information, see [LWLock:buffer\$1content (BufferContent)](apg-waits.lockbuffercontent.md).

**LWLock:buffer\$1mapping**  
A backend process is waiting to associate a data block with a buffer in the shared buffer pool. For more information, see [LWLock:buffer\$1mapping](apg-waits.lwl-buffer-mapping.md).

**LWLock:BufferIO**  
A backend process wants to read a page into shared memory. The process is waiting for other processes to finish their I/O for the page. For more information, see [LWLock:BufferIO (IPC:BufferIO)](apg-waits.lwlockbufferio.md).

**LWLock:Checkpoint**  
A process is waiting to begin a checkpoint. 

**LWLock:CheckpointLock**  
A process is waiting to perform checkpoint. 

**LWLock:CheckpointerComm**  
A process is waiting to manage `fsync` requests. 

**LWLock:CheckpointerCommLock**  
A process is waiting to manage `fsync` requests. 

**LWLock:clog**  
A process is waiting for I/O on a clog (transaction status) buffer. 

**LWLock:CLogControlLock**  
A process is waiting to read or update transaction status. 

**LWLock:CLogTruncationLock**  
A process is waiting to run `txid_status` or update the oldest transaction ID available to it. 

**LWLock:commit\$1timestamp**  
A process is waiting for I/O on a commit timestamp buffer. 

**LWLock:CommitTs**  
A process is waiting to read or update the last value set for a transaction commit timestamp. 

**LWLock:CommitTsBuffer**  
A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a commit timestamp. 

**LWLock:CommitTsControlLock**  
A process is waiting to read or update transaction commit timestamps. 

**LWLock:CommitTsLock**  
A process is waiting to read or update the last value set for the transaction timestamp. 

**LWLock:CommitTsSLRU**  
A process is waiting to access the simple least-recently used (SLRU) cache for a commit timestamp. 

**LWLock:ControlFile**  
A process is waiting to read or update the `pg_control` file or create a new write-ahead log (WAL) file. 

**LWLock:ControlFileLock**  
A process is waiting to read or update the control file or creation of a new write-ahead log (WAL) file. 

**LWLock:DynamicSharedMemoryControl**  
A process is waiting to read or update dynamic shared memory allocation information. 

**LWLock:DynamicSharedMemoryControlLock**  
A process is waiting to read or update the dynamic shared memory state. 

**LWLock:lock\$1manager**  
A backend process is waiting to add or examine locks for backend processes. Or it's waiting to join or exit a locking group that is used by parallel query. For more information, see [LWLock:lock\$1manager](apg-waits.lw-lock-manager.md).

**LWLock:LockFastPath**  
A process is waiting to read or update a process's fast-path lock information. 

**LWLock:LogicalRepWorker**  
A process is waiting to read or update the state of logical replication workers. 

**LWLock:LogicalRepWorkerLock**  
A process is waiting for an action on a logical replication worker to finish. 

**LWLock:LogicalSchemaCache**  
A process modified the schema cache.

**LWLock:multixact\$1member**  
A process is waiting for I/O on a multixact\$1member buffer. 

**LWLock:multixact\$1offset**  
A process is waiting for I/O on a multixact offset buffer. 

**LWLock:MultiXactGen**  
A process is waiting to read or update shared multixact state. 

**LWLock:MultiXactGenLock**  
A process is waiting to read or update a shared multixact state. 

**LWLock:MultiXactMemberBuffer**  
A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a multixact member. For more information, see [LWLock:MultiXact](apg-waits.lwlockmultixact.md). 

**LWLock:MultiXactMemberControlLock**  
A process is waiting to read or update multixact member mappings. 

**LWLock:MultiXactMemberSLRU**  
A process is waiting to access the simple least-recently used (SLRU) cache for a multixact member. For more information, see [LWLock:MultiXact](apg-waits.lwlockmultixact.md). 

**LWLock:MultiXactOffsetBuffer**  
A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a multixact offset. For more information, see [LWLock:MultiXact](apg-waits.lwlockmultixact.md). 

**LWLock:MultiXactOffsetControlLock**  
A process is waiting to read or update multixact offset mappings. 

**LWLock:MultiXactOffsetSLRU**  
A process is waiting to access the simple least-recently used (SLRU) cache for a multixact offset. For more information, see [LWLock:MultiXact](apg-waits.lwlockmultixact.md). 

**LWLock:MultiXactTruncation**  
A process is waiting to read or truncate multixact information. 

**LWLock:MultiXactTruncationLock**  
A process is waiting to read or truncate multixact information. 

**LWLock:NotifyBuffer**  
A process is waiting for I/O on the simple least-recently used (SLRU) buffer for a NOTIFY message. 

**LWLock:NotifyQueue**  
A process is waiting to read or update NOTIFY messages.

**LWLock:NotifyQueueTail**  
A process is waiting to update a limit on NOTIFY message storage.

**LWLock:NotifyQueueTailLock**  
A process is waiting to update limit on notification message storage.

**LWLock:NotifySLRU**  
A process is waiting to access the simple least-recently used (SLRU) cache for a NOTIFY message.

**LWLock:OidGen**  
A process is waiting to allocate a new object ID (OID). 

**LWLock:OidGenLock**  
A process is waiting to allocate or assign an object ID (OID). 

**LWLock:oldserxid**  
A process is waiting for I/O on an oldserxid buffer. 

**LWLock:OldSerXidLock**  
A process is waiting to read or record conflicting serializable transactions.

**LWLock:OldSnapshotTimeMap**  
A process is waiting to read or update old snapshot control information.

**LWLock:OldSnapshotTimeMapLock**  
A process is waiting to read or update old snapshot control information.

**LWLock:parallel\$1append**  
A process is waiting to choose the next subplan during parallel append plan execution. 

**LWLock:parallel\$1hash\$1join**  
A process is waiting to allocate or exchange a chunk of memory or update counters during a parallel hash plan execution.

**LWLock:parallel\$1query\$1dsa**  
A process is waiting for a lock on dynamic shared memory allocation for a parallel query. 

**LWLock:ParallelAppend**  
A process is waiting to choose the next subplan during parallel append plan execution. 

**LWLock:ParallelHashJoin**  
A process is waiting to synchronize workers during plan execution for a parallel hash join. 

**Lwlock:ParallelQueryDSA**  
A process is waiting for dynamic shared memory allocation for a parallel query. 

**Lwlock:PerSessionDSA**  
A process is waiting for dynamic shared memory allocation for a parallel query. 

**Lwlock:PerSessionRecordType**  
A process is waiting to access a parallel query's information about composite types. 

**Lwlock:PerSessionRecordTypmod**  
A process is waiting to access a parallel query's information about type modifiers that identify anonymous record types. 

**Lwlock:PerXactPredicateList**  
A process is waiting to access the list of predicate locks held by the current serializable transaction during a parallel query. 

**Lwlock:predicate\$1lock\$1manager**  
A process is waiting to add or examine predicate lock information.

**Lwlock:PredicateLockManager**  
A process is waiting to access predicate lock information used by serializable transactions.

**Lwlock:proc**  
A process is waiting to read or update the fast-path lock information. 

**LWLock:ProcArray**  
A process is waiting to access the shared per-process data structures (typically, to get a snapshot or report a session's transaction ID). 

**LWLock:ProcArrayLock**  
A process is waiting to get a snapshot or clearing a transaction Id at a transaction's end. 

**LWLock:RelationMapping**  
A process is waiting to read or update a `pg_filenode.map` file (used to track the file-node assignments of certain system catalogs). 

**LWLock:RelationMappingLock**  
A process is waiting to update the relation map file used to store catalog-to-file-node mapping. 

**LWLock:RelCacheInit**  
A process is waiting to read or update a `pg_internal.init` file (a relation cache initialization file). 

**LWLock:RelCacheInitLock**  
A process is waiting to read or write a relation cache initialization file. 

**LWLock:replication\$1origin**  
A process is waiting to read or update the replication progress. 

**LWLock:replication\$1slot\$1io**  
A process is waiting for I/O on a replication slot. 

**LWLock:ReplicationOrigin**  
A process is waiting to create, drop, or use a replication origin.

**LWLock:ReplicationOriginLock**  
A process is waiting to set up, drop, or use a replication origin.

**LWLock:ReplicationOriginState**  
A process is waiting to read or update the progress of one replication origin. 

**LWLock:ReplicationSlotAllocation**  
A process is waiting to allocate or free a replication slot.

**LWLock:ReplicationSlotAllocationLock**  
A process is waiting to allocate or free a replication slot.

**LWLock:ReplicationSlotControl**  
A process is waiting to read or update a replication slot state.

**LWLock:ReplicationSlotControlLock**  
A process is waiting to read or update the replication slot state. 

**LWLock:ReplicationSlotIO**  
A process is waiting for I/O on a replication slot. 

**LWLock:SerialBuffer**  
A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a serializable transaction conflict. 

**LWLock:SerializableFinishedList**  
A process is waiting to access the list of finished serializable transactions.

**LWLock:SerializableFinishedListLock**  
A process is waiting to access the list of finished serializable transactions.

**LWLock:SerializablePredicateList**  
A process is waiting to access the list of predicate locks held by serializable transactions.

**LWLock:SerializablePredicateLockListLock**  
A process is waiting to perform an operation on a list of locks held by serializable transactions. 

**LWLock:SerializableXactHash**  
A process is waiting to read or update information about serializable transactions. 

**LWLock:SerializableXactHashLock**  
A process is waiting to retrieve or store information about serializable transactions. 

**LWLock:SerialSLRU**  
A process is waiting to access the simple least-recently used (SLRU) cache for a serializable transaction conflict. 

**LWLock:SharedTidBitmap**  
A process is waiting to access a shared tuple identifier (TID) bitmap during a parallel bitmap index scan. 

**LWLock:SharedTupleStore**  
A process is waiting to access a shared tuple store during a parallel query. 

**LWLock:ShmemIndex**  
A process is waiting to find or allocate space in shared memory. 

**LWLock:ShmemIndexLock**  
A process is waiting to find or allocate space in shared memory. 

**LWLock:SInvalRead**  
A process is waiting to retrieve messages from the shared catalog invalidation queue. 

**LWLock:SInvalReadLock**  
A process is waiting to retrieve or remove messages from a shared invalidation queue. 

**LWLock:SInvalWrite**  
A process is waiting to add a message to the shared catalog invalidation queue. 

**LWLock:SInvalWriteLock**  
A process is waiting to add a message in a shared invalidation queue. 

**LWLock:SyncRep**  
A process is waiting to read or update information about the state of synchronous replication. 

**LWLock:SyncRepLock**  
A process is waiting to read or update information about synchronous replicas. 

**LWLock:SyncScan**  
A process is waiting to select the starting location of a synchronized table scan.

**LWLock:SyncScanLock**  
A process is waiting to get the start location of a scan on a table for synchronized scans.

**LWLock:TablespaceCreate**  
A process is waiting to create or drop a tablespace. 

**LWLock:TablespaceCreateLock**  
A process is waiting to create or drop the tablespace. 

**LWLock:tbm**  
A process is waiting for a shared iterator lock on a tree bitmap (TBM). 

**LWLock:TwoPhaseState**  
A process is waiting to read or update the state of prepared transactions. 

**LWLock:TwoPhaseStateLock**  
A process is waiting to read or update the state of prepared transactions. 

**LWLock:wal\$1insert**  
A process is waiting to insert the write-ahead log (WAL) into a memory buffer. 

**LWLock:WALBufMapping**  
A process is waiting to replace a page in write-ahead log (WAL) buffers. 

**LWLock:WALBufMappingLock**  
A process is waiting to replace a page in write-ahead log (WAL) buffers. 

**LWLock:WALInsert**  
A process is waiting to insert write-ahead log (WAL) data into a memory buffer. 

**LWLock:WALWrite**  
A process is waiting for write-ahead log (WAL) buffers to be written to disk. 

**LWLock:WALWriteLock**  
A process is waiting for write-ahead log (WAL) buffers to be written to disk. 

**LWLock:WrapLimitsVacuum**  
A process is waiting to update limits on transaction ID and multixact consumption. 

**LWLock:WrapLimitsVacuumLock**  
A process is waiting to update limits on transaction ID and multixact consumption. 

**LWLock:XactBuffer**  
A process is waiting for I/O on a simple least-recently used (SLRU) buffer for a transaction status. 

**LWLock:XactSLRU**  
A process is waiting to access the simple least-recently used (SLRU) cache for a transaction status. 

**LWLock:XactTruncation**  
A process is waiting to run pg\$1xact\$1status or update the oldest transaction ID available to it. 

**LWLock:XidGen**  
A process is waiting to allocate a new transaction ID.

**LWLock:XidGenLock**  
A process is waiting to allocate or assign a transaction ID. 

**Timeout:BaseBackupThrottle**  
A process is waiting during base backup when throttling activity. 

**Timeout:PgSleep**  
A backend process has called the pg\$1sleep function and is waiting for the sleep timeout to expire. For more information, see [Timeout:PgSleep](apg-waits.timeoutpgsleep.md).

**Timeout:RecoveryApplyDelay**  
A process is waiting to apply write-ahead log (WAL) during recovery because of a delay setting. 

**Timeout:RecoveryRetrieveRetryInterval**  
A process is waiting during recovery when write-ahead log (WAL) data is not available from any source (pg\$1wal, archive, or stream). 

**Timeout:VacuumDelay**  
A process is waiting in a cost-based vacuum delay point. 

For a complete list of PostgreSQL wait events, see [The Statistics Collector > Wait Event tables](https://www.postgresql.org/docs/current/monitoring-stats.html#WAIT-EVENT-TABLE) in the PostgreSQL documentation.

# Database engine updates for Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Updates"></a><a name="pgsql_relnotes"></a>

Following, you can find information about Amazon Aurora PostgreSQL engine version releases and updates. You can also find information about how to upgrade your Aurora PostgreSQL engine. For more information about Aurora releases in general, see [Amazon Aurora versions](Aurora.VersionPolicy.md).

**Tip**  
You can minimize the downtime required for a DB cluster upgrade by using a blue/green deployment. For more information, see [Using Amazon Aurora Blue/Green Deployments for database updates](blue-green-deployments.md).

**Topics**
+ [Identifying versions of Amazon Aurora PostgreSQL](#AuroraPostgreSQL.Updates.Versions)
+ [Amazon Aurora PostgreSQL releases and engine versions](AuroraPostgreSQL.Updates.20180305.md)
+ [Extension versions for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Extensions.md)
+ [Upgrading Amazon Aurora PostgreSQL DB clusters](USER_UpgradeDBInstance.PostgreSQL.md)
+ [Using an Aurora PostgreSQL long-term support (LTS) release](AuroraPostgreSQL.Updates.LTS.md)

## Identifying versions of Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Updates.Versions"></a>

Amazon Aurora includes certain features that are general to Aurora and available to all Aurora DB clusters. Aurora includes other features that are specific to a particular database engine that Aurora supports. These features are available only to those Aurora DB clusters that use that database engine, such as Aurora PostgreSQL.

An Aurora database release typically has two version numbers, the database engine version number and the Aurora version number. If an Aurora PostgreSQL release has an Aurora version number, it's included after the engine version number in the [Amazon Aurora PostgreSQL releases and engine versions](AuroraPostgreSQL.Updates.20180305.md) listing. 

**Topics**
+ [Aurora version number](#AuroraPostgreSQL.Updates.Versions.AuroraNumber)
+ [PostgreSQL engine version numbers](#AuroraPostgreSQL.Updates.Versions.EngineNumber)

### Aurora version number
<a name="AuroraPostgreSQL.Updates.Versions.AuroraNumber"></a>

Aurora version numbers use the *major*.*minor*.*patch* naming scheme. An Aurora patch version includes important bug fixes added to a minor version after its release. To learn more about Amazon Aurora major, minor, and patch releases, see [Amazon Aurora major versions](Aurora.VersionPolicy.Versioning.md#Aurora.VersionPolicy.MajorVersions), [Amazon Aurora minor versions](Aurora.VersionPolicy.Versioning.md#Aurora.VersionPolicy.MinorVersions), and [Amazon Aurora patch versions](Aurora.VersionPolicy.Versioning.md#Aurora.VersionPolicy.PatchVersions). 

You can find out the Aurora version number of your Aurora PostgreSQL DB instance with the following SQL query:

```
postgres=> SELECT aurora_version();
```

Starting with the release of PostgreSQL versions 13.3, 12.8, 11.13, 10.18, and for all other later versions, Aurora version numbers align more closely to the PostgreSQL engine version. For example, querying an Aurora PostgreSQL 13.3 DB cluster returns the following:

```
aurora_version
----------------
 13.3.1
(1 row)
```

Prior releases, such as Aurora PostgreSQL 10.14 DB cluster, return version numbers similar to the following:

```
aurora_version
----------------
 2.7.3
(1 row)
```

### PostgreSQL engine version numbers
<a name="AuroraPostgreSQL.Updates.Versions.EngineNumber"></a>

Starting with PostgreSQL 10, PostgreSQL database engine versions use a *major*.*minor* numbering scheme for all releases. Some examples include PostgreSQL 10.18, PostgreSQL 12.7, and PostgreSQL 13.3. 

Releases prior to PostgreSQL 10 used a *major*.*major*.*minor* numbering scheme in which the first two digits make up the major version number and a third digit denotes a minor version. For example, PostgreSQL 9.6 was a major version, with minor versions 9.6.21 or 9.6.22 indicated by the third digit.

**Note**  
The PostgreSQL engine version 9.6 is no longer supported. To upgrade, see [Upgrading Amazon Aurora PostgreSQL DB clusters](USER_UpgradeDBInstance.PostgreSQL.md). For version policies and release timelines, see [How long Amazon Aurora major versions remain available](Aurora.VersionPolicy.Versioning.md#Aurora.VersionPolicy.MajorVersionLifetime).

You can find out the PostgreSQL database engine version number with the following SQL query:

```
postgres=> SELECT version();
```

For an Aurora PostgreSQL 13.3 DB cluster, the results are as follows:

```
version
-------------------------------------------------------------------------------------------------
 PostgreSQL 13.3 on x86_64-pc-linux-gnu, compiled by x86_64-pc-linux-gnu-gcc (GCC) 7.4.0, 64-bit
(1 row)
```

# Amazon Aurora PostgreSQL releases and engine versions
<a name="AuroraPostgreSQL.Updates.20180305"></a>

Amazon Aurora PostgreSQL-Compatible Edition releases are updated regularly. Updates are applied to Aurora PostgreSQL DB clusters during system maintenance windows. When updates are applied depends on the type of update, the AWS Region, and maintenance window setting for the DB cluster. Many of the listed releases include both a PostgreSQL version number and an Amazon Aurora version number. However, starting with the release of PostgreSQL versions 13.3, 12.8, 11.13, 10.18, and for all other later versions, Aurora version numbers aren't used. To identify the version numbers of your Aurora PostgreSQL database, see [Identifying versions of Amazon Aurora PostgreSQL](AuroraPostgreSQL.Updates.md#AuroraPostgreSQL.Updates.Versions). 

For information about extensions and modules, see [Extension versions for Amazon Aurora PostgreSQL](AuroraPostgreSQL.Extensions.md).

**Note**  
For information about Amazon Aurora version policies and release timelines, see [How long Amazon Aurora major versions remain available](Aurora.VersionPolicy.Versioning.md#Aurora.VersionPolicy.MajorVersionLifetime). 

For information about support for Amazon Aurora see [Amazon RDS FAQs](https://aws.amazon.com/rds/faqs/). 

To determine which Aurora PostgreSQL DB engine versions are available in an AWS Region, use the [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI command. For example:

```
aws rds describe-db-engine-versions --engine aurora-postgresql --query '*[].[EngineVersion]' --output text --region aws-region
```

For a list of AWS Regions, see [Aurora PostgreSQL Region availability](Concepts.RegionsAndAvailabilityZones.md#Aurora.Overview.Availability.PostgreSQL).

For details about the PostgreSQL versions that are available on Aurora PostgreSQL, see the [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html).

# Extension versions for Amazon Aurora PostgreSQL
<a name="AuroraPostgreSQL.Extensions"></a>

You can install and configure various PostgreSQL extensions for use with Aurora PostgreSQL DB clusters. For example, you can use the PostgreSQL `pg_partman` extension to automate the creation and maintenance of table partitions. To learn more about this and other extensions available for Aurora PostgreSQL, see [Working with extensions and foreign data wrappers](Appendix.PostgreSQL.CommonDBATasks.md).

For details about the PostgreSQL extensions that are supported on Aurora PostgreSQL, see [Extension versions for Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Extensions.html) in *Release Notes for Aurora PostgreSQL*.

# Upgrading Amazon Aurora PostgreSQL DB clusters
<a name="USER_UpgradeDBInstance.PostgreSQL"></a><a name="pgsql_upgrade"></a>

Amazon Aurora makes new versions of the PostgreSQL database engine available in AWS Regions only after extensive testing. You can upgrade your Aurora PostgreSQL DB clusters to the new version when it's available in your Region. 

Depending on the version of Aurora PostgreSQL that your DB cluster is currently running, an upgrade to the new release is either a minor upgrade or a major upgrade. For example, upgrading an Aurora PostgreSQL 11.15 DB cluster to Aurora PostgreSQL 13.6 is a *major version upgrade*. Upgrading an Aurora PostgreSQL 13.3 DB cluster to Aurora PostgreSQL 13.7 is a *minor version upgrade*. In the following topics, you can find information about how to perform both types of upgrades. 

**Contents**
+ [Overview of the Aurora PostgreSQL upgrade processes](#USER_UpgradeDBInstance.PostgreSQL.Overview)
+ [Getting a list of available versions in your AWS Region](USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion.md)
+ [Performing a major version upgrade](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md)
  + [Testing an upgrade of your production DB cluster to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary)
  + [Post-upgrade recommendations](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.postupgrade)
  + [Upgrading the Aurora PostgreSQL engine to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.Upgrading.Manual)
    + [Major upgrades for global databases](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.GlobalDB)
+ [Performing a minor version upgrade](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md)
  + [Before performing a minor version upgrade](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.BeforeMinor)
  + [How to perform minor version upgrades and apply patches](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor)
  + [Minor release upgrades and zero-downtime patching](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp)
  + [Limitations of zero-downtime patching](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations)
  + [Upgrading the Aurora PostgreSQL engine to a new minor version](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.MinorUpgrade)
+ [Upgrading PostgreSQL extensions](USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades.md)
+ [Alternative blue/green upgrade technique](#USER_UpgradeDBInstance.Upgrading.BlueGreen)

## Overview of the Aurora PostgreSQL upgrade processes
<a name="USER_UpgradeDBInstance.PostgreSQL.Overview"></a>

The differences between major and minor version upgrades are as follows:

**Minor version upgrades and patches**  
Minor version upgrades and patches include only those changes that are backward-compatible with existing applications. Minor version upgrades and patches become available to you only after Aurora PostgreSQL tests and approves them.   
Aurora can apply minor version upgrades for you automatically. When you create a new Aurora PostgreSQL DB cluster, the **Enable minor version upgrade** option is enabled by default. Unless you manually turn off this option, Aurora periodically applies automatic minor version upgrades during your scheduled maintenance window. For more information about the automatic minor version upgrade (AmVU) option and how to modify your Aurora DB cluster to use it, see [Automatic minor version upgrades for Aurora DB clusters](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU).  
If automatic minor version upgrade isn't enabled for your Aurora PostgreSQL DB cluster, your Aurora PostgreSQL isn't automatically upgraded to a new minor version. Instead, when a new minor version is released in your AWS Region and your Aurora PostgreSQL DB cluster is running an older minor version, Aurora prompts you to upgrade. It does so by adding a recommendation to the maintenance tasks for your cluster.   
Patches aren't considered an upgrade, and they aren't applied automatically. Aurora PostgreSQL prompts you to apply any patches by adding a recommendation to maintenance tasks for your Aurora PostgreSQL DB cluster. For more information, see [How to perform minor version upgrades and apply patches](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor).   
Patches that resolve security or other critical issues are also added as maintenance tasks. However, these patches are required. Make sure to apply security patches to your Aurora PostgreSQL DB cluster when they become available in your pending maintenance tasks.  
Auto minor version upgrades are performed to the default minor version. For more information, see [Automatic minor version upgrades for Aurora DB clusters](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU).  
For clusters with Automatic Minor Version Upgrade enabled, if cluster availability is impacted by an issue that is fixed in a more recent patch, the patch will be applied during your maintenance window to resolve the issue with 2 weeks' advance notice.
The upgrade process involves the possibility of brief outages as each instance in the cluster is upgraded to the new version. However, after Aurora PostgreSQL versions 14.3.3, 13.7.3, 12.11.3, 11.16.3, 10.21.3 and other higher releases of these minor versions and newer major versions, the upgrade process uses the zero-downtime patching (ZDP) feature. This feature minimizes outages, and in most cases completely eliminates them. For more information, see [Minor release upgrades and zero-downtime patching](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp). For more information on the supported features and limitations of ZDP, see [Limitations of zero-downtime patching](USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade.md#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations).

**Major version upgrades**  
Unlike for minor version upgrades and patches, Aurora PostgreSQL doesn't have an automatic major version upgrade option. New major PostgreSQL versions might contain database changes that aren't backward-compatible with existing applications. The new functionality can cause your existing applications to stop working correctly.  
To prevent any issues, we strongly recommend that you follow the process outlined in [Testing an upgrade of your production DB cluster to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary) before upgrading the DB instances in your Aurora PostgreSQL DB clusters. First ensure that your applications can run on the new version by following that procedure. Then you can manually upgrade your Aurora PostgreSQL DB cluster to the new version.   
The upgrade process involves the possibility of brief outage when all the instances in the cluster are upgraded to the new version. The preliminary planning process also takes time. We recommend that you always perform upgrade tasks during your cluster's maintenance window or when operations are minimal. For more information, see [Performing a major version upgrade](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md).

**Note**  
Both minor version upgrades and major version upgrades might involve brief outages. For that reason, we recommend strongly that you perform or schedule upgrades during your maintenance window or during other periods of low utilization.

Aurora PostgreSQL DB clusters occasionally require operating system updates. These updates might include a newer version of glibc library. During such updates, we recommend you to follow the guidelines as described in [Collations supported in Aurora PostgreSQL ](PostgreSQL-Collations.md). 

# Getting a list of available versions in your AWS Region
<a name="USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion"></a>

You can get a list of all engine versions available as upgrade targets for your Aurora PostgreSQL DB cluster by querying your AWS Region using the [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI command, as follows.

For Linux, macOS, or Unix:

```
aws rds describe-db-engine-versions \
  --engine aurora-postgresql \
  --engine-version version-number \
  --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}' \
  --output text
```

For Windows:

```
aws rds describe-db-engine-versions ^
  --engine aurora-postgresql ^
  --engine-version version-number ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
  --output text
```

For example, to identify the valid upgrade targets for an Aurora PostgreSQL version 12.10 DB cluster, run the following AWS CLI command:

For Linux, macOS, or Unix:

```
aws rds describe-db-engine-versions \
  --engine aurora-postgresql \
  --engine-version 12.10 \
  --query 'DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}' \
  --output text
```

For Windows:

```
aws rds describe-db-engine-versions ^
  --engine aurora-postgresql ^
  --engine-version 12.10 ^
  --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" ^
  --output text
```

In the following table, you can find both major and minor version upgrade targets for different Aurora PostgreSQL DB versions. To maintain compatibility, not all versions are offered as upgrade targets. Aurora PostgreSQL introduces new features and bug fixes with each quarterly minor version release. For information about Aurora PostgreSQL minor releases, see the [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html). 


| Current source version | Upgrade targets | 
| --- | --- | 
| 17.9 |  None  | 
| 17.7 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x)  | 
| 17.6 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x)  | 
| 17.5 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x)  | 
| 17.4 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x)  | 
| 16.13 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x)  | 
| 16.11 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x)  | 
| 16.10 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x)  | 
| 16.9 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x)  | 
| 16.8 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x)  | 
| 16.6 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x)  | 
| 16.4 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x)  | 
| 16.3 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x)  | 
| 16.2 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x)  | 
| 16.10 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x)  | 
| 15.17 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x)  | 
| 15.15 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x)  | 
| 15.14 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x)  | 
| 15.13 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x)  | 
| 15.12 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x)  | 
| 15.10 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x)  | 
| 15.8 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x)  | 
| 15.7 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x)  | 
| 15.6 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x)  | 
| 15.5 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x)  | 
| 15.4 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x)  | 
| 15.3 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x)  | 
| 15.2 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x)  | 
| 14.22 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x)  | 
| 14.20 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x)  | 
| 14.19 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x)  | 
| 14.18 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x)  | 
| 14.17 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x)  | 
| 14.15 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x)  | 
| 14.13 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x)  | 
| 14.12 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x)  | 
| 14.11 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x)  | 
| 14.10 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x)  | 
| 14.9 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x)  | 
| 14.8 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x)  | 
| 14.7 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x)  | 
| 14.6 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x)  | 
| 14.5 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x)  | 
| 14.4 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x), [14.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version145x)  | 
| 14.3 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x), [14.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version144x)  | 
| 13.23 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x)  | 
| 13.22 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x)  | 
| 13.21 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x)  | 
| 13.20 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x)  | 
| 13.18 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x)  | 
| 13.16 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x)  | 
| 13.15 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x)  | 
| 13.14 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x)  | 
| 13.13 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x)  | 
| 13.12 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x)  | 
| 13.11 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x)  | 
| 13.10 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x), [13.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1311x)  | 
| 13.9 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x), [13.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1311x), [13.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1310x)  | 
| 13.8 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x), [14.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version145x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x), [13.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1311x), [13.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1310x), [13.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version139x)  | 
| 13.7 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x), [14.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version145x), [14.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version144x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1315x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x), [13.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1311x), [13.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1310x), [13.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version139x), [13.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version138x)  | 
| 12.22 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x)  | 
| 12.9 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1322x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x), [13.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1311x), [13.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1310x), [13.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version139x), [13.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version138x), [13.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version137x) [12.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1222x), [12.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1220x), [12.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1219x), [12.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1218x), [12.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1217x), [12.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1216x), [12.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1215x), [12.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1214x), [12.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1213x), [12.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1212x), [12.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1211x)  | 
| 11.21 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x)  | 
| 11.9 |  [17.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version179x), [17.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version176x), [17.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version175x), [17.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version174x) [16.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1613x), [16.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1611x), [16.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1610x), [16.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version169x), [16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x), [16.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version166x), [16.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version164x), [16.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version163x), [16.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version162x), [16.1](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version161x) [15.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1517x), [15.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1515x), [15.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1514x), [15.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1513x), [15.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1512x), [15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x), [15.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version158x), [15.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version157x), [15.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version156x), [15.5](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version155x), [15.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version154x), [15.3](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version153x), [15.2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version152x) [14.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1422x), [14.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1420x), [14.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1419x), [14.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1418x), [14.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1417x), [14.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1415x), [14.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1413x), [14.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1412x), [14.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1411x), [14.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1410x), [14.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version149x), [14.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version148x), [14.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version147x), [14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version146x) [13.23](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1323x), [13.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1321x), [13.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1320x), [13.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1318x), [13.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1316x), [13.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1314x), [13.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1313x), [13.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1312x), [13.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1311x), [13.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1310x), [13.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version139x) [12.22](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1222x), [12.20](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1220x), [12.19](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1219x), [12.18](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1218x), [12.17](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1217x), [12.16](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1216x), [12.15](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1215x), [12.14](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1214x), [12.13](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1213x), [12.12](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1212x), [12.11](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1211x), [12.09](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1209x) [11.21](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1121x)  | 

For any version that you're considering, always check the availability of your cluster's DB instance class. For example, `db.r4` isn't supported for Aurora PostgreSQL 13. If your Aurora PostgreSQL DB cluster currently uses a db.r4 instance class, you need to modify it to use a supported DB instance class before you can upgrade to Aurora PostgreSQL 13. For more information about the available Aurora PostgreSQL DB instance classes, including which ones are Graviton2-based and which ones are Intel-based, see [Amazon AuroraDB instance classes](Concepts.DBInstanceClass.md).

# Performing a major version upgrade
<a name="USER_UpgradeDBInstance.PostgreSQL.MajorVersion"></a>

Major version upgrades might contain database changes that are not backward-compatible with previous versions of the database. New functionality in a new version can cause your existing applications to stop working correctly. To avoid issues, Amazon Aurora doesn't apply major version upgrades automatically. Rather, we recommend that you carefully plan for a major version upgrade by following these steps:

1. Choose the major version that you want from the list of available targets from those listed for your version in the table. You can get a precise list of versions available in your AWS Region for your current version by using the AWS CLI. For details, see [Getting a list of available versions in your AWS Region](USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion.md). 

1. Verify that your applications work as expected on a trial deployment of the new version. For information about the complete process, see [Testing an upgrade of your production DB cluster to a new major version](#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary).

1. After verifying that your applications work as expected on the trial deployment, you can upgrade your cluster. For details, see [Upgrading the Aurora PostgreSQL engine to a new major version](#USER_UpgradeDBInstance.Upgrading.Manual).

**Note**  
You can perform a major version upgrade from Babelfish for Aurora PostgreSQL 13-based versions starting from 13.6 to Aurora PostgreSQL 14-based versions starting from 14.6. Babelfish for Aurora PostgreSQL 13.4 and 13.5 don't support major version upgrade.

You can get a list of engine versions available as major version upgrade targets for your Aurora PostgreSQL DB cluster by querying your AWS Region using the [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) AWS CLI command, as follows.

For Linux, macOS, or Unix:

```
aws rds describe-db-engine-versions \
  --engine aurora-postgresql \
  --engine-version version-number \
  --query 'DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}' \
  --output text
```

For Windows:

```
aws rds describe-db-engine-versions ^
  --engine aurora-postgresql ^
  --engine-version version-number ^
  --query "DBEngineVersions[].ValidUpgradeTarget[?IsMajorVersionUpgrade == `true`].{EngineVersion:EngineVersion}" ^
  --output text
```

In some cases, the version that you want to upgrade to isn't a target for your current version. In such cases, use the information in the [versions table](USER_UpgradeDBInstance.PostgreSQL.UpgradeVersion.md#versions-table) to perform minor version upgrades until your cluster is at a version that has your chosen target in its row of targets.

## Testing an upgrade of your production DB cluster to a new major version
<a name="USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary"></a>

Each new major version includes enhancements to the query optimizer that are designed to improve performance. However, your workload might include queries that result in a worse performing plan in the new version. That's why we recommend that you test and review performance before upgrading in production. You can manage query plan stability across versions by using the Query Plan Management (QPM) extension, as detailed in [Ensuring plan stability after a major version upgrade](AuroraPostgreSQL.Optimize.BestPractice.md#AuroraPostgreSQL.Optimize.BestPractice.MajorVersionUpgrade). 

Before upgrading your production Aurora PostgreSQL DB clusters to a new major version, we strongly recommend that you test the upgrade to verify that all your applications work correctly:

1. Have a version-compatible parameter group ready.  

   If you are using a custom DB instance or DB cluster parameter group, you can choose from two options: 

   1. Specify the default DB instance, DB cluster parameter group, or both for the new DB engine version. 

   1. Create your own custom parameter group for the new DB engine version.

1. Check for invalid databases and drop any that exist. 

   The `datconnlimit` column in the `pg_database` catalog includes a value of `-2` to mark as invalid any databases that were interrupted during a `DROP DATABASE` operation. Use the following query to check whether invalid databases exist. 

   ```
   SELECT
       datname
   FROM
       pg_database
   WHERE
       datconnlimit = - 2;
   ```

   If the query returns database names, these databases are invalid. Use the `DROP DATABASE invalid_db_name` statement to drop invalid databases. You can use the following dynamic statement to drop all invalid databases.

   ```
   SELECT
       'DROP DATABASE ' || quote_ident(datname) || ';'
   FROM
       pg_database
   WHERE
       datconnlimit = -2 \gexec
   ```

1. Check for unsupported usage:
   + Commit or roll back all open prepared transactions before attempting an upgrade. You can use the following query to verify that there are no open prepared transactions on your instance. 

     ```
     SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
     ```
   + Remove all uses of the *reg\$1* data types before attempting an upgrade. Except for `regtype` and `regclass`, you can't upgrade the *reg\$1* data types. The pg\$1upgrade utility (used by Amazon Aurora to do the upgrade) can't persist this data type. To learn more about this utility, see [pg\$1upgrade](https://www.postgresql.org/docs/current/pgupgrade.html) in the PostgreSQL documentation.

     To verify that there are no uses of unsupported *reg\$1* data types, use the following query for each database. 

     ```
     SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a 
       WHERE c.oid = a.attrelid 
           AND NOT a.attisdropped 
           AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype, 
                              'pg_catalog.regprocedure'::pg_catalog.regtype, 
                              'pg_catalog.regoper'::pg_catalog.regtype, 
                              'pg_catalog.regoperator'::pg_catalog.regtype, 
                              'pg_catalog.regconfig'::pg_catalog.regtype, 
                              'pg_catalog.regdictionary'::pg_catalog.regtype) 
           AND c.relnamespace = n.oid 
           AND n.nspname NOT IN ('pg_catalog', 'information_schema');
     ```
   + If you are upgrading an Aurora PostgreSQL version 10.18 or higher DB cluster that has the `pgRouting` extension installed, drop the extension before upgrading to version 12.4 or higher.

     If you are upgrading an Aurora PostgreSQL 10.x version that has the extension `pg_repack` version 1.4.3 installed, drop the extension before upgrading to any higher version.

1. Check for template1 and template0 databases.

   For a successful upgrade, template 1 and template 0 databases must exist and should be listed as a template. To check on this, use the following command: 

   ```
   SELECT datname, datistemplate FROM pg_database; 
                           
   datname    | datistemplate
   -----------+---------------
   template0  | t
   rdsadmin   | f
   template1  | t
   postgres   | f
   ```

   In the command output, the `datistemplate` value for template1 and template0 databases should be `t`.

1. Drop logical replication slots. 

   The upgrade process can't proceed if the Aurora PostgreSQL DB cluster is using any logical replication slots. Logical replication slots are typically used for short-term data migration tasks, such as migrating data using AWS DMS or for replicating tables from the database to data lakes, BI tools, or other targets. Before upgrading, make sure that you know the purpose of any logical replication slots that exist, and confirm that it's okay to delete them. You can check for logical replication slots using the following query:

   ```
   SELECT * FROM pg_replication_slots;
   ```

   If logical replication slots are still being used, you shouldn't delete them, and you can't proceed with the upgrade. However, if the logical replication slots aren't needed, you can delete them using the following SQL:

   ```
   SELECT pg_drop_replication_slot(slot_name);
   ```

   Logical replication scenarios that use the `pglogical` extension also need to have slots dropped from the publisher node for a successful major version upgrade on that node. However, you can restart the replication process from the subscriber node after the upgrade. For more information, see [Reestablishing logical replication after a major upgrade](Appendix.PostgreSQL.CommonDBATasks.pglogical.recover-replication-after-upgrade.md).

1. Perform a backup.

   The upgrade process creates a DB cluster snapshot of your DB cluster during upgrading. If you also want to do a manual backup before the upgrade process, see [Creating a DB cluster snapshot](USER_CreateSnapshotCluster.md) for more information.

1. Upgrade certain extensions to the latest available version before performing the major version upgrade. The extensions to update include the following: 
   + `pgRouting`
   + `postgis_raster`
   + `postgis_tiger_geocoder`
   + `postgis_topology`
   + `address_standardizer`
   + `address_standardizer_data_us`

   Run the following command for each extension that's currently installed.

   ```
   ALTER EXTENSION PostgreSQL-extension UPDATE TO 'new-version';
   ```

   For more information, see [Upgrading PostgreSQL extensions](USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades.md). To learn more about upgrading PostGIS, see [Step 6: Upgrade the PostGIS extension](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Update). 

1. If you're upgrading to version 11.x, drop the extensions that it doesn't support before performing the major version upgrade. The extensions to drop include:
   + `chkpass`
   + `tsearch2` 

1. Drop `unknown` data types, depending on your target version.

   PostgreSQL version 10 doesn't support the `unknown` data type. If a version 9.6 database uses the `unknown` data type, an upgrade to version 10 shows an error message such as the following. 

   ```
   Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: 
   The instance could not be upgraded because the 'unknown' data type is used in user tables. 
   Please remove all usages of the 'unknown' data type and try again."
   ```

   To find the `unknown` data type in your database so that you can remove such columns or change them to supported data types, use the following SQL code for each database.

   ```
   SELECT n.nspname, c.relname, a.attname
       FROM pg_catalog.pg_class c,
       pg_catalog.pg_namespace n,
       pg_catalog.pg_attribute a
       WHERE c.oid = a.attrelid AND NOT a.attisdropped AND
       a.atttypid = 'pg_catalog.unknown'::pg_catalog.regtype AND
       c.relkind IN ('r','m','c') AND
       c.relnamespace = n.oid AND
       n.nspname !~ '^pg_temp_' AND
       n.nspname !~ '^pg_toast_temp_' AND n.nspname NOT IN ('pg_catalog', 'information_schema');
   ```

1. Perform a dry-run upgrade.

   We highly recommend testing a major version upgrade on a duplicate of your production database before trying the upgrade on your production database. You can monitor the execution plans on the duplicate test instance for any possible execution plan regressions and to evaluate its performance. To create a duplicate test instance, you can either restore your database from a recent snapshot or clone your database. For more information, see [Restoring from a snapshot](aurora-restore-snapshot.md#aurora-restore-snapshot.Restoring) or [Cloning a volume for an Amazon Aurora DB cluster](Aurora.Managing.Clone.md).

   For more information, see [Upgrading the Aurora PostgreSQL engine to a new major version](#USER_UpgradeDBInstance.Upgrading.Manual). 

1. Upgrade your production instance.

   When your dry-run major version upgrade is successful, you should be able to upgrade your production database with confidence. For more information, see [Upgrading the Aurora PostgreSQL engine to a new major version](#USER_UpgradeDBInstance.Upgrading.Manual). 

   
**Note**  
During the upgrade process, Aurora PostgreSQL takes a DB cluster snapshot. You can't do a point-in-time restore of your cluster during this process. Later, you can perform a point-in-time restore to times before the upgrade began and after the automatic snapshot of your instance has completed. However, you can't perform a point-in-time restore to a previous minor version. 

   For information about an upgrade in progress, you can use Amazon RDS to view two logs that the pg\$1upgrade utility produces. These are `pg_upgrade_internal.log` and `pg_upgrade_server.log`. Amazon Aurora appends a timestamp to the file name for these logs. You can view these logs as you can any other log. For more information, see [Monitoring Amazon Aurora log files](USER_LogAccess.md).

1. Upgrade PostgreSQL extensions. The PostgreSQL upgrade process doesn't upgrade any PostgreSQL extensions. For more information, see [Upgrading PostgreSQL extensions](USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades.md).

## Post-upgrade recommendations
<a name="USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.postupgrade"></a>

After you complete a major version upgrade, we recommend the following:
+ Run the `ANALYZE` operation to refresh the `pg_statistic` table. You should do this for every database on all your PostgreSQL DB instances. Optimizer statistics aren't transferred during a major version upgrade, so you need to regenerate all statistics to avoid performance issues. Run the command without any parameters to generate statistics for all regular tables in the current database, as follows:

  ```
  ANALYZE VERBOSE;
  ```

  The `VERBOSE` flag is optional, but using it shows you the progress. For more information, see [ANALYZE](https://www.postgresql.org/docs/10/sql-analyze.html) in the PostgreSQL documentation. 

  When analyzing specific tables instead of using ANALYZE VERBOSE, run the ANALYZE command for each table as follows:

  ```
  ANALYZE table_name;
  ```

  For partitioned tables, always analyze the parent table. This process:
  + Automatically samples rows across all partitions
  + Updates statistics for each partition recursively
  + Maintains essential planning statistics at the parent level

  While parent tables store no actual data, analyzing them is vital for query optimization. Running ANALYZE only on individual partitions can lead to poor query performance since the optimizer won't have the comprehensive statistics needed for efficient cross-partition planning.
**Note**  
Run ANALYZE on your system after the upgrade to avoid performance issues.
+ If you upgraded to PostgreSQL version 10, run `REINDEX` on any hash indexes you have. Hash indexes were changed in version 10 and must be rebuilt. To locate invalid hash indexes, run the following SQL for each database that contains hash indexes.

  ```
  SELECT idx.indrelid::regclass AS table_name, 
     idx.indexrelid::regclass AS index_name 
  FROM pg_catalog.pg_index idx
     JOIN pg_catalog.pg_class cls ON cls.oid = idx.indexrelid 
     JOIN pg_catalog.pg_am am ON am.oid = cls.relam 
  WHERE am.amname = 'hash' 
  AND NOT idx.indisvalid;
  ```
+ We recommend that you test your application on the upgraded database with a similar workload to verify that everything works as expected. After the upgrade is verified, you can delete this test instance.

## Upgrading the Aurora PostgreSQL engine to a new major version
<a name="USER_UpgradeDBInstance.Upgrading.Manual"></a>

When you initiate the upgrade process to a new major version, Aurora PostgreSQL takes a snapshot of the Aurora DB cluster before it makes any changes to your cluster. This snapshot is created for major version upgrades only, not minor version upgrades. When the upgrade process completes, you can find this snapshot among the manual snapshots listed under **Snapshots** in the RDS console. The snapshot name includes `preupgrade` as its prefix, the name of your Aurora PostgreSQL DB cluster, the source version, the target version, and the date and timestamp, as shown in the following example. 

```
preupgrade-docs-lab-apg-global-db-12-8-to-13-6-2022-05-19-00-19
```

After the upgrade completes, you can use the snapshot that Aurora created and stored in your manual snapshot list to restore the DB cluster to its previous version, if necessary. 

**Tip**  
In general, snapshots provide many ways to restore your Aurora DB cluster to various points in time. To learn more, see [Restoring from a DB cluster snapshot](aurora-restore-snapshot.md) and [Restoring a DB cluster to a specified time](aurora-pitr.md). However, Aurora PostgreSQL doesn't support using a snapshot to restore to a previous minor version. 

During the major version upgrade process, Aurora allocates a volume and clones the source Aurora PostgreSQL DB cluster. If the upgrade fails for any reason, Aurora PostgreSQL uses the clone to roll back the upgrade. After more than 15 clones of a source volume are allocated, subsequent clones become full copies and take longer. This can cause the upgrade process also to take longer. If Aurora PostgreSQL rolls back the upgrade, be aware of the following:
+ You might see billing entries and metrics for both the original volume and the cloned volume allocated during the upgrade. Aurora PostgreSQL cleans up the extra volume after the cluster backup retention window is beyond the time of the upgrade. 
+ The next cross-Region snapshot copy from this cluster will be a full copy instead of an incremental copy.

To safely upgrade the DB instances that make up your cluster, Aurora PostgreSQL uses the pg\$1upgrade utility. After the writer upgrade completes, each reader instance experiences a brief outage while it's upgraded to the new major version. To learn more about this PostgreSQL utility, see [pg\$1upgrade](https://www.postgresql.org/docs/current/pgupgrade.html) in the PostgreSQL documentation. 

You can upgrade your Aurora PostgreSQL DB cluster to a new version by using the AWS Management Console, the AWS CLI, or the RDS API.

### Console
<a name="USER_UpgradeDBInstance.Upgrading.Manual.Console"></a>

**To upgrade the engine version of a DB cluster**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**, and then choose the DB cluster that you want to upgrade. 

1. Choose **Modify**. The **Modify DB cluster** page appears.

1. For **Engine version**, choose the new version.

1. Choose **Continue** and check the summary of modifications. 

1. To apply the changes immediately, choose **Apply immediately**. Choosing this option can cause an outage in some cases. For more information, see [Modifying an Amazon Aurora DB cluster](Aurora.Modifying.md). 

1. On the confirmation page, review your changes. If they are correct, choose **Modify Cluster** to save your changes. 

   Or choose **Back** to edit your changes or **Cancel** to cancel your changes. 

### AWS CLI
<a name="USER_UpgradeDBInstance.Upgrading.Manual.CLI"></a>

To upgrade the engine version of a DB cluster, use the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) AWS CLI command. Specify the following parameters: 
+ `--db-cluster-identifier` – The name of the DB cluster. 
+ `--engine-version` – The version number of the database engine to upgrade to. For information about valid engine versions, use the AWS CLI [ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) command.
+ `--allow-major-version-upgrade` – A required flag when the `--engine-version` parameter is a different major version than the DB cluster's current major version.
+ `--no-apply-immediately` – Apply changes during the next maintenance window. To apply changes immediately, use `--apply-immediately`. 

**Example**  
For Linux, macOS, or Unix:  

```
1. aws rds modify-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --engine-version new_version \
4.     --allow-major-version-upgrade \
5.     --no-apply-immediately
```
For Windows:  

```
1. aws rds modify-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --engine-version new_version ^
4.     --allow-major-version-upgrade ^
5.     --no-apply-immediately
```

### RDS API
<a name="USER_UpgradeDBInstance.Upgrading.Manual.API"></a>

To upgrade the engine version of a DB cluster, use the [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) operation. Specify the following parameters: 
+ `DBClusterIdentifier` – The name of the DB cluster, for example *`mydbcluster`*. 
+ `EngineVersion` – The version number of the database engine to upgrade to. For information about valid engine versions, use the [ DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) operation.
+ `AllowMajorVersionUpgrade` – A required flag when the `EngineVersion` parameter is a different major version than the DB cluster's current major version.
+ `ApplyImmediately` – Whether to apply changes immediately or during the next maintenance window. To apply changes immediately, set the value to `true`. To apply changes during the next maintenance window, set the value to `false`. 

### Major upgrades for global databases
<a name="USER_UpgradeDBInstance.PostgreSQL.GlobalDB"></a>

For an Aurora global database cluster, the upgrade process upgrades all DB clusters that make up your Aurora global database at the same time. It does so to ensure that each runs the same Aurora PostgreSQL version. It also ensures that any changes to system tables, data file formats, and so on, are automatically replicated to all secondary clusters.

To upgrade a global database cluster to a new major version of Aurora PostgreSQL, we recommend that you test your applications on the upgraded version, as detailed in [Testing an upgrade of your production DB cluster to a new major version](#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary). Be sure to prepare your DB cluster parameter group and DB parameter group settings for each AWS Region in your Aurora global database before the upgrade as detailed in [step 1.](#step-1) of [Testing an upgrade of your production DB cluster to a new major version](#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary). 

If your Aurora PostgreSQL global database cluster has a recovery point objective (RPO) set for its `rds.global_db_rpo` parameter, make sure to reset the parameter before upgrading. The major version upgrade process doesn't work if the RPO is turned on. By default, this parameter is turned off. For more information about Aurora PostgreSQL global databases and RPO, see [Managing RPOs for Aurora PostgreSQL–based global databases](aurora-global-database-disaster-recovery.md#aurora-global-database-manage-recovery).

If you verify that your applications can run as expected on the trial deployment of the new version, you can start the upgrade process. To do so, see [Upgrading the Aurora PostgreSQL engine to a new major version](#USER_UpgradeDBInstance.Upgrading.Manual). Be sure to choose the top-level item from the **Databases** list in the RDS console, **Global database**, as shown in the following image.

![\[Console image showing an Aurora global database, an Aurora Serverless DB cluster, and another Aurora PostgreSQL DB cluster\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-database-plus-other.png)


As with any modification, you can confirm that you want the process to proceed when prompted.

![\[Console image showing prompt to confirm the upgrade process for an Aurora PostgreSQL DB cluster\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-db-apg-upgrade-2.png)


Rather than using the console, you can start the upgrade process by using the AWS CLI or the RDS API. As with the console, you operate on the Aurora global database cluster rather than any of its constituents, as follows:
+ Use the [modify-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-global-cluster.html) AWS CLI command to start the upgrade for your Aurora global database by using the AWS CLI. 
+ Use the [ModifyGlobalCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyGlobalCluster.html) API to start the upgrade. 

# Performing a minor version upgrade
<a name="USER_UpgradeDBInstance.PostgreSQL.MinorUpgrade"></a>

You can use the following methods to upgrade the minor version of a DB cluster or to patch a DB cluster: 

**Topics**
+ [Before performing a minor version upgrade](#USER_UpgradeDBInstance.PostgreSQL.BeforeMinor)
+ [How to perform minor version upgrades and apply patches](#USER_UpgradeDBInstance.PostgreSQL.Minor)
+ [Minor release upgrades and zero-downtime patching](#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp)
+ [Limitations of zero-downtime patching](#USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations)
+ [Upgrading the Aurora PostgreSQL engine to a new minor version](#USER_UpgradeDBInstance.MinorUpgrade)

## Before performing a minor version upgrade
<a name="USER_UpgradeDBInstance.PostgreSQL.BeforeMinor"></a>

We recommend that you perform the following actions to reduce the downtime during a minor version upgrade:
+ The Aurora DB cluster maintenance should be performed during a period of low traffic. Use Performance Insights to identify these time periods in order to configure the maintenance windows correctly. For more information on Performance Insights, see [Monitoring DB load with Performance Insights on Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html). For more information on DB cluster maintenance window, [Adjusting the preferred DB cluster maintenance window](USER_UpgradeDBInstance.Maintenance.md#AdjustingTheMaintenanceWindow.Aurora).
+ Use AWS SDKs that support exponential backoff and jitter as a best practice. For more information, see [Exponential Backoff And Jitter](https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/).

## How to perform minor version upgrades and apply patches
<a name="USER_UpgradeDBInstance.PostgreSQL.Minor"></a>

Minor version upgrades and patches become available in AWS Regions only after rigorous testing. Before releasing upgrades and patches, Aurora PostgreSQL tests to ensure that known security issues, bugs, and other issues that emerge after the release of the minor community version don't disrupt Aurora PostgreSQL fleet stability. 

If you turn on **Enable auto minor version upgrade**, Aurora PostgreSQL periodically upgrades your DB cluster during your specified maintenance window. Make sure that the **Enable auto minor version upgrade** option is turned on for all instances in your Aurora PostgreSQL DB cluster. For information on how to set **Auto minor version upgrade**, and how the setting works when applied at the cluster and instance levels, see [Automatic minor version upgrades for Aurora DB clusters](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU).

Check the value of the **Enable auto minor version upgrade** option for all your Aurora PostgreSQL DB clusters by using the [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) AWS CLI command as follows.

```
aws rds describe-db-instances \
  --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'
```

This query returns a list of all Aurora DB clusters and their instances with a `true` or `false` value for the status of the `AutoMinorVersionUpgrade` setting. The command assumes that you have your AWS CLI configured to target your default AWS Region. 

For more information about the AmVU option and how to modify your Aurora DB cluster to use it, see [Automatic minor version upgrades for Aurora DB clusters](USER_UpgradeDBInstance.Maintenance.md#Aurora.Maintenance.AMVU). 

You can upgrade your Aurora PostgreSQL DB clusters to new minor versions either by responding to maintenance tasks, or by modifying the cluster to use the new version. 

You can identify any available upgrades or patches for your Aurora PostgreSQL DB clusters by using the RDS console and opening the **Recommendations** menu. There, you can find a list of various maintenance issues such as **Old minor versions**. Depending on your production environment, you can choose to **Schedule** the upgrade or take immediate action, by choosing **Apply now**, as shown following.

![\[Console image showing Recommendation to upgrade to a newer minor version.\]](http://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/images/apg-maintenance-upgrade-minor.png)


To learn more about how to maintain an Aurora DB cluster, including how to manually apply patches and minor version upgrades, see [Maintaining an Amazon Aurora DB cluster](USER_UpgradeDBInstance.Maintenance.md). 

## Minor release upgrades and zero-downtime patching
<a name="USER_UpgradeDBInstance.PostgreSQL.Minor.zdp"></a>

Upgrading an Aurora PostgreSQL DB cluster involves the possibility of an outage. During the upgrade process, the database is shut down as it's being upgraded. If you start the upgrade while the database is busy, you lose all connections and transactions that the DB cluster is processing. If you wait until the database is idle to perform the upgrade, you might have to wait a long time.

The zero-downtime patching (ZDP) feature improves the upgrading process. With ZDP, both minor version upgrades and patches can be applied with minimal impact to your Aurora PostgreSQL DB cluster. ZDP is used when applying patches or newer minor version upgrades to Aurora PostgreSQL versions and other higher releases of these minor versions and newer major versions. That is, upgrading to new minor versions from any of these releases onward uses ZDP. 

The following table shows the Aurora PostgreSQL versions and DB instance classes where ZDP is available:


| Version | db.r\$1 instance classes | db.t\$1 instance classes | db.x\$1 instance classes | db.serverless instance class | 
| --- | --- | --- | --- | --- | 
| 10.21 and higher versions | Yes | Yes | Yes | N/A | 
| 11.16 and higher versions | Yes | Yes | Yes | N/A | 
| 11.17 and higher versions | Yes | Yes | Yes | N/A | 
| 12.11 and higher versions | Yes | Yes | Yes | N/A | 
| 12.12 and higher versions | Yes | Yes | Yes | N/A | 
| 13.7 and higher versions | Yes | Yes | Yes | N/A | 
| 13.8 and higher versions | Yes | Yes | Yes | Yes | 
| 14.3 and higher versions | Yes | Yes | Yes | N/A | 
| 14.4 and higher versions | Yes | Yes | Yes | N/A | 
| 14.5 and higher versions | Yes | Yes | Yes | Yes | 
| 15.3 and higher versions | Yes | Yes | Yes | Yes | 
| 16.1 and higher versions | Yes | Yes | Yes | Yes | 

During the upgrade process using ZDP, the database engine looks for a quiet point to pause all new transactions. This action safeguards the database during patches and upgrades. To make sure that your applications run smoothly with paused transactions, we recommend integrating retry logic into your code. This approach ensures that the system can manage any brief downtime without failing and can retry the new transactions after the upgrade.

When ZDP completes successfully, application sessions are maintained except for those with dropped connections, and the database engine restarts while the upgrade is still in progress. Although the database engine restart can cause a temporary drop in throughput, this typically lasts only for a few seconds or at most, approximately one minute. 

In some cases, zero-downtime patching (ZDP) might not succeed. For example, parameter changes that are in a `pending` state on your Aurora PostgreSQL DB cluster or its instances interfere with ZDP.

You can find metrics and events for ZDP operations in **Events** page in the console. The events include the start of the ZDP upgrade and completion of the upgrade. In this event you can find how long the process took, and the numbers of preserved and dropped connections that occurred during the restart. You can find details in your database error log. 

## Limitations of zero-downtime patching
<a name="USER_UpgradeDBInstance.PostgreSQL.Minor.zdp.limitations"></a>

The following limitations apply to zero-downtime patching:
+ ZDP tries to preserve current client connections to your Aurora PostgreSQL writer instance throughout the Aurora PostgreSQL upgrade process. However, in the following cases, connections will be dropped for ZDP to complete:
  + Long running query or transactions are in progress.
  + Data definition language (DDL) statements are running.
  + Temporary tables or table locks are in use.
  + All sessions are listening on notification channels.
  + A cursor in ‘WITH HOLD’ status is in use.
  + TLSv1.1 connections are in use. Starting with Aurora PostgreSQL versions later than 16.1, 15.3, 14.8, 13.11, 12.15, and 11.20, ZDP is supported with TLSv1.3 connections.
+ ZDP isn't supported in the following cases:
  + During the upgrade of any Aurora reader instances.
  + During the upgrade of any Aurora reader instances that are part of an Aurora Global Database cluster in a secondary Region.
  + During OS patches and OS upgrades.

## Upgrading the Aurora PostgreSQL engine to a new minor version
<a name="USER_UpgradeDBInstance.MinorUpgrade"></a>

 You can upgrade your Aurora PostgreSQL DB cluster to a new minor version by using the console, the AWS CLI, or the RDS API. Before performing the upgrade, we recommend that you follow the same best practice that we recommend for major version upgrades. As with new major versions, new minor versions can also have optimizer improvements, such as fixes, that can cause query plan regressions. To ensure plan stability, we recommend that you use the Query Plan Management (QPM) extension as detailed in [Ensuring plan stability after a major version upgrade](AuroraPostgreSQL.Optimize.BestPractice.md#AuroraPostgreSQL.Optimize.BestPractice.MajorVersionUpgrade). 

### Console
<a name="USER_UpgradeDBInstance.MinorUpgrade.Console"></a>

**To upgrade the engine version of your Aurora PostgreSQL DB cluster**

1. Sign in to the AWS Management Console and open the Amazon RDS console at [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. In the navigation pane, choose **Databases**, and then choose the DB cluster that you want to upgrade. 

1. Choose **Modify**. The **Modify DB cluster** page appears.

1. For **Engine version**, choose the new version.

1. Choose **Continue** and check the summary of modifications. 

1. To apply the changes immediately, choose **Apply immediately**. Choosing this option can cause an outage in some cases. For more information, see [Modifying an Amazon Aurora DB cluster](Aurora.Modifying.md). 

1. On the confirmation page, review your changes. If they are correct, choose **Modify Cluster** to save your changes. 

   Or choose **Back** to edit your changes or **Cancel** to cancel your changes. 

### AWS CLI
<a name="USER_UpgradeDBInstance.MinorUpgrade.CLI"></a>

To upgrade the engine version of a DB cluster, use the [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) AWS CLI command with the following parameters:
+ `--db-cluster-identifier` – The name of your Aurora PostgreSQL DB cluster. 
+ `--engine-version` – The version number of the database engine to upgrade to. For information about valid engine versions, use the AWS CLI [ describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) command.
+ `--no-apply-immediately` – Apply changes during the next maintenance window. To apply changes immediately, use `--apply-immediately` instead. 

For Linux, macOS, or Unix:

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --engine-version new_version \
    --no-apply-immediately
```

For Windows:

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --engine-version new_version ^
    --no-apply-immediately
```

### RDS API
<a name="USER_UpgradeDBInstance.MinorUpgrade.API"></a>

To upgrade the engine version of a DB cluster, use the [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) operation. Specify the following parameters: 
+ `DBClusterIdentifier` – The name of the DB cluster, for example *`mydbcluster`*. 
+ `EngineVersion` – The version number of the database engine to upgrade to. For information about valid engine versions, use the [ DescribeDBEngineVersions](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBEngineVersions.html) operation.
+ `ApplyImmediately` – Whether to apply changes immediately or during the next maintenance window. To apply changes immediately, set the value to `true`. To apply changes during the next maintenance window, set the value to `false`. 

# Upgrading PostgreSQL extensions
<a name="USER_UpgradeDBInstance.Upgrading.ExtensionUpgrades"></a>

Upgrading your Aurora PostgreSQL DB cluster to a new major or minor version doesn't upgrade the PostgreSQL extensions at the same time. For most extensions, you upgrade the extension after the major or minor version upgrade completes. However, in some cases, you upgrade the extension before you upgrade the Aurora PostgreSQL DB engine. For more information, see the [list of extensions to update](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#upgrade-extensions) in [Testing an upgrade of your production DB cluster to a new major version](USER_UpgradeDBInstance.PostgreSQL.MajorVersion.md#USER_UpgradeDBInstance.PostgreSQL.MajorVersion.Upgrade.preliminary).

Installing PostgreSQL extensions requires `rds_superuser` privileges. Typically, an `rds_superuser` delegates permissions over specific extensions to relevant users (roles), to facilitate the management of a given extension. That means that the task of upgrading all the extensions in your Aurora PostgreSQL DB cluster might involve many different users (roles). Keep this in mind especially if you want to automate the upgrade process by using scripts. For more information about PostgreSQL privileges and roles, see [Security with Amazon Aurora PostgreSQL](AuroraPostgreSQL.Security.md). 

**Note**  
For information about updating the PostGIS extension, see [Managing spatial data with the PostGIS extension](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md) ([Step 6: Upgrade the PostGIS extension](Appendix.PostgreSQL.CommonDBATasks.PostGIS.md#Appendix.PostgreSQL.CommonDBATasks.PostGIS.Update)).  
To update the `pg_repack` extension, drop the extension and then create the new version in the upgraded DB instance. For more information, see [pg\$1repack installation](https://reorg.github.io/pg_repack/) in the `pg_repack` documentation.

To update an extension after an engine upgrade, use the `ALTER EXTENSION UPDATE` command.

```
ALTER EXTENSION extension_name UPDATE TO 'new_version';
```

To list your currently installed extensions, use the PostgreSQL [pg\$1extension](https://www.postgresql.org/docs/current/catalog-pg-extension.html) catalog in the following command.

```
SELECT * FROM pg_extension;
```

To view a list of the specific extension versions that are available for your installation, use the PostgreSQL [ pg\$1available\$1extension\$1versions](https://www.postgresql.org/docs/current/view-pg-available-extension-versions.html) view in the following command. 

```
SELECT * FROM pg_available_extension_versions;
```

## Alternative blue/green upgrade technique
<a name="USER_UpgradeDBInstance.Upgrading.BlueGreen"></a>

In some situations, your top priority is to perform an immediate switchover from the old cluster to an upgraded one. In such situations, you can use a multistep process that runs the old and new clusters side-by-side. Here, you replicate data from the old cluster to the new one until you are ready for the new cluster to take over. For details, see [Using Amazon Aurora Blue/Green Deployments for database updates](blue-green-deployments.md).

# Using an Aurora PostgreSQL long-term support (LTS) release
<a name="AuroraPostgreSQL.Updates.LTS"></a>

 Each new Aurora PostgreSQL version remains available for a certain amount of time for you to use when you create or upgrade a DB cluster. After this period, you must upgrade any clusters that use that version. You can manually upgrade your cluster before the support period ends, or Aurora can automatically upgrade it for you when its Aurora PostgreSQL version is no longer supported. 

 Aurora designates certain Aurora PostgreSQL versions as long-term support (LTS) releases. Database clusters that use LTS releases can stay on the same version longer and undergo fewer upgrade cycles than clusters that use non-LTS releases. LTS minor versions include only bug fixes (through patch versions) for critical stability and security issues; an LTS version doesn't include new features released after its introduction. 

 Once a year, DB clusters running on an LTS minor version are patched to the latest patch version of the LTS release. We do this patching to help ensure that you benefit from cumulative security and stability fixes. We might patch an LTS minor version more frequently if there are critical fixes, such as for security, that need to be applied. 

**Note**  
If you want to remain on an LTS minor version for the duration of its lifecycle, make sure to disable automatic minor version upgrade for your DB instances. To avoid automatically upgrading your DB cluster from the LTS minor version, clear the **Enable auto minor version upgrade** check box on any DB instance in your Aurora cluster.

 We recommend that you upgrade to the latest release, instead of using the LTS release, for most of your Aurora PostgreSQL clusters. Doing so takes advantage of Aurora as a managed service and gives you access to the latest features and bug fixes. LTS releases are intended for clusters with the following characteristics: 
+  You can't afford downtime on your Aurora PostgreSQL application for upgrades outside of rare occurrences for critical patches. 
+  The testing cycle for the cluster and associated applications takes a long time for each update to the Aurora PostgreSQL database engine. 
+  The database version for your Aurora PostgreSQL cluster has all the DB engine features and bug fixes that your application needs. 

 The current LTS releases for Aurora PostgreSQL are as follows: 
+ PostgreSQL 17.7. It was released on March 25, 2026. For more information, see [ PostgreSQL 17.7](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version177x) in the *Release Notes for Aurora PostgreSQL*. 
+ PostgreSQL 16.8. It was released on April 07, 2025. For more information, see [ PostgreSQL 16.8](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version168x) in the *Release Notes for Aurora PostgreSQL*. 
+ PostgreSQL 15.10. It was released on December 27, 2024. For more information, see [ PostgreSQL 15.10](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#aurorapostgresql-versions-version1510x) in the *Release Notes for Aurora PostgreSQL*. 
+ PostgreSQL 14.6. It was released on January 20, 2023. For more information, see [ PostgreSQL 14.6](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.146X) in the *Release Notes for Aurora PostgreSQL*. 
+ PostgreSQL 13.9. It was released on January 20, 2023. For more information, see [ PostgreSQL 13.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.139X) in the *Release Notes for Aurora PostgreSQL*. 
+ PostgreSQL 12.9. It was released on February 25, 2022. For more information, see [ PostgreSQL 12.9](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.129) in the *Release Notes for Aurora PostgreSQL*. 
+ PostgreSQL 11.9 (Aurora PostgreSQL release 3.4. It was released on December 11, 2020. For more information about this version, see [ PostgreSQL 11.9, Aurora PostgreSQL release 3.4](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html#AuroraPostgreSQL.Updates.20180305.34) in the *Release Notes for Aurora PostgreSQL*.

For details about support timelines and release cycles for the LTS versions, see [ Release calendars for Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/aurorapostgresql-release-calendar.html).

For information about how to identify Aurora and database engine versions, see [Identifying versions of Amazon Aurora PostgreSQL](AuroraPostgreSQL.Updates.md#AuroraPostgreSQL.Updates.Versions).