Changeset: 20bbde79767e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=20bbde79767e
Modified Files:
sql/backends/monet5/sql.mx
Branch: default
Log Message:
merge from Dec2011
diffs (297 lines):
diff --git a/monetdb5/modules/mal/bbp.mx b/monetdb5/modules/mal/bbp.mx
--- a/monetdb5/modules/mal/bbp.mx
+++ b/monetdb5/modules/mal/bbp.mx
@@ -152,6 +152,13 @@ command getRNames() :bat[:int,:str]
address CMDbbpRNames
comment "Map a BAT into its bbp physical name";
+command get() (ns:bat[:any_1,:any_2], ht:bat[:int,:str], tt:bat[:int,:str],
+ cnt:bat[:int,:lng], refcnt:bat[:int,:int], lrefcnt:bat[:int,:int],
+ location:bat[:int,:str], heat:bat[:int,:int],
dirty:bat[:int,:str],
+ status:bat[:int,:str], kind:bat[:int,:str])
+address CMDbbp
+comment "bpp";
+
command getName( b:bat[:any_1,:any_2]):str
address CMDbbpName
comment "Map a BAT into its internal name";
@@ -1388,3 +1395,67 @@ str CMDbbp@2( int *ret){
@:headtailProperty(htype,HeadType)@
@:headtailProperty(ttype,TailType)@
+bbp_export str CMDbbp( int *NS, int *HT, int *TT, int *CNT, int *REFCNT, int
*LREFCNT, int *LOCATION, int *HEAT, int *DIRTY, int *STATUS, int *KIND);
+str CMDbbp( int *NS, int *HT, int *TT, int *CNT, int *REFCNT, int *LREFCNT,
int *LOCATION, int *HEAT, int *DIRTY, int *STATUS, int *KIND)
+{
+ BAT *ns, *ht, *tt, *cnt, *refcnt, *lrefcnt, *location, *heat,
*dirty, *status, *kind, *bn;
+ int i;
+ char buf[MAXPATHLEN];
+ char cwd[MAXPATHLEN];
+
+ ns = BATnew(TYPE_int,TYPE_str,BBPsize);
+ ht = BATnew(TYPE_int,TYPE_str,BBPsize);
+ tt = BATnew(TYPE_int,TYPE_str,BBPsize);
+ cnt = BATnew(TYPE_int,TYPE_lng,BBPsize);
+ refcnt = BATnew(TYPE_int,TYPE_int,BBPsize);
+ lrefcnt = BATnew(TYPE_int,TYPE_int,BBPsize);
+ location = BATnew(TYPE_int,TYPE_str,BBPsize);
+ heat = BATnew(TYPE_int,TYPE_int,BBPsize);
+ dirty = BATnew(TYPE_int,TYPE_str,BBPsize);
+ status = BATnew(TYPE_int,TYPE_str,BBPsize);
+ kind = BATnew(TYPE_int,TYPE_str,BBPsize);
+
+ if (!ns || !ht || !tt || !cnt || !refcnt || !lrefcnt || !location ||
!heat || !dirty || !status || !kind)
+ throw(MAL, "catalog.bbp", MAL_MALLOC_FAIL);
+
+ for(i=1; i < BBPsize; i++)
+ if (BBP_logical(i) && (BBP_refs(i) || BBP_lrefs(i))) {
+ bn = BATdescriptor(i);
+ if (bn) {
+ lng l = BATcount(bn);
+ int heat_ = BBP_lastused(i);
+ char *loc = BBP_cache(i) ? "load" : "disk";
+ char *mode = "persistent";
+ int refs = BBP_refs(i);
+ int lrefs = BBP_lrefs(i);
+
+ if ((BBP_status(i) & BBPDELETED) || !(BBP_status(i) &
BBPPERSISTENT))
+ mode = "transient";
+
snprintf(buf,MAXPATHLEN,"%s/bat/%s",cwd,BBP_physical(i));
+ BUNins(ns, &i, BBP_logical(i), FALSE);
+ BUNins(ht, &i, BATatoms[BAThtype(bn)].name, FALSE);
+ BUNins(tt, &i, BATatoms[BATttype(bn)].name, FALSE);
+ BUNins(cnt, &i, &l, FALSE);
+ BUNins(refcnt, &i, &refs, FALSE);
+ BUNins(lrefcnt, &i, &lrefs, FALSE);
+ BUNins(location, &i, buf, FALSE);
+ BUNins(heat, &i, &heat_, FALSE);
+ BUNins(dirty, &i, bn ? BATdirty(bn) ? "dirty" :
DELTAdirty(bn) ? "diffs" : "clean" : (BBP_status(i) & BBPSWAPPED) ? "diffs" :
"clean", FALSE);
+ BUNins(status, &i, loc, FALSE);
+ BUNins(kind, &i, mode, FALSE);
+ }
+ BBPunfix(bn->batCacheid);
+ }
+ BBPkeepref(*NS = ns->batCacheid);
+ BBPkeepref(*HT = ht->batCacheid);
+ BBPkeepref(*TT = tt->batCacheid);
+ BBPkeepref(*CNT = cnt->batCacheid);
+ BBPkeepref(*REFCNT = refcnt->batCacheid);
+ BBPkeepref(*LREFCNT = lrefcnt->batCacheid);
+ BBPkeepref(*LOCATION = location->batCacheid);
+ BBPkeepref(*HEAT = heat->batCacheid);
+ BBPkeepref(*DIRTY = dirty->batCacheid);
+ BBPkeepref(*STATUS = status->batCacheid);
+ BBPkeepref(*KIND = kind->batCacheid);
+ return MAL_SUCCEED;
+}
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -414,30 +414,7 @@ end clients;
function bbp{inline}()( id:bat[:oid,:int], name:bat[:oid,:str],
htype:bat[:oid,:str], ttype:bat[:oid,:str], count:bat[:oid,:lng],
refcnt:bat[:oid,:int], lrefcnt:bat[:oid,:int], location:bat[:oid,:str],
heat:bat[:oid,:int], dirty:bat[:oid,:str], status:bat[:oid,:str],
kind:bat[:oid,:str]);
- ns:bat[:int,:str] := nil:bat[:int,:str];
- iht:bat[:int,:str] := nil:bat[:int,:str];
- itt:bat[:int,:str] := nil:bat[:int,:str];
- icnt:bat[:int,:lng] := nil:bat[:int,:lng];
- irefcnt:bat[:int,:int] := nil:bat[:int,:int];
- ilrefcnt:bat[:int,:int] := nil:bat[:int,:int];
- ilocation:bat[:int,:str] := nil:bat[:int,:str];
- iheat:bat[:int,:int] := nil:bat[:int,:int];
- idirty:bat[:int,:str] := nil:bat[:int,:str];
- istatus:bat[:int,:str] := nil:bat[:int,:str];
- ikind:bat[:int,:str] := nil:bat[:int,:str];
-barrier bbp_1 := true;
- ns := bbp.getNames();
- iht := bbp.getHeadType();
- itt := bbp.getTailType();
- icnt := bbp.getCount();
- irefcnt := bbp.getRefCount();
- ilrefcnt := bbp.getLRefCount();
- ilocation := bbp.getLocation();
- iheat := bbp.getHeat();
- idirty := bbp.getDirty();
- istatus := bbp.getStatus();
- ikind := bbp.getKind();
-exit bbp_1;
+ (ns,iht,itt,icnt,irefcnt,ilrefcnt,ilocation,iheat,idirty,istatus,ikind)
:= bbp.get();
ri := algebra.markT(ns, 0:oid);
i := bat.reverse(ri);
n := algebra.markH(ns, 0:oid);
diff --git a/sql/test/leaks/Tests/check0.stable.out
b/sql/test/leaks/Tests/check0.stable.out
--- a/sql/test/leaks/Tests/check0.stable.out
+++ b/sql/test/leaks/Tests/check0.stable.out
@@ -58,6 +58,7 @@ Ready.
[ "oid", "int", 1151 ]
[ "oid", "int", 1151 ]
[ "oid", "int", 1151 ]
+[ "oid", "int", 1151 ]
[ "oid", "int", 3163 ]
[ "oid", "int", 3163 ]
[ "oid", "int", 3163 ]
@@ -77,13 +78,13 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 487 ]
+[ "transient", 497 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
% char, wrd # type
% 10, 2 # length
-[ "persistent", 24 ]
+[ "persistent", 25 ]
# 22:02:15 >
# 22:02:15 > Done.
diff --git a/sql/test/leaks/Tests/check1.stable.out
b/sql/test/leaks/Tests/check1.stable.out
--- a/sql/test/leaks/Tests/check1.stable.out
+++ b/sql/test/leaks/Tests/check1.stable.out
@@ -182,7 +182,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 158 ]
+[ "transient", 169 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/check2.stable.out
b/sql/test/leaks/Tests/check2.stable.out
--- a/sql/test/leaks/Tests/check2.stable.out
+++ b/sql/test/leaks/Tests/check2.stable.out
@@ -182,7 +182,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 158 ]
+[ "transient", 169 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/check3.stable.out
b/sql/test/leaks/Tests/check3.stable.out
--- a/sql/test/leaks/Tests/check3.stable.out
+++ b/sql/test/leaks/Tests/check3.stable.out
@@ -182,7 +182,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 178 ]
+[ "transient", 189 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/check4.stable.out
b/sql/test/leaks/Tests/check4.stable.out
--- a/sql/test/leaks/Tests/check4.stable.out
+++ b/sql/test/leaks/Tests/check4.stable.out
@@ -182,7 +182,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 178 ]
+[ "transient", 189 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/check5.stable.out
b/sql/test/leaks/Tests/check5.stable.out
--- a/sql/test/leaks/Tests/check5.stable.out
+++ b/sql/test/leaks/Tests/check5.stable.out
@@ -182,7 +182,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 178 ]
+[ "transient", 189 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/drop3.stable.out
b/sql/test/leaks/Tests/drop3.stable.out
--- a/sql/test/leaks/Tests/drop3.stable.out
+++ b/sql/test/leaks/Tests/drop3.stable.out
@@ -28,7 +28,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 178 ]
+[ "transient", 189 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/select1.stable.out
b/sql/test/leaks/Tests/select1.stable.out
--- a/sql/test/leaks/Tests/select1.stable.out
+++ b/sql/test/leaks/Tests/select1.stable.out
@@ -33,7 +33,7 @@ Ready.
% L1 # name
% wrd # type
% 3 # length
-[ 138 ]
+[ 338 ]
#select 1;
% . # table_name
% single_value # name
@@ -44,7 +44,7 @@ Ready.
% L2 # name
% wrd # type
% 3 # length
-[ 138 ]
+[ 338 ]
# 22:03:05 >
# 22:03:05 > Done.
diff --git a/sql/test/leaks/Tests/select2.stable.out
b/sql/test/leaks/Tests/select2.stable.out
--- a/sql/test/leaks/Tests/select2.stable.out
+++ b/sql/test/leaks/Tests/select2.stable.out
@@ -33,7 +33,7 @@ Ready.
% L1 # name
% wrd # type
% 3 # length
-[ 138 ]
+[ 338 ]
#select 1;
% . # table_name
% single_value # name
@@ -44,7 +44,7 @@ Ready.
% L2 # name
% wrd # type
% 3 # length
-[ 138 ]
+[ 338 ]
# 22:03:05 >
# 22:03:05 > Done.
diff --git a/sql/test/leaks/Tests/temp1.stable.out
b/sql/test/leaks/Tests/temp1.stable.out
--- a/sql/test/leaks/Tests/temp1.stable.out
+++ b/sql/test/leaks/Tests/temp1.stable.out
@@ -28,7 +28,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 161 ]
+[ "transient", 172 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/temp2.stable.out
b/sql/test/leaks/Tests/temp2.stable.out
--- a/sql/test/leaks/Tests/temp2.stable.out
+++ b/sql/test/leaks/Tests/temp2.stable.out
@@ -28,7 +28,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 161 ]
+[ "transient", 172 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
diff --git a/sql/test/leaks/Tests/temp3.stable.out
b/sql/test/leaks/Tests/temp3.stable.out
--- a/sql/test/leaks/Tests/temp3.stable.out
+++ b/sql/test/leaks/Tests/temp3.stable.out
@@ -28,7 +28,7 @@ Ready.
% L1, L2 # name
% char, wrd # type
% 9, 3 # length
-[ "transient", 186 ]
+[ "transient", 197 ]
#select 'persistent', count(*) from bbp() as bbp where kind like 'pers%';
% .L3, .bbp # table_name
% L3, L4 # name
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list