Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -2203,11 +2203,11 @@ (define (db:get-run-info dbstruct run-id) ;;(if (hash-table-ref/default *run-info-cache* run-id #f) ;; (hash-table-ref *run-info-cache* run-id) (let* ((res (vector #f #f #f #f)) (keys (db:get-keys dbstruct)) - (remfields (list "id" "runname" "state" "status" "owner" "event_time")) + (remfields (list "id" "runname" "state" "status" "owner" "event_time" "comment" "fail_count" "pass_count")) ;; "area_id")) (header (append keys remfields)) (keystr (conc (keys->keystr keys) "," (string-intersperse remfields ",")))) (debug:print-info 11 *default-log-port* "db:get-run-info run-id: " run-id " header: " header " keystr: " keystr) (db:with-db Index: mt-pg.sql ================================================================== --- mt-pg.sql +++ mt-pg.sql @@ -37,21 +37,21 @@ CREATE TABLE IF NOT EXISTS runs ( id SERIAL PRIMARY KEY, target TEXT DEFAULT '', ttype_id INTEGER DEFAULT 0, - runname TEXT DEFAULT 'norun', + run_name TEXT DEFAULT 'norun', state TEXT DEFAULT '', status TEXT DEFAULT '', owner TEXT DEFAULT '', event_time INTEGER DEFAULT extract(epoch from now()), comment TEXT DEFAULT '', fail_count INTEGER DEFAULT 0, pass_count INTEGER DEFAULT 0, last_update INTEGER DEFAULT extract(epoch from now()), area_id INTEGER DEFAULT 0, - CONSTRAINT runsconstraint UNIQUE (runname)); + CONSTRAINT runsconstraint UNIQUE (target,ttype_id,run_name)); CREATE TABLE IF NOT EXISTS run_stats ( id SERIAL PRIMARY KEY, run_id INTEGER, state TEXT, Index: tasks.scm ================================================================== --- tasks.scm +++ tasks.scm @@ -609,11 +609,11 @@ ;; gets mtpg-run-id and syncs the record if different ;; (define (tasks:run-id->mtpg-run-id dbh cached-info run-id) (let* ((runs-ht (hash-table-ref cached-info 'runs)) - (runinf (hash-table-ref runs-ht run-id))) + (runinf (hash-table-ref/default runs-ht run-id #f))) (if runinf runinf ;; already cached (let* ((keytarg (string-intersperse (rmt:get-keys) "/")) ;; e.g. version/iteration/platform (spec-id (pgdb:get-ttype dbh keytarg)) (target (rmt:get-target run-id)) ;; e.g. v1.63/a3e1/ubuntu @@ -620,32 +620,33 @@ (run-dat (rmt:get-run-info run-id)) ;; NOTE: get-run-info returns a vector < row header > (run-name (rmt:get-run-name-from-id run-id)) (new-run-id (pgdb:get-run-id dbh spec-id target run-name)) (row (db:get-rows run-dat)) ;; yes, this returns a single row (header (db:get-header run-dat)) - (state (db:get-value-by-header rows header "state ")) + (state (db:get-value-by-header row header "state ")) (status (db:get-value-by-header row header "status")) (owner (db:get-value-by-header row header "owner")) (event-time (db:get-value-by-header row header "event_time")) (comment (db:get-value-by-header row header "comment")) (fail-count (db:get-value-by-header row header "fail_count")) (pass-count (db:get-value-by-header row header "pass_count")) - (area-id (db:get-value-by-header row header "area_id)"))) + ;; (area-id (db:get-value-by-header row header "area_id)")) + ) (if new-run-id (begin ;; let ((run-record (pgdb:get-run-info dbh new-run-id)) (hash-table-set! runs-ht run-id new-run-id) ;; ensure key fields are up to date (pgdb:refresh-run-info dbh new-run-id - state status owner event-time comment fail-count pass-count area-id)) + state status owner event-time comment fail-count pass-count)) ;; area-id)) (if (handle-exceptions exn (begin (print-call-chain) #f) (pgdb:insert-run dbh - spec-id target state status owner event-time comment fail-count pass-count area-id)) + spec-id target run-name state status owner event-time comment fail-count pass-count)) ;; area-id)) (tasks:run-id->mtpg-run-id dbh cached-info run-id) #f))))))