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