Changeset: ece9b4e5716b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ece9b4e5716b
Modified Files:
Branch: Apr2011
Log Message:
merge
diffs (101 lines):
diff --git a/monetdb5/modules/kernel/bat5.mx b/monetdb5/modules/kernel/bat5.mx
--- a/monetdb5/modules/kernel/bat5.mx
+++ b/monetdb5/modules/kernel/bat5.mx
@@ -3881,13 +3881,29 @@
case TYPE_dbl: @:shrinkloop(dbl)@ break;
case TYPE_oid: @:shrinkloop(oid)@ break;
default:
- switch( b->T->width){
- case 1:@:shrinkloop(bte)@ break;
- case 2:@:shrinkloop(sht)@ break;
- case 4:@:shrinkloop(int)@ break;
- case 8:@:shrinkloop(lng)@ break;
- default:
- throw(MAL, "bat.shrink", "Illegal argument type");
+ if (ATOMvarsized(bn->ttype)) {
+ BUN p = BUNfirst(b);
+ BUN q = BUNlast(b);
+ BATiter bi = bat_iterator(b);
+
+ cnt=0;
+ for (;p<q; oidx++, p++) {
+ if ( o < ol && *o == oidx ){
+ o++;
+ } else {
+ BUNappend(bn, BUNtail(bi, p), FALSE);
+ cnt++;
+ }
+ }
+ } else {
+ switch( b->T->width){
+ case 1:@:shrinkloop(bte)@ break;
+ case 2:@:shrinkloop(sht)@ break;
+ case 4:@:shrinkloop(int)@ break;
+ case 8:@:shrinkloop(lng)@ break;
+ default:
+ throw(MAL, "bat.shrink", "Illegal argument
type");
+ }
}
}
BATaccessEnd(d, USE_TAIL, MMAP_SEQUENTIAL);
@@ -4044,13 +4060,32 @@
case TYPE_oid: @:reuseloop(oid)@ break;
case TYPE_str: /* to be done based on its index width */
default:
- switch( b->T->width){
- case 1:@:reuseloop(bte)@ break;
- case 2:@:reuseloop(sht)@ break;
- case 4:@:reuseloop(int)@ break;
- case 8:@:reuseloop(lng)@ break;
- default:
- throw(MAL, "bat.shrink", "Illegal argument type");
+ if (ATOMvarsized(bn->ttype)) {
+ BUN p = BUNfirst(b);
+ BUN q = BUNlast(b);
+ BATiter bi = bat_iterator(b);
+
+ for (;p<q; oidx++, p++) {
+ if ( *o == oidx ){
+ while ( *ol == bidx && ol>o) {
+ bidx--;
+ ol--;q--;
+ }
+ BUNappend(bn, BUNtail(bi, --q), FALSE);
+ o += (o < ol);
+ bidx--;
+ } else
+ BUNappend(bn, BUNtail(bi, p), FALSE);
+ }
+ } else {
+ switch( b->T->width){
+ case 1:@:reuseloop(bte)@ break;
+ case 2:@:reuseloop(sht)@ break;
+ case 4:@:reuseloop(int)@ break;
+ case 8:@:reuseloop(lng)@ break;
+ default:
+ throw(MAL, "bat.shrink", "Illegal argument
type");
+ }
}
}
BATaccessEnd(d, USE_TAIL, MMAP_SEQUENTIAL);
diff --git a/sql/test/BugTracker-2010/Tests/vacuum.stable.out
b/sql/test/BugTracker-2010/Tests/vacuum.stable.out
--- a/sql/test/BugTracker-2010/Tests/vacuum.stable.out
+++ b/sql/test/BugTracker-2010/Tests/vacuum.stable.out
@@ -104,12 +104,12 @@
% sys.vac1, sys.vac1 # table_name
% i, s # name
% int, clob # type
-% 1, 4 # length
+% 1, 5 # length
[ 1, "the" ]
-[ 3, "runs" ]
-[ 5, "fox" ]
-[ 4, "over" ]
-[ 6, "dog" ]
+[ 3, "brown" ]
+[ 5, "runs" ]
+[ 4, "fox" ]
+[ 6, "over" ]
#drop table vac1;
# 21:53:59 >
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list