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

Reply via email to