Update of /cvsroot/monetdb/pathfinder/runtime
In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv30013/runtime
Modified Files:
Tag: XQFT
xrpc_common.mx
Log Message:
propagated changes of Monday Jan 04 2010
from the development trunk to the XQFT branch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010/01/04 - sjoerd: runtime/xrpc_common.mx,1.14
Changed the implementation of the offset heap for type string.
Before, the offset heap would contain values of type var_t (typically
equal in size to oid), so if there are lots of entries but not that
many different strings, a lot of space was wasted, since only the
lower few bytes of the values in the offset heap would be used, the
rest being zero.
In this version, the offset heap has a dynamic width. It starts off
as a single byte value, and when the offsets become too large to fit
in a single byte, the heap is upgraded to a short, then an int, and
finally (if the system uses 64 bit oids) to lng.
There are tags to mark this change:
before_variable_string_offset and after_variable_string_offset.
Only MonetDB* and pathfinder needed to be changes, so the tags are
only added there.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: xrpc_common.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/xrpc_common.mx,v
retrieving revision 1.13
retrieving revision 1.13.8.1
diff -u -d -r1.13 -r1.13.8.1
--- xrpc_common.mx 22 Jul 2009 07:40:29 -0000 1.13
+++ xrpc_common.mx 4 Jan 2010 15:15:38 -0000 1.13.8.1
@@ -461,7 +461,7 @@
oid end_pre = hdr_node_pre + pre_sizeT[hdr_node_pre];
while(++hdr_node_pre <= end_pre) {
if (pre_kindT[hdr_node_pre] == TEXT) {
- s = text_base +
(prop_textT[pre_propT[hdr_node_pre]] << GDK_VARSHIFT);
+ s = text_base + VarHeapVal(prop_textT,
pre_propT[hdr_node_pre], prop_text->T->width);
BUNappend(participants, s, FALSE);
}
}
@@ -484,7 +484,7 @@
oid end_pre = hdr_node_pre + pre_sizeT[hdr_node_pre];
while(++hdr_node_pre <= end_pre) {
if (pre_kindT[hdr_node_pre] == TEXT) {
- s = text_base +
(prop_textT[pre_propT[hdr_node_pre]] << GDK_VARSHIFT);
+ s = text_base + VarHeapVal(prop_textT,
pre_propT[hdr_node_pre], prop_text->T->width);
if (isqid) {
qid = GDKstrdup(s);
} else {
@@ -638,7 +638,7 @@
"is expected to have a simple value",
msg+strlen(XRPC_NS)+1, i, j, k);
goto cleanup;
}
- req->argval[req->nr_args] = text_base +
(prop_textT[pre_propT[val_node_pre]] << GDK_VARSHIFT);
+ req->argval[req->nr_args] = text_base +
VarHeapVal(prop_textT, pre_propT[val_node_pre], prop_text->T->width);
} else if (strcmp(pul, XRPC_NS"|attribute") == 0) {
while(ao_ptr < nattrs && attr_ownT[ao_ptr] < tpe_node_pre)
ao_ptr++;
if (attr_ownT[ao_ptr] == tpe_node_pre) {
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins