Changeset: 195ea629a907 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=195ea629a907
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_utils.c
        gdk/gdk_utils.h
        monetdb5/modules/mal/inspect.c
Branch: default
Log Message:

New function GDKcopyenv to copy GDK environment; remove GDKkey and GDKval from 
ABI.


diffs (138 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -232,6 +232,7 @@ size_t GDKbatread(char *src, BAT **bat, 
 gdk_return GDKchangesemval(int sem_id, int number, int change);
 gdk_return GDKchangesemval_timeout(int sem_id, int number, int change, int 
timeout_mseconds, bool *succeed);
 void GDKclrerr(void);
+gdk_return GDKcopyenv(BAT **key, BAT **val, bool writable);
 gdk_return GDKcreatedir(const char *nme);
 gdk_return GDKcreatesem(int id, int count, int *semid);
 int GDKdebug;
@@ -256,7 +257,6 @@ gdk_return GDKgetsem(int sem_id, int cou
 gdk_return GDKgetsemval(int sem_id, int number, int *semval);
 gdk_return GDKinit(opt *set, int setlen);
 void *GDKinitmmap(size_t id, size_t size, size_t *return_size);
-BAT *GDKkey;
 ATOMIC_TYPE volatile GDKlockcnt;
 ATOMIC_TYPE volatile GDKlockcontentioncnt;
 MT_Lock *volatile GDKlocklist;
@@ -286,7 +286,6 @@ void GDKsyserror(_In_z_ _Printf_format_s
 size_t GDKuniqueid(size_t offset);
 gdk_return GDKupgradevarheap(BAT *b, var_t v, bool copyall, bool mayshare) 
__attribute__((__warn_unused_result__));
 lng GDKusec(void);
-BAT *GDKval;
 const char *GDKversion(void);
 size_t GDKvm_cursize(void);
 void *GDKzalloc(size_t size) __attribute__((__malloc__)) 
__attribute__((__alloc_size__(1))) __attribute__((__warn_unused_result__));
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -20,8 +20,8 @@
 #include "gdk_private.h"
 #include "mutils.h"
 
-BAT *GDKkey = NULL;
-BAT *GDKval = NULL;
+static BAT *GDKkey = NULL;
+static BAT *GDKval = NULL;
 int GDKdebug = 0;
 
 static char THRprintbuf[BUFSIZ];
@@ -143,6 +143,27 @@ GDKsetenv(const char *name, const char *
        return GDK_SUCCEED;
 }
 
+gdk_return
+GDKcopyenv(BAT **key, BAT **val, bool writable)
+{
+       BAT *k, *v;
+
+       if (key == NULL || val == NULL) {
+               GDKerror("GDKcopyenv: called incorrectly.\n");
+               return GDK_FAIL;
+       }
+       k = COLcopy(GDKkey, GDKkey->ttype, writable, TRANSIENT);
+       v = COLcopy(GDKval, GDKval->ttype, writable, TRANSIENT);
+       if (k == NULL || v == NULL) {
+               BBPreclaim(k);
+               BBPreclaim(v);
+               return GDK_FAIL;
+       }
+       *key = k;
+       *val = v;
+       return GDK_SUCCEED;
+}
+
 
 /*
  * @+ System logging
@@ -716,13 +737,13 @@ GDKreset(int status)
        int farmid;
        int i;
 
-       if( GDKkey){
+       if (GDKkey) {
                BBPunfix(GDKkey->batCacheid);
-               GDKkey = 0;
+               GDKkey = NULL;
        }
-       if( GDKval){
+       if (GDKval) {
                BBPunfix(GDKval->batCacheid);
-               GDKval = 0;
+               GDKval = NULL;
        }
 
        MT_lock_set(&GDKthreadLock);
diff --git a/gdk/gdk_utils.h b/gdk/gdk_utils.h
--- a/gdk/gdk_utils.h
+++ b/gdk/gdk_utils.h
@@ -12,9 +12,6 @@
 #include "monet_options.h"
 #include <setjmp.h>
 
-gdk_export BAT *GDKkey;
-gdk_export BAT *GDKval;
-
 gdk_export char *GDKgetenv(const char *name);
 
 gdk_export bool GDKgetenv_istext(const char *name, const char* text);
@@ -24,6 +21,7 @@ gdk_export bool GDKgetenv_istrue(const c
 gdk_export int GDKgetenv_int(const char *name, int def);
 
 gdk_export gdk_return GDKsetenv(const char *name, const char *value);
+gdk_export gdk_return GDKcopyenv(BAT **key, BAT **val, bool writable);
 
 /*
  * @+ Memory management
diff --git a/monetdb5/modules/mal/inspect.c b/monetdb5/modules/mal/inspect.c
--- a/monetdb5/modules/mal/inspect.c
+++ b/monetdb5/modules/mal/inspect.c
@@ -518,21 +518,13 @@ INSPECTatom_names(bat *ret)
 str
 INSPECTgetEnvironment(bat *ret, bat *ret2)
 {
-       BAT *b, *bn;
+       BAT *k, *v;
 
-       b = COLcopy(GDKkey, GDKkey->ttype, false, TRANSIENT);
-       if (b == 0)
-               throw(MAL, "inspect.getEnvironment", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
-       bn = COLcopy(GDKval, GDKval->ttype, false, TRANSIENT);
-       if (bn == 0){
-               BBPunfix(b->batCacheid);
-               throw(MAL, "inspect.getEnvironment", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
-       }
-       BAThseqbase(b,0);
-       BAThseqbase(bn,0);
+       if (GDKcopyenv(&k, &v, false) != GDK_SUCCEED)
+               throw(MAL, "inspect.getEnvironment", GDK_EXCEPTION);
 
-       BBPkeepref(*ret = b->batCacheid);
-       BBPkeepref(*ret2 = bn->batCacheid);
+       BBPkeepref(*ret = k->batCacheid);
+       BBPkeepref(*ret2 = v->batCacheid);
        return MAL_SUCCEED;
 }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to