1 create table if not exists ValidPaths (
2 id integer primary key autoincrement
not null,
3 path text unique not null,
5 registrationTime
integer not null,
10 create table if not exists Refs (
11 referrer
integer not null,
12 reference
integer not null,
13 primary key (referrer
, reference
),
14 foreign key (referrer
) references ValidPaths(id) on delete cascade,
15 foreign key (reference
) references ValidPaths(id) on delete restrict
18 create index if not exists IndexReferrer
on Refs(referrer
);
19 create index if not exists IndexReference
on Refs(reference
);
21 -- Paths can refer to themselves, causing a tuple (N, N) in the Refs
22 -- table. This causes a deletion of the corresponding row in
23 -- ValidPaths to cause a foreign key constraint violation (due to `on
24 -- delete restrict' on the `reference' column). Therefore, explicitly
25 -- get rid of self-references.
26 create trigger if not exists DeleteSelfRefs
before delete on ValidPaths
28 delete from Refs
where referrer
= old.
id and reference
= old.
id;
31 create table if not exists DerivationOutputs (
33 id text not null, -- symbolic output id, usually "out"
35 primary key (drv
, id),
36 foreign key (drv
) references ValidPaths(id) on delete cascade
39 create index if not exists IndexDerivationOutputs
on DerivationOutputs(path);
41 create table if not exists FailedPaths (
42 path text primary key not null,