Обсуждение: BUG #18115: pg_restore of extensions does not respect dependencies
The following bug has been logged on the website:
Bug reference: 18115
Logged by: Vasileios Giannakidis
Email address: vasilgiann@gmail.com
PostgreSQL version: 14.7
Operating system: Red Hat 7.3.1-6 64-bit
Description:
I have an issue that takes place during restore of a 14.4 database. During
this process creation of extension aws_s3 fails because it depends on
plpgsql extension which it seems to be created later on. These are the
commands we use for dump / restore:
pg_dump -d \$DATABASE_URL -j 8 -Z 0 -Fd -f ${backupDir}
pg_restore --verbose --clean --no-owner -d \$DATABASE_URL -j 8 --format=d
${backupDir}
This is the output of the pg_restore:
[2023-09-15T14:31:48.653Z] pg_restore: processing item 2 EXTENSION aws_s3
[2023-09-15T14:31:48.653Z] pg_restore: creating EXTENSION "aws_s3"
[2023-09-15T14:31:48.653Z] pg_restore: from TOC entry 2; 3079 57504364
EXTENSION aws_s3 (no owner)
[2023-09-15T14:31:48.653Z] pg_restore: error: could not execute query:
ERROR: language "plpgsql" does not exist
[2023-09-15T14:31:48.653Z] HINT: Use CREATE EXTENSION to load the language
into the database.
[2023-09-15T14:31:48.653Z] Command was: CREATE EXTENSION IF NOT EXISTS
aws_s3 WITH SCHEMA extensions;
[2023-09-15T14:31:48.653Z]
[2023-09-15T14:31:48.653Z]
[2023-09-15T14:31:48.653Z] pg_restore: processing item 8536 COMMENT
EXTENSION aws_s3
[2023-09-15T14:31:48.653Z] pg_restore: creating COMMENT "EXTENSION aws_s3"
[2023-09-15T14:31:48.653Z] pg_restore: from TOC entry 8536; 0 0 COMMENT
EXTENSION aws_s3
[2023-09-15T14:31:48.653Z] pg_restore: error: could not execute query:
ERROR: extension "aws_s3" does not exist
[2023-09-15T14:31:48.653Z] Command was: COMMENT ON EXTENSION aws_s3 IS 'AWS
S3 extension for importing data from S3';
[2023-09-15T14:31:48.653Z]
[2023-09-15T14:31:48.653Z]
[2023-09-15T14:31:48.653Z] pg_restore: processing item 194 SCHEMA
extensions
[2023-09-15T14:31:48.653Z] pg_restore: creating SCHEMA "extensions"
[2023-09-15T14:31:48.653Z] pg_restore: processing item 1 EXTENSION plpgsql
[2023-09-15T14:31:48.653Z] pg_restore: creating EXTENSION "plpgsql"
[2023-09-15T14:31:48.653Z] pg_restore: processing item 8539 COMMENT
EXTENSION plpgsql
[2023-09-15T14:31:48.653Z] pg_restore: creating COMMENT "EXTENSION
plpgsql"
It seems that dependencies between extensions are not considered by pg_dump.
PG Bug reporting form <noreply@postgresql.org> writes:
> I have an issue that takes place during restore of a 14.4 database. During
> this process creation of extension aws_s3 fails because it depends on
> plpgsql extension which it seems to be created later on.
I don't know anything about aws_s3, but the only inter-extension
dependencies that are tracked by PG are those that are declared
in the extension control files (via "requires" entries).
Sounds to me like aws_s3 has failed to declare its dependency
on plpgsql.
regards, tom lane
On Mon, Sep 18, 2023 at 09:58:56AM -0400, Tom Lane wrote: > I don't know anything about aws_s3, but the only inter-extension > dependencies that are tracked by PG are those that are declared > in the extension control files (via "requires" entries). > Sounds to me like aws_s3 has failed to declare its dependency > on plpgsql. This is something specific to RDS per the AWS docs: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.S3Import.html So, yes, that's something to take to them to make sure that the dependency ordering is correctly tracked, I guess. -- Michael