Changeset: 9f68c24045e8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9f68c24045e8
Added Files:
        sql/test/BugTracker-2019/Tests/double-free.Bug-6757.sql
        sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.err
        sql/test/BugTracker-2019/Tests/double-free.Bug-6757.stable.out
        sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.py
        sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.err
        sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.out
        sql/test/BugTracker-2019/Tests/select-char.Bug-6761.sql
        sql/test/BugTracker-2019/Tests/select-char.Bug-6761.stable.err
        sql/test/BugTracker-2019/Tests/select-char.Bug-6761.stable.out
Removed Files:
        sql/scripts/11_times.sql
        
sql/test/BugTracker-2015/Tests/incorrect_result_type.Bug-3687.stable.out.int128
        
sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.stable.out.int128
        
sql/test/BugTracker-2016/Tests/inner_join_cross_join.Bug-6140.stable.out.int128
        sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.stable.out.int128
        
sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.stable.out.int128
        
sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.stable.out.int128
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.stable.out.int128
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-coalesce-division-by-zero.Bug-6556.stable.out.int128
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.stable.out.int128
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out.int128
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-select-nullif-case.Bug-6579.stable.out.int128
Modified Files:
        MonetDB.spec
        NT/rules.msc
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/mclient.c
        clients/mapiclient/stethoscope.c
        common/stream/stream.c
        common/utils/matomic.h
        configure.ag
        debian/control
        debian/fix-deb.sh
        debian/monetdb-testing-python.install
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        gdk/gdk_calc.h
        gdk/gdk_group.c
        gdk/gdk_hash.c
        gdk/gdk_hash.h
        gdk/gdk_heap.c
        gdk/gdk_imprints.c
        gdk/gdk_interprocess.c
        gdk/gdk_logger.c
        gdk/gdk_orderidx.c
        gdk/gdk_private.h
        gdk/gdk_storage.c
        gdk/gdk_system.h
        gdk/gdk_utils.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/modules/kernel/aggr.c
        monetdb5/modules/kernel/aggr.mal
        monetdb5/modules/kernel/aggr.mal.sh
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/tablet.c
        sql/ChangeLog.Nov2019
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi/pyapi.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_result.h
        sql/backends/monet5/sql_upgrades.c
        sql/common/sql_list.c
        sql/common/sql_types.c
        sql/common/sql_types.h
        sql/include/sql_catalog.h
        sql/include/sql_relation.h
        sql/rel.txt
        sql/scripts/39_analytics.sql
        sql/scripts/39_analytics_hge.sql
        sql/scripts/Makefile.ag
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_prop.c
        sql/server/rel_prop.h
        sql/server/rel_psm.c
        sql/server/rel_psm.h
        sql/server/rel_rel.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/rel_semantic.c
        sql/server/rel_unnest.c
        sql/server/rel_unnest.h
        sql/server/rel_updates.c
        sql/server/sql_env.c
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.y
        sql/server/sql_qc.c
        sql/server/sql_qc.h
        sql/server/sql_tokens.h
        sql/storage/bat/res_table.c
        sql/storage/sql_catalog.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        sql/storage/store_dependency.c
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/union_limitation.SF-921992.stable.out
        sql/test/BugTracker-2009/Tests/All
        
sql/test/BugTracker-2009/Tests/insert_into_done_by_procedure.SF-2607293.sql
        sql/test/BugTracker-2015/Tests/incorrect_result_type.Bug-3687.sql
        sql/test/BugTracker-2016/Tests/column_alias_in_where_clause.Bug-3947.sql
        sql/test/BugTracker-2016/Tests/inner_join_cross_join.Bug-6140.sql
        sql/test/BugTracker-2016/Tests/leftjoin.Bug-3981.stable.out
        sql/test/BugTracker-2017/Tests/crash-dce.Bug-6330.sql
        sql/test/BugTracker-2017/Tests/crash-select_after_MAL_error.Bug-6332.sql
        sql/test/BugTracker-2017/Tests/group-by-on-constant.Bug-6082.sql
        sql/test/BugTracker-2018/Tests/All
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-aritmetic-expressions-handling.Bug-6576.sql
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-count-coalesce-nullif.Bug-6586.sql
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.sql
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.sql
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-having-not-null-not-in.Bug-6557.stable.out
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-select-nullif-case.Bug-6579.sql
        sql/test/BugTracker-2019/Tests/All
        sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.err
        sql/test/BugTracker-2019/Tests/cte-union.Bug-6755.stable.out
        
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.sql
        
sql/test/BugTracker-2019/Tests/sequence-first-next-value.Bug-6743.stable.out
        sql/test/BugTracker/Tests/All
        sql/test/SQLite_regress/sqllogictest/sqllogictest.py
        sql/test/Tests/window_functions.stable.out
        sql/test/analytics/Tests/analytics09.stable.err
        sql/test/analytics/Tests/analytics09.stable.out
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/mergetables/Tests/sqlsmith.Bug-6455.stable.out
        sql/test/rename/Tests/All
        sql/test/subquery/Tests/any.sql
        sql/test/subquery/Tests/any.stable.err
        sql/test/subquery/Tests/any.stable.out
        sql/test/subquery/Tests/correlated.stable.err
        sql/test/subquery/Tests/correlated.stable.out
        sql/test/subquery/Tests/subquery.sql
        sql/test/subquery/Tests/subquery.stable.err
        sql/test/subquery/Tests/subquery2.sql
        
sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.stable.out
        sql/test/sys-schema/Tests/check_MaxStrLength_violations.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
        sql/test/testdb-reload/Tests/reload.py
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        testing/Mtest.py.in
        testing/process.py
        tools/merovingian/daemon/client.c
        tools/merovingian/daemon/controlrunner.c
        tools/merovingian/daemon/discoveryrunner.c
        tools/merovingian/daemon/merovingian.c
        tools/merovingian/daemon/multiplex-funnel.c
Branch: mlogger
Log Message:

Merge with default


diffs (truncated from 13594 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -84,9 +84,9 @@
 %bcond_without rintegration
 %endif
 
-# On Fedora and RHEL 7, create the MonetDB-python2 package.
+# On Fedora <= 30 and RHEL 7, create the MonetDB-python2 package.
 # On RHEL 6, numpy is too old.
-%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
+%if 0%{?rhel} == 7 || %{!?fedora:1000}%{?fedora} <= 30
 %bcond_without py2integration
 %endif
 %if %{?rhel:0}%{!?rhel:1}
@@ -164,12 +164,7 @@ BuildRequires: python-devel
 # RedHat Enterprise Linux calls it simply numpy
 BuildRequires: numpy
 %else
-%if (0%{?fedora} >= 24)
 BuildRequires: python2-numpy
-%else
-# Fedora <= 23 doesn't have python2-numpy
-BuildRequires: numpy
-%endif
 %endif
 %endif
 %if %{with py3integration}
@@ -1053,7 +1048,12 @@ do
   install -p -m 644 buildtools/selinux/monetdb.pp.${selinuxvariant} \
     %{buildroot}%{_datadir}/selinux/${selinuxvariant}/monetdb.pp
 done
-/usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+if [ -x /usr/sbin/hardlink ]; then
+    /usr/sbin/hardlink -cv %{buildroot}%{_datadir}/selinux
+else
+    # Fedora 31
+    /usr/bin/hardlink -cv %{buildroot}%{_datadir}/selinux
+fi
 %endif
 
 %post -p /sbin/ldconfig
diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -42,6 +42,7 @@ BITSMCHN=X64
 # force W_CFLAGS off in debug builds: using icc, you get way more
 # warnings about casts which results in the code being uncompilable
 W_CFLAGS =
+HAVE_MAL_DEBUGGER = 1
 !ENDIF
 !IFDEF ENABLE_STRICT
 # strict mode: treat warnings as errors
@@ -386,6 +387,11 @@ create_winconfig_conds_new_py:
 !ELSE
        $(ECHO) HAVE_SHP_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
 !ENDIF
+!IFDEF HAVE_MAL_DEBUGGER
+       $(ECHO) HAVE_MAL_DEBUGGER_FALSE='#' >> 
"$(TOPDIR)\winconfig_conds_new.py"
+!ELSE
+       $(ECHO) HAVE_MAL_DEBUGGER_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py"
+!ENDIF
 !IFDEF HAVE_SQL
        $(ECHO) HAVE_SQL_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py"
 !ELSE
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
@@ -124,6 +124,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "max",  "command aggr.max(b:bat[:any_2]):any_2 ",       
"ALGmaxany;",   "Return the highest tail value or nil." ]
 [ "aggr",      "max",  "command aggr.max(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGmaxany_skipnil;",   "Return the highest tail value or nil." ]
 [ "aggr",      "median",       "command aggr.median(b:bat[:any_1]):any_1 ",    
"AGGRmedian;",  "Median aggregate"      ]
+[ "aggr",      "median_avg",   "command aggr.median_avg(b:bat[:any_1]):dbl ",  
"AGGRmedian_avg;",      "Median aggregate"      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:any_1] ",     "AGGRmin3;",    ""      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2]):any_2 ",       
"ALGminany;",   "Return the lowest tail value or nil."  ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGminany_skipnil;",   "Return the lowest tail value or nil."  ]
@@ -209,6 +210,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):sht ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "quantile",     "command aggr.quantile(b:bat[:any_1], 
q:bat[:dbl]):any_1 ",     "AGGRquantile;",        "Quantile aggregate"    ]
+[ "aggr",      "quantile_avg", "command aggr.quantile_avg(b:bat[:any_1], 
q:bat[:dbl]):dbl ",   "AGGRquantile_avg;",    "Quantile aggregate"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on bte"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on dbl"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on flt"    ]
@@ -310,6 +312,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",      
"AGGRsubmaxcand_val;",  "Grouped maximum aggregate with candidates list"        
]
 [ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",        
"AGGRsubmedian;",       "Grouped median aggregate"      ]
 [ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",   
"AGGRsubmediancand;",   "Grouped median aggregate with candidate list"  ]
+[ "aggr",      "submedian_avg",        "command 
aggr.submedian_avg(b:bat[:any_1], g:bat[:oid], e:bat[:any_2], 
skip_nils:bit):bat[:dbl] ",      "AGGRsubmedian_avg;",   "Grouped median 
aggregate"      ]
+[ "aggr",      "submedian_avg",        "command 
aggr.submedian_avg(b:bat[:any_1], g:bat[:oid], e:bat[:any_2], s:bat[:oid], 
skip_nils:bit):bat[:dbl] ", "AGGRsubmediancand_avg;",       "Grouped median 
aggregate with candidate list"  ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:oid] ",     "AGGRsubmin;",  
"Grouped minimum aggregate"     ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",   "AGGRsubmin_val;",  
    "Grouped minimum aggregate"     ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:oid] ",        
"AGGRsubmincand;",      "Grouped minimum aggregate with candidates list"        
]
@@ -342,6 +346,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
"AGGRsubprodcand_sht;", "Grouped product aggregate with candidates list"        
]
 [ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ", 
"AGGRsubquantile;",     "Grouped quantile aggregate"    ]
 [ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], s:bat[:oid], 
skip_nils:bit):bat[:any_1] ",    "AGGRsubquantilecand;", "Grouped quantile 
aggregate with candidate list"        ]
+[ "aggr",      "subquantile_avg",      "command 
aggr.subquantile_avg(b:bat[:any_1], q:bat[:dbl], g:bat[:oid], e:bat[:any_2], 
skip_nils:bit):bat[:dbl] ",       "AGGRsubquantile_avg;", "Grouped quantile 
aggregate"    ]
+[ "aggr",      "subquantile_avg",      "command 
aggr.subquantile_avg(b:bat[:any_1], q:bat[:dbl], g:bat[:oid], e:bat[:any_2], 
s:bat[:oid], skip_nils:bit):bat[:dbl] ",  "AGGRsubquantilecand_avg;",     
"Grouped quantile aggregate with candidate list"        ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
@@ -11751,6 +11757,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "storage",      "pattern sql.storage(sname:str, tname:str, 
cname:str) (schema:bat[:str], table:bat[:str], column:bat[:str], 
type:bat[:str], mode:bat[:str], location:bat[:str], count:bat[:lng], 
atomwidth:bat[:int], columnsize:bat[:lng], heap:bat[:lng], hashes:bat[:lng], 
phash:bat[:bit], imprints:bat[:lng], sorted:bat[:bit], revsorted:bat[:bit], 
key:bat[:bit], orderidx:bat[:lng]) ", "sql_storage;", "return a table with 
storage information for a particular column"       ]
 [ "sql",       "subdelta",     "command sql.subdelta(col:bat[:oid], 
cand:bat[:oid], uid:bat[:oid], uval:bat[:oid]):bat[:oid] ",        
"DELTAsub2;",   "Return a single bat of selected delta."        ]
 [ "sql",       "subdelta",     "command sql.subdelta(col:bat[:oid], 
cand:bat[:oid], uid:bat[:oid], uval:bat[:oid], ins:bat[:oid]):bat[:oid] ", 
"DELTAsub;",    "Return a single bat of selected delta."        ]
+[ "sql",       "subnull",      "command sql.subnull(l:bat[:any_1], 
gp:bat[:oid], gpe:bat[:oid], no_nil:bit):bat[:bit] ",       "SQLnil_grp;",  "if 
any value in l is nil with in a group return true for that group, else false"   
    ]
 [ "sql",       "subzero_or_one",       "inline function 
sql.subzero_or_one(b:bat[:any_1], gp:bat[:oid], gpe:bat[:oid], 
no_nil:bit):bat[:any_1];",      "",     ""      ]
 [ "sql",       "sum",  "pattern sql.sum(b:bte, s:lng, e:lng):lng ",    
"SQLsum;",      "return the sum of groups"      ]
 [ "sql",       "sum",  "pattern sql.sum(b:dbl, s:lng, e:lng):dbl ",    
"SQLsum;",      "return the sum of groups"      ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -132,6 +132,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "max",  "command aggr.max(b:bat[:any_2]):any_2 ",       
"ALGmaxany;",   "Return the highest tail value or nil." ]
 [ "aggr",      "max",  "command aggr.max(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGmaxany_skipnil;",   "Return the highest tail value or nil." ]
 [ "aggr",      "median",       "command aggr.median(b:bat[:any_1]):any_1 ",    
"AGGRmedian;",  "Median aggregate"      ]
+[ "aggr",      "median_avg",   "command aggr.median_avg(b:bat[:any_1]):dbl ",  
"AGGRmedian_avg;",      "Median aggregate"      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:any_1] ",     "AGGRmin3;",    ""      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2]):any_2 ",       
"ALGminany;",   "Return the lowest tail value or nil."  ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGminany_skipnil;",   "Return the lowest tail value or nil."  ]
@@ -246,6 +247,7 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):lng ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "prod", "pattern aggr.prod(b:bat[:sht], s:bat[:oid], 
nil_if_empty:bit):sht ",   "CMDBATprod;",  "Calculate aggregate product of B 
with candidate list." ]
 [ "aggr",      "quantile",     "command aggr.quantile(b:bat[:any_1], 
q:bat[:dbl]):any_1 ",     "AGGRquantile;",        "Quantile aggregate"    ]
+[ "aggr",      "quantile_avg", "command aggr.quantile_avg(b:bat[:any_1], 
q:bat[:dbl]):dbl ",   "AGGRquantile_avg;",    "Quantile aggregate"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on bte"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on dbl"    ]
 [ "aggr",      "stdev",        "command aggr.stdev(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",       "AGGRstdev3_dbl;",      "Grouped tail 
standard deviation (sample/non-biased) on flt"    ]
@@ -355,6 +357,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "submax",       "command aggr.submax(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",      
"AGGRsubmaxcand_val;",  "Grouped maximum aggregate with candidates list"        
]
 [ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",        
"AGGRsubmedian;",       "Grouped median aggregate"      ]
 [ "aggr",      "submedian",    "command aggr.submedian(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:any_1] ",   
"AGGRsubmediancand;",   "Grouped median aggregate with candidate list"  ]
+[ "aggr",      "submedian_avg",        "command 
aggr.submedian_avg(b:bat[:any_1], g:bat[:oid], e:bat[:any_2], 
skip_nils:bit):bat[:dbl] ",      "AGGRsubmedian_avg;",   "Grouped median 
aggregate"      ]
+[ "aggr",      "submedian_avg",        "command 
aggr.submedian_avg(b:bat[:any_1], g:bat[:oid], e:bat[:any_2], s:bat[:oid], 
skip_nils:bit):bat[:dbl] ", "AGGRsubmediancand_avg;",       "Grouped median 
aggregate with candidate list"  ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:oid] ",     "AGGRsubmin;",  
"Grouped minimum aggregate"     ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ",   "AGGRsubmin_val;",  
    "Grouped minimum aggregate"     ]
 [ "aggr",      "submin",       "command aggr.submin(b:bat[:any_1], 
g:bat[:oid], e:bat[:any_2], s:bat[:oid], skip_nils:bit):bat[:oid] ",        
"AGGRsubmincand;",      "Grouped minimum aggregate with candidates list"        
]
@@ -397,6 +401,8 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "subprod",      "command aggr.subprod(b:bat[:sht], g:bat[:oid], 
e:bat[:any_1], s:bat[:oid], skip_nils:bit, abort_on_error:bit):bat[:sht] ",     
"AGGRsubprodcand_sht;", "Grouped product aggregate with candidates list"        
]
 [ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], skip_nils:bit):bat[:any_1] ", 
"AGGRsubquantile;",     "Grouped quantile aggregate"    ]
 [ "aggr",      "subquantile",  "command aggr.subquantile(b:bat[:any_1], 
q:bat[:dbl], g:bat[:oid], e:bat[:any_2], s:bat[:oid], 
skip_nils:bit):bat[:any_1] ",    "AGGRsubquantilecand;", "Grouped quantile 
aggregate with candidate list"        ]
+[ "aggr",      "subquantile_avg",      "command 
aggr.subquantile_avg(b:bat[:any_1], q:bat[:dbl], g:bat[:oid], e:bat[:any_2], 
skip_nils:bit):bat[:dbl] ",       "AGGRsubquantile_avg;", "Grouped quantile 
aggregate"    ]
+[ "aggr",      "subquantile_avg",      "command 
aggr.subquantile_avg(b:bat[:any_1], q:bat[:dbl], g:bat[:oid], e:bat[:any_2], 
s:bat[:oid], skip_nils:bit):bat[:dbl] ",  "AGGRsubquantilecand_avg;",     
"Grouped quantile aggregate with candidate list"        ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:bte], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
 [ "aggr",      "substdev",     "command aggr.substdev(b:bat[:flt], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ", 
"AGGRsubstdev_dbl;",    "Grouped standard deviation (sample/non-biased) 
aggregate"      ]
@@ -16163,6 +16169,7 @@ stdout of test 'MAL-signatures` in direc
 [ "sql",       "storage",      "pattern sql.storage(sname:str, tname:str, 
cname:str) (schema:bat[:str], table:bat[:str], column:bat[:str], 
type:bat[:str], mode:bat[:str], location:bat[:str], count:bat[:lng], 
atomwidth:bat[:int], columnsize:bat[:lng], heap:bat[:lng], hashes:bat[:lng], 
phash:bat[:bit], imprints:bat[:lng], sorted:bat[:bit], revsorted:bat[:bit], 
key:bat[:bit], orderidx:bat[:lng]) ", "sql_storage;", "return a table with 
storage information for a particular column"       ]
 [ "sql",       "subdelta",     "command sql.subdelta(col:bat[:oid], 
cand:bat[:oid], uid:bat[:oid], uval:bat[:oid]):bat[:oid] ",        
"DELTAsub2;",   "Return a single bat of selected delta."        ]
 [ "sql",       "subdelta",     "command sql.subdelta(col:bat[:oid], 
cand:bat[:oid], uid:bat[:oid], uval:bat[:oid], ins:bat[:oid]):bat[:oid] ", 
"DELTAsub;",    "Return a single bat of selected delta."        ]
+[ "sql",       "subnull",      "command sql.subnull(l:bat[:any_1], 
gp:bat[:oid], gpe:bat[:oid], no_nil:bit):bat[:bit] ",       "SQLnil_grp;",  "if 
any value in l is nil with in a group return true for that group, else false"   
    ]
 [ "sql",       "subzero_or_one",       "inline function 
sql.subzero_or_one(b:bat[:any_1], gp:bat[:oid], gpe:bat[:oid], 
no_nil:bit):bat[:any_1];",      "",     ""      ]
 [ "sql",       "sum",  "pattern sql.sum(b:bte, s:lng, e:lng):hge ",    
"SQLsum;",      "return the sum of groups"      ]
 [ "sql",       "sum",  "pattern sql.sum(b:bte, s:lng, e:lng):lng ",    
"SQLsum;",      "return the sum of groups"      ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -127,9 +127,11 @@ gdk_return BATgroupavg(BAT **bnp, BAT **
 BAT *BATgroupcount(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, 
bool abort_on_error);
 BAT *BATgroupmax(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, bool 
abort_on_error);
 BAT *BATgroupmedian(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, 
bool abort_on_error);
+BAT *BATgroupmedian_avg(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool 
skip_nils, bool abort_on_error);
 BAT *BATgroupmin(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, bool 
abort_on_error);
 BAT *BATgroupprod(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, bool 
abort_on_error);
 BAT *BATgroupquantile(BAT *b, BAT *g, BAT *e, BAT *s, int tp, double quantile, 
bool skip_nils, bool abort_on_error);
+BAT *BATgroupquantile_avg(BAT *b, BAT *g, BAT *e, BAT *s, int tp, double 
quantile, bool skip_nils, bool abort_on_error);
 BAT *BATgroupsize(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils, bool 
abort_on_error);
 BAT *BATgroupstdev_population(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool 
skip_nils, bool abort_on_error);
 BAT *BATgroupstdev_sample(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool 
skip_nils, bool abort_on_error);
@@ -615,6 +617,7 @@ str AGGRcount3nils(bat *retval, const ba
 str AGGRcount3nonils(bat *retval, const bat *bid, const bat *gid, const bat 
*eid);
 str AGGRmax3(bat *retval, const bat *bid, const bat *gid, const bat *eid);
 str AGGRmedian(void *retval, const bat *bid);
+str AGGRmedian_avg(dbl *retval, const bat *bid);
 str AGGRmin3(bat *retval, const bat *bid, const bat *gid, const bat *eid);
 str AGGRprod3_bte(bat *retval, const bat *bid, const bat *gid, const bat *eid);
 str AGGRprod3_dbl(bat *retval, const bat *bid, const bat *gid, const bat *eid);
@@ -624,6 +627,7 @@ str AGGRprod3_int(bat *retval, const bat
 str AGGRprod3_lng(bat *retval, const bat *bid, const bat *gid, const bat *eid);
 str AGGRprod3_sht(bat *retval, const bat *bid, const bat *gid, const bat *eid);
 str AGGRquantile(void *retval, const bat *bid, const bat *qid);
+str AGGRquantile_avg(dbl *retval, const bat *bid, const bat *qid);
 str AGGRstdev3_dbl(bat *retval, const bat *bid, const bat *gid, const bat 
*eid);
 str AGGRstdevp3_dbl(bat *retval, const bat *bid, const bat *gid, const bat 
*eid);
 str AGGRstr_group_concat(bat *retval, const bat *bid, const bat *gid, const 
bat *eid);
@@ -643,7 +647,9 @@ str AGGRsubmax_val(bat *retval, const ba
 str AGGRsubmaxcand(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bat *sid, const bit *skip_nils);
 str AGGRsubmaxcand_val(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bat *sid, const bit *skip_nils);
 str AGGRsubmedian(bat *retval, const bat *bid, const bat *gid, const bat *eid, 
const bit *skip_nils);
+str AGGRsubmedian_avg(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bit *skip_nils);
 str AGGRsubmediancand(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bat *sid, const bit *skip_nils);
+str AGGRsubmediancand_avg(bat *retval, const bat *bid, const bat *gid, const 
bat *eid, const bat *sid, const bit *skip_nils);
 str AGGRsubmin(bat *retval, const bat *bid, const bat *gid, const bat *eid, 
const bit *skip_nils);
 str AGGRsubmin_val(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bit *skip_nils);
 str AGGRsubmincand(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bat *sid, const bit *skip_nils);
@@ -663,7 +669,9 @@ str AGGRsubprodcand_int(bat *retval, con
 str AGGRsubprodcand_lng(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bat *sid, const bit *skip_nils, const bit *abort_on_error);
 str AGGRsubprodcand_sht(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bat *sid, const bit *skip_nils, const bit *abort_on_error);
 str AGGRsubquantile(bat *retval, const bat *bid, const bat *quantile, const 
bat *gid, const bat *eid, const bit *skip_nils);
+str AGGRsubquantile_avg(bat *retval, const bat *bid, const bat *quantile, 
const bat *gid, const bat *eid, const bit *skip_nils);
 str AGGRsubquantilecand(bat *retval, const bat *bid, const bat *quantile, 
const bat *gid, const bat *eid, const bat *sid, const bit *skip_nils);
+str AGGRsubquantilecand_avg(bat *retval, const bat *bid, const bat *quantile, 
const bat *gid, const bat *eid, const bat *sid, const bit *skip_nils);
 str AGGRsubstdev_dbl(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bit *skip_nils, const bit *abort_on_error);
 str AGGRsubstdevcand_dbl(bat *retval, const bat *bid, const bat *gid, const 
bat *eid, const bat *sid, const bit *skip_nils, const bit *abort_on_error);
 str AGGRsubstdevp_dbl(bat *retval, const bat *bid, const bat *gid, const bat 
*eid, const bit *skip_nils, const bit *abort_on_error);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3664,6 +3664,9 @@ main(int argc, char **argv)
                if (mode == SQL)
                        dump_version(mid, toConsole, "Database:");
 
+               mnstr_printf(toConsole, "FOLLOW US on 
https://twitter.com/MonetDB ");
+               mnstr_printf(toConsole, "or 
https://github.com/MonetDB/MonetDB\n";);
+
                mnstr_printf(toConsole, "Type \\q to quit, \\? for a list of 
available commands\n");
                if (mode == SQL)
                        mnstr_printf(toConsole, "auto commit mode: %s\n",
diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -110,7 +110,7 @@ renderEvent(EventRecord *ev){
                return;
        fprintf(s, "[ ");
        fprintf(s, "%"PRId64",  ", ev->eventnr);
-       printf("\"%s\", ", ev->time);
+       fprintf(s, "\"%s\",     ", ev->time);
        if( ev->function && *ev->function)
                fprintf(s, "\"%s[%d]%d\",       ", ev->function, ev->pc, 
ev->tag);
        else
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -73,6 +73,9 @@
 # include <netinet/tcp.h>
 # include <netdb.h>
 #endif
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#endif
 
 #ifdef NATIVE_WIN32
 #include <io.h>
@@ -2489,9 +2492,21 @@ socket_read(stream *restrict s, void *re
 #endif
        for (;;) {
                if (s->timeout) {
+                       int ret;
+#ifdef HAVE_POLL
+                       struct pollfd pfd;
+
+                       pfd = (struct pollfd) {.fd = s->stream_data.s,
+                                              .events = POLLIN};
+
+                       ret = poll(&pfd, 1, (int) s->timeout);
+                       if (ret == -1 || (pfd.revents & POLLERR)) {
+                               s->errnr = MNSTR_READ_ERROR;
+                               return -1;
+                       }
+#else
                        struct timeval tv;
                        fd_set fds;
-                       int ret;
 
                        errno = 0;
 #ifdef _MSC_VER
@@ -2512,6 +2527,7 @@ socket_read(stream *restrict s, void *re
                                s->errnr = MNSTR_READ_ERROR;
                                return -1;
                        }
+#endif
                        if (ret == 0) {
                                if (s->timeout_func == NULL || 
s->timeout_func()) {
                                        s->errnr = MNSTR_TIMEOUT;
@@ -2520,7 +2536,11 @@ socket_read(stream *restrict s, void *re
                                continue;
                        }
                        assert(ret == 1);
+#ifdef HAVE_POLL
+                       assert(pfd.revents & (POLLIN|POLLHUP));
+#else
                        assert(FD_ISSET(s->stream_data.s, &fds));
+#endif
                }
 #ifdef _MSC_VER
                nr = recv(s->stream_data.s, buf, (int) size, 0);
@@ -2617,9 +2637,20 @@ static int
 socket_isalive(stream *s)
 {
        SOCKET fd = s->stream_data.s;
-       char buffer[32];
+#ifdef HAVE_POLL
+       struct pollfd pfd;
+       int ret;
+       pfd = (struct pollfd){.fd = fd};
+       if ((ret = poll(&pfd, 1, 0)) == 0)
+               return 1;
+       if (ret < 0 || pfd.revents & (POLLERR | POLLHUP))
+               return 0;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to