X-Git-Url: http://andersk.mit.edu/gitweb/moira.git/blobdiff_plain/f2546b02381d4e6aa9273bfbdc0dd8cbac289a51..f0888cca91df3d945e7633014928b4d112ef6040:/dbck/dbck.dc diff --git a/dbck/dbck.dc b/dbck/dbck.dc index 12a214b3..49fe9f30 100644 --- a/dbck/dbck.dc +++ b/dbck/dbck.dc @@ -102,14 +102,11 @@ EXEC SQL END DECLARE SECTION; IIseterr(ingerr); printf("Opening database %s...", database); fflush(stdout); -/* ingres database */ EXEC SQL CONNECT :database; printf("done\n"); -/* retrieve (dcmenable = values.value) where values.name = "dcm_enable" */ EXEC SQL SELECT value INTO :dcmenable FROM numvalues WHERE name='dcm_enable'; dprintf("DCM disabled (was %d)\n", dcmenable); -/* replace values (value = 0) where values.name = "dcm_enable" */ EXEC SQL UPDATE numvalues SET value=0 WHERE name='dcm_enable'; /* Begin transaction here. */ @@ -133,6 +130,7 @@ EXEC SQL END DECLARE SECTION; ingerr(num) int *num; { + if (*num == 100) return; printf("An ingres error occuurred, code %d\n", *num); printf("Aborting...\n"); if (!abort_p) { @@ -162,12 +160,9 @@ int interrupt() EXEC SQL ROLLBACK WORK; } -/* replace values (value = dcmenable) where values.name = "dcm_enable" */ EXEC SQL UPDATE numvalues SET value=:dcmenable WHERE name='dcm_enable'; -/* exit */ - /* No equivalent (?) */ exit(0); } @@ -185,15 +180,11 @@ cleanup() EXEC SQL END DECLARE SECTION; while (sq_get_data(modtables, &tab)) { -/* replace tblstats (modtime = "now") where tblstats.table = tab */ EXEC SQL REPEATED UPDATE tblstats SET modtime='now' WHERE table_name = :tab; } -/* replace values (value = dcmenable) where values.name = "dcm_enable" */ EXEC SQL UPDATE numvalues SET value = :dcmenable WHERE name='dcm_enable'; -/* exit */ - /* No equivalent (?) */ } @@ -201,8 +192,16 @@ out_of_mem(msg) char *msg; { fprintf(stderr, "Out of memory while %s\n", msg); -/* end transaction */ - EXEC SQL COMMIT WORK; - cleanup(); + if (prompt("Save database changes")) { + /* break out of a retrieve loop */ + IIbreak(); + + EXEC SQL COMMIT WORK; + cleanup(); + exit(1); + } + printf("Aborting transaction\n"); + IIbreak(); + EXEC SQL ROLLBACK WORK; exit(1); }