Обсуждение: BUG #6318: pg_dump for non-template languages is broken
The following bug has been logged on the website: Bug reference: 6318 Logged by: Laurenz Albe Email address: laurenz.albe@wien.gv.at PostgreSQL version: 9.1.1 Operating system: Linux (RHEL 3) Description:=20=20=20=20=20=20=20=20 How to reproduce: postgres=3D# CREATE DATABASE dumpme; postgres=3D# \c dumpme postgres dumpme=3D# CREATE LANGUAGE mylang HANDLER plpgsql_call_handler INLINE plpgsql_inline_handler VALIDATOR plpgsql_validator; dumpme=3D# \q $ pg_dump -C -F p -f dumpme.sql dumpme $ psql -c 'DROP DATABASE dumpme' $ psql -f dumpme.sql [...] psql:dumpme.sql:32: ERROR: unsupported language "mylang" HINT: The supported languages are listed in the pg_pltemplate system catalog. psql:dumpme.sql:35: ERROR: language "mylang" does not exist [...] The reason is that the dump contains: -- -- Name: mylang; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: advpg -- CREATE OR REPLACE PROCEDURAL LANGUAGE mylang; ALTER PROCEDURAL LANGUAGE mylang OWNER TO advpg; Yours, Laurenz Albe
laurenz.albe@wien.gv.at writes: > dumpme=# CREATE LANGUAGE mylang HANDLER plpgsql_call_handler INLINE > plpgsql_inline_handler VALIDATOR plpgsql_validator; I don't think this is a particularly interesting use-case. The reason it doesn't work for you is that it's depending on support functions that are in pg_catalog, and as the comment in pg_dump.c says: /* * Try to find the support function(s). It is not an error if we don't * find them --- if the functions are in the pg_catalog schema, as is * standard in 8.1 and up, then we won't have loaded them. (In this case * we will emit a parameterless CREATE LANGUAGE command, which will * require PL template knowledge in the backend to reload.) */ An actual add-on procedural language would not fall foul of this. regards, tom lane
Tom Lane wrote: >> dumpme=3D# CREATE LANGUAGE mylang HANDLER plpgsql_call_handler INLINE >> plpgsql_inline_handler VALIDATOR plpgsql_validator; > I don't think this is a particularly interesting use-case. The reason > it doesn't work for you is that it's depending on support functions > that are in pg_catalog, and as the comment in pg_dump.c says: > An actual add-on procedural language would not fall foul of this. Oh I see. Sorry for the noise. Yours, Laurenz Albe