Changeset: cfa8fbc380a8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cfa8fbc380a8
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_upgrades.c
        sql/common/sql_types.c
        sql/include/sql_catalog.h
        sql/scripts/52_describe.sql
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_planner.c
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/server/rel_unnest.c
        sql/storage/bat/bat_logger.c
        sql/storage/store.c
        sql/test/Dependencies/Tests/dependency_owner_schema_3.test
        sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.test
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.test
Branch: mangled
Log Message:

Merge with default.


diffs (truncated from 147852 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -820,3 +820,5 @@ 65065954ca086d01254a20cc145695fa8b9a3db2
 4b353b1f914e3c9c7493117284f9cc06677e4c71 Jul2021_SP1_release
 65065954ca086d01254a20cc145695fa8b9a3db2 Jul2021_SP1_release
 014b82412e664a306d2f5d3a2a2d49d75a6f8da5 Jan2022_root
+1cc77329e40543d12dd9de04cbeec50d442520e9 Jul2021_13
+1cc77329e40543d12dd9de04cbeec50d442520e9 Jul2021_SP2_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -81,7 +81,7 @@ Group: Applications/Databases
 License: MPLv2.0
 URL: https://www.monetdb.org/
 BugURL: https://bugs.monetdb.org/
-Source: 
https://www.monetdb.org/downloads/sources/Jul2021-SP1/%{name}-%{version}.tar.bz2
+Source: 
https://www.monetdb.org/downloads/sources/Jul2021-SP2/%{name}-%{version}.tar.bz2
 
 # The Fedora packaging document says we need systemd-rpm-macros for
 # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
@@ -823,9 +823,7 @@ install -d -m 0775 %{buildroot}%{_rundir
 rm -f %{buildroot}%{_libdir}/*.la
 rm -f %{buildroot}%{_libdir}/monetdb5/*.la
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_opt_sql_append.so
-rm -f %{buildroot}%{_libdir}/monetdb5/run_*.mal
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_run_*.so
-rm -f %{buildroot}%{_libdir}/monetdb5/microbenchmark.mal
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_microbenchmark*.so
 rm -f %{buildroot}%{_libdir}/monetdb5/lib_udf*.so
 rm -f %{buildroot}%{_bindir}/monetdb_mtest.sh
@@ -848,6 +846,40 @@ fi
 %endif
 
 %changelog
+* Mon Dec 13 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.13-20211213
+- Rebuilt.
+- GH#7163: Multiple sql.mvc() invocations in the same query
+- GH#7167: sys.shutdown() problems
+- GH#7184: Insert into query blocks all other queries
+- GH#7185: GROUPING SETS on groups with aliases provided in the SELECT
+  returns empty result
+- GH#7186: data files created with COPY SELECT .. INTO 'file.csv' fail to
+  be loaded using COPY INTO .. FROM 'file.csv' when double quoted string
+  data contains the field values delimiter character
+- GH#7191: [MonetDBe] monetdbe_cleanup_statement() with bound NULLs on
+  variable-sized types bug
+- GH#7196: BATproject2: does not match always
+- GH#7198: Suboptimal query plan for query containing JSON access filter
+  and two negative string comparisons
+- GH#7200: PRIMARY KEY unique constraint is violated with concurrent
+  inserts
+- GH#7206: Python UDF fails when returning an empty table as a dictionary
+
+* Mon Dec 13 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.13-20211213
+- clients: Dumping the database now also dumps the read-only and insert-only
+  states of tables.
+
+* Mon Dec 13 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.13-20211213
+- gdk: Sometimes when the server was restarted, it wouldn't start anymore due
+  to an error from BBPcheckbats.  We finally found and fixed a (hopefully
+  "the") cause of this problem.
+
+* Thu Oct 28 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.13-20211213
+- sql: Number parsing for SQL was fixed.  If a number was immediately followed
+  by letters (i.e. without a space), the number was accepted and the
+  alphanumeric string starting with the letter was interpreted as an alias
+  (if aliases were allowed in that position).
+
 * Thu Sep 30 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.11-20210930
 - Rebuilt.
 
diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -45,7 +45,9 @@ def main():
         if vsdir is not None:
             vcdir = os.path.join(vsdir, 'VC')
     if vcdir is None:
-        if os.path.exists(r'C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC'):
+        if os.path.exists(r'C:\Program Files\Microsoft Visual 
Studio\2022\Community\VC'):
+            vcdir = r'C:\Program Files\Microsoft Visual 
Studio\2022\Community\VC'
+        elif os.path.exists(r'C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC'):
             vcdir = r'C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC'
         elif os.path.exists(r'C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC'):
             vcdir = r'C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC'
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -52,7 +52,9 @@ def main():
         if vsdir is not None:
             vcdir = os.path.join(vsdir, 'VC')
     if vcdir is None:
-        if os.path.exists(r'C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC'):
+        if os.path.exists(r'C:\Program Files\Microsoft Visual 
Studio\2022\Community\VC'):
+            vcdir = r'C:\Program Files\Microsoft Visual 
Studio\2022\Community\VC'
+        elif os.path.exists(r'C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC'):
             vcdir = r'C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC'
         elif os.path.exists(r'C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC'):
             vcdir = r'C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC'
diff --git a/clients/ChangeLog-Archive b/clients/ChangeLog-Archive
--- a/clients/ChangeLog-Archive
+++ b/clients/ChangeLog-Archive
@@ -1,6 +1,10 @@
 # DO NOT EDIT THIS FILE -- MAINTAINED AUTOMATICALLY
 # This file contains past ChangeLog entries
 
+* Mon Dec 13 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.13-20211213
+- Dumping the database now also dumps the read-only and insert-only
+  states of tables.
+
 * Tue Jul 20 2021 Sjoerd Mullender <sjo...@acm.org> - 11.41.1-20210723
 - The MonetDB stethoscope has been removed.  There is now a separate
   package available with PIP (monetdb_stethoscope) or as an RPM or DEB
diff --git a/clients/ChangeLog.Jul2021 b/clients/ChangeLog.Jul2021
--- a/clients/ChangeLog.Jul2021
+++ b/clients/ChangeLog.Jul2021
@@ -1,7 +1,3 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
-* Mon Dec 13 2021 Sjoerd Mullender <sjo...@acm.org>
-- Dumping the database now also dumps the read-only and insert-only
-  states of tables.
-
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
@@ -6350,6 +6350,8 @@
 [ "batsql",    "diff", "pattern batsql.diff(X_0:bat[:bit], 
X_1:bat[:any_1]):bat[:bit] ",       "SQLdiff;",     "return true if cur != prev 
row"        ]
 [ "batsql",    "diff", "pattern batsql.diff(X_0:bit, 
X_1:bat[:any_1]):bat[:bit] ",     "SQLdiff;",     "return true if cur != prev 
row"        ]
 [ "batsql",    "first_value",  "pattern batsql.first_value(X_0:bat[:any_1], 
X_1:any, X_2:any, X_3:int, X_4:any, X_5:any):bat[:any_1] ",        
"SQLfirst_value;",      "return the first value of groups"      ]
+[ "batsql",    "get_value",    "pattern batsql.get_value(X_0:bat[:str], 
X_1:bat[:str]):bat[:lng] ",    "mvc_get_value_bulk;",  "return the current 
value of the sequence (ie the next to be used value)"       ]
+[ "batsql",    "get_value",    "pattern batsql.get_value(X_0:bat[:str], 
X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid]):bat[:lng] ",      
"mvc_get_value_bulk;",  "return the current value of the sequence (ie the next 
to be used value)"       ]
 [ "batsql",    "index",        "command batsql.index(X_0:bat[:str], 
X_1:bit):bat[:bte] ",      "BATSTRindex_bte;",     "Return the offsets as an 
index bat"    ]
 [ "batsql",    "index",        "command batsql.index(X_0:bat[:str], 
X_1:bit):bat[:int] ",      "BATSTRindex_int;",     "Return the offsets as an 
index bat"    ]
 [ "batsql",    "index",        "command batsql.index(X_0:bat[:str], 
X_1:bit):bat[:sht] ",      "BATSTRindex_sht;",     "Return the offsets as an 
index bat"    ]
@@ -6386,8 +6388,6 @@
 [ "batsql",    "ntile",        "pattern batsql.ntile(X_0:bat[:any], X_1:any_1, 
X_2:any_2, X_3:any_3):bat[:any_1] ",    "SQLntile;",    "return the groups 
divided as equally as possible"      ]
 [ "batsql",    "ntile",        "pattern batsql.ntile(X_0:bat[:any], 
X_1:bat[:any_1], X_2:any_2, X_3:any_3):bat[:any_1] ",      "SQLntile;",    
"return the groups divided as equally as possible"      ]
 [ "batsql",    "password",     "pattern 
batsql.password(X_0:bat[:str]):bat[:str] ",    "db_password_wrap;",    "Return 
password hash of user"  ]
-[ "batsql",    "peak_next_value",      "pattern 
batsql.peak_next_value(X_0:bat[:str], X_1:bat[:str]):bat[:lng] ",      
"mvc_peak_next_value_bulk;",    "Peaks at the next value of the sequence"       
]
-[ "batsql",    "peak_next_value",      "pattern 
batsql.peak_next_value(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid]):bat[:lng] ",        "mvc_peak_next_value_bulk;",    "Peaks at 
the next value of the sequence"       ]
 [ "batsql",    "percent_rank", "pattern batsql.percent_rank(X_0:bat[:any_1], 
X_1:any_2, X_2:any_3):bat[:dbl] ",        "SQLpercent_rank;",     "return the 
percentage into the total number of groups for each row"    ]
 [ "batsql",    "prod", "pattern batsql.prod(X_0:bat[:bte], X_1:any, X_2:any, 
X_3:int, X_4:any, X_5:any):bat[:lng] ",   "SQLprod;",     "return the product 
of groups"  ]
 [ "batsql",    "prod", "pattern batsql.prod(X_0:bat[:dbl], X_1:any, X_2:any, 
X_3:int, X_4:any, X_5:any):bat[:dbl] ",   "SQLprod;",     "return the product 
of groups"  ]
@@ -9077,14 +9077,6 @@
 [ "netcdf",    "importvar",    "unsafe command netcdf.importvar(X_0:str, 
X_1:int):str ",       "NCDFimportVarStmt;",   "Import variable: compose create 
array string"  ]
 [ "netcdf",    "importvariable",       "unsafe pattern 
netcdf.importvariable(X_0:int, X_1:str):void ", "NCDFimportVariable;",  "Import 
variable: create array and load data from variable varname of file fileid"      
]
 [ "netcdf",    "test", "command netcdf.test(X_0:str):int ",    "NCDFtest;",    
"Returns number of variables in a given NetCDF dataset (file)"  ]
-[ "oltp",      "disable",      "unsafe pattern oltp.disable():void ",  
"OLTPdisable;", "Disable the OLTP delay monitor"        ]
-[ "oltp",      "enable",       "unsafe pattern oltp.enable():void ",   
"OLTPenable;",  "Enable the OLTP delay monitor" ]
-[ "oltp",      "init", "unsafe pattern oltp.init():void ",     "OLTPinit;",    
"Initialize the lock table"     ]
-[ "oltp",      "isenabled",    "unsafe command oltp.isenabled():int ", 
"OLTPis_enabled;",      "Query the OLTP state"  ]
-[ "oltp",      "lock", "unsafe pattern oltp.lock(X_0:int...):void ",   
"OLTPlock;",    "Wait for all write locks needed"       ]
-[ "oltp",      "release",      "unsafe pattern oltp.release(X_0:int...):void 
",        "OLTPrelease;", "Release for all write locks needed"    ]
-[ "oltp",      "reset",        "unsafe pattern oltp.reset():void ",    
"OLTPreset;",   "Reset the OLTP lock table"     ]
-[ "oltp",      "table",        "unsafe pattern oltp.table() 
(X_0:bat[:timestamp], X_1:bat[:str], X_2:bat[:int], X_3:bat[:int]) ",      
"OLTPtable;",   "Show status of lock table"     ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases(X_0:str, 
X_1:str):str ",     "OPTwrapper;",  "Alias removal optimizer"       ]
 [ "optimizer", "bincopyfrom",  "pattern optimizer.bincopyfrom():str ", 
"OPTwrapper;",  ""      ]
@@ -9143,9 +9135,6 @@
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex():str ",   
"OPTwrapper;",  ""      ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex(X_0:str, 
X_1:str):str ",   "OPTwrapper;",  "Compiler for multiplexed instructions" ]
 [ "optimizer", "no_mitosis_pipe",      "function 
optimizer.no_mitosis_pipe():void;",   "",     ""      ]
-[ "optimizer", "oltp", "pattern optimizer.oltp():str ",        "OPTwrapper;",  
""      ]
-[ "optimizer", "oltp", "pattern optimizer.oltp(X_0:str, X_1:str):str ",        
"OPTwrapper;",  "Inject the OLTP locking primitives"    ]
-[ "optimizer", "oltp_pipe",    "function optimizer.oltp_pipe():void;", "",     
""      ]
 [ "optimizer", "optimize",     "pattern optimizer.optimize(X_0:str, 
X_1:str):void ",   "QOToptimize;", "Optimize a specific operation" ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_0:str, X_1:str):void 
",      "OPTorcam;",    "Inverse macro processor for current function"  ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_0:str, X_1:str, 
X_2:str, X_3:str):void ",    "OPTorcam;",    "Inverse macro, find pattern and 
replace with a function call." ]
@@ -9263,10 +9252,10 @@
 [ "sql",       "affectedRows", "unsafe pattern sql.affectedRows(X_0:int, 
X_1:lng):int ",       "mvc_affected_rows_wrap;",      "export the number of 
affected rows by the current query"       ]
 [ "sql",       "all",  "pattern sql.all(X_0:bit, X_1:bit, X_2:bit):bit ",      
"SQLall_cmp;",  "if !cmp then false, (nl or nr) then nil, else true"    ]
 [ "sql",       "alpha",        "command sql.alpha(X_0:dbl, X_1:dbl):dbl ",     
"SQLcst_alpha_cst;",    "Implementation of astronomy alpha function: expands 
the radius theta depending on the declination"     ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, 
X_1:lng):void ",   "sql_analyze;", ""      ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, X_1:lng, 
X_2:str):void ",  "sql_analyze;", ""      ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, X_1:lng, 
X_2:str, X_3:str):void ", "sql_analyze;", ""      ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, X_1:lng, 
X_2:str, X_3:str, X_4:str):void ",        "sql_analyze;", "Update the database 
statistics table"  ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze():void ",   
"sql_analyze;", "Update statistics for every column in the database"    ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:str):void ",    
"sql_analyze;", "Update statistics for schema"  ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:str, 
X_1:str):void ",   "sql_analyze;", "Update statistics for table"   ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:str, X_1:str, 
X_2:str):void ",  "sql_analyze;", "Update statistics for column"  ]
 [ "sql",       "any",  "pattern sql.any(X_0:bit, X_1:bit, X_2:bit):bit ",      
"SQLany_cmp;",  "if cmp then true, (nl or nr) nil then nil, else false" ]
 [ "sql",       "append",       "pattern sql.append(X_0:int, X_1:str, X_2:str, 
X_3:str, X_4:oid, X_5:bat[:oid], X_6:any):int ", "mvc_append_wrap;",     
"Append to the column tname.cname (possibly optimized to replace the insert bat 
of tname.cname. Returns sequence number for order dependence."  ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        "Glue together the calling sequence"    ]
@@ -9361,7 +9350,7 @@
 [ "sql",       "first_value",  "pattern sql.first_value(X_0:any_1, X_1:bit, 
X_2:bit, X_3:int, X_4:oid, X_5:oid):any_1 ",       "SQLfirst_value;",      
"return the first value of groups"      ]
 [ "sql",       "getVariable",  "pattern sql.getVariable(X_0:int, X_1:str, 
X_2:str):any_1 ",    "getVariable;", "Get the value of a session variable"   ]
 [ "sql",       "getVersion",   "command sql.getVersion(X_0:int):lng ", 
"mvc_getVersion;",      "Return the database version identifier for a client."  
]
-[ "sql",       "get_value",    "pattern sql.get_value(X_0:str, X_1:str):lng ", 
"mvc_get_value;",       "return the current value of the sequence"      ]
+[ "sql",       "get_value",    "pattern sql.get_value(X_0:str, X_1:str):lng ", 
"mvc_get_value;",       "return the current value of the sequence (ie the next 
to be used value)"       ]
 [ "sql",       "grow", "pattern sql.grow(X_0:bat[:oid], X_1:any_1):int ",      
"mvc_grow_wrap;",       "Resize the tid column of a declared table."    ]
 [ "sql",       "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_0:str):void 
",       "SQLhot_snapshot;",     "Write db snapshot to the given tar(.gz) file" 
 ]
 [ "sql",       "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_0:str, 
X_1:bit):void ",      "SQLhot_snapshot_wrap;",        "Write db snapshot to the 
given tar(.gz/.lz4/.bz/.xz) file on either server or client"  ]
@@ -9390,7 +9379,6 @@
 [ "sql",       "optimizer_updates",    "pattern sql.optimizer_updates():void 
",        "SQLoptimizersUpdate;", ""      ]
 [ "sql",       "optimizers",   "command sql.optimizers() (X_0:bat[:str], 
X_1:bat[:str], X_2:bat[:str]) ",      "getPipeCatalog;",      ""      ]
 [ "sql",       "password",     "pattern sql.password(X_0:str):str ",   
"db_password_wrap;",    "Return password hash of user"  ]
-[ "sql",       "peak_next_value",      "pattern sql.peak_next_value(X_0:str, 
X_1:str):lng ",   "mvc_peak_next_value;", "Peaks at the next value of the 
sequence"       ]
 [ "sql",       "percent_rank", "pattern sql.percent_rank(X_0:any_1, X_1:bit, 
X_2:bit):dbl ",   "SQLpercent_rank;",     "return the percentage into the total 
number of groups for each row"    ]
 [ "sql",       "prelude",      "pattern sql.prelude():void ",  "SQLprelude;",  
""      ]
 [ "sql",       "prepared_statements",  "pattern sql.prepared_statements() 
(X_0:bat[:int], X_1:bat[:str], X_2:bat[:int], X_3:bat[:str], 
X_4:bat[:timestamp]) ", "SQLsession_prepared_statements;",      "Available 
prepared statements in the current session"  ]
@@ -9430,6 +9418,10 @@
 [ "sql",       "shutdown",     "unsafe pattern sql.shutdown(X_0:sht):str ",    
"SQLshutdown_wrap;",    ""      ]
 [ "sql",       "shutdown",     "unsafe pattern sql.shutdown(X_0:sht, 
X_1:bit):str ",   "SQLshutdown_wrap;",    ""      ]
 [ "sql",       "sql_variables",        "pattern sql.sql_variables() 
(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:str]) ",    
"sql_variables;",       "return the table with session variables"       ]
+[ "sql",       "statistics",   "pattern sql.statistics() (X_0:bat[:int], 
X_1:bat[:str], X_2:bat[:str], X_3:bat[:str], X_4:bat[:str], X_5:bat[:int], 
X_6:bat[:lng], X_7:bat[:bit], X_8:bat[:bit], X_9:bat[:str], X_10:bat[:str], 
X_11:bat[:bit], X_12:bat[:bit]) ",     "sql_statistics;",      "return a table 
with statistics information"    ]
+[ "sql",       "statistics",   "pattern sql.statistics(X_0:str) 
(X_1:bat[:int], X_2:bat[:str], X_3:bat[:str], X_4:bat[:str], X_5:bat[:str], 
X_6:bat[:int], X_7:bat[:lng], X_8:bat[:bit], X_9:bat[:bit], X_10:bat[:str], 
X_11:bat[:str], X_12:bat[:bit], X_13:bat[:bit]) ",     "sql_statistics;",      
"return a table with statistics information for a particular schema"    ]
+[ "sql",       "statistics",   "pattern sql.statistics(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:str], X_4:bat[:str], X_5:bat[:str], X_6:bat[:str], 
X_7:bat[:int], X_8:bat[:lng], X_9:bat[:bit], X_10:bat[:bit], X_11:bat[:str], 
X_12:bat[:str], X_13:bat[:bit], X_14:bat[:bit]) ",   "sql_statistics;",      
"return a table with statistics information for a particular table"     ]
+[ "sql",       "statistics",   "pattern sql.statistics(X_0:str, X_1:str, 
X_2:str) (X_3:bat[:int], X_4:bat[:str], X_5:bat[:str], X_6:bat[:str], 
X_7:bat[:str], X_8:bat[:int], X_9:bat[:lng], X_10:bat[:bit], X_11:bat[:bit], 
X_12:bat[:str], X_13:bat[:str], X_14:bat[:bit], X_15:bat[:bit]) ", 
"sql_statistics;",      "return a table with statistics information for a 
particular column"    ]
 [ "sql",       "stdev",        "pattern sql.stdev(X_0:bte, X_1:bit, X_2:bit, 
X_3:int, X_4:oid, X_5:oid):dbl ", "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
 [ "sql",       "stdev",        "pattern sql.stdev(X_0:dbl, X_1:bit, X_2:bit, 
X_3:int, X_4:oid, X_5:oid):dbl ", "SQLstddev_samp;",      "return the standard 
deviation sample of groups"        ]
 [ "sql",       "stdev",        "pattern sql.stdev(X_0:flt, X_1:bit, X_2:bit, 
X_3:int, X_4:oid, X_5:oid):dbl ", "SQLstddev_samp;",      "return the standard 
deviation sample 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
@@ -8891,6 +8891,8 @@
 [ "batsql",    "diff", "pattern batsql.diff(X_0:bat[:bit], 
X_1:bat[:any_1]):bat[:bit] ",       "SQLdiff;",     "return true if cur != prev 
row"        ]
 [ "batsql",    "diff", "pattern batsql.diff(X_0:bit, 
X_1:bat[:any_1]):bat[:bit] ",     "SQLdiff;",     "return true if cur != prev 
row"        ]
 [ "batsql",    "first_value",  "pattern batsql.first_value(X_0:bat[:any_1], 
X_1:any, X_2:any, X_3:int, X_4:any, X_5:any):bat[:any_1] ",        
"SQLfirst_value;",      "return the first value of groups"      ]
+[ "batsql",    "get_value",    "pattern batsql.get_value(X_0:bat[:str], 
X_1:bat[:str]):bat[:lng] ",    "mvc_get_value_bulk;",  "return the current 
value of the sequence (ie the next to be used value)"       ]
+[ "batsql",    "get_value",    "pattern batsql.get_value(X_0:bat[:str], 
X_1:bat[:str], X_2:bat[:oid], X_3:bat[:oid]):bat[:lng] ",      
"mvc_get_value_bulk;",  "return the current value of the sequence (ie the next 
to be used value)"       ]
 [ "batsql",    "index",        "command batsql.index(X_0:bat[:str], 
X_1:bit):bat[:bte] ",      "BATSTRindex_bte;",     "Return the offsets as an 
index bat"    ]
 [ "batsql",    "index",        "command batsql.index(X_0:bat[:str], 
X_1:bit):bat[:int] ",      "BATSTRindex_int;",     "Return the offsets as an 
index bat"    ]
 [ "batsql",    "index",        "command batsql.index(X_0:bat[:str], 
X_1:bit):bat[:sht] ",      "BATSTRindex_sht;",     "Return the offsets as an 
index bat"    ]
@@ -8927,8 +8929,6 @@
 [ "batsql",    "ntile",        "pattern batsql.ntile(X_0:bat[:any], X_1:any_1, 
X_2:any_2, X_3:any_3):bat[:any_1] ",    "SQLntile;",    "return the groups 
divided as equally as possible"      ]
 [ "batsql",    "ntile",        "pattern batsql.ntile(X_0:bat[:any], 
X_1:bat[:any_1], X_2:any_2, X_3:any_3):bat[:any_1] ",      "SQLntile;",    
"return the groups divided as equally as possible"      ]
 [ "batsql",    "password",     "pattern 
batsql.password(X_0:bat[:str]):bat[:str] ",    "db_password_wrap;",    "Return 
password hash of user"  ]
-[ "batsql",    "peak_next_value",      "pattern 
batsql.peak_next_value(X_0:bat[:str], X_1:bat[:str]):bat[:lng] ",      
"mvc_peak_next_value_bulk;",    "Peaks at the next value of the sequence"       
]
-[ "batsql",    "peak_next_value",      "pattern 
batsql.peak_next_value(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid], 
X_3:bat[:oid]):bat[:lng] ",        "mvc_peak_next_value_bulk;",    "Peaks at 
the next value of the sequence"       ]
 [ "batsql",    "percent_rank", "pattern batsql.percent_rank(X_0:bat[:any_1], 
X_1:any_2, X_2:any_3):bat[:dbl] ",        "SQLpercent_rank;",     "return the 
percentage into the total number of groups for each row"    ]
 [ "batsql",    "prod", "pattern batsql.prod(X_0:bat[:bte], X_1:any, X_2:any, 
X_3:int, X_4:any, X_5:any):bat[:hge] ",   "SQLprod;",     "return the product 
of groups"  ]
 [ "batsql",    "prod", "pattern batsql.prod(X_0:bat[:bte], X_1:any, X_2:any, 
X_3:int, X_4:any, X_5:any):bat[:lng] ",   "SQLprod;",     "return the product 
of groups"  ]
@@ -12377,14 +12377,6 @@
 [ "netcdf",    "importvar",    "unsafe command netcdf.importvar(X_0:str, 
X_1:int):str ",       "NCDFimportVarStmt;",   "Import variable: compose create 
array string"  ]
 [ "netcdf",    "importvariable",       "unsafe pattern 
netcdf.importvariable(X_0:int, X_1:str):void ", "NCDFimportVariable;",  "Import 
variable: create array and load data from variable varname of file fileid"      
]
 [ "netcdf",    "test", "command netcdf.test(X_0:str):int ",    "NCDFtest;",    
"Returns number of variables in a given NetCDF dataset (file)"  ]
-[ "oltp",      "disable",      "unsafe pattern oltp.disable():void ",  
"OLTPdisable;", "Disable the OLTP delay monitor"        ]
-[ "oltp",      "enable",       "unsafe pattern oltp.enable():void ",   
"OLTPenable;",  "Enable the OLTP delay monitor" ]
-[ "oltp",      "init", "unsafe pattern oltp.init():void ",     "OLTPinit;",    
"Initialize the lock table"     ]
-[ "oltp",      "isenabled",    "unsafe command oltp.isenabled():int ", 
"OLTPis_enabled;",      "Query the OLTP state"  ]
-[ "oltp",      "lock", "unsafe pattern oltp.lock(X_0:int...):void ",   
"OLTPlock;",    "Wait for all write locks needed"       ]
-[ "oltp",      "release",      "unsafe pattern oltp.release(X_0:int...):void 
",        "OLTPrelease;", "Release for all write locks needed"    ]
-[ "oltp",      "reset",        "unsafe pattern oltp.reset():void ",    
"OLTPreset;",   "Reset the OLTP lock table"     ]
-[ "oltp",      "table",        "unsafe pattern oltp.table() 
(X_0:bat[:timestamp], X_1:bat[:str], X_2:bat[:int], X_3:bat[:int]) ",      
"OLTPtable;",   "Show status of lock table"     ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases():str ",     
"OPTwrapper;",  ""      ]
 [ "optimizer", "aliases",      "pattern optimizer.aliases(X_0:str, 
X_1:str):str ",     "OPTwrapper;",  "Alias removal optimizer"       ]
 [ "optimizer", "bincopyfrom",  "pattern optimizer.bincopyfrom():str ", 
"OPTwrapper;",  ""      ]
@@ -12443,9 +12435,6 @@
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex():str ",   
"OPTwrapper;",  ""      ]
 [ "optimizer", "multiplex",    "pattern optimizer.multiplex(X_0:str, 
X_1:str):str ",   "OPTwrapper;",  "Compiler for multiplexed instructions" ]
 [ "optimizer", "no_mitosis_pipe",      "function 
optimizer.no_mitosis_pipe():void;",   "",     ""      ]
-[ "optimizer", "oltp", "pattern optimizer.oltp():str ",        "OPTwrapper;",  
""      ]
-[ "optimizer", "oltp", "pattern optimizer.oltp(X_0:str, X_1:str):str ",        
"OPTwrapper;",  "Inject the OLTP locking primitives"    ]
-[ "optimizer", "oltp_pipe",    "function optimizer.oltp_pipe():void;", "",     
""      ]
 [ "optimizer", "optimize",     "pattern optimizer.optimize(X_0:str, 
X_1:str):void ",   "QOToptimize;", "Optimize a specific operation" ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_0:str, X_1:str):void 
",      "OPTorcam;",    "Inverse macro processor for current function"  ]
 [ "optimizer", "orcam",        "pattern optimizer.orcam(X_0:str, X_1:str, 
X_2:str, X_3:str):void ",    "OPTorcam;",    "Inverse macro, find pattern and 
replace with a function call." ]
@@ -12563,10 +12552,10 @@
 [ "sql",       "affectedRows", "unsafe pattern sql.affectedRows(X_0:int, 
X_1:lng):int ",       "mvc_affected_rows_wrap;",      "export the number of 
affected rows by the current query"       ]
 [ "sql",       "all",  "pattern sql.all(X_0:bit, X_1:bit, X_2:bit):bit ",      
"SQLall_cmp;",  "if !cmp then false, (nl or nr) then nil, else true"    ]
 [ "sql",       "alpha",        "command sql.alpha(X_0:dbl, X_1:dbl):dbl ",     
"SQLcst_alpha_cst;",    "Implementation of astronomy alpha function: expands 
the radius theta depending on the declination"     ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, 
X_1:lng):void ",   "sql_analyze;", ""      ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, X_1:lng, 
X_2:str):void ",  "sql_analyze;", ""      ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, X_1:lng, 
X_2:str, X_3:str):void ", "sql_analyze;", ""      ]
-[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:int, X_1:lng, 
X_2:str, X_3:str, X_4:str):void ",        "sql_analyze;", "Update the database 
statistics table"  ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze():void ",   
"sql_analyze;", "Update statistics for every column in the database"    ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:str):void ",    
"sql_analyze;", "Update statistics for schema"  ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:str, 
X_1:str):void ",   "sql_analyze;", "Update statistics for table"   ]
+[ "sql",       "analyze",      "unsafe pattern sql.analyze(X_0:str, X_1:str, 
X_2:str):void ",  "sql_analyze;", "Update statistics for column"  ]
 [ "sql",       "any",  "pattern sql.any(X_0:bit, X_1:bit, X_2:bit):bit ",      
"SQLany_cmp;",  "if cmp then true, (nl or nr) nil then nil, else false" ]
 [ "sql",       "append",       "pattern sql.append(X_0:int, X_1:str, X_2:str, 
X_3:str, X_4:oid, X_5:bat[:oid], X_6:any):int ", "mvc_append_wrap;",     
"Append to the column tname.cname (possibly optimized to replace the insert bat 
of tname.cname. Returns sequence number for order dependence."  ]
 [ "sql",       "argRecord",    "pattern sql.argRecord():str ", 
"SQLargRecord;",        "Glue together the calling sequence"    ]
@@ -12666,7 +12655,7 @@
 [ "sql",       "first_value",  "pattern sql.first_value(X_0:any_1, X_1:bit, 
X_2:bit, X_3:int, X_4:oid, X_5:oid):any_1 ",       "SQLfirst_value;",      
"return the first value of groups"      ]
 [ "sql",       "getVariable",  "pattern sql.getVariable(X_0:int, X_1:str, 
X_2:str):any_1 ",    "getVariable;", "Get the value of a session variable"   ]
 [ "sql",       "getVersion",   "command sql.getVersion(X_0:int):lng ", 
"mvc_getVersion;",      "Return the database version identifier for a client."  
]
-[ "sql",       "get_value",    "pattern sql.get_value(X_0:str, X_1:str):lng ", 
"mvc_get_value;",       "return the current value of the sequence"      ]
+[ "sql",       "get_value",    "pattern sql.get_value(X_0:str, X_1:str):lng ", 
"mvc_get_value;",       "return the current value of the sequence (ie the next 
to be used value)"       ]
 [ "sql",       "grow", "pattern sql.grow(X_0:bat[:oid], X_1:any_1):int ",      
"mvc_grow_wrap;",       "Resize the tid column of a declared table."    ]
 [ "sql",       "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_0:str):void 
",       "SQLhot_snapshot;",     "Write db snapshot to the given tar(.gz) file" 
 ]
 [ "sql",       "hot_snapshot", "unsafe pattern sql.hot_snapshot(X_0:str, 
X_1:bit):void ",      "SQLhot_snapshot_wrap;",        "Write db snapshot to the 
given tar(.gz/.lz4/.bz/.xz) file on either server or client"  ]
@@ -12695,7 +12684,6 @@
 [ "sql",       "optimizer_updates",    "pattern sql.optimizer_updates():void 
",        "SQLoptimizersUpdate;", ""      ]
 [ "sql",       "optimizers",   "command sql.optimizers() (X_0:bat[:str], 
X_1:bat[:str], X_2:bat[:str]) ",      "getPipeCatalog;",      ""      ]
 [ "sql",       "password",     "pattern sql.password(X_0:str):str ",   
"db_password_wrap;",    "Return password hash of user"  ]
-[ "sql",       "peak_next_value",      "pattern sql.peak_next_value(X_0:str, 
X_1:str):lng ",   "mvc_peak_next_value;", "Peaks at the next value of the 
sequence"       ]
 [ "sql",       "percent_rank", "pattern sql.percent_rank(X_0:any_1, X_1:bit, 
X_2:bit):dbl ",   "SQLpercent_rank;",     "return the percentage into the total 
number of groups for each row"    ]
 [ "sql",       "prelude",      "pattern sql.prelude():void ",  "SQLprelude;",  
""      ]
 [ "sql",       "prepared_statements",  "pattern sql.prepared_statements() 
(X_0:bat[:int], X_1:bat[:str], X_2:bat[:int], X_3:bat[:str], 
X_4:bat[:timestamp]) ", "SQLsession_prepared_statements;",      "Available 
prepared statements in the current session"  ]
@@ -12740,6 +12728,10 @@
 [ "sql",       "shutdown",     "unsafe pattern sql.shutdown(X_0:sht):str ",    
"SQLshutdown_wrap;",    ""      ]
 [ "sql",       "shutdown",     "unsafe pattern sql.shutdown(X_0:sht, 
X_1:bit):str ",   "SQLshutdown_wrap;",    ""      ]
 [ "sql",       "sql_variables",        "pattern sql.sql_variables() 
(X_0:bat[:str], X_1:bat[:str], X_2:bat[:str], X_3:bat[:str]) ",    
"sql_variables;",       "return the table with session variables"       ]
+[ "sql",       "statistics",   "pattern sql.statistics() (X_0:bat[:int], 
X_1:bat[:str], X_2:bat[:str], X_3:bat[:str], X_4:bat[:str], X_5:bat[:int], 
X_6:bat[:lng], X_7:bat[:bit], X_8:bat[:bit], X_9:bat[:str], X_10:bat[:str], 
X_11:bat[:bit], X_12:bat[:bit]) ",     "sql_statistics;",      "return a table 
with statistics information"    ]
+[ "sql",       "statistics",   "pattern sql.statistics(X_0:str) 
(X_1:bat[:int], X_2:bat[:str], X_3:bat[:str], X_4:bat[:str], X_5:bat[:str], 
X_6:bat[:int], X_7:bat[:lng], X_8:bat[:bit], X_9:bat[:bit], X_10:bat[:str], 
X_11:bat[:str], X_12:bat[:bit], X_13:bat[:bit]) ",     "sql_statistics;",      
"return a table with statistics information for a particular schema"    ]
+[ "sql",       "statistics",   "pattern sql.statistics(X_0:str, X_1:str) 
(X_2:bat[:int], X_3:bat[:str], X_4:bat[:str], X_5:bat[:str], X_6:bat[:str], 
X_7:bat[:int], X_8:bat[:lng], X_9:bat[:bit], X_10:bat[:bit], X_11:bat[:str], 
X_12:bat[:str], X_13:bat[:bit], X_14:bat[:bit]) ",   "sql_statistics;",      
"return a table with statistics information for a particular table"     ]
+[ "sql",       "statistics",   "pattern sql.statistics(X_0:str, X_1:str, 
X_2:str) (X_3:bat[:int], X_4:bat[:str], X_5:bat[:str], X_6:bat[:str], 
X_7:bat[:str], X_8:bat[:int], X_9:bat[:lng], X_10:bat[:bit], X_11:bat[:bit], 
X_12:bat[:str], X_13:bat[:str], X_14:bat[:bit], X_15:bat[:bit]) ", 
"sql_statistics;",      "return a table with statistics information for a 
particular column"    ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to