-
Notifications
You must be signed in to change notification settings - Fork 33
Description
In pgschema 1.5.1, column default expressions lose schema qualifiers when dumping non-public schemas. For example (my_schema.get_default_status())::my_schema.status becomes (get_status())::status. As far as I can tell, this appears to be unintentional.
Reproduction:
CREATE SCHEMA my_schema;
CREATE TYPE my_schema.status AS ENUM ('active', 'inactive');
CREATE FUNCTION my_schema.get_default_status() RETURNS text AS $$ SELECT 'active' $$ LANGUAGE sql IMMUTABLE;
CREATE TABLE my_schema.users (
id serial PRIMARY KEY,
status my_schema.status DEFAULT (my_schema.get_default_status())::my_schema.status NOT NULL
);What postgres stores:
psql -c "SELECT column_default FROM information_schema.columns WHERE table_schema='my_schema' AND column_name='status';"
(my_schema.get_default_status())::my_schema.status
pgschema dump output (v1.5.0):
CREATE TABLE IF NOT EXISTS users (
id SERIAL,
status status DEFAULT (get_default_status())::my_schema.status NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
);
pgschema dump output (v1.5.1):
CREATE TABLE IF NOT EXISTS users (
id SERIAL,
status status DEFAULT (get_default_status())::status NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
);
Reactions are currently unavailable