Changeset: d6879ec05dfc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d6879ec05dfc Modified Files: tools/monetdbe/monetdbe.c Branch: default Log Message:
more cleanup diffs (197 lines): diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c --- a/tools/monetdbe/monetdbe.c +++ b/tools/monetdbe/monetdbe.c @@ -123,11 +123,31 @@ static daytime time_from_data(monetdbe_d static char* monetdbe_cleanup_result_internal(monetdbe_database_internal *mdbe, monetdbe_result_internal* res); +static void +clear_error( monetdbe_database_internal *mdbe) +{ + if (mdbe->msg) + freeException(mdbe->msg); + mdbe->msg = NULL; +} + +static char* +set_error( monetdbe_database_internal *mdbe, char *err) +{ + if (!err) + return err; + if (mdbe->msg) /* keep first error */ + freeException(err); + else + mdbe->msg = err; + return mdbe->msg; +} + static char* commit_action(mvc* m, monetdbe_database_internal *mdbe, monetdbe_result **result, monetdbe_result_internal *res_internal) { /* handle autocommit */ - char *commit_msg = SQLautocommit(m); + char *commit_msg = SQLautocommit(m); if ((mdbe->msg != MAL_SUCCEED || commit_msg != MAL_SUCCEED)) { if (res_internal) { @@ -137,10 +157,7 @@ commit_action(mvc* m, monetdbe_database_ } if (result) *result = NULL; - if (mdbe->msg == MAL_SUCCEED) - mdbe->msg = commit_msg; - else if (commit_msg) - freeException(commit_msg); + (void)set_error(mdbe, commit_msg); } return mdbe->msg; } @@ -150,6 +167,7 @@ validate_database_handle_noerror(monetdb { if (!monetdbe_embedded_initialized || !MCvalid(mdbe->c)) return 0; + clear_error(mdbe); return 1; } @@ -161,6 +179,7 @@ validate_database_handle(monetdbe_databa return createException(MAL, call, "MonetDBe has not yet started"); if (!MCvalid(mdbe->c)) return createException(MAL, call, "Invalid database handle"); + clear_error(mdbe); return MAL_SUCCEED; } @@ -353,10 +372,6 @@ monetdbe_close_internal(monetdbe_databas if (!mdbe) return 0; - if (mdbe->msg) { - freeException(mdbe->msg); - mdbe->msg = NULL; - } if (validate_database_handle_noerror(mdbe)) { open_dbs--; SQLexitClient(mdbe->c); @@ -428,6 +443,7 @@ monetdbe_startup(monetdbe_database_inter GDKfataljumpenable = 1; if(setjmp(GDKfataljump) != 0) { + assert(0); mdbe->msg = GDKfatalmsg; // we will get here if GDKfatal was called. if (mdbe->msg == NULL) @@ -460,6 +476,8 @@ monetdbe_startup(monetdbe_database_inter goto cleanup; } + GDKtracer_set_adapter(mbedded); /* set the output of GDKtracer logs */ + workers = 0; memory = 0; querytimeout = 0; @@ -494,11 +512,9 @@ monetdbe_startup(monetdbe_database_inter goto cleanup; } // Query time is session specific - sessiontimeout = opts->querytimeout; + sessiontimeout = opts->sessiontimeout; } - GDKtracer_set_adapter(mbedded); /* set the output of GDKtracer logs */ - if (!dbdir) { /* in-memory */ if (BBPaddfarm(NULL, (1 << PERSISTENT) | (1 << TRANSIENT), false) != GDK_SUCCEED) { mo_free_options(set, setlen); @@ -549,7 +565,7 @@ monetdbe_open(monetdbe_database *dbhdl, if (!dbhdl) return -1; MT_lock_set(&embedded_lock); - monetdbe_database_internal *mdbe = (monetdbe_database_internal*)GDKmalloc(sizeof(monetdbe_database_internal)); + monetdbe_database_internal *mdbe = (monetdbe_database_internal*)GDKzalloc(sizeof(monetdbe_database_internal)); if (!mdbe) { MT_lock_unset(&embedded_lock); return -1; @@ -815,7 +831,7 @@ monetdbe_execute(monetdbe_statement *stm monetdbe_database_internal *mdbe = stmt_internal->mdbe; cq *q = stmt_internal->q; - if ((mdbe->msg = SQLtrans(m)) != MAL_SUCCEED) + if ((mdbe->msg = SQLtrans(m)) != MAL_SUCCEED) return mdbe->msg; /* check if all inputs are bound */ @@ -1057,7 +1073,7 @@ GENERATE_BASE_HEADERS(monetdbe_data_time #define GENERATE_BAT_INPUT(b, tpe, tpe_name, mtype) \ { \ GENERATE_BAT_INPUT_BASE(tpe_name); \ - bat_data->count = BATcount(b); \ + bat_data->count = mres->nrows; \ bat_data->null_value = mtype##_nil; \ if (bat_data->count) { \ bat_data->data = GDKzalloc(bat_data->count * sizeof(bat_data->null_value)); \ @@ -1289,8 +1305,10 @@ monetdbe_result_fetch(monetdbe_result* m if ((mdbe->msg = getSQLContext(c, NULL, &m, NULL)) != MAL_SUCCEED) goto cleanup; + /* if ((mdbe->msg = SQLtrans(m)) != MAL_SUCCEED) goto cleanup; + */ if (!res) { mdbe->msg = createException(MAL, "monetdbe.monetdbe_result_fetch", "Parameter res is NULL"); goto cleanup; @@ -1339,7 +1357,7 @@ monetdbe_result_fetch(monetdbe_result* m BATiter li; BUN p = 0, q = 0; GENERATE_BAT_INPUT_BASE(str); - bat_data->count = BATcount(b); + bat_data->count = mres->nrows; if (bat_data->count) { bat_data->data = GDKzalloc(sizeof(char *) * bat_data->count); bat_data->null_value = NULL; @@ -1367,7 +1385,7 @@ monetdbe_result_fetch(monetdbe_result* m } else if (bat_type == TYPE_date) { date *baseptr; GENERATE_BAT_INPUT_BASE(date); - bat_data->count = BATcount(b); + bat_data->count = mres->nrows; if (bat_data->count) { bat_data->data = GDKmalloc(sizeof(bat_data->null_value) * bat_data->count); if (!bat_data->data) { @@ -1383,7 +1401,7 @@ monetdbe_result_fetch(monetdbe_result* m } else if (bat_type == TYPE_daytime) { daytime *baseptr; GENERATE_BAT_INPUT_BASE(time); - bat_data->count = BATcount(b); + bat_data->count = mres->nrows; if (bat_data->count) { bat_data->data = GDKmalloc(sizeof(bat_data->null_value) * bat_data->count); if (!bat_data->data) { @@ -1399,7 +1417,7 @@ monetdbe_result_fetch(monetdbe_result* m } else if (bat_type == TYPE_timestamp) { timestamp *baseptr; GENERATE_BAT_INPUT_BASE(timestamp); - bat_data->count = BATcount(b); + bat_data->count = mres->nrows; if (bat_data->count) { bat_data->data = GDKmalloc(sizeof(bat_data->null_value) * bat_data->count); if (!bat_data->data) { @@ -1416,7 +1434,7 @@ monetdbe_result_fetch(monetdbe_result* m BATiter li; BUN p = 0, q = 0; GENERATE_BAT_INPUT_BASE(blob); - bat_data->count = BATcount(b); + bat_data->count = mres->nrows; if (bat_data->count) { bat_data->data = GDKmalloc(sizeof(monetdbe_data_blob) * bat_data->count); if (!bat_data->data) { @@ -1451,7 +1469,7 @@ monetdbe_result_fetch(monetdbe_result* m BATiter li; BUN p = 0, q = 0; GENERATE_BAT_INPUT_BASE(str); - bat_data->count = BATcount(b); + bat_data->count = mres->nrows; if (bat_data->count) { bat_data->null_value = NULL; bat_data->data = GDKzalloc(sizeof(char *) * bat_data->count); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list