Changeset: e5dea8acefd2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e5dea8acefd2
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_join.c
        gdk/gdk_logger.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        sql/test/pg_regress/Tests/horology.sql
        sql/test/pg_regress/Tests/horology.stable.out
Branch: default
Log Message:

Merge with Jul2015 branch.


diffs (237 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -1173,6 +1173,8 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
 
        if (sl)
                r1->tdense = sl->tdense;
+       if (sr)
+               r2->tdense = sr->tdense;
        while (lcand ? lcand < lcandend : lstart < lend) {
                if (lscan == 0) {
                        /* always search r completely */
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -100,63 +100,32 @@ static int bm_commit(logger *lg);
 static int tr_grow(trans *tr);
 
 static BUN
-log_find_int(BAT *b, BAT *d, int val)
+log_find(BAT *b, BAT *d, int val)
 {
-#if 0
-       BUN p, q;
-       int *t = (int *) Tloc(b, BUNfirst(b));
-
-       for (p = 0, q = BATcount(b); p < q; p++) {
-               oid pos = p + BUNfirst(b);
-
-               if (t[p] == val && BUNfnd(d, &pos) == BUN_NONE)
-                       return pos;
-       }
-       return BUN_NONE;
-#else
        BATiter cni = bat_iterator(b);
        BUN p;
 
-       if (b->T->hash || BAThash(b, 0) == GDK_SUCCEED) {
-               HASHloop_int(cni, cni.b->T->hash, p, &val) {
-                       oid pos = p;
-                       if (BUNfnd(d, &pos) == BUN_NONE)
-                               return p;
-//MK So, if the BAThash construction fails, the BAT b still could have 
information
-//?? protect against failing BAThash() with non-empty b required
-               }
-       }
-       return BUN_NONE;
-#endif
-}
-
-static BUN
-log_find_bid(BAT *b, BAT *d, log_bid val)
-{
-#if 0
-       BUN p, q;
-       log_bid *t = (log_bid *) Tloc(b, BUNfirst(b));
-
-       for (p = 0, q = BATcount(b); p < q; p++) {
-               oid pos = p + BUNfirst(b);
-
-               if (t[p] == val && BUNfnd(d, &pos) == BUN_NONE)
-                       return pos;
-       }
-       return BUN_NONE;
-#else
-       BATiter cni = bat_iterator(b);
-       BUN p;
-
+       assert(b->ttype == TYPE_int);
+       assert(d->ttype == TYPE_oid);
        if (b->T->hash || BAThash(b, 0) == GDK_SUCCEED) {
                HASHloop_int(cni, cni.b->T->hash, p, &val) {
                        oid pos = p;
                        if (BUNfnd(d, &pos) == BUN_NONE)
                                return p;
                }
+       } else {                /* unlikely: BAThash failed */
+               BUN q;
+               int *t = (int *) Tloc(b, 0);
+
+               for (p = BUNfirst(b), q = BUNlast(b); p < q; p++) {
+                       if (t[p] == val) {
+                               oid pos = p;
+                               if (BUNfnd(d, &pos) == BUN_NONE)
+                                       return p;
+                       }
+               }
        }
        return BUN_NONE;
-#endif
 }
 
 static void
@@ -262,7 +231,7 @@ static int
 avoid_snapshot(logger *lg, log_bid bid)
 {
        if (BATcount(lg->snapshots_bid)-BATcount(lg->dsnapshots)) {
-               BUN p = log_find_bid(lg->snapshots_bid, lg->dsnapshots, bid);
+               BUN p = log_find(lg->snapshots_bid, lg->dsnapshots, bid);
 
                if (p != BUN_NONE) {
                        int tid = *(int *) Tloc(lg->snapshots_tid, p);
@@ -310,7 +279,7 @@ log_read_seq(logger *lg, logformat *l)
                return LOG_ERR;
        }
 
-       if ((p = log_find_int(lg->seqs_id, lg->dseqs, seq)) != BUN_NONE &&
+       if ((p = log_find(lg->seqs_id, lg->dseqs, seq)) != BUN_NONE &&
            p >= lg->seqs_id->batInserted) {
                BUNinplace(lg->seqs_val, p, NULL, &val, FALSE);
        } else {
@@ -576,7 +545,7 @@ la_bat_destroy(logger *lg, logaction *la
 
                logger_del_bat(lg, bid);
 
-               if ((p = log_find_bid(lg->snapshots_bid, lg->dsnapshots, bid)) 
!= BUN_NONE) {
+               if ((p = log_find(lg->snapshots_bid, lg->dsnapshots, bid)) != 
BUN_NONE) {
 #ifndef NDEBUG
                        assert(BBP_desc(bid)->S.role == PERSISTENT);
                        assert(0 <= BBP_desc(bid)->H.heap.farmid && 
BBP_desc(bid)->H.heap.farmid < MAXFARMS);
@@ -701,7 +670,7 @@ la_bat_use(logger *lg, logaction *la)
                assert(BBPfarms[b->T->vheap->farmid].roles & (1 << PERSISTENT));
        }
 #endif
-       if ((p = log_find_bid(lg->snapshots_bid, lg->dsnapshots, 
b->batCacheid)) != BUN_NONE &&
+       if ((p = log_find(lg->snapshots_bid, lg->dsnapshots, b->batCacheid)) != 
BUN_NONE &&
            p >= lg->snapshots_bid->batInserted) {
                BUNinplace(lg->snapshots_tid, p, NULL, &lg->tid, FALSE);
        } else {
@@ -1142,7 +1111,7 @@ logger_commit(logger *lg)
        if (lg->debug & 1)
                fprintf(stderr, "#logger_commit\n");
 
-       p = log_find_int(lg->seqs_id, lg->dseqs, id);
+       p = log_find(lg->seqs_id, lg->dseqs, id);
        if (p >= lg->seqs_val->batInserted) {
                BUNinplace(lg->seqs_val, p, NULL, &lg->id, FALSE);
        } else {
@@ -2212,7 +2181,7 @@ logger_read_last_transaction_id(logger *
 int
 logger_sequence(logger *lg, int seq, lng *id)
 {
-       BUN p = log_find_int(lg->seqs_id, lg->dseqs, seq);
+       BUN p = log_find(lg->seqs_id, lg->dseqs, seq);
 
        if (p != BUN_NONE) {
                *id = *(lng *) Tloc(lg->seqs_val, p);
@@ -2277,7 +2246,7 @@ log_bat_persists(logger *lg, BAT *b, con
                assert(b->T->heap.farmid == 0);
                assert(b->T->vheap == NULL ||
                       BBPfarms[b->T->vheap->farmid].roles & (1 << PERSISTENT));
-               if ((p = log_find_bid(lg->snapshots_bid, lg->dsnapshots, 
b->batCacheid)) != BUN_NONE &&
+               if ((p = log_find(lg->snapshots_bid, lg->dsnapshots, 
b->batCacheid)) != BUN_NONE &&
                    p >= lg->snapshots_tid->batInserted) {
                        BUNinplace(lg->snapshots_tid, p, NULL, &lg->tid, FALSE);
                } else {
@@ -2327,7 +2296,7 @@ log_bat_transient(logger *lg, const char
        lg->changes++;
 
        /* if this is a snapshot bat, we need to skip all changes */
-       if ((p = log_find_bid(lg->snapshots_bid, lg->dsnapshots, bid)) != 
BUN_NONE) {
+       if ((p = log_find(lg->snapshots_bid, lg->dsnapshots, bid)) != BUN_NONE) 
{
                //      int tid = *(int*)Tloc(lg->snapshots_tid, p);
 #ifndef NDEBUG
                assert(BBP_desc(bid)->S.role == PERSISTENT);
@@ -2679,7 +2648,7 @@ log_sequence(logger *lg, int seq, lng va
        if (lg->debug & 1)
                fprintf(stderr, "#log_sequence (%d," LLFMT ")\n", seq, val);
 
-       if ((p = log_find_int(lg->seqs_id, lg->dseqs, seq)) != BUN_NONE &&
+       if ((p = log_find(lg->seqs_id, lg->dseqs, seq)) != BUN_NONE &&
            p >= lg->seqs_id->batInserted) {
                BUNinplace(lg->seqs_val, p, NULL, &val, FALSE);
        } else {
@@ -2787,14 +2756,14 @@ void
 logger_del_bat(logger *lg, log_bid bid)
 {
        BAT *b = BATdescriptor(bid);
-       BUN p = log_find_bid(lg->catalog_bid, lg->dcatalog, bid), q;
+       BUN p = log_find(lg->catalog_bid, lg->dcatalog, bid), q;
 
        assert(p != BUN_NONE);
 
        /* if this is a not logger commited snapshot bat, make it
         * transient */
        if (p >= lg->catalog_bid->batInserted &&
-           (q = log_find_bid(lg->snapshots_bid, lg->dsnapshots, bid)) != 
BUN_NONE) {
+           (q = log_find(lg->snapshots_bid, lg->dsnapshots, bid)) != BUN_NONE) 
{
 
                BUNappend(lg->dsnapshots, &q, FALSE);
                if (lg->debug & 1)
diff --git a/sql/test/pg_regress/Tests/horology.sql 
b/sql/test/pg_regress/Tests/horology.sql
--- a/sql/test/pg_regress/Tests/horology.sql
+++ b/sql/test/pg_regress/Tests/horology.sql
@@ -5,6 +5,10 @@
 SET australian_timezones = 'off';
 SET DateStyle = 'Postgres, MDY';
 
+-- set time zone to CET
+SET TIME ZONE INTERVAL '+1:0' HOUR TO MINUTE;
+SELECT CURRENT_TIMEZONE;
+
 --
 -- Test various input formats
 --
diff --git a/sql/test/pg_regress/Tests/horology.stable.out 
b/sql/test/pg_regress/Tests/horology.stable.out
--- a/sql/test/pg_regress/Tests/horology.stable.out
+++ b/sql/test/pg_regress/Tests/horology.stable.out
@@ -24,18 +24,26 @@ Ready.
 # 14:44:45 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-25322" "--port=34339"
 # 14:44:45 >  
 
+#SET TIME ZONE INTERVAL '+1:0' HOUR TO MINUTE;
+#SELECT CURRENT_TIMEZONE;
+% . # table_name
+# .L # table_name
+% single_value # name
+% sec_interval # type
+% 8 # length
+[ 3600.000      ]
 #SELECT timestamp with time zone '2001-12-27 04:05:06.789-08';
 % .L # table_name
 % single_value # name
 % timestamptz # type
 % 32 # length
-[ 2001-12-27 06:05:06.789000+02:00     ]
+[ 2001-12-27 05:05:06.789000+01:00     ]
 #SELECT timestamp with time zone '2001/12/27 04:05:06.789-08';
 % .L # table_name
 % single_value # name
 % timestamptz # type
 % 32 # length
-[ 2001-12-27 06:05:06.789000+02:00     ]
+[ 2001-12-27 05:05:06.789000+01:00     ]
 #CREATE TABLE TEMP_TIMESTAMP (f1 timestamp with time zone);
 #SELECT '' AS "16", f1 AS "timestamp"
 #  FROM TEMP_TIMESTAMP
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to