Changeset: 69e824d036d6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=69e824d036d6
Modified Files:
Branch: default
Log Message:
Merge with Apr2011 branch.
diffs (185 lines):
diff --git a/gdk/gdk_bat.mx b/gdk/gdk_bat.mx
--- a/gdk/gdk_bat.mx
+++ b/gdk/gdk_bat.mx
@@ -1430,6 +1430,13 @@
}
}
}
+ if (b->tkey == TRUE && cmp <= 0) {
+ /* cmp==0: definitely not key,
+ * cmd<0: we don't know */
+ b->T->nokey[0] = i - 1;
+ b->T->nokey[1] = i;
+ b->tkey = bm->hkey = b->tdense = FALSE;
+ }
} else if (b->tsorted == (bit) GDK_SORTED_REV) {
ptr prv = BUNtail(bi, p - 1);
@@ -1438,8 +1445,15 @@
b->T->nosorted_rev = i;
b->tsorted = FALSE;
}
- }
- if (b->tkey == TRUE && cmp <= 0) {
+ if (b->tkey == TRUE && cmp >= 0) {
+ /* cmp==0: definitely not key,
+ * cmd>0: we don't know */
+ b->T->nokey[0] = i - 1;
+ b->T->nokey[1] = i;
+ b->tkey = bm->hkey = b->tdense = FALSE;
+ }
+ } else if (b->tkey == TRUE) {
+ /* we don't know anything, so unset key */
b->T->nokey[0] = i - 1;
b->T->nokey[1] = i;
b->tkey = bm->hkey = b->tdense = FALSE;
diff --git a/gdk/gdk_utils.mx b/gdk/gdk_utils.mx
--- a/gdk/gdk_utils.mx
+++ b/gdk/gdk_utils.mx
@@ -463,17 +463,17 @@
_MT_pagesize = sysInfo.dwPageSize;
}
#else
-# if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
- _MT_pagesize = sysconf(_SC_PAGESIZE);
-# else
-# if defined(HAVE_SYS_SYSCTL_H) && defined(HW_PAGESIZE)
+# if defined(HAVE_SYS_SYSCTL_H) && defined(HW_PAGESIZE)
{
- int size;
+ int size = 0;
size_t len = sizeof(size);
sysctlbyname("hw.pagesize", &size, &len, NULL, 0);
_MT_pagesize = size;
}
+# else
+# if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
+ _MT_pagesize = sysconf(_SC_PAGESIZE);
# endif
# endif
#endif
@@ -497,17 +497,17 @@
_MT_npages = memStat.dwTotalPhys / _MT_pagesize;
}
# else
-# if defined(HAVE_SYSCONF) && defined(_SC_PHYS_PAGES)
- _MT_npages = sysconf(_SC_PHYS_PAGES);
-# else
-# if defined(HAVE_SYS_SYSCTL_H) && defined(HW_MEMSIZE)
+# if defined(HAVE_SYS_SYSCTL_H) && defined(HW_MEMSIZE)
{
- uint64_t size;
+ uint64_t size = 0;
size_t len = sizeof(size);
sysctlbyname("hw.memsize", &size, &len, NULL, 0);
_MT_npages = size / _MT_pagesize;
}
+# else
+# if defined(HAVE_SYSCONF) && defined(_SC_PHYS_PAGES)
+ _MT_npages = sysconf(_SC_PHYS_PAGES);
# else
# error "don't know how to get the amount of physical memory for your OS"
# endif /* sysctl */
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