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