Skip to content

Schema qualifiers stripped from column default expressions #218

@isaacparker0

Description

@isaacparker0

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)
);

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions