Changeset: 25dba272d62f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=25dba272d62f
Modified Files:
sql/backends/monet5/sql_aggr_bte.mal
sql/backends/monet5/sql_aggr_dbl.mal
sql/backends/monet5/sql_aggr_flt.mal
sql/backends/monet5/sql_aggr_hge.mal
sql/backends/monet5/sql_aggr_int.mal
sql/backends/monet5/sql_aggr_lng.mal
sql/backends/monet5/sql_aggr_sht.mal
sql/backends/monet5/sql_aggr_wrd.mal
Branch: Jul2015
Log Message:
fixes for bug 3978, ie use the (not so) new sub* interface
for aggregates.
diffs (truncated from 351 to 300 lines):
diff --git a/sql/backends/monet5/sql_aggr_bte.mal
b/sql/backends/monet5/sql_aggr_bte.mal
--- a/sql/backends/monet5/sql_aggr_bte.mal
+++ b/sql/backends/monet5/sql_aggr_bte.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:bte], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:bte], e2:bat[:oid,:bte], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:bte];
+function aggr.subcovar(e1:bat[:oid,:bte], e2:bat[:oid,:bte], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:bte];
e0:bat[:oid,:bte] := batcalc.*(e1,e2);
- s0:bat[:oid,:bte] := aggr.sum(e0,g,e);
- s1:bat[:oid,:bte] := aggr.sum(e1,g,e);
- s2:bat[:oid,:bte] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:bte] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:bte] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:bte] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:bte] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:bte] := batcalc.bte(c);
v3:bat[:oid,:bte] := batcalc./(v2,n);
v1:bat[:oid,:bte] := batcalc.-(s0,v3);
v:bat[:oid,:bte] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:bte], e2:bat[:oid,:bte],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:bte];
- cv:bat[:oid,:bte] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:bte], e2:bat[:oid,:bte],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:bte];
+ cv:bat[:oid,:bte] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:bte);
- sds := batcalc.ifthenelse(sdn,1:bte,sd);
+ sds := batcalc.ifthenelse(sdn,1:dbl,sd);
r := batcalc./(cv,sds);
res := batcalc.bte(r);
return res;
-end aggr.corr;
+end aggr.subcorr;
diff --git a/sql/backends/monet5/sql_aggr_dbl.mal
b/sql/backends/monet5/sql_aggr_dbl.mal
--- a/sql/backends/monet5/sql_aggr_dbl.mal
+++ b/sql/backends/monet5/sql_aggr_dbl.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:dbl], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:dbl], e2:bat[:oid,:dbl], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:dbl];
+function aggr.subcovar(e1:bat[:oid,:dbl], e2:bat[:oid,:dbl], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:dbl];
e0:bat[:oid,:dbl] := batcalc.*(e1,e2);
- s0:bat[:oid,:dbl] := aggr.sum(e0,g,e);
- s1:bat[:oid,:dbl] := aggr.sum(e1,g,e);
- s2:bat[:oid,:dbl] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:dbl] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:dbl] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:dbl] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:dbl] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:dbl] := batcalc.dbl(c);
v3:bat[:oid,:dbl] := batcalc./(v2,n);
v1:bat[:oid,:dbl] := batcalc.-(s0,v3);
v:bat[:oid,:dbl] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:dbl], e2:bat[:oid,:dbl],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:dbl];
- cv:bat[:oid,:dbl] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:dbl], e2:bat[:oid,:dbl],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:dbl];
+ cv:bat[:oid,:dbl] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:dbl);
sds := batcalc.ifthenelse(sdn,1:dbl,sd);
r := batcalc./(cv,sds);
res := batcalc.dbl(r);
return res;
-end aggr.corr;
+end aggr.subcorr;
diff --git a/sql/backends/monet5/sql_aggr_flt.mal
b/sql/backends/monet5/sql_aggr_flt.mal
--- a/sql/backends/monet5/sql_aggr_flt.mal
+++ b/sql/backends/monet5/sql_aggr_flt.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:flt], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:flt], e2:bat[:oid,:flt], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:flt];
+function aggr.subcovar(e1:bat[:oid,:flt], e2:bat[:oid,:flt], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:flt];
e0:bat[:oid,:flt] := batcalc.*(e1,e2);
- s0:bat[:oid,:flt] := aggr.sum(e0,g,e);
- s1:bat[:oid,:flt] := aggr.sum(e1,g,e);
- s2:bat[:oid,:flt] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:flt] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:flt] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:flt] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:flt] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:flt] := batcalc.flt(c);
v3:bat[:oid,:flt] := batcalc./(v2,n);
v1:bat[:oid,:flt] := batcalc.-(s0,v3);
v:bat[:oid,:flt] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:flt], e2:bat[:oid,:flt],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:flt];
- cv:bat[:oid,:flt] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:flt], e2:bat[:oid,:flt],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:flt];
+ cv:bat[:oid,:flt] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:flt);
- sds := batcalc.ifthenelse(sdn,1:flt,sd);
+ sds := batcalc.ifthenelse(sdn,1:dbl,sd);
r := batcalc./(cv,sds);
res := batcalc.flt(r);
return res;
-end aggr.corr;
+end aggr.subcorr;
diff --git a/sql/backends/monet5/sql_aggr_hge.mal
b/sql/backends/monet5/sql_aggr_hge.mal
--- a/sql/backends/monet5/sql_aggr_hge.mal
+++ b/sql/backends/monet5/sql_aggr_hge.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:hge], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:hge], e2:bat[:oid,:hge], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:hge];
+function aggr.subcovar(e1:bat[:oid,:hge], e2:bat[:oid,:hge], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:hge];
e0:bat[:oid,:hge] := batcalc.*(e1,e2);
- s0:bat[:oid,:hge] := aggr.sum(e0,g,e);
- s1:bat[:oid,:hge] := aggr.sum(e1,g,e);
- s2:bat[:oid,:hge] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:hge] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:hge] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:hge] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:hge] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:hge] := batcalc.hge(c);
v3:bat[:oid,:hge] := batcalc./(v2,n);
v1:bat[:oid,:hge] := batcalc.-(s0,v3);
v:bat[:oid,:hge] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:hge], e2:bat[:oid,:hge],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:hge];
- cv:bat[:oid,:hge] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:hge], e2:bat[:oid,:hge],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:hge];
+ cv:bat[:oid,:hge] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:hge);
- sds := batcalc.ifthenelse(sdn,1:hge,sd);
+ sds := batcalc.ifthenelse(sdn,1:dbl,sd);
r := batcalc./(cv,sds);
res := batcalc.hge(r);
return res;
-end aggr.corr;
+end aggr.subcorr;
diff --git a/sql/backends/monet5/sql_aggr_int.mal
b/sql/backends/monet5/sql_aggr_int.mal
--- a/sql/backends/monet5/sql_aggr_int.mal
+++ b/sql/backends/monet5/sql_aggr_int.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:int], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:int], e2:bat[:oid,:int], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:int];
+function aggr.subcovar(e1:bat[:oid,:int], e2:bat[:oid,:int], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:int];
e0:bat[:oid,:int] := batcalc.*(e1,e2);
- s0:bat[:oid,:int] := aggr.sum(e0,g,e);
- s1:bat[:oid,:int] := aggr.sum(e1,g,e);
- s2:bat[:oid,:int] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:int] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:int] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:int] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:int] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:int] := batcalc.int(c);
v3:bat[:oid,:int] := batcalc./(v2,n);
v1:bat[:oid,:int] := batcalc.-(s0,v3);
v:bat[:oid,:int] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:int], e2:bat[:oid,:int],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:int];
- cv:bat[:oid,:int] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:int], e2:bat[:oid,:int],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:int];
+ cv:bat[:oid,:int] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:int);
- sds := batcalc.ifthenelse(sdn,1:int,sd);
+ sds := batcalc.ifthenelse(sdn,1:dbl,sd);
r := batcalc./(cv,sds);
res := batcalc.int(r);
return res;
-end aggr.corr;
+end aggr.subcorr;
diff --git a/sql/backends/monet5/sql_aggr_lng.mal
b/sql/backends/monet5/sql_aggr_lng.mal
--- a/sql/backends/monet5/sql_aggr_lng.mal
+++ b/sql/backends/monet5/sql_aggr_lng.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:lng], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:lng], e2:bat[:oid,:lng], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:lng];
+function aggr.subcovar(e1:bat[:oid,:lng], e2:bat[:oid,:lng], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:lng];
e0:bat[:oid,:lng] := batcalc.*(e1,e2);
- s0:bat[:oid,:lng] := aggr.sum(e0,g,e);
- s1:bat[:oid,:lng] := aggr.sum(e1,g,e);
- s2:bat[:oid,:lng] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:lng] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:lng] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:lng] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:lng] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:lng] := batcalc.lng(c);
v3:bat[:oid,:lng] := batcalc./(v2,n);
v1:bat[:oid,:lng] := batcalc.-(s0,v3);
v:bat[:oid,:lng] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:lng], e2:bat[:oid,:lng],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:lng];
- cv:bat[:oid,:lng] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:lng], e2:bat[:oid,:lng],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:lng];
+ cv:bat[:oid,:lng] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:lng);
- sds := batcalc.ifthenelse(sdn,1:lng,sd);
+ sds := batcalc.ifthenelse(sdn,1:dbl,sd);
r := batcalc./(cv,sds);
res := batcalc.lng(r);
return res;
-end aggr.corr;
+end aggr.subcorr;
diff --git a/sql/backends/monet5/sql_aggr_sht.mal
b/sql/backends/monet5/sql_aggr_sht.mal
--- a/sql/backends/monet5/sql_aggr_sht.mal
+++ b/sql/backends/monet5/sql_aggr_sht.mal
@@ -28,28 +28,28 @@ function aggr.corr(e1:bat[:oid,:sht], e2
return res;
end aggr.corr;
-function aggr.covar(e1:bat[:oid,:sht], e2:bat[:oid,:sht], g:bat[:oid,:oid],
e:bat[:oid,:any_2]):bat[:oid,:sht];
+function aggr.subcovar(e1:bat[:oid,:sht], e2:bat[:oid,:sht], g:bat[:oid,:oid],
e:bat[:oid,:any_2],f:bit):bat[:oid,:sht];
e0:bat[:oid,:sht] := batcalc.*(e1,e2);
- s0:bat[:oid,:sht] := aggr.sum(e0,g,e);
- s1:bat[:oid,:sht] := aggr.sum(e1,g,e);
- s2:bat[:oid,:sht] := aggr.sum(e2,g,e);
+ s0:bat[:oid,:sht] := aggr.subsum(e0,g,e,f,true);
+ s1:bat[:oid,:sht] := aggr.subsum(e1,g,e,f,true);
+ s2:bat[:oid,:sht] := aggr.subsum(e2,g,e,f,true);
v2:bat[:oid,:sht] := batcalc.*(s1,s2);
- c := aggr.count(e1,g,e);
+ c := aggr.subcount(e1,g,e,f);
n:bat[:oid,:sht] := batcalc.sht(c);
v3:bat[:oid,:sht] := batcalc./(v2,n);
v1:bat[:oid,:sht] := batcalc.-(s0,v3);
v:bat[:oid,:sht] := batcalc./(v1,n);
return v;
-end aggr.covar;
+end aggr.subcovar;
-function aggr.corr(e1:bat[:oid,:sht], e2:bat[:oid,:sht],
g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:sht];
- cv:bat[:oid,:sht] := aggr.covar(e1,e2,g,e);
- sd1 := aggr.stdevp(e1,g,e);
- sd2 := aggr.stdevp(e2,g,e);
+function aggr.subcorr(e1:bat[:oid,:sht], e2:bat[:oid,:sht],
g:bat[:oid,:oid],e:bat[:oid,:any_2],f:bit):bat[:oid,:sht];
+ cv:bat[:oid,:sht] := aggr.subcovar(e1,e2,g,e,f);
+ sd1 := aggr.substdevp(e1,g,e,f,true);
+ sd2 := aggr.substdevp(e2,g,e,f,true);
sd := batcalc.*(sd1,sd2);
sdn := batcalc.==(sd,0:sht);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list