Changeset: 5fb5ecc31427 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5fb5ecc31427
Modified Files:
sql/storage/store.c
tools/mserver/mserver5.c
Branch: default
Log Message:
Avoid calling GDKfatal.
diffs (138 lines):
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -1110,12 +1110,16 @@ load_schema(sql_trans *tr, sqlid id, oid
name = (char*)v;
s = find_sql_schema(tr, name);
_DELETE(v);
- if (s == NULL)
- GDKfatal("SQL schema missing or incompatible,
rebuild from archive");
+ if (s == NULL) {
+ GDKerror("SQL schema missing or incompatible,
rebuild from archive");
+ return NULL;
+ }
}
s->base.id = sid;
} else {
s = SA_ZNEW(tr->sa, sql_schema);
+ if (s == NULL)
+ return NULL;
v = table_funcs.column_find_value(tr, find_sql_column(ss,
"name"), rid);
base_init(tr->sa, &s->base, sid, 0, v); _DELETE(v);
v = table_funcs.column_find_value(tr, find_sql_column(ss,
"authorization"), rid);
@@ -1245,7 +1249,7 @@ sql_trans_update_schemas(sql_trans* tr)
table_funcs.rids_destroy(schemas);
}
-static void
+static bool
load_trans(sql_trans* tr, sqlid id)
{
sql_schema *syss = find_sql_schema(tr, "sys");
@@ -1260,7 +1264,9 @@ load_trans(sql_trans* tr, sqlid id)
for(rid = table_funcs.rids_next(schemas); !is_oid_nil(rid); rid =
table_funcs.rids_next(schemas)) {
sql_schema *ns = load_schema(tr, id, rid);
- if (ns && !instore(ns->base.id, id))
+ if (ns == NULL)
+ return false;
+ if (!instore(ns->base.id, id))
cs_add(&tr->schemas, ns, 0);
}
/* members maybe from different schemas */
@@ -1270,6 +1276,7 @@ load_trans(sql_trans* tr, sqlid id)
set_members(&s->tables);
}
table_funcs.rids_destroy(schemas);
+ return true;
}
static int
@@ -1932,8 +1939,12 @@ store_load(void) {
store_oid = prev_oid;
/* load remaining schemas, tables, columns etc */
- if (!first)
- load_trans(gtrans, id);
+ if (!first && !load_trans(gtrans, id)) {
+ GDKfree(store_oids);
+ store_oids = NULL;
+ nstore_oids = 0;
+ return -1;
+ }
store_initialized = 1;
GDKfree(store_oids);
store_oids = NULL;
diff --git a/tools/mserver/mserver5.c b/tools/mserver/mserver5.c
--- a/tools/mserver/mserver5.c
+++ b/tools/mserver/mserver5.c
@@ -286,7 +286,8 @@ main(int argc, char **av)
#endif
#endif
if (setlocale(LC_CTYPE, "") == NULL) {
- GDKfatal("cannot set locale\n");
+ fprintf(stderr, "cannot set locale\n");
+ exit(1);
}
if (getcwd(monet_cwd, FILENAME_MAX - 1) == NULL) {
@@ -624,21 +625,21 @@ main(int argc, char **av)
snprintf(secret, sizeof(secret), "%s",
"Xas632jsi2whjds8");
} else {
if ((secretf = fopen(GDKgetenv("monet_vault_key"),
"r")) == NULL) {
- snprintf(secret, sizeof(secret),
- "unable to open vault_key_file
%s: %s",
- GDKgetenv("monet_vault_key"),
strerror(errno));
+ fprintf(stderr,
+ "unable to open vault_key_file %s:
%s\n",
+ GDKgetenv("monet_vault_key"),
strerror(errno));
/* don't show this as a crash */
msab_registerStop();
- GDKfatal("%s", secret);
+ exit(1);
}
len = fread(secret, 1, sizeof(secret), secretf);
secret[len] = '\0';
len = strlen(secret); /* secret can contain null-bytes
*/
if (len == 0) {
- snprintf(secret, sizeof(secret), "vault key has
zero-length!");
+ fprintf(stderr, "vault key has zero-length!\n");
/* don't show this as a crash */
msab_registerStop();
- GDKfatal("%s", secret);
+ exit(1);
} else if (len < 5) {
fprintf(stderr, "#warning: your vault key is
too short "
"(%zu), enlarge
your vault key!\n", len);
@@ -648,14 +649,18 @@ main(int argc, char **av)
if ((err = AUTHunlockVault(secretp)) != MAL_SUCCEED) {
/* don't show this as a crash */
msab_registerStop();
- GDKfatal("%s", err);
+ fprintf(stderr, "%s\n", err);
+ freeException(err);
+ exit(1);
}
}
/* make sure the authorisation BATs are loaded */
if ((err = AUTHinitTables(NULL)) != MAL_SUCCEED) {
/* don't show this as a crash */
msab_registerStop();
- GDKfatal("%s", err);
+ fprintf(stderr, "%s\n", err);
+ freeException(err);
+ exit(1);
}
if (mal_init()) {
/* don't show this as a crash */
@@ -665,7 +670,9 @@ main(int argc, char **av)
if((err = MSinitClientPrg(mal_clients, "user", "main")) != MAL_SUCCEED)
{
msab_registerStop();
- GDKfatal("%s", err);
+ fprintf(stderr, "%s\n", err);
+ freeException(err);
+ exit(1);
}
emergencyBreakpoint();
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list