forked from lix-project/lix
Merge pull request #5366 from trofi/speedup-ca-query
ca-specific-schema.sql: add index on RealisationsRefs(referrer)
This commit is contained in:
commit
3fc8042f77
|
@ -19,3 +19,8 @@ create table if not exists RealisationsRefs (
|
||||||
foreign key (referrer) references Realisations(id) on delete cascade,
|
foreign key (referrer) references Realisations(id) on delete cascade,
|
||||||
foreign key (realisationReference) references Realisations(id) on delete restrict
|
foreign key (realisationReference) references Realisations(id) on delete restrict
|
||||||
);
|
);
|
||||||
|
|
||||||
|
-- used by QueryRealisationReferences
|
||||||
|
create index if not exists IndexRealisationsRefs on RealisationsRefs(referrer);
|
||||||
|
-- used by cascade deletion when ValidPaths is deleted
|
||||||
|
create index if not exists IndexRealisationsRefsOnOutputPath on Realisations(outputPath);
|
||||||
|
|
|
@ -80,7 +80,7 @@ int getSchema(Path schemaPath)
|
||||||
|
|
||||||
void migrateCASchema(SQLite& db, Path schemaPath, AutoCloseFD& lockFd)
|
void migrateCASchema(SQLite& db, Path schemaPath, AutoCloseFD& lockFd)
|
||||||
{
|
{
|
||||||
const int nixCASchemaVersion = 2;
|
const int nixCASchemaVersion = 3;
|
||||||
int curCASchema = getSchema(schemaPath);
|
int curCASchema = getSchema(schemaPath);
|
||||||
if (curCASchema != nixCASchemaVersion) {
|
if (curCASchema != nixCASchemaVersion) {
|
||||||
if (curCASchema > nixCASchemaVersion) {
|
if (curCASchema > nixCASchemaVersion) {
|
||||||
|
@ -131,6 +131,17 @@ void migrateCASchema(SQLite& db, Path schemaPath, AutoCloseFD& lockFd)
|
||||||
txn.commit();
|
txn.commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (curCASchema < 3) {
|
||||||
|
SQLiteTxn txn(db);
|
||||||
|
// Apply new indices added in this schema update.
|
||||||
|
db.exec(R"(
|
||||||
|
-- used by QueryRealisationReferences
|
||||||
|
create index if not exists IndexRealisationsRefs on RealisationsRefs(referrer);
|
||||||
|
-- used by cascade deletion when ValidPaths is deleted
|
||||||
|
create index if not exists IndexRealisationsRefsOnOutputPath on Realisations(outputPath);
|
||||||
|
)");
|
||||||
|
txn.commit();
|
||||||
|
}
|
||||||
writeFile(schemaPath, fmt("%d", nixCASchemaVersion));
|
writeFile(schemaPath, fmt("%d", nixCASchemaVersion));
|
||||||
lockFile(lockFd.get(), ltRead, true);
|
lockFile(lockFd.get(), ltRead, true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue