Changeset: 0ca962d6f797 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0ca962d6f797
Modified Files:
monetdb5/modules/mal/xid.c
Branch: xid
Log Message:
XIDencode(): correctly do XIDBASE encoding according to its intention
well, at least to the extend I understand its intention;
at least, now encoding plus decoding it does produce correct results
diffs (50 lines):
diff --git a/monetdb5/modules/mal/xid.c b/monetdb5/modules/mal/xid.c
--- a/monetdb5/modules/mal/xid.c
+++ b/monetdb5/modules/mal/xid.c
@@ -93,7 +93,6 @@ XIDencode(BUN *rtrn, XIDcolumn col, oid
case XIDRANGEINC:
case XIDRANGEDEC:
case XIDPOINT:
- i++;
break;
case XIDSETINC:
case XIDSETDEC:
@@ -102,15 +101,19 @@ XIDencode(BUN *rtrn, XIDcolumn col, oid
col[i].x.val = prev;
scnt =0;
}
- /* finish the current*/
- i++;
break;
default:
throw(MAL, "xid.compress", "unknown col.x.tag
in XIDencode() [1]");
}
- col[i].x.tag = XIDBASE;
- min = col[i + 1].count = o;
- i += 2;
+ i++;
+ col[i++].x.tag = XIDBASE;
+ col[i++].count = min = o;
+ o -= min;
+ assert(o <= XID_VAL_MAX);
+ v = (xid) o;
+ col[i].x.val = v;
+ col[i].x.tag = XIDPOINT;
+ continue;
}
o -= min;
assert(o <= XID_VAL_MAX);
@@ -258,13 +261,6 @@ XIDencode(BUN *rtrn, XIDcolumn col, oid
//mnstr_printf(GDKout,"xidpoint " BUNFMT " "
XIDFMT "\n",i,v);
}
break;
- case XIDBASE :
- /* skip it and start a new point encoding */
- i += 2;
- col[i].x.tag = XIDPOINT;
- col[i].x.val = v;
- //mnstr_printf(GDKout,"xidpoint " BUNFMT " " XIDFMT
"\n",i,v);
- break;
default:
throw(MAL, "xid.compress", "unknown col.x.tag in
XIDencode() [2]");
}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list