Use TRIGGER to fail tasks depending upon a failed task

This commit is contained in:
Vincent Riquer 2016-09-01 18:43:18 +02:00
parent fe61ee8c53
commit 5977629cab
3 changed files with 15 additions and 4 deletions

17
atom
View File

@ -412,6 +412,9 @@ done
echo '
CREATE TEMPORARY TABLE tasks(
id INTEGER PRIMARY KEY,
requires INTEGER,
required INTEGER,
status INTEGER NOT NULL,
key TEXT UNIQUE,
rename_pattern TEXT,
fat32compat INTEGER,
@ -479,15 +482,23 @@ echo '
cmd_arg57 TEXT,
cmd_arg58 TEXT,
cmd_arg59 TEXT,
requires INTEGER,
required INTEGER,
status INTEGER NOT NULL,
cleanup TEXT,
FOREIGN KEY(requires) REFERENCES tasks(id)
ON DELETE SET NULL
);
CREATE INDEX tasks_by_key ON tasks ( key );
CREATE INDEX tasks_by_sourcefile ON tasks ( source_file );
CREATE TEMPORARY TRIGGER fail_depends
AFTER UPDATE OF
status
ON
tasks
WHEN
NEW.status=2
BEGIN
UPDATE tasks SET status=2 WHERE requires=NEW.id;
END;
' >&3
echo '

View File

@ -15,5 +15,6 @@ openDatabase() {
cat $schema >&3
echo '.separator ::AtOM:SQL:Sep::' >&3
echo 'PRAGMA foreign_keys = ON;' >&3
echo 'PRAGMA recursive_triggers = ON;' >&3
checkDatabaseVersion
}

View File

@ -12,7 +12,6 @@ cleaner() {
(( failed+=faildepends ))
(( ran+=faildepends ))
Update tasks status 2 <<<"id = $taskid"
Update tasks status 2 <<<"requires = $taskid"
echo "SELECT COUNT(*)
FROM tasks
WHERE ( status = 0 OR status = 1 )