char *Argv[16];
-static int ingres_errno = 0;
+int ingres_errno = 0;
extern char *whoami;
extern FILE *journal;
default:
ingres_errno = SMS_INGRES_ERR;
com_err(whoami, SMS_INGRES_ERR, " code %d\n", *num);
- sprintf(buf, "Ingres error %d", *num);
- send_zgram("ingres_error", buf);
+ critical_alert("SMS", "SMS server encountered INGRES ERROR %d", *num);
return (*num);
}
return (0);
/* open the database */
## ingres sms
+## set lockmode session where readlock = exclusive
return ingres_errno;
}
if (q == (struct query *)0) return(SMS_NO_HANDLE);
v = q->validate;
+ ingres_errno = 0;
if (q->type != RETRIEVE)
## begin transaction
status = do_retrieve(q, pqual, psort, action, actarg);
}
if (status != SMS_SUCCESS) break;
- table = q->rtable;
-## repeat replace tblstats (retrieves = tblstats.retrieves + 1)
-## where tblstats.#table = @table
} else {
status = (*v->post_rtn)(q, Argv, cl, action, actarg);
}
status = do_update(q, &Argv[q->argc], qual, action, actarg);
if (status != SMS_SUCCESS) break;
table = q->rtable;
-## repeat replace tblstats (updates = tblstats.updates + 1,
-## modtime = "now")
-## where tblstats.#table = @table
+ if (strcmp(q->shortname, "sshi") && strcmp(q->shortname, "ssif")) {
+## repeat replace tblstats (updates = tblstats.updates + 1,
+## modtime = "now")
+## where tblstats.#table = @table
+ }
}
/* execute followup routine (if any) */
fflush(journal);
}
} else {
-## abort /* it never happened */
+ if (status != SMS_DEADLOCK) {
+## abort /* it never happened */
+ }
}
}
int child;
struct save_queue *sq_create();
+ if (!strcmp(strtrim(list_type), strtrim(member_type)) &&
+ list_id == member_id)
+ return(1);
+
/* see if client is a direct member of list */
## repeat retrieve (exists = any(m.#member_id where
## m.#list_id = @list_id and
if (LOG_RES)
com_err(whoami, 0, "setting ID %s to %d", name, value);
## repeat replace v (#value = @value) where v.#name = @name
+ if (ingres_errno != 0) return(ingres_errno);
return(SMS_SUCCESS);
##}