[Pkg-pdns-maintainers] Bug#685808: pdns-backend-pgsql: schema out-of-date, please provide no-dnssec.schema

Robert Specht robert.wheezy2012 at arcor.de
Wed Sep 19 20:36:38 UTC 2012


> So you're suggesting to add
> CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text)))
> to the CREATE TABLE statement in debian/sql/pgsql/pgsql inside the
> source package, right?
Yes, to prevent useless uppercase name(s) and trouble-shooting...
But ensure lowercase names before you add CONSTRAINT c_lowercase_name to a non empty table.
e.g. UPDATE records SET name=lower(name);

> Did we miss changes that Upstream did between 2.9 and 3.1?
You're right. The package schema is out-of-date, not equal to the original pdns schema ... missing some pdns-commits (upstream).
Ocularly differences:

table.row          | original pdns schema        | debian package schema
-----------------------------------------------------------------------------
domains.master	   | VARCHAR(128) DEFAULT NULL   | VARCHAR(20) DEFAULT NULL
records.content    | VARCHAR(65535) DEFAULT NULL | VARCHAR(255) DEFAULT NULL
tsigkeys.algorithm | VARCHAR(50)                 | VARCHAR(255)
Missing records.CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text)))

I suggest to provide two up-to-date schemas from pdns_3.1.orig.tar.gz, dnssec.schema.pgsql.sql AND no-dnssec.schema.pgsql.sql.

schemas from pdns_3.1.orig.tar.gz:

$ curl -s http://ftp.de.debian.org/debian/pool/main/p/pdns/pdns_3.1.orig.tar.gz | tar xOzf - pdns-3.1/pdns/no-dnssec.schema.pgsql.sql
create table domains (
 id		 SERIAL PRIMARY KEY,
 name		 VARCHAR(255) NOT NULL,
 master		 VARCHAR(128) DEFAULT NULL,
 last_check	 INT DEFAULT NULL,
 type		 VARCHAR(6) NOT NULL,
 notified_serial INT DEFAULT NULL, 
 account         VARCHAR(40) DEFAULT NULL
);
CREATE UNIQUE INDEX name_index ON domains(name);
  
CREATE TABLE records (
        id              SERIAL PRIMARY KEY,
        domain_id       INT DEFAULT NULL,
        name            VARCHAR(255) DEFAULT NULL,
        type            VARCHAR(10) DEFAULT NULL,
        content         VARCHAR(65535) DEFAULT NULL,
        ttl             INT DEFAULT NULL,
        prio            INT DEFAULT NULL,
        change_date     INT DEFAULT NULL, 
        CONSTRAINT domain_exists 
        FOREIGN KEY(domain_id) REFERENCES domains(id)
        ON DELETE CASCADE,
        CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text)))
);

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

create table supermasters (
	  ip VARCHAR(25) NOT NULL, 
	  nameserver VARCHAR(255) NOT NULL, 
	  account VARCHAR(40) DEFAULT NULL
);

-- GRANT SELECT ON supermasters TO pdns;
-- GRANT ALL ON domains TO pdns;
-- GRANT ALL ON domains_id_seq TO pdns;
-- GRANT ALL ON records TO pdns;
-- GRANT ALL ON records_id_seq TO pdns;

	
$ curl -s http://ftp.de.debian.org/debian/pool/main/p/pdns/pdns_3.1.orig.tar.gz | tar xOzf - pdns-3.1/pdns/dnssec.schema.pgsql.sql
alter table records add ordername	VARCHAR(255);
alter table records add auth bool;
create index orderindex on records(ordername);

create table domainmetadata (
 id		SERIAL PRIMARY KEY,
 domain_id	INT REFERENCES domains(id) ON DELETE CASCADE,
 kind		VARCHAR(16),
 content	TEXT
);

create index domainidmetaindex on domainmetadata(domain_id);               


create table cryptokeys (
 id		SERIAL PRIMARY KEY,
 domain_id	INT REFERENCES domains(id) ON DELETE CASCADE,
 flags		INT NOT NULL,
 active		BOOL,
 content	TEXT
);		 
create index domainidindex on cryptokeys(domain_id);


-- GRANT ALL ON domainmetadata TO pdns;
-- GRANT ALL ON domainmetadata_id_seq TO pdns;
-- GRANT ALL ON cryptokeys TO pdns;
-- GRANT ALL ON cryptokeys_id_seq TO pdns;

create table tsigkeys (
 id		SERIAL PRIMARY KEY,
 name		VARCHAR(255),
 algorithm	VARCHAR(50), 
 secret		VARCHAR(255)
);

create unique index namealgoindex on tsigkeys(name, algorithm);

-- GRANT ALL ON tsigkeys TO pdns;
-- GRANT ALL ON tsigkeys_id_seq TO pdns;
alter table records alter column type type VARCHAR(10);


> Is Debian's PostgreSQL schema correct for dnssec?
I use no-dnssec.schema.pgsql.sql (no DNSSEC), dnssec.schema.pgsql.sql should work?



More information about the Pkg-pdns-maintainers mailing list