Changeset: 1e73aac40eb0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1e73aac40eb0
Modified Files:
clients/R/MonetDB.R/DESCRIPTION
clients/R/MonetDB.R/NEWS
clients/R/MonetDB.R/R/control.R
clients/R/MonetDB.R/src/mapi.c
clients/Tests/exports.stable.out
gdk/gdk_logger.c
gdk/gdk_logger.h
gdk/gdk_sample.c
monetdb5/mal/mal_import.c
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_statistics.c
sql/storage/bat/bat_logger.c
sql/storage/store.c
sql/test/pg_regress/Tests/All
sql/test/pg_regress/Tests/aggregates.stable.err
sql/test/pg_regress/Tests/aggregates.stable.out
sql/test/pg_regress/Tests/alter_table.stable.err
sql/test/pg_regress/Tests/alter_table.stable.out
sql/test/pg_regress/Tests/arrays.stable.err
sql/test/pg_regress/Tests/arrays.stable.out
sql/test/pg_regress/Tests/bit.stable.err
sql/test/pg_regress/Tests/bit.stable.out
sql/test/pg_regress/Tests/boolean.stable.err
sql/test/pg_regress/Tests/boolean.stable.out
sql/test/pg_regress/Tests/box.stable.err
sql/test/pg_regress/Tests/box.stable.out
sql/test/pg_regress/Tests/btree_index.stable.err
sql/test/pg_regress/Tests/btree_index.stable.out
sql/test/pg_regress/Tests/case.stable.err
sql/test/pg_regress/Tests/case.stable.out
sql/test/pg_regress/Tests/char.stable.err
sql/test/pg_regress/Tests/char.stable.out
sql/test/pg_regress/Tests/circle.stable.err
sql/test/pg_regress/Tests/circle.stable.out
sql/test/pg_regress/Tests/cluster.stable.err
sql/test/pg_regress/Tests/cluster.stable.out
sql/test/pg_regress/Tests/comments.stable.err
sql/test/pg_regress/Tests/comments.stable.out
sql/test/pg_regress/Tests/conversion.stable.err
sql/test/pg_regress/Tests/conversion.stable.out
sql/test/pg_regress/Tests/copy2.stable.err
sql/test/pg_regress/Tests/copy2.stable.out
sql/test/pg_regress/Tests/create_aggregate.stable.err
sql/test/pg_regress/Tests/create_aggregate.stable.out
sql/test/pg_regress/Tests/create_index.stable.err
sql/test/pg_regress/Tests/create_index.stable.out
sql/test/pg_regress/Tests/create_misc.stable.err
sql/test/pg_regress/Tests/create_misc.stable.out
sql/test/pg_regress/Tests/create_operator.stable.err
sql/test/pg_regress/Tests/create_operator.stable.out
sql/test/pg_regress/Tests/create_table.stable.err
sql/test/pg_regress/Tests/create_table.stable.out
sql/test/pg_regress/Tests/create_type.stable.err
sql/test/pg_regress/Tests/create_type.stable.out
sql/test/pg_regress/Tests/create_view.stable.err
sql/test/pg_regress/Tests/create_view.stable.out
sql/test/pg_regress/Tests/date.stable.err
sql/test/pg_regress/Tests/date.stable.out
sql/test/pg_regress/Tests/domain.stable.err
sql/test/pg_regress/Tests/domain.stable.out
sql/test/pg_regress/Tests/drop.stable.err
sql/test/pg_regress/Tests/drop.stable.out
sql/test/pg_regress/Tests/errors.stable.err
sql/test/pg_regress/Tests/errors.stable.out
sql/test/pg_regress/Tests/float4.stable.err
sql/test/pg_regress/Tests/float4.stable.out
sql/test/pg_regress/Tests/float8.stable.err
sql/test/pg_regress/Tests/float8.stable.out
sql/test/pg_regress/Tests/foreign_key.stable.err
sql/test/pg_regress/Tests/foreign_key.stable.out
sql/test/pg_regress/Tests/geometry.stable.err
sql/test/pg_regress/Tests/geometry.stable.out
sql/test/pg_regress/Tests/hash_index.stable.err
sql/test/pg_regress/Tests/hash_index.stable.out
sql/test/pg_regress/Tests/horology.stable.err
sql/test/pg_regress/Tests/horology.stable.out
sql/test/pg_regress/Tests/inet.stable.err
sql/test/pg_regress/Tests/inet.stable.out
sql/test/pg_regress/Tests/inherit.stable.err
sql/test/pg_regress/Tests/inherit.stable.out
sql/test/pg_regress/Tests/insert.stable.err
sql/test/pg_regress/Tests/insert.stable.out
sql/test/pg_regress/Tests/int2.stable.err
sql/test/pg_regress/Tests/int2.stable.out
sql/test/pg_regress/Tests/int4.stable.err
sql/test/pg_regress/Tests/int4.stable.out
sql/test/pg_regress/Tests/int8.stable.err
sql/test/pg_regress/Tests/int8.stable.out
sql/test/pg_regress/Tests/interval.stable.err
sql/test/pg_regress/Tests/interval.stable.out
sql/test/pg_regress/Tests/join.stable.err
sql/test/pg_regress/Tests/join.stable.out
sql/test/pg_regress/Tests/limit.stable.err
sql/test/pg_regress/Tests/limit.stable.out
sql/test/pg_regress/Tests/load.SQL.bat
sql/test/pg_regress/Tests/load.SQL.sh
sql/test/pg_regress/Tests/lseg.stable.err
sql/test/pg_regress/Tests/lseg.stable.out
sql/test/pg_regress/Tests/mule_internal.stable.err
sql/test/pg_regress/Tests/mule_internal.stable.out
sql/test/pg_regress/Tests/name.stable.err
sql/test/pg_regress/Tests/name.stable.out
sql/test/pg_regress/Tests/namespace.stable.err
sql/test/pg_regress/Tests/namespace.stable.out
sql/test/pg_regress/Tests/numeric.stable.err
sql/test/pg_regress/Tests/numeric.stable.out
sql/test/pg_regress/Tests/numeric_big.stable.err
sql/test/pg_regress/Tests/numeric_big.stable.out
sql/test/pg_regress/Tests/numerology.stable.err
sql/test/pg_regress/Tests/numerology.stable.out
sql/test/pg_regress/Tests/oid.stable.err
sql/test/pg_regress/Tests/oid.stable.out
sql/test/pg_regress/Tests/oidjoins.stable.err
sql/test/pg_regress/Tests/oidjoins.stable.out
sql/test/pg_regress/Tests/opr_sanity.stable.err
sql/test/pg_regress/Tests/opr_sanity.stable.out
sql/test/pg_regress/Tests/path.stable.err
sql/test/pg_regress/Tests/path.stable.out
sql/test/pg_regress/Tests/plpgsql.stable.err
sql/test/pg_regress/Tests/plpgsql.stable.out
sql/test/pg_regress/Tests/point.stable.err
sql/test/pg_regress/Tests/point.stable.out
sql/test/pg_regress/Tests/polygon.stable.err
sql/test/pg_regress/Tests/polygon.stable.out
sql/test/pg_regress/Tests/polymorphism.stable.err
sql/test/pg_regress/Tests/polymorphism.stable.out
sql/test/pg_regress/Tests/portals.stable.err
sql/test/pg_regress/Tests/portals.stable.out
sql/test/pg_regress/Tests/portals_p2.stable.err
sql/test/pg_regress/Tests/portals_p2.stable.out
sql/test/pg_regress/Tests/prepare.stable.err
sql/test/pg_regress/Tests/prepare.stable.out
sql/test/pg_regress/Tests/privileges.stable.err
sql/test/pg_regress/Tests/privileges.stable.out
sql/test/pg_regress/Tests/random.stable.err
sql/test/pg_regress/Tests/random.stable.out
sql/test/pg_regress/Tests/rangefuncs.stable.err
sql/test/pg_regress/Tests/rangefuncs.stable.out
sql/test/pg_regress/Tests/reltime.stable.err
sql/test/pg_regress/Tests/reltime.stable.out
sql/test/pg_regress/Tests/rowtypes.stable.err
sql/test/pg_regress/Tests/rowtypes.stable.out
sql/test/pg_regress/Tests/rules.stable.err
sql/test/pg_regress/Tests/rules.stable.out
sql/test/pg_regress/Tests/sanity_check.stable.err
sql/test/pg_regress/Tests/sanity_check.stable.out
sql/test/pg_regress/Tests/select.stable.err
sql/test/pg_regress/Tests/select.stable.out
sql/test/pg_regress/Tests/select_distinct.stable.err
sql/test/pg_regress/Tests/select_distinct.stable.out
sql/test/pg_regress/Tests/select_distinct_on.stable.err
sql/test/pg_regress/Tests/select_distinct_on.stable.out
sql/test/pg_regress/Tests/select_having.stable.err
sql/test/pg_regress/Tests/select_having.stable.out
sql/test/pg_regress/Tests/select_implicit.stable.err
sql/test/pg_regress/Tests/select_implicit.stable.out
sql/test/pg_regress/Tests/select_into.stable.err
sql/test/pg_regress/Tests/select_into.stable.out
sql/test/pg_regress/Tests/select_views.stable.err
sql/test/pg_regress/Tests/select_views.stable.out
sql/test/pg_regress/Tests/sequence.stable.err
sql/test/pg_regress/Tests/sequence.stable.out
sql/test/pg_regress/Tests/sql_ascii.stable.err
sql/test/pg_regress/Tests/sql_ascii.stable.out
sql/test/pg_regress/Tests/stats.stable.err
sql/test/pg_regress/Tests/stats.stable.out
sql/test/pg_regress/Tests/strings.stable.err
sql/test/pg_regress/Tests/strings.stable.out
sql/test/pg_regress/Tests/strings_cast.stable.err
sql/test/pg_regress/Tests/strings_cast.stable.out
sql/test/pg_regress/Tests/strings_concat.stable.err
sql/test/pg_regress/Tests/strings_concat.stable.out
sql/test/pg_regress/Tests/strings_like.stable.out
sql/test/pg_regress/Tests/subselect.stable.err
sql/test/pg_regress/Tests/subselect.stable.out
sql/test/pg_regress/Tests/temp.stable.err
sql/test/pg_regress/Tests/temp.stable.out
sql/test/pg_regress/Tests/text.stable.err
sql/test/pg_regress/Tests/text.stable.out
sql/test/pg_regress/Tests/time.stable.err
sql/test/pg_regress/Tests/time.stable.out
sql/test/pg_regress/Tests/timestamp.stable.err
sql/test/pg_regress/Tests/timestamp.stable.out
sql/test/pg_regress/Tests/timestamptz.stable.err
sql/test/pg_regress/Tests/timestamptz.stable.out
sql/test/pg_regress/Tests/timetz.stable.err
sql/test/pg_regress/Tests/timetz.stable.out
sql/test/pg_regress/Tests/tinterval.stable.err
sql/test/pg_regress/Tests/tinterval.stable.out
sql/test/pg_regress/Tests/transactions.stable.err
sql/test/pg_regress/Tests/transactions.stable.out
sql/test/pg_regress/Tests/triggers.stable.err
sql/test/pg_regress/Tests/triggers.stable.out
sql/test/pg_regress/Tests/truncate.stable.err
sql/test/pg_regress/Tests/truncate.stable.out
sql/test/pg_regress/Tests/type_sanity.stable.err
sql/test/pg_regress/Tests/type_sanity.stable.out
sql/test/pg_regress/Tests/union.stable.err
sql/test/pg_regress/Tests/union.stable.out
sql/test/pg_regress/Tests/update.stable.err
sql/test/pg_regress/Tests/update.stable.out
sql/test/pg_regress/Tests/vacuum.stable.err
sql/test/pg_regress/Tests/vacuum.stable.out
sql/test/pg_regress/Tests/varchar.stable.err
sql/test/pg_regress/Tests/varchar.stable.out
sql/test/pg_regress/Tests/without_oid.stable.err
sql/test/pg_regress/Tests/without_oid.stable.out
Branch: RIntegration-default
Log Message:
merge
diffs (truncated from 76478 to 300 lines):
diff --git a/clients/R/MonetDB.R/DESCRIPTION b/clients/R/MonetDB.R/DESCRIPTION
--- a/clients/R/MonetDB.R/DESCRIPTION
+++ b/clients/R/MonetDB.R/DESCRIPTION
@@ -1,6 +1,6 @@
Package: MonetDB.R
Version: 0.9.3
-Date: 2013-06-10
+Date: 2013-06-12
Title: Connect MonetDB to R
Authors@R: c(person("Hannes Muehleisen", role = c("aut", "cre"),email =
"[email protected]"),
person("Thomas Lumley", role = "ctb"),
diff --git a/clients/R/MonetDB.R/NEWS b/clients/R/MonetDB.R/NEWS
--- a/clients/R/MonetDB.R/NEWS
+++ b/clients/R/MonetDB.R/NEWS
@@ -1,5 +1,6 @@
0.9.3
- Remove trailing slashes for monetdb.program.path parameter for
monetdb.server.setup (Thanks, Anthony!)
+- fixed monetdbd.liststatus (Thanks, Bart)
0.9.2
- monetdb_queryinfo method to find out things about an arbitrary query cheaply
diff --git a/clients/R/MonetDB.R/R/control.R b/clients/R/MonetDB.R/R/control.R
--- a/clients/R/MonetDB.R/R/control.R
+++ b/clients/R/MonetDB.R/R/control.R
@@ -236,7 +236,8 @@ monetdbd.liststatus <- monetdb.liststatu
lines <- lines[grepl("^=sabdb:2:", lines)] # make sure we get a db list
here, protocol v.2
lines <- sub("=sabdb:2:", "", lines, fixed=T)
# convert value into propert types etc
- dbdf <- as.data.frame(do.call("rbind", strsplit(lines, ", ", fixed=T)),
stringsAsFactors=F)
+ dbdf <- as.data.frame(do.call("rbind", strsplit(lines, ",", fixed=T)),
stringsAsFactors=F)
+
names(dbdf) <- c("dbname", "uri", "locked", "state", "scenarios",
"startCounter", "stopCounter",
"crashCounter", "avgUptime", "maxUptime", "minUptime",
"lastCrash", "lastStart", "lastStop",
"crashAvg1", "crashAvg10", "crashAvg30")
diff --git a/clients/R/MonetDB.R/src/mapi.c b/clients/R/MonetDB.R/src/mapi.c
--- a/clients/R/MonetDB.R/src/mapi.c
+++ b/clients/R/MonetDB.R/src/mapi.c
@@ -257,8 +257,8 @@ SEXP mapiRead(SEXP conn) {
while (response_buf_offset + block_length > response_buf_len) {
response_buf_len += ALLOCSIZE;
if (DEBUG) {
- printf("II: Reallocating memory, new size
"SZFMT"\n",
- response_buf_len);
+ printf("II: Reallocating memory, new size
%lu\n",
+ (unsigned long)
response_buf_len);
}
response_buf = realloc(response_buf, response_buf_len);
if (response_buf == NULL) {
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
@@ -428,7 +428,7 @@ int log_sequence(logger *lg, int seq, ln
int log_tend(logger *lg);
int log_tstart(logger *lg);
log_bid logger_add_bat(logger *lg, BAT *b, char *name);
-size_t logger_changes(logger *lg);
+lng logger_changes(logger *lg);
int logger_cleanup(logger *lg);
logger *logger_create(int debug, char *fn, char *logdir, int version,
preversionfix_fptr prefuncp, postversionfix_fptr postfuncp);
void logger_del_bat(logger *lg, log_bid bid);
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -108,7 +108,7 @@ static char *log_commands[] = {
typedef struct logformat_t {
char flag;
int tid;
- int nr;
+ lng nr;
} logformat;
#define LOGFILE "log"
@@ -138,10 +138,24 @@ logbat_new(int tt, BUN size)
}
static int
+log_read_format_old(logger *l, logformat *data)
+{
+ int nr = 0;
+ int ok = mnstr_read(l->log, &data->flag, 1, 1) == 1 &&
+ mnstr_readInt(l->log, &nr) == 1 &&
+ mnstr_readInt(l->log, &data->tid) == 1;
+ data->nr = nr;
+ return ok;
+}
+
+static int
log_read_format(logger *l, logformat *data)
{
+ if (l->postfuncp) /* we need to convert from the old logformat,
+ needs to be removed once we released
Aug2014 */
+ return log_read_format_old(l, data);
return mnstr_read(l->log, &data->flag, 1, 1) == 1 &&
- mnstr_readInt(l->log, &data->nr) == 1 &&
+ mnstr_readLng(l->log, &data->nr) == 1 &&
mnstr_readInt(l->log, &data->tid) == 1;
}
@@ -149,7 +163,7 @@ static int
log_write_format(logger *l, logformat *data)
{
if (mnstr_write(l->log, &data->flag, 1, 1) == 1 &&
- mnstr_writeInt(l->log, data->nr) &&
+ mnstr_writeLng(l->log, data->nr) &&
mnstr_writeInt(l->log, data->tid))
return LOG_OK;
fprintf(stderr, "!ERROR: log_write_format: write failed\n");
@@ -246,7 +260,7 @@ la_bat_clear(logger *lg, logaction *la)
static int
log_read_seq(logger *lg, logformat *l)
{
- int seq = l->nr;
+ lng seq = l->nr;
lng val;
BUN p;
@@ -273,7 +287,7 @@ log_read_updates(logger *lg, trans *tr,
int ht = -1, tt = -1, hseq = 0, tseq = 0;
if (lg->debug & 1)
- fprintf(stderr, "#logger found log_read_updates %s %s %d\n",
name, l->flag == LOG_INSERT ? "insert" : l->flag == LOG_DELETE ? "delete" :
"update", l->nr);
+ fprintf(stderr, "#logger found log_read_updates %s %s " LLFMT
"\n", name, l->flag == LOG_INSERT ? "insert" : l->flag == LOG_DELETE ? "delete"
: "update", l->nr);
if (b) {
ht = b->htype;
@@ -310,7 +324,8 @@ log_read_updates(logger *lg, trans *tr,
if (tt == TYPE_oid && lg->read32bitoid)
rt = BATatoms[TYPE_int].atomRead;
#endif
- r = BATnew(ht, tt, l->nr);
+ assert(l->nr <= (lng) BUN_MAX);
+ r = BATnew(ht, tt, (BUN) l->nr);
if (hseq)
BATseqbase(r, 0);
@@ -578,10 +593,11 @@ log_read_use(logger *lg, trans *tr, logf
static void
la_bat_use(logger *lg, logaction *la)
{
- log_bid bid = la->nr;
+ log_bid bid = (log_bid) la->nr;
BAT *b = BATdescriptor(bid);
BUN p;
+ assert(la->nr <= (lng) INT_MAX);
if (!b) {
GDKerror("logger: could not use bat (%d) for %s\n", (int) bid,
la->name);
return;
@@ -806,7 +822,7 @@ logger_readlog(logger *lg, char *filenam
fprintf(stderr, "%s", log_commands[(int)
l.flag]);
else
fprintf(stderr, "%d", l.flag);
- fprintf(stderr, " %d %d", l.tid, l.nr);
+ fprintf(stderr, " %d " LLFMT, l.tid, l.nr);
if (name)
fprintf(stderr, " %s", name);
fprintf(stderr, "\n");
@@ -816,9 +832,10 @@ logger_readlog(logger *lg, char *filenam
tr = tr_find(tr, l.tid);
switch (l.flag) {
case LOG_START:
+ assert(l.nr <= (lng) INT_MAX);
if (l.nr > lg->tid)
- lg->tid = l.nr;
- tr = tr_create(tr, l.nr);
+ lg->tid = (int)l.nr;
+ tr = tr_create(tr, (int)l.nr);
if (lg->debug & 1)
fprintf(stderr, "#logger tstart %d\n", tr->tid);
break;
@@ -1637,7 +1654,7 @@ logger_cleanup(logger *lg)
return LOG_OK;
}
-size_t
+lng
logger_changes(logger *lg)
{
return lg->changes;
@@ -1757,7 +1774,6 @@ log_delta(logger *lg, BAT *b, char *name
int ok = GDK_SUCCEED;
logformat l;
BUN p;
- BUN nr;
if (lg->debug & 128) {
/* logging is switched off */
@@ -1765,9 +1781,7 @@ log_delta(logger *lg, BAT *b, char *name
}
l.tid = lg->tid;
- nr = (BUNlast(b) - BUNfirst(b));
- assert(nr <= GDK_int_max);
- l.nr = (int) nr;
+ l.nr = (BUNlast(b) - BUNfirst(b));
lg->changes += l.nr;
if (l.nr) {
@@ -1789,7 +1803,7 @@ log_delta(logger *lg, BAT *b, char *name
}
if (lg->debug & 1)
- fprintf(stderr, "#Logged %s %d inserts\n", name, l.nr);
+ fprintf(stderr, "#Logged %s " LLFMT " inserts\n", name,
l.nr);
}
if (ok == GDK_FAIL)
fprintf(stderr, "!ERROR: log_delta: write failed\n");
@@ -1809,7 +1823,7 @@ log_bat(logger *lg, BAT *b, char *name)
}
l.tid = lg->tid;
- l.nr = (int) (BUNlast(b) - b->batInserted);
+ l.nr = (BUNlast(b) - b->batInserted);
lg->changes += l.nr;
if (l.nr) {
@@ -1828,7 +1842,7 @@ log_bat(logger *lg, BAT *b, char *name)
!isVIEW(b)) {
const void *t = BUNtail(bi, b->batInserted);
- ok = wt(t, lg->log, l.nr);
+ ok = wt(t, lg->log, (size_t)l.nr);
} else {
for (p = b->batInserted; p < BUNlast(b) && ok ==
GDK_SUCCEED; p++) {
const void *h = BUNhead(bi, p);
@@ -1840,9 +1854,9 @@ log_bat(logger *lg, BAT *b, char *name)
}
if (lg->debug & 1)
- fprintf(stderr, "#Logged %s %d inserts\n", name, l.nr);
+ fprintf(stderr, "#Logged %s " LLFMT " inserts\n", name,
l.nr);
}
- l.nr = (int) (b->batFirst - b->batDeleted);
+ l.nr = (b->batFirst - b->batDeleted);
lg->changes += l.nr;
if (l.nr && ok == GDK_SUCCEED) {
@@ -1864,7 +1878,7 @@ log_bat(logger *lg, BAT *b, char *name)
}
if (lg->debug & 1)
- fprintf(stderr, "#Logged %s %d deletes\n", name, l.nr);
+ fprintf(stderr, "#Logged %s " LLFMT " deletes\n", name,
l.nr);
}
if (ok == GDK_FAIL)
fprintf(stderr, "!ERROR: log_bat: write failed\n");
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -25,7 +25,7 @@
typedef struct logaction {
int type; /* type of change */
- int nr;
+ lng nr;
int ht; /* vid(-1),void etc */
int tt;
lng id;
@@ -49,7 +49,7 @@ typedef void (*postversionfix_fptr)(void
typedef struct logger {
int debug;
- size_t changes;
+ lng changes;
int version;
lng id;
int tid;
@@ -104,7 +104,7 @@ gdk_export void logger_destroy(logger *l
gdk_export int logger_exit(logger *lg);
gdk_export int logger_restart(logger *lg);
gdk_export int logger_cleanup(logger *lg);
-gdk_export size_t logger_changes(logger *lg);
+gdk_export lng logger_changes(logger *lg);
gdk_export int logger_sequence(logger *lg, int seq, lng *id);
/* todo pass the transaction id */
diff --git a/gdk/gdk_sample.c b/gdk/gdk_sample.c
--- a/gdk/gdk_sample.c
+++ b/gdk/gdk_sample.c
@@ -18,9 +18,20 @@
*/
/*
- * @a Lefteris Sidirourgos
+ * @a Lefteris Sidirourgos, Hannes Muehleisen
* @* Low level sample facilities
*
+ * This sampling implementation generates a sorted set of OIDs by calling the
+ * random number generator, and uses a binary tree to eliminate duplicates.
+ * The elements of the tree are then used to create a sorted sample BAT.
+ * This implementation has a logarithmic complexity that only depends on the
+ * sample size.
+ *
+ * There is a pathological case when the sample size is almost the size of the
BAT.
+ * Then, many collisions occur and performance degrades. To catch this, we
+ * switch to antiset semantics when the sample size is larger than half the BAT
+ * size. Then, we generate the values that should be omitted from the sample.
+ *
*/
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list