Changeset: 2e8e6e47935c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2e8e6e47935c
Added Files:
monetdb5/modules/kernel/aggr.mal.sh
Modified Files:
monetdb5/modules/kernel/aggr.mal
Branch: default
Log Message:
Generate aggr.mal file from shell script. Some diffs in which functions.
grouped aggr.sum can result in dbl, no aggr.sum of lng into wrd.
diffs (truncated from 398 to 300 lines):
diff --git a/monetdb5/modules/kernel/aggr.mal b/monetdb5/modules/kernel/aggr.mal
--- a/monetdb5/modules/kernel/aggr.mal
+++ b/monetdb5/modules/kernel/aggr.mal
@@ -15,6 +15,8 @@
# Copyright August 2008-2012 MonetDB B.V.
# All Rights Reserved.
+# This file was generated by using the script aggr.mal.sh.
+
module aggr;
command sum(b:bat[:oid,:bte], e:bat[:oid,:any_1]) :bat[:oid,:bte]
@@ -187,6 +189,15 @@ command subprod(b:bat[:oid,:bte],g:bat[:
address AGGRsubprodcand_lng
comment "Grouped product aggregate with candidates list";
+command sum(b:bat[:oid,:bte], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
+address AGGRsum2_dbl
+comment "Sum over grouped tail sum on bte";
+
+command sum(b:bat[:oid,:bte],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:dbl]
+address AGGRsum3_dbl
+comment "Grouped tail sum on bte";
+
command sum(b:bat[:oid,:sht], e:bat[:oid,:any_1]) :bat[:oid,:sht]
address AGGRsum2_sht
comment "Sum over grouped tail sum on sht";
@@ -323,6 +334,15 @@ command subprod(b:bat[:oid,:sht],g:bat[:
address AGGRsubprodcand_lng
comment "Grouped product aggregate with candidates list";
+command sum(b:bat[:oid,:sht], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
+address AGGRsum2_dbl
+comment "Sum over grouped tail sum on sht";
+
+command sum(b:bat[:oid,:sht],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:dbl]
+address AGGRsum3_dbl
+comment "Grouped tail sum on sht";
+
command sum(b:bat[:oid,:int], e:bat[:oid,:any_1]) :bat[:oid,:int]
address AGGRsum2_int
comment "Sum over grouped tail sum on int";
@@ -425,6 +445,15 @@ command subprod(b:bat[:oid,:int],g:bat[:
address AGGRsubprodcand_lng
comment "Grouped product aggregate with candidates list";
+command sum(b:bat[:oid,:int], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
+address AGGRsum2_dbl
+comment "Sum over grouped tail sum on int";
+
+command sum(b:bat[:oid,:int],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:dbl]
+address AGGRsum3_dbl
+comment "Grouped tail sum on int";
+
command sum(b:bat[:oid,:wrd], e:bat[:oid,:any_1]) :bat[:oid,:wrd]
address AGGRsum2_wrd
comment "Sum over grouped tail sum on wrd";
@@ -493,39 +522,14 @@ command subprod(b:bat[:oid,:wrd],g:bat[:
address AGGRsubprodcand_lng
comment "Grouped product aggregate with candidates list";
-command sum(b:bat[:oid,:lng], e:bat[:oid,:any_1]) :bat[:oid,:wrd]
-address AGGRsum2_wrd
-comment "Sum over grouped tail sum on lng";
+command sum(b:bat[:oid,:wrd], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
+address AGGRsum2_dbl
+comment "Sum over grouped tail sum on wrd";
-command sum(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1])
- :bat[:oid,:wrd]
-address AGGRsum3_wrd
-comment "Grouped tail sum on lng";
-
-command
subsum(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:wrd]
-address AGGRsubsum_wrd
-comment "Grouped sum aggregate";
-
-command
subsum(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1],s:bat[:oid,:oid],skip_nils:int,abort_on_error:int)
:bat[:oid,:wrd]
-address AGGRsubsumcand_wrd
-comment "Grouped sum aggregate with candidates list";
-
-command product(b:bat[:oid,:lng], e:bat[:oid,:any_1]) :bat[:oid,:wrd]
-address AGGRprod2_wrd
-comment "Product over grouped tail product on lng";
-
-command product(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1])
- :bat[:oid,:wrd]
-address AGGRprod3_wrd
-comment "Grouped tail product on lng";
-
-command
subprod(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:wrd]
-address AGGRsubprod_wrd
-comment "Grouped product aggregate";
-
-command
subprod(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1],s:bat[:oid,:oid],skip_nils:int,abort_on_error:int)
:bat[:oid,:wrd]
-address AGGRsubprodcand_wrd
-comment "Grouped product aggregate with candidates list";
+command sum(b:bat[:oid,:wrd],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:dbl]
+address AGGRsum3_dbl
+comment "Grouped tail sum on wrd";
command sum(b:bat[:oid,:lng], e:bat[:oid,:any_1]) :bat[:oid,:lng]
address AGGRsum2_lng
@@ -561,6 +565,15 @@ command subprod(b:bat[:oid,:lng],g:bat[:
address AGGRsubprodcand_lng
comment "Grouped product aggregate with candidates list";
+command sum(b:bat[:oid,:lng], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
+address AGGRsum2_dbl
+comment "Sum over grouped tail sum on lng";
+
+command sum(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:dbl]
+address AGGRsum3_dbl
+comment "Grouped tail sum on lng";
+
command sum(b:bat[:oid,:flt], e:bat[:oid,:any_1]) :bat[:oid,:flt]
address AGGRsum2_flt
comment "Sum over grouped tail sum on flt";
@@ -663,7 +676,6 @@ command subprod(b:bat[:oid,:dbl],g:bat[:
address AGGRsubprodcand_dbl
comment "Grouped product aggregate with candidates list";
-# We may have to extend the signatures to all possible {void,oid} combos
command avg(b:bat[:oid,:bte], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
address AGGRavg2_dbl
comment "Grouped tail average on bte";
@@ -776,7 +788,6 @@ command subavg(b:bat[:oid,:dbl],g:bat[:o
address AGGRsubavgcand_dbl
comment "Grouped avg aggregate with candidates list";
-
command min(b:bat[:oid,:any_1], e:bat[:oid,:any_2]) :bat[:oid,:any_1]
address AGGRmin2;
diff --git a/monetdb5/modules/kernel/aggr.mal.sh
b/monetdb5/modules/kernel/aggr.mal.sh
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/kernel/aggr.mal.sh
@@ -0,0 +1,254 @@
+# The contents of this file are subject to the MonetDB Public License
+# Version 1.1 (the "License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.monetdb.org/Legal/MonetDBLicense
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+# License for the specific language governing rights and limitations
+# under the License.
+#
+# The Original Code is the MonetDB Database System.
+#
+# The Initial Developer of the Original Code is CWI.
+# Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
+# Copyright August 2008-2012 MonetDB B.V.
+# All Rights Reserved.
+
+cat <<EOF
+# The contents of this file are subject to the MonetDB Public License
+# Version 1.1 (the "License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.monetdb.org/Legal/MonetDBLicense
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+# License for the specific language governing rights and limitations
+# under the License.
+#
+# The Original Code is the MonetDB Database System.
+#
+# The Initial Developer of the Original Code is CWI.
+# Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
+# Copyright August 2008-2012 MonetDB B.V.
+# All Rights Reserved.
+
+# This file was generated by using the script ${0##*/}.
+
+module aggr;
+
+EOF
+
+integer="bte sht int wrd lng" # all integer types
+numeric="$integer flt dbl" # all numeric types
+fixtypes="bit $numeric oid"
+alltypes="$fixtypes str"
+
+for tp1 in 1:bte 2:sht 4:int 8:wrd 8:lng; do
+ for tp2 in 1:bte 2:sht 4:int 4:wrd 8:lng 8:dbl; do
+ if [ ${tp1%:*} -le ${tp2%:*} -o ${tp1#*:} = ${tp2#*:} ]; then
+ tp1=${tp1#*:}
+ tp2=${tp2#*:}
+ cat <<EOF
+command sum(b:bat[:oid,:${tp1}], e:bat[:oid,:any_1]) :bat[:oid,:${tp2}]
+address AGGRsum2_${tp2}
+comment "Sum over grouped tail sum on ${tp1}";
+
+command sum(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:${tp2}]
+address AGGRsum3_${tp2}
+comment "Grouped tail sum on ${tp1}";
+
+EOF
+ if [ $tp2 = dbl ]; then
+ continue
+ fi
+ cat <<EOF
+command
subsum(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubsum_${tp2}
+comment "Grouped sum aggregate";
+
+command
subsum(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],s:bat[:oid,:oid],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubsumcand_${tp2}
+comment "Grouped sum aggregate with candidates list";
+
+command product(b:bat[:oid,:${tp1}], e:bat[:oid,:any_1]) :bat[:oid,:${tp2}]
+address AGGRprod2_${tp2}
+comment "Product over grouped tail product on ${tp1}";
+
+command product(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:${tp2}]
+address AGGRprod3_${tp2}
+comment "Grouped tail product on ${tp1}";
+
+command
subprod(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubprod_${tp2}
+comment "Grouped product aggregate";
+
+command
subprod(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],s:bat[:oid,:oid],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubprodcand_${tp2}
+comment "Grouped product aggregate with candidates list";
+
+EOF
+ fi
+ done
+done
+
+for tp1 in 4:flt 8:dbl; do
+ for tp2 in 4:flt 8:dbl; do
+ if [ ${tp1%:*} -le ${tp2%:*} ]; then
+ tp1=${tp1#*:}
+ tp2=${tp2#*:}
+ cat <<EOF
+command sum(b:bat[:oid,:${tp1}], e:bat[:oid,:any_1]) :bat[:oid,:${tp2}]
+address AGGRsum2_${tp2}
+comment "Sum over grouped tail sum on ${tp1}";
+
+command sum(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:${tp2}]
+address AGGRsum3_${tp2}
+comment "Grouped tail sum on ${tp1}";
+
+command
subsum(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubsum_${tp2}
+comment "Grouped sum aggregate";
+
+command
subsum(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],s:bat[:oid,:oid],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubsumcand_${tp2}
+comment "Grouped sum aggregate with candidates list";
+
+command product(b:bat[:oid,:${tp1}], e:bat[:oid,:any_1]) :bat[:oid,:${tp2}]
+address AGGRprod2_${tp2}
+comment "Product over grouped tail product on ${tp1}";
+
+command product(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1])
+ :bat[:oid,:${tp2}]
+address AGGRprod3_${tp2}
+comment "Grouped tail product on ${tp1}";
+
+command
subprod(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubprod_${tp2}
+comment "Grouped product aggregate";
+
+command
subprod(b:bat[:oid,:${tp1}],g:bat[:oid,:oid],e:bat[:oid,:any_1],s:bat[:oid,:oid],skip_nils:int,abort_on_error:int)
:bat[:oid,:${tp2}]
+address AGGRsubprodcand_${tp2}
+comment "Grouped product aggregate with candidates list";
+
+EOF
+ fi
+ done
+done
+
+# We may have to extend the signatures to all possible {void,oid} combos
+for tp in bte sht int wrd lng flt dbl; do
+ cat <<EOF
+command avg(b:bat[:oid,:${tp}], e:bat[:oid,:any_1]) :bat[:oid,:dbl]
+address AGGRavg2_dbl
+comment "Grouped tail average on ${tp}";
+
+command avg(b:bat[:oid,:${tp}], g:bat[:oid,:oid],
e:bat[:oid,:any_1]):bat[:oid,:dbl]
+address AGGRavg3_dbl
+comment "Grouped tail average on ${tp}";
+
+command
subavg(b:bat[:oid,:${tp}],g:bat[:oid,:oid],e:bat[:oid,:any_1],skip_nils:int,abort_on_error:int)
:bat[:oid,:dbl]
+address AGGRsubavg_dbl
+comment "Grouped avg aggregate";
+
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list