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 ' echo '
CREATE TEMPORARY TABLE tasks( CREATE TEMPORARY TABLE tasks(
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
requires INTEGER,
required INTEGER,
status INTEGER NOT NULL,
key TEXT UNIQUE, key TEXT UNIQUE,
rename_pattern TEXT, rename_pattern TEXT,
fat32compat INTEGER, fat32compat INTEGER,
@ -479,15 +482,23 @@ echo '
cmd_arg57 TEXT, cmd_arg57 TEXT,
cmd_arg58 TEXT, cmd_arg58 TEXT,
cmd_arg59 TEXT, cmd_arg59 TEXT,
requires INTEGER,
required INTEGER,
status INTEGER NOT NULL,
cleanup TEXT, cleanup TEXT,
FOREIGN KEY(requires) REFERENCES tasks(id) FOREIGN KEY(requires) REFERENCES tasks(id)
ON DELETE SET NULL ON DELETE SET NULL
); );
CREATE INDEX tasks_by_key ON tasks ( key ); CREATE INDEX tasks_by_key ON tasks ( key );
CREATE INDEX tasks_by_sourcefile ON tasks ( source_file ); 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 ' >&3
echo ' echo '

View File

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

View File

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