Cannot import a database dump on Postgres 13.14+ while it loads fine in Postgres 13.13
0
votes
1
answer
67
views
I'm experiencing a problem with loading a PostgreSQL backup file (SQL format).
The SQL file has a function that is defined after another function where it's used. PostgreSQL 13.13 can handle such a backup file, while PostgreSQL 13.14 fails to load it:
ERROR: function public.label_id_constant() does not exist
LINE 1: SELECT public.uuid_increment($1, public.label_id_constant()...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT public.uuid_increment($1, public.label_id_constant())
CONTEXT: SQL function "label_id" during inlining
I've double-checked if there is SET check_function_bodies = false;
in the dump file. I also searched if I could disable the inlining during the dump load, but still no success.
I've distilled the dump file into a minimal reproducible example and attached it as a script to this ticket.
If anybody experienced anything similar, please help.
#!/bin/env bash
DUMP_FILE=$(mktemp)
trap "rm -f $DUMP_FILE" EXIT
cat - > "$DUMP_FILE" &2
docker run -d \
--name postgres-13.13 \
-e POSTGRES_HOST_AUTH_METHOD=trust \
-p 5432:5432 \
postgres:13.13
echo "Waiting for postgres to start" >&2
while ! docker exec postgres-13.13 pg_isready -h localhost -U postgres -q; do
sleep 1
done
cat "$DUMP_FILE" | psql -h localhost -U postgres -v ON_ERROR_STOP=1 --port 5432 -e -1 && echo "******** Success ********" || echo "******** Failure ********"
docker stop postgres-13.13
docker rm postgres-13.13
echo "Testing with postgres 13.14" >&2
docker run -d \
--name postgres-13.14 \
-e POSTGRES_HOST_AUTH_METHOD=trust \
-p 5432:5432 \
postgres:13.14
echo "Waiting for postgres to start" >&2
while ! docker exec postgres-13.14 pg_isready -h localhost -U postgres -q; do
sleep 1
done
cat "$DUMP_FILE" | psql -h localhost -U postgres -v ON_ERROR_STOP=1 --port 5432 -e -1 && echo "******** Success ********" || echo "******** Failure ********"
docker stop postgres-13.14
docker rm postgres-13.14
--------
UPD:
What I've already tried:
Setting SET jit = off;
doesn't fix the problem.
UPD2:
1. I tried exporting our database using pg_dump, instead of the CloudSQL export API. It gave me the same error.
2. I tried to export the database, load it to 13.13, then export it from 13.13 and load it to 13.14, but the error was the same again.
---
UPD: I successfully migrated the DB with the following script:
https://paste.ubuntu.com/p/kgGGQzNcgp/
After migrating to PostgreSQL 17.5
, the issue persists. If I dump the DB with pg_dump, I cannot load it with the same error.
Asked by Renat
(101 rep)
Jan 21, 2025, 08:12 AM
Last activity: Aug 5, 2025, 01:46 PM
Last activity: Aug 5, 2025, 01:46 PM