Changeset: 6d02a93eb19a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6d02a93eb19a
Modified Files:
        gdk/gdk_utils.c
        gdk/gdk_utils.h
        monetdb5/modules/mal/inspect.c
Branch: default
Log Message:

Split the GDKenv BAT
Moving towards (v)oid headed BATs calls for changing some
internal ones as well. Aside from this one, we need to
change BAT used in the logger (freed).


diffs (95 lines):

diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -34,7 +34,8 @@
 static char GDKdbfarmStr[PATHLENGTH] = { "dbfarm" };
 static char GDKdbnameStr[PATHLENGTH] = { 0 };
 
-BAT *GDKenv = NULL;
+BAT *GDKkey = NULL;
+BAT *GDKval = NULL;
 
 #include <signal.h>
 
@@ -116,10 +117,10 @@ GDKenvironment(str dbname, str dbfarm)
 char *
 GDKgetenv(const char *name)
 {
-       BUN b = BUNfnd(GDKenv, (ptr) name);
+       BUN b = BUNfnd(BATmirror(GDKkey), (ptr) name);
 
        if (b != BUN_NONE) {
-               BATiter GDKenvi = bat_iterator(GDKenv);
+               BATiter GDKenvi = bat_iterator(GDKval);
                return BUNtail(GDKenvi, b);
        }
        return NULL;
@@ -160,8 +161,10 @@ GDKgetenv_int(const char *name, int def)
 void
 GDKsetenv(str name, str value)
 {
-       BUNins(GDKenv, name, value, FALSE);
-       BATfakeCommit(GDKenv);
+       BUNappend(GDKkey, name, FALSE);
+       BUNappend(GDKval, value, FALSE);
+       BATfakeCommit(GDKkey);
+       BATfakeCommit(GDKval);
 }
 
 
@@ -1214,12 +1217,21 @@ GDKinit(opt *set, int setlen)
 
        HEAPcacheInit();
 
-       GDKenv = BATnew(TYPE_str, TYPE_str, 100);
-       if (GDKenv == NULL)
+       GDKkey = BATnew(TYPE_void, TYPE_str, 100);
+       GDKval = BATnew(TYPE_void, TYPE_str, 100);
+       if (GDKkey == NULL)
                GDKfatal("GDKinit: Could not create environment BAT");
-       BATkey(GDKenv, BOUND2BTRUE);
-       BATrename(GDKenv, "monet_environment");
-       BATmode(GDKenv, TRANSIENT);
+       if (GDKval == NULL)
+               GDKfatal("GDKinit: Could not create environment BAT");
+       BATseqbase(GDKkey,0);
+       BATkey(GDKkey, BOUND2BTRUE);
+       BATrename(GDKkey, "environment_key");
+       BATmode(GDKkey, TRANSIENT);
+
+       BATseqbase(GDKval,0);
+       BATkey(GDKval, BOUND2BTRUE);
+       BATrename(GDKval, "environment_val");
+       BATmode(GDKval, TRANSIENT);
 
        n = (opt *) malloc(setlen * sizeof(opt));
        for (i = 0; i < setlen; i++) {
diff --git a/gdk/gdk_utils.h b/gdk/gdk_utils.h
--- a/gdk/gdk_utils.h
+++ b/gdk/gdk_utils.h
@@ -22,7 +22,8 @@
 
 #include <monet_options.h>
 
-gdk_export BAT *GDKenv;
+gdk_export BAT *GDKkey;
+gdk_export BAT *GDKval;
 
 gdk_export char *GDKgetenv(const char *name);
 
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
@@ -488,10 +488,10 @@ INSPECTgetEnvironment(int *ret, int *ret
 {
        BAT *b, *bn;
 
-       b= VIEWhead(GDKenv);
+       b= VIEWhead(BATmirror(GDKkey));
        if (b == 0)
                throw(MAL, "inspect.getEnvironment", MAL_MALLOC_FAIL);
-       bn= VIEWhead(BATmirror(GDKenv));
+       bn= VIEWhead(BATmirror(GDKval));
        if (bn == 0){
                BBPreleaseref(b->batCacheid);
                throw(MAL, "inspect.getEnvironment", MAL_MALLOC_FAIL);
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to