Changeset: dd824d804954 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dd824d804954
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk_logger.c
gdk/gdk_logger.h
gdk/gdk_sample.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: geo
Log Message:
Merge with default branch.
diffs (truncated from 75893 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
@@ -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
@@ -1654,7 +1654,7 @@ logger_cleanup(logger *lg)
return LOG_OK;
}
-size_t
+lng
logger_changes(logger *lg)
{
return lg->changes;
@@ -1782,7 +1782,7 @@ log_delta(logger *lg, BAT *b, char *name
l.tid = lg->tid;
l.nr = (BUNlast(b) - BUNfirst(b));
- lg->changes += (size_t)l.nr;
+ lg->changes += l.nr;
if (l.nr) {
BATiter bi = bat_iterator(b);
@@ -1824,7 +1824,7 @@ log_bat(logger *lg, BAT *b, char *name)
l.tid = lg->tid;
l.nr = (BUNlast(b) - b->batInserted);
- lg->changes += (size_t)l.nr;
+ lg->changes += l.nr;
if (l.nr) {
BATiter bi = bat_iterator(b);
@@ -1857,7 +1857,7 @@ log_bat(logger *lg, BAT *b, char *name)
fprintf(stderr, "#Logged %s " LLFMT " inserts\n", name,
l.nr);
}
l.nr = (b->batFirst - b->batDeleted);
- lg->changes += (size_t)l.nr;
+ lg->changes += l.nr;
if (l.nr && ok == GDK_SUCCEED) {
BATiter bi = bat_iterator(b);
@@ -1897,7 +1897,7 @@ log_bat_clear(logger *lg, char *name)
l.nr = 1;
l.tid = lg->tid;
- lg->changes += (size_t)l.nr;
+ lg->changes += l.nr;
l.flag = LOG_CLEAR;
if (log_write_format(lg, &l) == LOG_ERR ||
diff --git a/gdk/gdk_logger.h b/gdk/gdk_logger.h
--- a/gdk/gdk_logger.h
+++ b/gdk/gdk_logger.h
@@ -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
@@ -27,6 +27,11 @@
* 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.
+ *
*/
#include "monetdb_config.h"
@@ -92,6 +97,22 @@ static void OIDTreeToBAT(struct oidtreen
OIDTreeToBAT(node->right, bat);
}
+/* Antiset traversal, give us all values but the ones in the tree */
+static void OIDTreeToBATAntiset(struct oidtreenode* node, BAT *bat, BUN start,
BUN stop) {
+ BUN noid;
+ if (node->left != NULL)
+ OIDTreeToBATAntiset(node->left, bat, start, node->oid);
+ else
+ for (noid = start+1; noid < node->oid; noid++)
+ ((oid *) bat->T->heap.base)[bat->batFirst +
bat->batCount++] = noid;
+
+ if (node->right != NULL)
+ OIDTreeToBATAntiset(node->right, bat, node->oid, stop);
+ else
+ for (noid = node->oid+1; noid < stop; noid++)
+ ((oid *) bat->T->heap.base)[bat->batFirst +
bat->batCount++] = noid;
+}
+
static void OIDTreeDestroy(struct oidtreenode* node) {
if (node == NULL) {
return;
@@ -110,7 +131,7 @@ static void OIDTreeDestroy(struct oidtre
BAT *
BATsample(BAT *b, BUN n) {
BAT *bn;
- BUN cnt;
+ BUN cnt, slen;
BUN rescnt = 0;
struct oidtreenode* tree = NULL;
@@ -128,7 +149,7 @@ BATsample(BAT *b, BUN n) {
BATseqbase(bn, 0);
BATseqbase(BATmirror(bn), 0);
/* sample size is larger than the input BAT, return all oids */
- } else if (cnt <= n) {
+ } else if (n >= cnt) {
bn = BATnew(TYPE_void, TYPE_void, cnt);
BATsetcount(bn, cnt);
BATseqbase(bn, 0);
@@ -136,9 +157,13 @@ BATsample(BAT *b, BUN n) {
} else {
BUN minoid = b->hseqbase;
BUN maxoid = b->hseqbase + cnt;
- //oid *o;
- bn = BATnew(TYPE_void, TYPE_oid, n);
-
+ /* if someone samples more than half of our tree, we do the
antiset */
+ bit antiset = n > cnt/2;
+ slen = n;
+ if (antiset)
+ n = cnt - n;
+
+ bn = BATnew(TYPE_void, TYPE_oid, slen);
if (bn == NULL ) {
GDKerror("#BATsample: memory allocation error");
return NULL;
@@ -162,10 +187,14 @@ BATsample(BAT *b, BUN n) {
tree = ttree;
rescnt++;
}
- OIDTreeToBAT(tree, bn);
+ if (!antiset) {
+ OIDTreeToBAT(tree, bn);
+ } else {
+ OIDTreeToBATAntiset(tree, bn, minoid-1, maxoid+1);
+ }
OIDTreeDestroy(tree);
- BATsetcount(bn, n);
+ BATsetcount(bn, slen);
bn->trevsorted = bn->batCount <= 1;
bn->tsorted = 1;
bn->tkey = 1;
diff --git a/sql/test/pg_regress/Tests/All b/sql/test/pg_regress/Tests/All
--- a/sql/test/pg_regress/Tests/All
+++ b/sql/test/pg_regress/Tests/All
@@ -1,14 +1,14 @@
-#load
-#
-## these need to go here, later tests depend on their tables to exist
-#char
-#varchar
-#text
-#
-#strings_concat
-#strings_cast
-#strings_like
-#
+load
+
+# these need to go here, later tests depend on their tables to exist
+char
+varchar
+text
+
+strings_concat
+strings_cast
+strings_like
+
#pgregress set
# abstime NOT supported ABSTIME, deprecated in Postgresql
aggregates
@@ -19,7 +19,7 @@ boolean
box
btree_index
case
-char
+##char
circle
cluster
comments
@@ -86,13 +86,13 @@ select_views
sequence
sql_ascii
stats
-strings_cast
-strings_concat
-strings_like
+##strings_cast
+##strings_concat
+##strings_like
strings
subselect
temp
-text
+##text
time
timestamp
timestamptz
@@ -105,5 +105,5 @@ type_sanity
union
update
vacuum
-varchar
+##varchar
without_oid
diff --git a/sql/test/pg_regress/Tests/aggregates.stable.err
b/sql/test/pg_regress/Tests/aggregates.stable.err
--- a/sql/test/pg_regress/Tests/aggregates.stable.err
+++ b/sql/test/pg_regress/Tests/aggregates.stable.err
@@ -1,9 +1,9 @@
stderr of test 'aggregates` in directory 'sql/test/pg_regress` itself:
-# 17:09:48 >
-# 17:09:48 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=38959" "--set"
"mapi_usock=/var/tmp/mtest-1142/.s.monetdb.38959" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress" "--set"
"mal_listing=0"
-# 17:09:48 >
+# 17:11:18 >
+# 17:11:18 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set"
"mapi_open=true" "--set" "mapi_port=38959" "--set"
"mapi_usock=/var/tmp/mtest-1142/.s.monetdb.38959" "--set" "monet_prompt="
"--forcemito" "--set" "mal_listing=2"
"--dbpath=/ufs/dinther/INSTALL/var/MonetDB/mTests_sql_test_pg_regress" "--set"
"mal_listing=0"
+# 17:11:18 >
# builtin opt gdk_dbpath = /ufs/dinther/INSTALL/var/monetdb5/dbfarm/demo
# builtin opt gdk_debug = 0
@@ -25,213 +25,12 @@ stderr of test 'aggregates` in directory
# cmdline opt mal_listing = 0
# cmdline opt gdk_debug = 536870922
-# 17:09:48 >
-# 17:09:48 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-1142" "--port=38959"
-# 17:09:48 >
+# 17:11:19 >
+# 17:11:19 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-1142" "--port=38959"
+# 17:11:19 >
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT avg(four) AS avg_1 FROM onek;
-ERROR = !SELECT: no such table 'onek'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT avg(a) AS avg_32 FROM aggtest WHERE a < 100;
-ERROR = !SELECT: no such table 'aggtest'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT cast(avg(b) as numeric(10,3)) AS avg_107_943 FROM aggtest;
-ERROR = !SELECT: no such table 'aggtest'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT avg(gpa) AS avg_3_4 FROM student;
-ERROR = !SELECT: no such table 'student'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT sum(four) AS sum_1500 FROM onek;
-ERROR = !SELECT: no such table 'onek'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT sum(a) AS sum_198 FROM aggtest;
-ERROR = !SELECT: no such table 'aggtest'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT sum(b) AS avg_431_773 FROM aggtest;
-ERROR = !SELECT: no such table 'aggtest'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT sum(gpa) AS avg_6_8 FROM student;
-ERROR = !SELECT: no such table 'student'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT max(four) AS max_3 FROM onek;
-ERROR = !SELECT: no such table 'onek'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT max(a) AS max_100 FROM aggtest;
-ERROR = !SELECT: no such table 'aggtest'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT max(aggtest.b) AS max_324_78 FROM aggtest;
-ERROR = !SELECT: no such table 'aggtest'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT max(student.gpa) AS max_3_7 FROM student;
-ERROR = !SELECT: no such table 'student'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT count(four) AS cnt_1000 FROM onek;
-ERROR = !SELECT: no such table 'onek'
-QUERY = SELECT count(four) AS cnt_1000 FROM onek;
-ERROR = !SELECT: no such table 'onek'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = SELECT count(DISTINCT four) AS cnt_4 FROM onek;
-ERROR = !SELECT: no such table 'onek'
-MAPI = (monetdb) /var/tmp/mtest-1142/.s.monetdb.38959
-QUERY = select ten, count(*), sum(four) from onek
- group by ten order by ten;
-ERROR = !SELECT: no such table 'onek'
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list