postgres reflection for composite primary keys broken

Issue #382 resolved
Mike Bayer repo owner created an issue

the regular expression in postgres reflecttable only gets at most two of the columns from a foreign key specification. the following schema:

CREATE TABLE companies (
    cod_company VARCHAR(8) PRIMARY KEY
);

CREATE TABLE practices (
    cod_company VARCHAR(8) NOT NULL REFERENCES companies,
    cod_practice VARCHAR(8) NOT NULL,
    PRIMARY KEY (cod_company, cod_practice)
);

CREATE TABLE businesslines (
    cod_company VARCHAR(8) NOT NULL,
    cod_practice VARCHAR(8) NOT NULL,
    cod_bl VARCHAR(8) NOT NULL,
        FOREIGN KEY (cod_company, cod_practice) REFERENCES practices (cod_company, cod_practice) MATCH FULL,
    PRIMARY KEY (cod_company, cod_practice, cod_bl)
);

CREATE TABLE factories (
    cod_company VARCHAR(8) NOT NULL,
    cod_practice VARCHAR(8) NOT NULL,
    cod_bl VARCHAR(8) NOT NULL,
    cod_fctry VARCHAR(8) NOT NULL,
    FOREIGN KEY (cod_company, cod_practice, cod_bl) REFERENCES businesslines (cod_company, cod_practice, cod_bl) MATCH FULL,
    PRIMARY KEY (cod_company, cod_practice, cod_bl, cod_fctry)
);

CREATE TABLE users (
    uid VARCHAR(32) PRIMARY KEY,
    cod_company VARCHAR(8) NOT NULL,
    cod_practice VARCHAR(8) NOT NULL,
    cod_bl VARCHAR(8) NOT NULL,
    cod_fctry VARCHAR(8) NOT NULL,
    FOREIGN KEY (cod_company, cod_practice, cod_bl, cod_fctry) REFERENCES factories (cod_company, cod_practice, cod_bl, cod_fctry) MATCH FULL
);

for the users table only gets a foreign key of:

OrderedSet([ForeignKey('factories.cod_fctry')](ForeignKey('factories.cod_company'),))

Comments (3)

  1. Log in to comment