Changeset: 706a25eb9ddd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=706a25eb9ddd
Modified Files:
clients/Tests/exports.stable.out
clients/python2/monetdb/control.py
clients/python2/monetdb/mapi.py
clients/python2/monetdb/sql/connections.py
clients/python2/test/run.sh
clients/python3/monetdb/mapi.py
clients/python3/test/dbapi20.py
clients/python3/test/runtests.py
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_bat.c
gdk/gdk_calc.h
gdk/gdk_group.c
gdk/gdk_heap.c
gdk/gdk_search.c
gdk/gdk_search.h
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_resource.c
monetdb5/mal/mal_resource.h
monetdb5/modules/kernel/aggr.c
monetdb5/modules/kernel/aggr.mal
monetdb5/modules/kernel/aggr.mal.sh
monetdb5/modules/kernel/algebra.mx
monetdb5/modules/kernel/bat5.c
monetdb5/modules/kernel/group.mx
monetdb5/modules/mal/const.c
monetdb5/optimizer/Tests/tst4631.stable.out
monetdb5/optimizer/Tests/tst4730.stable.out
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql.mx
sql/include/sql_catalog.h
sql/server/rel_optimizer.c
sql/server/rel_select.c
sql/server/rel_updates.c
sql/storage/bat/bat_storage.c
sql/storage/sql_catalog.c
sql/storage/store.c
sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
sql/test/BugTracker-2013/Tests/subtract-one-year.Bug-3215.stable.err
sql/test/BugTracker-2013/Tests/subtract-one-year.Bug-3215.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/Tests/order_by_complex_exp.stable.out
Branch: rdf
Log Message:
Merge with the default branch
diffs (truncated from 4080 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
@@ -121,7 +121,7 @@ int BATgetaccess(BAT *b);
PROPrec *BATgetprop(BAT *b, int idx);
gdk_return BATgroup(BAT **groups, BAT **extents, BAT **histo, BAT *b, BAT *g,
BAT *e, BAT *h);
const char *BATgroupaggrinit(const BAT *b, const BAT *g, const BAT *e, const
BAT *s, oid *minp, oid *maxp, BUN *ngrpp, BUN *startp, BUN *endp, BUN *cntp,
const oid **candp, const oid **candendp);
-BAT *BATgroupavg(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int
abort_on_error);
+gdk_return BATgroupavg(BAT **bnp, BAT **cntsp, BAT *b, BAT *g, BAT *e, BAT *s,
int tp, int skip_nils, int abort_on_error);
BAT *BATgroupcount(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int
abort_on_error);
BAT *BATgroupmax(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int
abort_on_error);
BAT *BATgroupmedian(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int skip_nils, int
abort_on_error);
@@ -607,8 +607,10 @@ char *mapi_unquote(char *msg);
MapiMsg mapi_virtual_result(MapiHdl hdl, int columns, const char
**columnnames, const char **columntypes, const int *columnlengths, int
tuplecount, const char ***tuples);
# monetdb5
-str AGGRavg2_dbl(bat *retval, bat *bid, bat *eid);
-str AGGRavg3_dbl(bat *retval, bat *bid, bat *gid, bat *eid);
+str AGGRavg12_dbl(bat *retval, bat *bid, bat *eid);
+str AGGRavg13_dbl(bat *retval, bat *bid, bat *gid, bat *eid);
+str AGGRavg22_dbl(bat *retval1, bat *retval2, bat *bid, bat *eid);
+str AGGRavg23_dbl(bat *retval1, bat *retval2, bat *bid, bat *gid, bat *eid);
str AGGRcount2(bat *retval, bat *bid, bat *eid, bit *ignorenils);
str AGGRcount2nils(bat *retval, bat *bid, bat *eid);
str AGGRcount2nonils(bat *retval, bat *bid, bat *eid);
@@ -640,8 +642,10 @@ str AGGRstdev2_dbl(bat *retval, bat *bid
str AGGRstdev3_dbl(bat *retval, bat *bid, bat *gid, bat *eid);
str AGGRstdevp2_dbl(bat *retval, bat *bid, bat *eid);
str AGGRstdevp3_dbl(bat *retval, bat *bid, bat *gid, bat *eid);
-str AGGRsubavg_dbl(bat *retval, bat *bid, bat *gid, bat *eid, bit *skip_nils,
bit *abort_on_error);
-str AGGRsubavgcand_dbl(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid,
bit *skip_nils, bit *abort_on_error);
+str AGGRsubavg1_dbl(bat *retval, bat *bid, bat *gid, bat *eid, bit *skip_nils,
bit *abort_on_error);
+str AGGRsubavg1cand_dbl(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid,
bit *skip_nils, bit *abort_on_error);
+str AGGRsubavg2_dbl(bat *retval1, bat *retval2, bat *bid, bat *gid, bat *eid,
bit *skip_nils, bit *abort_on_error);
+str AGGRsubavg2cand_dbl(bat *retval1, bat *retval2, bat *bid, bat *gid, bat
*eid, bat *sid, bit *skip_nils, bit *abort_on_error);
str AGGRsubcount(bat *retval, bat *bid, bat *gid, bat *eid, bit *skip_nils);
str AGGRsubcountcand(bat *retval, bat *bid, bat *gid, bat *eid, bat *sid, bit
*skip_nils);
str AGGRsubmax(bat *retval, bat *bid, bat *gid, bat *eid, bit *skip_nils);
diff --git a/clients/python2/monetdb/control.py
b/clients/python2/monetdb/control.py
--- a/clients/python2/monetdb/control.py
+++ b/clients/python2/monetdb/control.py
@@ -29,7 +29,7 @@ class Control:
lock, unlock, destroy your databases and request status information.
"""
def __init__(self, hostname, port, passphrase):
- self.server = mapi.Server()
+ self.server = mapi.Connection()
self.server.connect(hostname, port, 'monetdb', passphrase,
'merovingian', 'control')
def _send_command(self, database_name, command):
@@ -141,4 +141,4 @@ class Control:
return self.get("#defaults")
def neighbours(self):
- return self._send_command("anelosimus", "eximius")
\ No newline at end of file
+ return self._send_command("anelosimus", "eximius")
diff --git a/clients/python2/monetdb/mapi.py b/clients/python2/monetdb/mapi.py
--- a/clients/python2/monetdb/mapi.py
+++ b/clients/python2/monetdb/mapi.py
@@ -84,12 +84,7 @@ class Connection(object):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 0)
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
- try:
- self.socket.connect((hostname, port))
- except socket.error, error:
- (error_code, error_str) = error
- raise OperationalError(error_str + " (%s:%s)" % (self.hostname,
self.port))
-
+ self.socket.connect((hostname, port))
self.__login()
@@ -232,13 +227,10 @@ class Connection(object):
result = StringIO()
count = bytes
while count > 0:
- try:
- recv = self.socket.recv(count)
- if len(recv) == 0:
- time.sleep(1)
- #logger.debug("II: package size: %i payload: %s" % (len(recv),
recv))
- except socket.error, error:
- raise OperationalError(error[1])
+ recv = self.socket.recv(count)
+ if len(recv) == 0:
+ time.sleep(1)
+ #logger.debug("II: package size: %i payload: %s" % (len(recv),
recv))
count -= len(recv)
result.write(recv)
return result.getvalue()
@@ -256,11 +248,8 @@ class Connection(object):
flag = struct.pack( '<H', ( length << 1 ) + last )
#logger.debug("II: sending %i bytes, last: %s" % (length,
bool(last)))
#logger.debug("TX: %s" % data)
- try:
- self.socket.send(flag)
- self.socket.send(data)
- except socket.error, error:
- raise OperationalError(error[1])
+ self.socket.send(flag)
+ self.socket.send(data)
pos += length
diff --git a/clients/python2/monetdb/sql/connections.py
b/clients/python2/monetdb/sql/connections.py
--- a/clients/python2/monetdb/sql/connections.py
+++ b/clients/python2/monetdb/sql/connections.py
@@ -44,7 +44,7 @@ class Connection(object):
username = user
if host is not None:
hostname = host
- self.mapi = mapi.Server()
+ self.mapi = mapi.Connection()
self.mapi.connect(hostname=hostname, port=int(port), username=username,
password=password, database=database, language="sql")
self.set_autocommit(autocommit)
diff --git a/clients/python2/test/run.sh b/clients/python2/test/run.sh
--- a/clients/python2/test/run.sh
+++ b/clients/python2/test/run.sh
@@ -7,4 +7,4 @@ export TSTPASSWORD="monetdb"
export TSTDEBUG="no"
nosetests ./runtests.py
-nosetests ./test_control.py
\ No newline at end of file
+nosetests ./test_control.py
diff --git a/clients/python3/monetdb/mapi.py b/clients/python3/monetdb/mapi.py
--- a/clients/python3/monetdb/mapi.py
+++ b/clients/python3/monetdb/mapi.py
@@ -265,7 +265,6 @@ class Connection(object):
if self.socket:
self.socket.close()
-
#backwards compatiblity
Server = Connection
diff --git a/clients/python3/test/dbapi20.py b/clients/python3/test/dbapi20.py
--- a/clients/python3/test/dbapi20.py
+++ b/clients/python3/test/dbapi20.py
@@ -878,6 +878,7 @@ class DatabaseAPI20Test(unittest.TestCas
self.assertTrue(hasattr(self.driver,'ROWID'),
'module.ROWID must be defined.'
)
+
def test_utf8(self):
con = self._connect()
try:
diff --git a/clients/python3/test/runtests.py b/clients/python3/test/runtests.py
--- a/clients/python3/test/runtests.py
+++ b/clients/python3/test/runtests.py
@@ -94,23 +94,9 @@ if __name__ == '__main__':
suites = [
Test_Capabilities,
Test_DBAPI20,
- ]
-
- for suite in suites:
- tests = unittest.TestLoader().loadTestsFromTestCase(suite)
- TextTestRunnerNoTime(verbosity=3).run(tests)
-
-
-if __name__ == '__main__':
- suites = [
- Test_Capabilities,
- Test_DBAPI20,
test_pythonize.TestPythonize,
]
for suite in suites:
tests = unittest.TestLoader().loadTestsFromTestCase(suite)
TextTestRunnerNoTime(verbosity=3).run(tests)
-
-
-
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -552,6 +552,26 @@ typedef size_t BUN;
#endif
#define BUN_MAX (BUN_NONE - 1) /* maximum allowed size of a BAT */
+#define BUN1 1
+#define BUN2 2
+#define BUN4 4
+#if SIZEOF_BUN > 4
+#define BUN8 8
+#endif
+typedef uint8_t BUN1type;
+typedef uint16_t BUN2type;
+typedef uint32_t BUN4type;
+#if SIZEOF_BUN > 4
+typedef uint64_t BUN8type;
+#endif
+#define BUN1_NONE ((BUN1type) 0xFF)
+#define BUN2_NONE ((BUN2type) 0xFFFF)
+#define BUN4_NONE ((BUN4type) 0xFFFFFFFF)
+#if SIZEOF_BUN > 4
+#define BUN8_NONE ((BUN8type) LL_CONSTANT(0xFFFFFFFFFFFFFFFF))
+#endif
+
+
/*
* @- Checking and Error definitions:
*/
@@ -634,10 +654,12 @@ typedef struct {
typedef struct {
int type; /* type of index entity */
+ int width; /* width of hash entries */
+ BUN nil; /* nil representation */
BUN lim; /* collision list size */
BUN mask; /* number of hash buckets-1 (power of 2) */
- BUN *hash; /* hash table */
- BUN *link; /* collision list */
+ void *Hash; /* hash table */
+ void *Link; /* collision list */
Heap *heap; /* heap where the hash is stored */
} Hash;
@@ -2904,19 +2926,19 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
#define GDK_STREQ(l,r) (*(char*) (l) == *(char*) (r) && !strcmp(l,r))
#define HASHloop(bi, h, hb, v) \
- for (hb = (h)->hash[HASHprobe((h), v)]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget(h, HASHprobe((h), v)); \
+ hb != HASHnil(h); \
+ hb = HASHgetlink(h,hb)) \
if (ATOMcmp(h->type, v, BUNhead(bi, hb)) == 0)
#define HASHloop_str_hv(bi, h, hb, v) \
- for (hb = (h)->hash[((BUN *) (v))[-1]&(h)->mask]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget((h),((BUN *) (v))[-1]&(h)->mask); \
+ hb != HASHnil(h); \
+ hb = HASHgetlink(h,hb)) \
if (GDK_STREQ(v, BUNhvar(bi, hb)))
#define HASHloop_str(bi, h, hb, v) \
- for (hb = (h)->hash[strHash(v)&(h)->mask]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget((h),strHash(v)&(h)->mask); \
+ hb != HASHnil(h); \
+ hb = HASHgetlink(h,hb)) \
if (GDK_STREQ(v, BUNhvar(bi, hb)))
/*
@@ -2927,8 +2949,8 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
* numbers instead of strings:
*/
#define HASHloop_fstr(bi, h, hb, idx, v) \
- for (hb = h->hash[strHash(v)&h->mask], idx =
strLocate((bi.b)->H->vheap,v); \
- hb != BUN_NONE; hb = h->link[hb]) \
+ for (hb = HASHget(h, strHash(v)&h->mask), idx =
strLocate((bi.b)->H->vheap,v); \
+ hb != HASHnil(h); hb = HASHgetlink(h,hb))
\
if (VarHeapValRaw((bi).b->H->heap.base, hb, (bi).b->H->width)
== idx)
/*
* The following example shows how the hashloop is used:
@@ -2958,20 +2980,20 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
* (HASHlooploc) or variable-sized (HASHloopvar).
*/
#define HASHlooploc(bi, h, hb, v) \
- for (hb = (h)->hash[HASHprobe(h, v)]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget(h, HASHprobe(h, v)); \
+ hb != HASHnil(h); \
+ hb = HASHgetlink(h,hb)) \
if (ATOMcmp(h->type, v, BUNhloc(bi, hb)) == 0)
#define HASHloopvar(bi, h, hb, v) \
- for (hb = (h)->hash[HASHprobe(h, v)]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget(h,HASHprobe(h, v)); \
+ hb != HASHnil(h); \
+ hb = HASHgetlink(h,hb)) \
if (ATOMcmp(h->type, v, BUNhvar(bi, hb)) == 0)
#define HASHloop_TYPE(bi, h, hb, v, TYPE) \
- for (hb = (h)->hash[hash_##TYPE(h, v)]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget(h, hash_##TYPE(h, v)); \
+ hb != HASHnil(h); \
+ hb = HASHgetlink(h,hb)) \
if (simple_EQ(v, BUNhloc(bi, hb), TYPE))
#define HASHloop_bit(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, bte)
@@ -2987,9 +3009,9 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
#define HASHloop_ptr(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, ptr)
#define HASHloop_any(bi, h, hb, v) \
- for (hb = (h)->hash[hash_any(h, v)]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
+ for (hb = HASHget(h, hash_any(h, v)); \
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list