Changeset: df8345486b8f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=df8345486b8f
Modified Files:
        geom/monetdb5/geom.c
        monetdb5/modules/kernel/bat5.c
        sql/server/rel_schema.c
Branch: linear-hashing
Log Message:

Get rid of some static variables that could create data races.


diffs (181 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -5244,12 +5244,17 @@ wkbHEAP(Heap *heap, size_t capacity)
 ssize_t
 mbrTOSTR(char **dst, size_t *len, const mbr *atom, bool external)
 {
-       static char tempWkt[MBR_WKTLEN];
-       size_t dstStrLen = 0;
+       char tempWkt[MBR_WKTLEN];
+       size_t dstStrLen;
 
        if (!is_mbr_nil(atom)) {
-               snprintf(tempWkt, MBR_WKTLEN, "BOX (%f %f, %f %f)", atom->xmin, 
atom->ymin, atom->xmax, atom->ymax);
-               dstStrLen = strlen(tempWkt);
+               dstStrLen = (size_t) snprintf(tempWkt, MBR_WKTLEN,
+                                             "BOX (%f %f, %f %f)",
+                                             atom->xmin, atom->ymin,
+                                             atom->xmax, atom->ymax);
+       } else {
+               tempWkt[0] = 0; /* not used */
+               dstStrLen = 0;
        }
 
        if (*len < dstStrLen + 4 || *dst == NULL) {
diff --git a/monetdb5/modules/kernel/bat5.c b/monetdb5/modules/kernel/bat5.c
--- a/monetdb5/modules/kernel/bat5.c
+++ b/monetdb5/modules/kernel/bat5.c
@@ -54,19 +54,15 @@ setaccess(BAT *b, restrict_t mode)
        return bn;
 }
 
-static char *
-pre(str s1, str s2)
+static inline char *
+pre(const char *s1, const char *s2, char *buf)
 {
-       static char buf[64];
-
        snprintf(buf, 64, "%s%s", s1, s2);
        return buf;
 }
-static char *
-local_itoa(ssize_t i)
+static inline char *
+local_itoa(ssize_t i, char *buf)
 {
-       static char buf[32];
-
        snprintf(buf, 32, "%zd", i);
        return buf;
 }
@@ -87,10 +83,11 @@ HASHinfo(BAT *bk, BAT *bv, Hash *h, str 
        BUN k;
        BUN cnt[COLLISION + 1];
        char buf[32];
+       char prebuf[64];
 
-       if (BUNappend(bk, pre(s, "type"), false) != GDK_SUCCEED ||
+       if (BUNappend(bk, pre(s, "type", prebuf), false) != GDK_SUCCEED ||
            BUNappend(bv, ATOMname(h->type),false) != GDK_SUCCEED ||
-           BUNappend(bk, pre(s, "mask"), false) != GDK_SUCCEED ||
+           BUNappend(bk, pre(s, "mask", prebuf), false) != GDK_SUCCEED ||
            BUNappend(bv, local_utoa(h->nbucket, buf),false) != GDK_SUCCEED)
                return GDK_FAIL;
 
@@ -106,7 +103,7 @@ HASHinfo(BAT *bk, BAT *bv, Hash *h, str 
 
        for (i = 0; i < COLLISION + 1; i++)
                if (cnt[i]) {
-                       if (BUNappend(bk, pre(s, 
local_utoa(i?(((size_t)1)<<(i-1)):0, buf)), false) != GDK_SUCCEED ||
+                       if (BUNappend(bk, pre(s, 
local_utoa(i?(((size_t)1)<<(i-1)):0, buf), prebuf), false) != GDK_SUCCEED ||
                            BUNappend(bv, local_utoa((size_t) cnt[i], buf), 
false) != GDK_SUCCEED)
                                return GDK_FAIL;
                }
@@ -684,15 +681,15 @@ BKCinfo(bat *ret1, bat *ret2, const bat 
        if (BUNappend(bk, "batId", false) != GDK_SUCCEED ||
            BUNappend(bv, BATgetId(b), false) != GDK_SUCCEED ||
            BUNappend(bk, "batCacheid", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(b->batCacheid)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) b->batCacheid, buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "tparentid", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(b->theap.parentid)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) b->theap.parentid, buf), false) 
!= GDK_SUCCEED ||
            BUNappend(bk, "batSharecnt", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(b->batSharecnt)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) b->batSharecnt, buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "batCount", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_utoa((size_t)b->batCount, buf), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_utoa((size_t) b->batCount, buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "batCapacity", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_utoa((size_t)b->batCapacity, buf), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_utoa((size_t) b->batCapacity, buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "head", false) != GDK_SUCCEED ||
            BUNappend(bv, ATOMname(TYPE_void), false) != GDK_SUCCEED ||
            BUNappend(bk, "tail", false) != GDK_SUCCEED ||
@@ -702,9 +699,9 @@ BKCinfo(bat *ret1, bat *ret2, const bat 
            BUNappend(bk, "batRestricted", false) != GDK_SUCCEED ||
            BUNappend(bv, accessmode, false) != GDK_SUCCEED ||
            BUNappend(bk, "batRefcnt", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(BBP_refs(b->batCacheid))), 
false) != GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) BBP_refs(b->batCacheid), buf), 
false) != GDK_SUCCEED ||
            BUNappend(bk, "batLRefcnt", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(BBP_lrefs(b->batCacheid))), 
false) != GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) BBP_lrefs(b->batCacheid), buf), 
false) != GDK_SUCCEED ||
            BUNappend(bk, "batDirty", false) != GDK_SUCCEED ||
            BUNappend(bv, BATdirty(b) ? "dirty" : "clean", false) != 
GDK_SUCCEED ||
 
@@ -714,17 +711,17 @@ BKCinfo(bat *ret1, bat *ret2, const bat 
            BUNappend(bk, "tident", false) != GDK_SUCCEED ||
            BUNappend(bv, b->tident, false) != GDK_SUCCEED ||
            BUNappend(bk, "tdense", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)BATtdense(b)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) BATtdense(b), buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "tseqbase", false) != GDK_SUCCEED ||
            BUNappend(bv, oidtostr(b->tseqbase, bf, sizeof(bf)), FALSE) != 
GDK_SUCCEED ||
            BUNappend(bk, "tsorted", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)BATtordered(b)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) BATtordered(b), buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "trevsorted", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)BATtrevordered(b)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) BATtrevordered(b), buf), false) 
!= GDK_SUCCEED ||
            BUNappend(bk, "tkey", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(b->tkey)), false) != GDK_SUCCEED 
||
+           BUNappend(bv, local_itoa((ssize_t) b->tkey, buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "tvarsized", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(b->tvarsized)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) b->tvarsized, buf), false) != 
GDK_SUCCEED ||
            BUNappend(bk, "tnosorted", false) != GDK_SUCCEED ||
            BUNappend(bv, local_utoa(b->tnosorted, buf), false) != GDK_SUCCEED 
||
            BUNappend(bk, "tnorevsorted", false) != GDK_SUCCEED ||
@@ -743,7 +740,7 @@ BKCinfo(bat *ret1, bat *ret2, const bat 
            BUNappend(bk, "ttop", false) != GDK_SUCCEED ||
            BUNappend(bv, local_utoa(b->theap.free, buf), false) != GDK_SUCCEED 
||
            BUNappend(bk, "batCopiedtodisk", false) != GDK_SUCCEED ||
-           BUNappend(bv, local_itoa((ssize_t)(b->batCopiedtodisk)), false) != 
GDK_SUCCEED ||
+           BUNappend(bv, local_itoa((ssize_t) b->batCopiedtodisk, buf), false) 
!= GDK_SUCCEED ||
            BUNappend(bk, "batDirtydesc", false) != GDK_SUCCEED ||
            BUNappend(bv, b->batDirtydesc ? "dirty" : "clean", false) != 
GDK_SUCCEED ||
 
diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -277,11 +277,10 @@ table_constraint_name(symbol *s, sql_tab
 }
 
 static char *
-column_constraint_name(symbol *s, sql_column *sc, sql_table *t)
+column_constraint_name(symbol *s, sql_column *sc, sql_table *t, char *buf, 
size_t bufsiz)
 {
        /* create a descriptive name like table_col_pkey */
        char *suffix;           /* stores the type of this constraint */
-       static char buf[BUFSIZ];
 
        switch (s->token) {
                case SQL_UNIQUE:
@@ -300,13 +299,13 @@ column_constraint_name(symbol *s, sql_co
                        suffix = "?";
        }
 
-       snprintf(buf, BUFSIZ, "%s_%s_%s", t->base.name, sc->base.name, suffix);
+       snprintf(buf, bufsiz, "%s_%s_%s", t->base.name, sc->base.name, suffix);
 
        return buf;
 }
 
 static int
-column_constraint_type(mvc *sql, char *name, symbol *s, sql_schema *ss, 
sql_table *t, sql_column *cs)
+column_constraint_type(mvc *sql, const char *name, symbol *s, sql_schema *ss, 
sql_table *t, sql_column *cs)
 {
        int res = SQL_ERR;
 
@@ -429,7 +428,7 @@ column_option(
                symbol *sym = l->h->next->data.sym;
 
                if (!opt_name)
-                       opt_name = column_constraint_name(sym, cs, t);
+                       opt_name = column_constraint_name(sym, cs, t, 
(char[512]){0}, 512);
                res = column_constraint_type(sql, opt_name, sym, ss, t, cs);
        }       break;
        case SQL_DEFAULT: {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to