Changeset: a282f05ade80 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a282f05ade80
Modified Files:
        clients/Tests/exports.stable.out
Branch: strimps_update
Log Message:

merged with default


diffs (truncated from 91142 to 300 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
@@ -545,7 +545,6 @@ const lng lng_nil;
 struct tm *localtime_r(const time_t *restrict, struct tm *restrict);
 gdk_return log_activate(logger *lg);
 gdk_return log_bat(logger *lg, BAT *b, log_id id, lng offset, lng cnt, lng 
total_cnt);
-gdk_return log_bat_clear(logger *lg, log_id id);
 gdk_return log_bat_group_end(logger *lg, log_id id);
 gdk_return log_bat_group_start(logger *lg, log_id id);
 gdk_return log_bat_persists(logger *lg, BAT *b, log_id id);
diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -784,10 +784,10 @@ MNDBGetInfo(ODBCDbc *dbc,
                nValue = SQL_OJ_LEFT |
                        SQL_OJ_RIGHT |
                        SQL_OJ_FULL |
+                       SQL_OJ_NESTED |
                        SQL_OJ_NOT_ORDERED |
                        SQL_OJ_INNER |
                        SQL_OJ_ALL_COMPARISON_OPS;
-               /* SQL_OJ_NESTED */
                break;
        case SQL_ORDER_BY_COLUMNS_IN_SELECT:
                sValue = "N";   /* "Y" */
diff --git a/clients/odbc/samples/testgetinfo.c 
b/clients/odbc/samples/testgetinfo.c
--- a/clients/odbc/samples/testgetinfo.c
+++ b/clients/odbc/samples/testgetinfo.c
@@ -878,7 +878,7 @@ const struct {
                .info = SQL_OJ_CAPABILITIES,
                .name = "SQL_OJ_CAPABILITIES",
                .type = INTEGER,
-               .i = SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_FULL | 
SQL_OJ_NOT_ORDERED | SQL_OJ_INNER | SQL_OJ_ALL_COMPARISON_OPS,
+               .i = SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_FULL | SQL_OJ_NESTED | 
SQL_OJ_NOT_ORDERED | SQL_OJ_INNER | SQL_OJ_ALL_COMPARISON_OPS,
        },
        {
                .info = SQL_ORDER_BY_COLUMNS_IN_SELECT,
diff --git a/debian/rules b/debian/rules
--- a/debian/rules
+++ b/debian/rules
@@ -13,7 +13,7 @@ DH_VERBOSE=1
 
 override_dh_auto_configure:
        dh_auto_configure -- \
-       -DPYTHON3_LIBDIR=lib/python3/dist-packages
+       -DPYTHON3_LIBDIR=lib/python3/dist-packages \
        -DCMAKE_INSTALL_RUNSTATEDIR=/run \
        -DRELEASE_VERSION=ON \
        -DASSERT=OFF \
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -97,6 +97,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
                .batRole = role,
                .batTransient = true,
                .batRestricted = BAT_WRITE,
+               .batDirtydesc = true,
        };
        if (heapnames && (bn->theap = GDKmalloc(sizeof(Heap))) == NULL) {
                GDKfree(bn);
@@ -120,6 +121,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
                *bn->theap = (Heap) {
                        .parentid = bn->batCacheid,
                        .farmid = BBPselectfarm(role, bn->ttype, offheap),
+                       .dirty = true,
                };
 
                const char *nme = BBP_physical(bn->batCacheid);
@@ -136,6 +138,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
                        *bn->tvheap = (Heap) {
                                .parentid = bn->batCacheid,
                                .farmid = BBPselectfarm(role, bn->ttype, 
varheap),
+                               .dirty = true,
                        };
                        ATOMIC_INIT(&bn->tvheap->refs, 1);
                        strconcat_len(bn->tvheap->filename,
@@ -153,7 +156,6 @@ BATcreatedesc(oid hseq, int tt, bool hea
        MT_lock_init(&bn->batIdxLock, name);
        snprintf(name, sizeof(name), "hashlock%d", bn->batCacheid); /* fits */
        MT_rwlock_init(&bn->thashlock, name);
-       bn->batDirtydesc = true;
        return bn;
 }
 
@@ -294,14 +296,6 @@ COLnew2(oid hseq, int tt, BUN cap, role_
        return bn;
   bailout:
        BBPclear(bn->batCacheid, true);
-       if (bn->theap)
-               HEAPdecref(bn->theap, true);
-       if (bn->tvheap)
-               HEAPdecref(bn->tvheap, true);
-       MT_lock_destroy(&bn->theaplock);
-       MT_lock_destroy(&bn->batIdxLock);
-       MT_rwlock_destroy(&bn->thashlock);
-       GDKfree(bn);
        return NULL;
 }
 
@@ -645,6 +639,7 @@ BATclear(BAT *b, bool force)
        b->batCount = 0;
        if (b->ttype == TYPE_void)
                b->batCapacity = 0;
+       b->theap->free = 0;
        BAThseqbase(b, 0);
        BATtseqbase(b, ATOMtype(b->ttype) == TYPE_oid ? 0 : oid_nil);
        b->batDirtydesc = true;
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -701,7 +701,9 @@ BATappend2(BAT *b, BAT *n, BAT *s, bool 
        IMPSdestroy(b);         /* imprints do not support updates yet */
        OIDXdestroy(b);
        STRMPdestroy(b);        /* TODO: use STRMPappendBitString */
+
        MT_lock_set(&b->theaplock);
+
        b->batDirtydesc = true;
 
        if (BATcount(b) == 0 || b->tmaxpos != BUN_NONE) {
@@ -1124,9 +1126,13 @@ BATappend_or_update(BAT *b, BAT *p, cons
        OIDXdestroy(b);
        IMPSdestroy(b);
        STRMPdestroy(b);
+       /* load hash so that we can maintain it */
+       (void) BATcheckhash(b);
+
        MT_lock_set(&b->theaplock);
        if (!force && (b->batRestricted != BAT_WRITE || b->batSharecnt > 0)) {
                MT_lock_unset(&b->theaplock);
+               bat_iterator_end(&ni);
                GDKerror("access denied to %s, aborting.\n", BATgetId(b));
                return GDK_FAIL;
        }
@@ -1134,9 +1140,6 @@ BATappend_or_update(BAT *b, BAT *p, cons
        if (ni.count > BATcount(b) / gdk_unique_estimate_keep_fraction) {
                b->tunique_est = 0;
        }
-       MT_lock_unset(&b->theaplock);
-       /* load hash so that we can maintain it */
-       (void) BATcheckhash(b);
 
        b->tsorted = b->trevsorted = false;
        b->tnosorted = b->tnorevsorted = 0;
@@ -1147,6 +1150,9 @@ BATappend_or_update(BAT *b, BAT *p, cons
        int (*atomcmp)(const void *, const void *) = ATOMcompare(b->ttype);
        const void *nil = ATOMnilptr(b->ttype);
        oid hseqend = b->hseqbase + BATcount(b);
+
+       MT_lock_unset(&b->theaplock);
+
        bool anynil = false;
        bool locked = false;
 
@@ -2801,6 +2807,7 @@ PROPdestroy(BAT *b)
 
        b->tprops = NULL;
        while (p) {
+               /* only set dirty if a saved property is changed */
                n = p->next;
                VALclear(&p->v);
                GDKfree(p);
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -805,6 +805,7 @@ BBPreadEntries(FILE *fp, unsigned bbpver
                                goto bailout;
                        }
                }
+               bn->batDirtydesc = false; /* undo setting by BATsetprop_nolock 
*/
                BBP_refs(bid) = 0;
                BBP_lrefs(bid) = 1;     /* any BAT we encounter here is 
persistent, so has a logical reference */
                BBP_desc(bid) = bn;
@@ -3924,7 +3925,8 @@ BBPsync(int cnt, bat *restrict subcommit
                                        BBP_status_on(i, BBPSAVING);
                                        if (lock)
                                                MT_lock_unset(&GDKswapLock(i));
-                                       assert(size <= bi.count || size == 
BUN_NONE);
+                                       assert(sizes == NULL || size <= 
bi.count);
+                                       assert(sizes == NULL || bi.width == 0 
|| (bi.type == TYPE_msk ? ((size + 31) / 32) * 4 : size << bi.shift) <= 
bi.hfree);
                                        if (size > bi.count)
                                                size = bi.count;
                                        MT_rwlock_rdlock(&b->thashlock);
diff --git a/gdk/gdk_calc_private.h b/gdk/gdk_calc_private.h
--- a/gdk/gdk_calc_private.h
+++ b/gdk/gdk_calc_private.h
@@ -136,7 +136,7 @@
 #ifdef HAVE_HGE
 #define LNGMUL_CHECK(lft, rgt, dst, max, on_overflow)                  \
        MULI4_WITH_CHECK(lft, rgt, lng, dst, max, hge, on_overflow)
-#elif HAVE___INT128
+#elif defined(HAVE___INT128)
 #define LNGMUL_CHECK(lft, rgt, dst, max, on_overflow)                  \
        MULI4_WITH_CHECK(lft, rgt, lng, dst, max, __int128, on_overflow)
 #elif defined(_MSC_VER) && defined(_M_AMD64) && !defined(__INTEL_COMPILER)
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -33,9 +33,8 @@ static gdk_return log_del_bat(logger *lg
 #define LOG_CREATE     5
 #define LOG_DESTROY    6
 #define LOG_SEQ                7
-#define LOG_CLEAR      8
+#define LOG_CLEAR      8 // DEPRECATED
 #define LOG_BAT_GROUP  9
-#define LOG_COMMIT     10
 
 #ifdef NATIVE_WIN32
 #define getfilepos _ftelli64
@@ -60,7 +59,7 @@ static const char *log_commands[] = {
        "LOG_CREATE",
        "LOG_DESTROY",
        "LOG_SEQ",
-       "LOG_CLEAR",
+       "", // LOG_CLEAR IS DEPRECATED
        "LOG_BAT_GROUP",
 };
 
@@ -241,40 +240,6 @@ log_write_format(logger *lg, logformat *
 }
 
 static log_return
-log_read_clear(logger *lg, trans *tr, log_id id)
-{
-       if (lg->debug & 1)
-               fprintf(stderr, "#logger found log_read_clear %d\n", id);
-       if (tr_grow(tr) != GDK_SUCCEED)
-               return LOG_ERR;
-       tr->changes[tr->nr].type = LOG_CLEAR;
-       tr->changes[tr->nr].cid = id;
-       tr->nr++;
-       return LOG_OK;
-}
-
-static gdk_return
-la_bat_clear(logger *lg, logaction *la, int tid)
-{
-       log_bid bid = internal_find_bat(lg, la->cid, tid);
-       BAT *b;
-
-       if (lg->debug & 1)
-               fprintf(stderr, "#la_bat_clear %d\n", la->cid);
-
-       b = BATdescriptor(bid);
-       if (b) {
-               restrict_t access = b->batRestricted;
-               b->batRestricted = BAT_WRITE;
-               /* during startup this is fine */
-               BATclear(b, true);
-               b->batRestricted = access;
-               logbat_destroy(b);
-       }
-       return GDK_SUCCEED;
-}
-
-static log_return
 log_read_seq(logger *lg, logformat *l)
 {
        int seq = l->id;
@@ -910,10 +875,6 @@ la_apply(logger *lg, logaction *c, int t
                if (!lg->flushing)
                        ret = la_bat_destroy(lg, c, tid);
                break;
-       case LOG_CLEAR:
-               if (!lg->flushing)
-                       ret = la_bat_clear(lg, c, tid);
-               break;
        default:
                assert(0);
        }
@@ -1185,6 +1146,7 @@ log_read_transaction(logger *lg)
                if (lg->debug & 1) {
                        fprintf(stderr, "#log_readlog: ");
                        if (l.flag > 0 &&
+                               l.flag != LOG_CLEAR &&
                            l.flag < (bte) (sizeof(log_commands) / 
sizeof(log_commands[0])))
                                fprintf(stderr, "%s", log_commands[(int) 
l.flag]);
                        else
@@ -1242,12 +1204,6 @@ log_read_transaction(logger *lg)
                        else
                                err = log_read_destroy(lg, tr, l.id);
                        break;
-               case LOG_CLEAR:
-                       if (tr == NULL)
-                               err = LOG_EOF;
-                       else
-                               err = log_read_clear(lg, tr, l.id);
-                       break;
                case LOG_BAT_GROUP:
                        if (tr == NULL)
                                err = LOG_EOF;
@@ -2802,32 +2758,6 @@ log_delta(logger *lg, BAT *uid, BAT *uva
        return ok;
 }
 
-
-gdk_return
-log_bat_clear(logger *lg, int id)
-{
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to