Changeset: 099c1afffab3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=099c1afffab3
Modified Files:
        .hgtags
        MonetDB.spec
        NT/installer32/MonetDB-ODBC-Installer.vdproj
        NT/installer32/MonetDB5-Geom-Module.vdproj
        NT/installer32/MonetDB5-SQL-Installer.vdproj
        NT/installer64/MonetDB-ODBC-Installer.vdproj
        NT/installer64/MonetDB5-Geom-Module.vdproj
        NT/installer64/MonetDB5-SQL-Installer.vdproj
        NT/monetdb_config.h.in
        NT/rules.msc
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/SQL-dump.stable.out
        clients/Tests/SQL-dump.stable.out.int128
        clients/mapiclient/eventparser.c
        clients/mapiclient/stethoscope.c
        clients/mapilib/mapi.rc
        clients/odbc/driver/driver.rc
        clients/odbc/winsetup/setup.rc
        clients/python2/setup.py
        clients/python3/setup.py
        configure.ag
        debian/changelog
        gdk/gdk_batop.c
        gdk/libbat.rc
        java/Makefile.ag
        java/build.properties
        java/pom.xml
        java/release.txt
        libversions
        monetdb5/mal/mal_profiler.c
        monetdb5/tools/libmonetdb5.rc
        sql/backends/monet5/UDF/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/Tests/udf-reverse.stable.out
        sql/backends/monet5/vaults/bam/Tests/bam_lib_mal.stable.out
        sql/benchmarks/ATIS/Tests/load.stable.out
        sql/benchmarks/arno/Tests/insert_ATOM.stable.out
        sql/benchmarks/arno/Tests/insert_BOND.stable.out
        sql/benchmarks/arno_flt/Tests/init.stable.out
        sql/benchmarks/moa/Tests/load.stable.out
        sql/benchmarks/wisconsin/Tests/load.stable.out
        
sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out
        
sql/test/BugTracker-2010/Tests/group-by_ordered_column.Bug-2564.stable.out
        sql/test/Tests/decimal2.stable.out
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        testing/Mtest.py.in
        tools/mserver/mserver5.1.in
        tools/mserver/mserver5.c
        vertoo.data
Branch: mosaic
Log Message:

Merge with default branch.


diffs (truncated from 57118 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -613,3 +613,5 @@ d1dd6e5b7a5acfe14a33070e08c776341996deb2
 2ca94cddcdf52121541eff4bf706b1b7c451f511 Jul2015_11
 d1dd6e5b7a5acfe14a33070e08c776341996deb2 Jul2015_SP1_release
 2ca94cddcdf52121541eff4bf706b1b7c451f511 Jul2015_SP1_release
+25c9f569add9c341d40920f30936890ae6ea68a8 Jul2015_13
+25c9f569add9c341d40920f30936890ae6ea68a8 Jul2015_SP2_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -91,7 +91,7 @@ Vendor: MonetDB BV <[email protected]>
 Group: Applications/Databases
 License: MPL - http://www.monetdb.org/Legal/MonetDBLicense
 URL: http://www.monetdb.org/
-Source: 
http://dev.monetdb.org/downloads/sources/Jul2015-SP1/%{name}-%{version}.tar.bz2
+Source: 
http://dev.monetdb.org/downloads/sources/Jul2015-SP2/%{name}-%{version}.tar.bz2
 
 BuildRequires: bison
 BuildRequires: bzip2-devel
@@ -970,6 +970,45 @@ rm -f %{buildroot}%{_bindir}/Maddlog
 %postun -p /sbin/ldconfig
 
 %changelog
+* Tue Jan 05 2016 Sjoerd Mullender <[email protected]> - 11.21.13-20160105
+- Rebuilt.
+- BZ#2014: 'null' from copy into gets wrong
+- BZ#3817: opt_pushselect stuck with multi-table UDF
+- BZ#3835: windows does not release ram after operations
+- BZ#3836: rand() only gets evaluated once when used as an expression
+- BZ#3838: Update column with or without parenthesis produce different
+  results
+- BZ#3840: savepoints may crash the database
+- BZ#3841: mclient fails with response "Challenge string is not valid"
+- BZ#3842: SQL execution fails to finish and reports bogus error messages
+- BZ#3845: Too many VALUES in INSERT freeze mserver5
+- BZ#3847: Wrong SQL results for a certain combination of GROUP BY /
+  ORDER BY / LIMIT
+- BZ#3848: mserver segfault during bulk loading/updating
+- BZ#3849: HUGEINT incorrect value
+- BZ#3850: DEL character not escaped
+- BZ#3851: expression that should evaluate to FALSE evaluates to TRUE
+  in SELECT query
+- BZ#3852: CASE statement produces GDK error on multithreaded database:
+  BATproject does not match always
+- BZ#3854: Complex expression with comparison evaluates incorrectly in
+  WHERE clause
+- BZ#3855: Foreign key referencing table in a different schema -
+  not allowed.
+- BZ#3857: Large LIMIT in SELECT may abort the query
+- BZ#3861: Using window functions cause a crash
+- BZ#3864: Error in bulk import for chinese character
+- BZ#3871: NOT x LIKE triggers "too many nested operators"
+- BZ#3872: mserver crashes under specific combination of JOIN and WHERE
+  conditions
+- BZ#3873: mserver5: gdk_bat.c:1015: setcolprops: Assertion `x !=
+  ((void *)0) || col->type == 0' failed.
+- BZ#3879: Database crashes when querying with several UNION ALLs.
+- BZ#3887: Querying "sys"."tracelog" causes assertion violation and
+  crash of mserver5 process
+- BZ#3889: read only does not protect empty tables
+- BZ#3895: read only does not protect this table
+
 * Fri Oct 30 2015 Sjoerd Mullender <[email protected]> - 11.21.11-20151030
 - Rebuilt.
 - BZ#3828: Schema corruption after several ALTER TABLE statements and
diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -25,1956 +25,1955 @@ Ready.
 # 21:33:48 >  "mclient" "-lmal" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-19610" "--port=35607"
 # 21:33:48 >  
 
-#?*)
-command aggr.avg(b:bat[:oid,:dbl],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:dbl],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on dbl, also returns count
 
-command 
aggr.avg(b:bat[:oid,:dbl],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:dbl],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on dbl
 
-command aggr.avg(b:bat[:oid,:flt],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:flt],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on flt, also returns count
 
-command 
aggr.avg(b:bat[:oid,:flt],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:flt],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on flt
 
-command aggr.avg(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:lng],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on lng, also returns count
 
-command 
aggr.avg(b:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:lng],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on lng
 
-command aggr.avg(b:bat[:oid,:wrd],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:wrd],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on wrd, also returns count
 
-command 
aggr.avg(b:bat[:oid,:wrd],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:wrd],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on wrd
 
-command aggr.avg(b:bat[:oid,:int],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:int],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on int, also returns count
 
-command 
aggr.avg(b:bat[:oid,:int],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:int],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on int
 
-command aggr.avg(b:bat[:oid,:sht],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:sht],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on sht, also returns count
 
-command 
aggr.avg(b:bat[:oid,:sht],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:sht],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on sht
 
-command aggr.avg(b:bat[:oid,:bte],g:bat[:oid,:oid],e:bat[:oid,:any_1]) 
(X_4:bat[:oid,:dbl],X_5:bat[:oid,:wrd]) 
+command aggr.avg(b:bat[:bte],g:bat[:oid],e:bat[:any_1]) 
(X_4:bat[:dbl],X_5:bat[:wrd]) 
 address AGGRavg23_dbl;
 comment Grouped tail average on bte, also returns count
 
-command 
aggr.avg(b:bat[:oid,:bte],g:bat[:oid,:oid],e:bat[:oid,:any_1]):bat[:oid,:dbl] 
+command aggr.avg(b:bat[:bte],g:bat[:oid],e:bat[:any_1]):bat[:dbl] 
 address AGGRavg13_dbl;
 comment Grouped tail average on bte
 
-pattern aggr.avg(b:bat[:oid,:any_2]):dbl 
+pattern aggr.avg(b:bat[:any_2]):dbl 
 address CMDcalcavg;
 comment Gives the avg of all tail values
 
-function 
aggr.corr(e1:bat[:oid,:dbl],e2:bat[:oid,:dbl],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:dbl];
-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.corr(e1:bat[:oid,:dbl],e2:bat[:oid,:dbl]):dbl;
-function aggr.covar(e1:bat[:oid,:dbl],e2:bat[:oid,:dbl]):dbl;
-function 
aggr.corr(e1:bat[:oid,:flt],e2:bat[:oid,:flt],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:flt];
-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.corr(e1:bat[:oid,:flt],e2:bat[:oid,:flt]):flt;
-function aggr.covar(e1:bat[:oid,:flt],e2:bat[:oid,:flt]):flt;
-function 
aggr.corr(e1:bat[:oid,:lng],e2:bat[:oid,:lng],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:lng];
-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.corr(e1:bat[:oid,:lng],e2:bat[:oid,:lng]):lng;
-function aggr.covar(e1:bat[:oid,:lng],e2:bat[:oid,:lng]):lng;
-function 
aggr.corr(e1:bat[:oid,:wrd],e2:bat[:oid,:wrd],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:wrd];
-function 
aggr.covar(e1:bat[:oid,:wrd],e2:bat[:oid,:wrd],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:wrd];
-function aggr.corr(e1:bat[:oid,:wrd],e2:bat[:oid,:wrd]):wrd;
-function aggr.covar(e1:bat[:oid,:wrd],e2:bat[:oid,:wrd]):wrd;
-function 
aggr.corr(e1:bat[:oid,:int],e2:bat[:oid,:int],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:int];
-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.corr(e1:bat[:oid,:int],e2:bat[:oid,:int]):int;
-function aggr.covar(e1:bat[:oid,:int],e2:bat[:oid,:int]):int;
-function 
aggr.corr(e1:bat[:oid,:sht],e2:bat[:oid,:sht],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:sht];
-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.corr(e1:bat[:oid,:sht],e2:bat[:oid,:sht]):sht;
-function aggr.covar(e1:bat[:oid,:sht],e2:bat[:oid,:sht]):sht;
-function 
aggr.corr(e1:bat[:oid,:bte],e2:bat[:oid,:bte],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:bte];
-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.corr(e1:bat[:oid,:bte],e2:bat[:oid,:bte]):bte;
-function aggr.covar(e1:bat[:oid,:bte],e2:bat[:oid,:bte]):bte;
-command 
aggr.count_no_nil(b:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:wrd]
 
+function 
aggr.corr(e1:bat[:dbl],e2:bat[:dbl],g:bat[:oid],e:bat[:any_2]):bat[:dbl];
+function 
aggr.covar(e1:bat[:dbl],e2:bat[:dbl],g:bat[:oid],e:bat[:any_2]):bat[:dbl];
+function aggr.corr(e1:bat[:dbl],e2:bat[:dbl]):dbl;
+function aggr.covar(e1:bat[:dbl],e2:bat[:dbl]):dbl;
+function 
aggr.corr(e1:bat[:flt],e2:bat[:flt],g:bat[:oid],e:bat[:any_2]):bat[:flt];
+function 
aggr.covar(e1:bat[:flt],e2:bat[:flt],g:bat[:oid],e:bat[:any_2]):bat[:flt];
+function aggr.corr(e1:bat[:flt],e2:bat[:flt]):flt;
+function aggr.covar(e1:bat[:flt],e2:bat[:flt]):flt;
+function 
aggr.corr(e1:bat[:lng],e2:bat[:lng],g:bat[:oid],e:bat[:any_2]):bat[:lng];
+function 
aggr.covar(e1:bat[:lng],e2:bat[:lng],g:bat[:oid],e:bat[:any_2]):bat[:lng];
+function aggr.corr(e1:bat[:lng],e2:bat[:lng]):lng;
+function aggr.covar(e1:bat[:lng],e2:bat[:lng]):lng;
+function 
aggr.corr(e1:bat[:wrd],e2:bat[:wrd],g:bat[:oid],e:bat[:any_2]):bat[:wrd];
+function 
aggr.covar(e1:bat[:wrd],e2:bat[:wrd],g:bat[:oid],e:bat[:any_2]):bat[:wrd];
+function aggr.corr(e1:bat[:wrd],e2:bat[:wrd]):wrd;
+function aggr.covar(e1:bat[:wrd],e2:bat[:wrd]):wrd;
+function 
aggr.corr(e1:bat[:int],e2:bat[:int],g:bat[:oid],e:bat[:any_2]):bat[:int];
+function 
aggr.covar(e1:bat[:int],e2:bat[:int],g:bat[:oid],e:bat[:any_2]):bat[:int];
+function aggr.corr(e1:bat[:int],e2:bat[:int]):int;
+function aggr.covar(e1:bat[:int],e2:bat[:int]):int;
+function 
aggr.corr(e1:bat[:sht],e2:bat[:sht],g:bat[:oid],e:bat[:any_2]):bat[:sht];
+function 
aggr.covar(e1:bat[:sht],e2:bat[:sht],g:bat[:oid],e:bat[:any_2]):bat[:sht];
+function aggr.corr(e1:bat[:sht],e2:bat[:sht]):sht;
+function aggr.covar(e1:bat[:sht],e2:bat[:sht]):sht;
+function 
aggr.corr(e1:bat[:bte],e2:bat[:bte],g:bat[:oid],e:bat[:any_2]):bat[:bte];
+function 
aggr.covar(e1:bat[:bte],e2:bat[:bte],g:bat[:oid],e:bat[:any_2]):bat[:bte];
+function aggr.corr(e1:bat[:bte],e2:bat[:bte]):bte;
+function aggr.covar(e1:bat[:bte],e2:bat[:bte]):bte;
+command aggr.count_no_nil(b:bat[:any_1],g:bat[:oid],e:bat[:any_2]):bat[:wrd] 
 address AGGRcount3nonils;
-command 
aggr.count(b:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:wrd]
 
+command aggr.count(b:bat[:any_1],g:bat[:oid],e:bat[:any_2]):bat[:wrd] 
 address AGGRcount3nils;
 comment Grouped count
 
-command 
aggr.count(b:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2],ignorenils:bit):bat[:oid,:wrd]
 
+command 
aggr.count(b:bat[:any_1],g:bat[:oid],e:bat[:any_2],ignorenils:bit):bat[:wrd] 
 address AGGRcount3;
-command aggr.cardinality(b:bat[:oid,:any_2]):lng 
+command aggr.cardinality(b:bat[:any_2]):lng 
 address ALGcard;
 comment Return the cardinality of the BAT tail values.
 
-command aggr.count_no_nil(b:bat[:oid,:any_2]):wrd 
+command aggr.count_no_nil(b:bat[:any_2]):wrd 
 address ALGcount_no_nil;
 comment Return the number of elements currently        in a BAT ignoring BUNs 
with nil-tail
 
-command aggr.count(b:bat[:oid,:any],ignore_nils:bit):wrd 
+command aggr.count(b:bat[:any],ignore_nils:bit):wrd 
 address ALGcount_nil;
 comment Return the number of elements currently in a BAT ignores               
BUNs with nil-tail iff ignore_nils==TRUE.
 
-command aggr.count(b:bat[:oid,:any]):wrd 
+command aggr.count(b:bat[:any]):wrd 
 address ALGcount_bat;
 comment Return the current size (in number of elements) in a BAT.
 
-command aggr.exist(b:bat[:oid,:any_2],h:any_1):bit 
+command aggr.exist(b:bat[:any_2],h:any_1):bit 
 address ALGexist;
-command aggr.jsonaggr(val:bat[:oid,:dbl]):str 
+command aggr.jsonaggr(val:bat[:dbl]):str 
 address JSONgroupStr;
 comment Aggregate the double values to array.
 
-command aggr.jsonaggr(val:bat[:oid,:str]):str 
+command aggr.jsonaggr(val:bat[:str]):str 
 address JSONgroupStr;
 comment Aggregate the string values to array.
 
-function aggr.median(b:bat[:oid,:any_1]):any_1;
-command 
aggr.median(b:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:any_1]
 
+function aggr.median(b:bat[:any_1]):any_1;
+command aggr.median(b:bat[:any_1],g:bat[:oid],e:bat[:any_2]):bat[:any_1] 
 address AGGRmedian3;
 comment Grouped median aggregate
 
-command 
aggr.max(b:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:any_1]
 
+command aggr.max(b:bat[:any_1],g:bat[:oid],e:bat[:any_2]):bat[:any_1] 
 address AGGRmax3;
-command 
aggr.min(b:bat[:oid,:any_1],g:bat[:oid,:oid],e:bat[:oid,:any_2]):bat[:oid,:any_1]
 
+command aggr.min(b:bat[:any_1],g:bat[:oid],e:bat[:any_2]):bat[:any_1] 
 address AGGRmin3;
-command aggr.max(b:bat[:oid,:any_2]):any_2 
+command aggr.max(b:bat[:any_2]):any_2 
 address ALGmaxany;
 comment Return the highest tail value or nil.
 
-command aggr.min(b:bat[:oid,:any_2]):any_2 
+command aggr.min(b:bat[:any_2]):any_2 
 address ALGminany;
 comment Return the lowest tail value or nil.
 
-pattern aggr.prod(b:bat[:oid,:dbl],s:bat[:oid,:oid],nil_if_empty:bit):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B with candidate list.
-
-pattern aggr.prod(b:bat[:oid,:dbl],s:bat[:oid,:oid]):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B with candidate list.
-
-pattern aggr.prod(b:bat[:oid,:dbl],nil_if_empty:bit):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B.
-
-pattern aggr.prod(b:bat[:oid,:dbl]):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B.
-
-pattern aggr.prod(b:bat[:oid,:flt],s:bat[:oid,:oid],nil_if_empty:bit):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B with candidate list.
-
-pattern aggr.prod(b:bat[:oid,:flt],s:bat[:oid,:oid]):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B with candidate list.
-
-pattern aggr.prod(b:bat[:oid,:flt],nil_if_empty:bit):dbl 
-address CMDBATprod;
-comment Calculate aggregate product of B.
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to