Changeset: aac58bc29581 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aac58bc29581
Added Files:
        sql/server/rel_propagate.c
        sql/server/rel_propagate.h
        sql/server/sql_partition.c
        sql/server/sql_partition.h
        sql/test/BugTracker-2018/Tests/ilike-foreign-characters.Bug-6633.sql
        
sql/test/BugTracker-2018/Tests/ilike-foreign-characters.Bug-6633.stable.err
        
sql/test/BugTracker-2018/Tests/ilike-foreign-characters.Bug-6633.stable.out
        sql/test/merge-partitions/Tests/All
        sql/test/merge-partitions/Tests/mergepart00.sql
        sql/test/merge-partitions/Tests/mergepart00.stable.err
        sql/test/merge-partitions/Tests/mergepart00.stable.out
        sql/test/merge-partitions/Tests/mergepart01.sql
        sql/test/merge-partitions/Tests/mergepart01.stable.err
        sql/test/merge-partitions/Tests/mergepart01.stable.out
        sql/test/merge-partitions/Tests/mergepart02.sql
        sql/test/merge-partitions/Tests/mergepart02.stable.err
        sql/test/merge-partitions/Tests/mergepart02.stable.out
        sql/test/merge-partitions/Tests/mergepart03.sql
        sql/test/merge-partitions/Tests/mergepart03.stable.err
        sql/test/merge-partitions/Tests/mergepart03.stable.out
        sql/test/merge-partitions/Tests/mergepart04.sql
        sql/test/merge-partitions/Tests/mergepart04.stable.err
        sql/test/merge-partitions/Tests/mergepart04.stable.out
        sql/test/merge-partitions/Tests/mergepart05.sql
        sql/test/merge-partitions/Tests/mergepart05.stable.err
        sql/test/merge-partitions/Tests/mergepart05.stable.out
        sql/test/merge-partitions/Tests/mergepart06.sql
        sql/test/merge-partitions/Tests/mergepart06.stable.err
        sql/test/merge-partitions/Tests/mergepart06.stable.out
        sql/test/merge-partitions/Tests/mergepart07.sql
        sql/test/merge-partitions/Tests/mergepart07.stable.err
        sql/test/merge-partitions/Tests/mergepart07.stable.out
        sql/test/merge-partitions/Tests/mergepart08.sql
        sql/test/merge-partitions/Tests/mergepart08.stable.err
        sql/test/merge-partitions/Tests/mergepart08.stable.out
        sql/test/merge-partitions/Tests/mergepart09.sql
        sql/test/merge-partitions/Tests/mergepart09.stable.err
        sql/test/merge-partitions/Tests/mergepart09.stable.out
        sql/test/merge-partitions/Tests/mergepart10.sql
        sql/test/merge-partitions/Tests/mergepart10.stable.err
        sql/test/merge-partitions/Tests/mergepart10.stable.out
        sql/test/merge-partitions/Tests/mergepart11.sql
        sql/test/merge-partitions/Tests/mergepart11.stable.err
        sql/test/merge-partitions/Tests/mergepart11.stable.out
        sql/test/merge-partitions/Tests/mergepart12.sql
        sql/test/merge-partitions/Tests/mergepart12.stable.err
        sql/test/merge-partitions/Tests/mergepart12.stable.out
        sql/test/merge-partitions/Tests/mergepart13.sql
        sql/test/merge-partitions/Tests/mergepart13.stable.err
        sql/test/merge-partitions/Tests/mergepart13.stable.out
        sql/test/merge-partitions/Tests/mergepart14.sql
        sql/test/merge-partitions/Tests/mergepart14.stable.err
        sql/test/merge-partitions/Tests/mergepart14.stable.out
        sql/test/merge-partitions/Tests/mergepart15.sql
        sql/test/merge-partitions/Tests/mergepart15.stable.err
        sql/test/merge-partitions/Tests/mergepart15.stable.out
        sql/test/merge-partitions/Tests/mergepart16.sql
        sql/test/merge-partitions/Tests/mergepart16.stable.err
        sql/test/merge-partitions/Tests/mergepart16.stable.out
        sql/test/merge-partitions/Tests/mergepart17.sql
        sql/test/merge-partitions/Tests/mergepart17.stable.err
        sql/test/merge-partitions/Tests/mergepart17.stable.out
        sql/test/merge-partitions/Tests/mergepart18.sql
        sql/test/merge-partitions/Tests/mergepart18.stable.err
        sql/test/merge-partitions/Tests/mergepart18.stable.out
        sql/test/merge-partitions/Tests/mergepart19.sql
        sql/test/merge-partitions/Tests/mergepart19.stable.err
        sql/test/merge-partitions/Tests/mergepart19.stable.out
        sql/test/merge-partitions/Tests/mergepart20.sql
        sql/test/merge-partitions/Tests/mergepart20.stable.err
        sql/test/merge-partitions/Tests/mergepart20.stable.out
        sql/test/merge-partitions/Tests/mergepart21.sql
        sql/test/merge-partitions/Tests/mergepart21.stable.err
        sql/test/merge-partitions/Tests/mergepart21.stable.out
        sql/test/merge-partitions/Tests/mergepart22.sql
        sql/test/merge-partitions/Tests/mergepart22.stable.err
        sql/test/merge-partitions/Tests/mergepart22.stable.out
        sql/test/merge-partitions/Tests/mergepart23.py
        sql/test/merge-partitions/Tests/mergepart23.stable.err
        sql/test/merge-partitions/Tests/mergepart23.stable.out
        sql/test/merge-partitions/Tests/mergepart24.sql
        sql/test/merge-partitions/Tests/mergepart24.stable.err
        sql/test/merge-partitions/Tests/mergepart24.stable.out
        sql/test/merge-partitions/Tests/mergepart25.sql
        sql/test/merge-partitions/Tests/mergepart25.stable.err
        sql/test/merge-partitions/Tests/mergepart25.stable.out
        sql/test/merge-partitions/Tests/mergepart26.sql
        sql/test/merge-partitions/Tests/mergepart26.stable.err
        sql/test/merge-partitions/Tests/mergepart26.stable.out
        sql/test/merge-partitions/Tests/mergepart27.sql
        sql/test/merge-partitions/Tests/mergepart27.stable.err
        sql/test/merge-partitions/Tests/mergepart27.stable.out
        sql/test/merge-partitions/Tests/mergepart28.sql.in
        sql/test/merge-partitions/Tests/mergepart28.stable.err
        sql/test/merge-partitions/Tests/mergepart28.stable.out
Modified Files:
        MonetDB.spec
        buildtools/autogen/autogen.py
        buildtools/autogen/autogen/am.py
        buildtools/autogen/autogen/msc.py
        clients/ChangeLog.Aug2018
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/dump.c
        clients/mapiclient/mclient.c
        clients/mapiclient/mhelp.c
        clients/mapiclient/mnc.c
        clients/mapiclient/msqldump.c
        clients/mapiclient/msqldump.h
        clients/mapiclient/stethoscope.c
        clients/mapiclient/tachograph.c
        clients/mapiclient/tomograph.c
        clients/mapilib/Makefile.ag
        clients/odbc/driver/SQLGetInfo.c
        common/stream/monetdb-stream.pc.in
        common/stream/stream.c
        common/stream/stream_socket.h
        common/utils/mutils.c
        common/utils/mutils.h
        configure.ag
        debian/fix-deb.sh
        debian/rules
        gdk/ChangeLog.Aug2018
        gdk/gdk.h
        gdk/gdk_bat.c
        gdk/gdk_bbp.c
        gdk/gdk_heap.c
        gdk/gdk_imprints.c
        gdk/gdk_logger.c
        gdk/gdk_orderidx.c
        gdk/gdk_posix.c
        gdk/gdk_posix.h
        gdk/gdk_private.h
        gdk/gdk_system.c
        gdk/gdk_system.h
        gdk/gdk_utils.c
        monetdb5/mal/mal_authorize.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_import.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/mtime.h
        monetdb5/modules/kernel/alarm.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/status.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/wlc.mal
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/tools/Makefile.ag
        sql/ChangeLog
        sql/backends/monet5/Tests/pyloader07.stable.out.32bit
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/UDF/pyapi/pyapi.c
        sql/backends/monet5/generator/90_generator.sql
        sql/backends/monet5/generator/90_generator_hge.sql
        sql/backends/monet5/generator/generator.mal
        sql/backends/monet5/generator/generator_hge.mal
        sql/backends/monet5/mal_backend.c
        sql/backends/monet5/mal_backend.h
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_cat.c
        sql/backends/monet5/sql_cat.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/sqlcatalog.mal
        sql/backends/monet5/wlr.mal
        sql/common/sql_changeset.c
        sql/common/sql_list.c
        sql/common/sql_mem.c
        sql/include/sql_catalog.h
        sql/include/sql_list.h
        sql/include/sql_mem.h
        sql/include/sql_relation.h
        
sql/jdbc/tests/Tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.stable.out
        sql/jdbc/tests/Tests/Test_Dobjects.stable.out
        sql/rel.txt
        sql/scripts/51_sys_schema_extension.sql
        sql/server/Makefile.ag
        sql/server/rel_distribute.c
        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_rel.c
        sql/server/rel_rel.h
        sql/server/rel_schema.c
        sql/server/rel_schema.h
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/server/rel_updates.c
        sql/server/rel_updates.h
        sql/server/sql_atom.c
        sql/server/sql_atom.h
        sql/server/sql_mvc.c
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_privileges.c
        sql/server/sql_semantic.c
        sql/server/sql_semantic.h
        sql/storage/bat/bat_storage.c
        sql/storage/sql_catalog.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        sql/test/BugTracker-2015/Tests/sql2pcre.Bug-3800.stable.out
        
sql/test/BugTracker-2017/Tests/crash_correlated_subqueries_in_select.Bug-6254.stable.out
        
sql/test/BugTracker-2017/Tests/wrong_aggregation_count.Bug-6257.stable.out
        sql/test/BugTracker-2018/Tests/All
        
sql/test/BugTracker-2018/Tests/groupby_having_orderby_count.Bug-6624.stable.out
        sql/test/Tests/comment-dump.stable.out
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/UserDump/Tests/create.stable.out
        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/mapi/Tests/php_monetdb.stable.out
        sql/test/testdb/Tests/testdb-dump.stable.out
        tools/merovingian/daemon/client.c
        tools/merovingian/daemon/forkmserver.c
        tools/merovingian/daemon/handlers.c
        tools/merovingian/daemon/merovingian.c
        tools/mserver/mserver5.c
Branch: system-functions
Log Message:

Merge with default branch.


diffs (truncated from 20490 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -951,7 +951,6 @@ fi
        --enable-fits=%{?with_fits:yes}%{!?with_fits:no} \
        --enable-gdk=yes \
        --enable-geom=%{?with_geos:yes}%{!?with_geos:no} \
-       --enable-instrument=no \
        --enable-int128=%{?with_int128:yes}%{!?with_int128:no} \
        --enable-lidar=%{?with_lidar:yes}%{!?with_lidar:no} \
        --enable-mapi=yes \
@@ -959,7 +958,6 @@ fi
        --enable-netcdf=no \
        --enable-odbc=yes \
        --enable-optimize=no \
-       --enable-profile=no \
        
--enable-pyintegration=%{?with_pyintegration:yes}%{!?with_pyintegration:no} \
        
--enable-rintegration=%{?with_rintegration:yes}%{!?with_rintegration:no} \
        --enable-shp=no \
diff --git a/buildtools/autogen/autogen.py b/buildtools/autogen/autogen.py
--- a/buildtools/autogen/autogen.py
+++ b/buildtools/autogen/autogen.py
@@ -163,7 +163,7 @@ def filter(st):
         return st + '\n'
     return ''
 
-OutList.sort(key=lambda x: x.count(os.sep))
+OutList.sort(key=lambda x: x.count('/'))
 OutList = map(filter, OutList)
 OutListFd = open("acout.in", "w")
 OutListFd.writelines(OutList)
diff --git a/buildtools/autogen/autogen/am.py b/buildtools/autogen/autogen/am.py
--- a/buildtools/autogen/autogen/am.py
+++ b/buildtools/autogen/autogen/am.py
@@ -762,6 +762,8 @@ def am_library(fd, var, libmap, am):
     if 'MODULE' in libmap:
         ldflags.append('-module')
         ldflags.append('-avoid-version')
+    if 'NOINST' not in libmap:
+        ldflags.append('@NO_UNDEFINED@')
     if "LDFLAGS" in libmap:
         for x in libmap["LDFLAGS"]:
             ldflags.append(x)
diff --git a/buildtools/autogen/autogen/msc.py 
b/buildtools/autogen/autogen/msc.py
--- a/buildtools/autogen/autogen/msc.py
+++ b/buildtools/autogen/autogen/msc.py
@@ -123,25 +123,24 @@ def msc_libdir(fd, var, values, msc):
 def msc_mtsafe(fd, var, values, msc):
     fd.write("CFLAGS=$(CFLAGS) $(thread_safe_flag_spec)\n")
 
-def msc_add_srcdir(path, msc, prefix =""):
-    dir = path
+def msc_add_srcdir(dir, msc, prefix = ""):
     if dir[0] == '$':
         return ""
     elif not os.path.isabs(dir):
-        dir = "$(srcdir)/" + dir
+        return prefix + "$(srcdir)\\" + dir.replace('/', '\\')
     else:
         return ""
-    return prefix+dir.replace('/', '\\')
 
 def msc_translate_dir(path, msc):
-    dir = path
-    rest = ""
-    if path.find('/') >= 0:
-        dir, rest = path.split('/', 1)
+    path = path.replace('/' , '\\')
+    if path.find('\\') >= 0:
+        dir, rest = path.split('\\', 1)
+    else:
+        dir, rest = path, ''
     if dir == "top_builddir":
         dir = "$(TOPDIR)"
     elif dir == "top_srcdir":
-        dir = "$(TOPDIR)/.."
+        dir = "$(TOPDIR)\\.."
     elif dir == "builddir":
         dir = "."
     elif dir == "srcdir":
@@ -155,12 +154,12 @@ def msc_translate_dir(path, msc):
         dir = "$("+dir+")"
     if rest:
         dir = dir+ "\\" + rest
-    return dir.replace('/', '\\')
+    return dir
 
 def msc_translate_file(path, msc):
     if os.path.isfile(os.path.join(msc['cwd'], path)):
-        return "$(srcdir)\\" + path
-    return path
+        path = "$(srcdir)/" + path
+    return path.replace('/', '\\')
 
 def msc_space_sep_list(l):
     res = ""
@@ -321,8 +320,8 @@ def msc_dep(fd, tar, deplist, msc):
         msc['_IN'].append(y)
     getsrc = ""
     src = msc_translate_dir(msc_translate_ext(msc_translate_file(deplist[0], 
msc)), msc)
-    if os.path.split(src)[0]:
-        getsrc = '\t$(INSTALL) "%s" "%s"\n' % (src, os.path.split(src)[1])
+    if '\\' in src:
+        getsrc = '\t$(INSTALL) "%s" "%s"\n' % (src, src.split('\\')[-1])
     if ext == "tab.h":
         fd.write(getsrc)
         x, de = split_filename(deplist[0])
diff --git a/clients/ChangeLog.Aug2018 b/clients/ChangeLog.Aug2018
--- a/clients/ChangeLog.Aug2018
+++ b/clients/ChangeLog.Aug2018
@@ -1,6 +1,13 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
+* Thu Aug  2 2018 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
+- ODBC SQLGetInfo now returns a positive numeric value for InfoTypes:
+  SQL_MAX_COLUMN_NAME_LEN, SQL_MAX_DRIVER_CONNECTIONS,
+  SQL_MAX_IDENTIFIER_LEN, SQL_MAX_PROCEDURE_NAME_LEN,
+  SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN and
+  SQL_MAX_USER_NAME_LEN.
+
 * Fri May 25 2018 Ying Zhang <y.zh...@cwi.nl>
 - Added a '-f rowcount' option in mclient to repress printing the actual
   data of a resultset, but only print the number of returned tuples
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
@@ -10024,19 +10024,19 @@ Ready.
 [ "generator", "join", "pattern generator.join(gen:bat[:int], low:bat[:int], 
hgh:bat[:int], li:bit, ri:bit) (l:bat[:oid], r:bat[:oid]) ",      
"VLTgenerator_rangejoin;",      ""      ]
 [ "generator", "join", "pattern generator.join(gen:bat[:lng], low:bat[:lng], 
hgh:bat[:lng], li:bit, ri:bit) (l:bat[:oid], r:bat[:oid]) ",      
"VLTgenerator_rangejoin;",      ""      ]
 [ "generator", "join", "pattern generator.join(gen:bat[:sht], low:bat[:sht], 
hgh:bat[:sht], li:bit, ri:bit) (l:bat[:oid], r:bat[:oid]) ",      
"VLTgenerator_rangejoin;",      ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
last:bte):bat[:bte] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
last:bte, step:bte):bat[:bte] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
last:dbl):bat[:dbl] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
last:dbl, step:dbl):bat[:dbl] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
last:flt):bat[:flt] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
last:flt, step:flt):bat[:flt] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:int, 
last:int):bat[:int] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:int, 
last:int, step:int):bat[:int] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
last:lng):bat[:lng] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
last:lng, step:lng):bat[:lng] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
last:sht):bat[:sht] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
last:sht, step:sht):bat[:sht] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:timestamp, 
last:timestamp, step:lng):bat[:timestamp] ",     "VLTgenerator_noop;",   
"Retain the table definition, but don't materialize"    ]
+[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
limit:bte):bat[:bte] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
limit:bte, step:bte):bat[:bte] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
limit:dbl):bat[:dbl] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
limit:dbl, step:dbl):bat[:dbl] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
limit:flt):bat[:flt] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
limit:flt, step:flt):bat[:flt] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:int, 
limit:int):bat[:int] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:int, 
limit:int, step:int):bat[:int] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
limit:lng):bat[:lng] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
limit:lng, step:lng):bat[:lng] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
limit:sht):bat[:sht] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
limit:sht, step:sht):bat[:sht] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:timestamp, 
limit:timestamp, step:lng):bat[:timestamp] ",    "VLTgenerator_noop;",   
"Retain the table definition, but don't materialize"    ]
 [ "generator", "projection",   "pattern generator.projection(b:bat[:oid], 
cand:bat[:bte]):bat[:bte] ", "VLTgenerator_projection;",     ""      ]
 [ "generator", "projection",   "pattern generator.projection(b:bat[:oid], 
cand:bat[:dbl]):bat[:dbl] ", "VLTgenerator_projection;",     ""      ]
 [ "generator", "projection",   "pattern generator.projection(b:bat[:oid], 
cand:bat[:flt]):bat[:flt] ", "VLTgenerator_projection;",     ""      ]
@@ -10058,19 +10058,19 @@ Ready.
 [ "generator", "select",       "pattern generator.select(b:bat[:sht], low:sht, 
high:sht, li:bit, hi:bit, anti:bit):bat[:oid] ",        
"VLTgenerator_subselect;",      ""      ]
 [ "generator", "select",       "pattern generator.select(b:bat[:timestamp], 
cand:bat[:oid], low:timestamp, high:timestamp, li:bit, hi:bit, 
anti:bit):bat[:oid] ",      "VLTgenerator_subselect;",      "Overloaded 
selection routine"  ]
 [ "generator", "select",       "pattern generator.select(b:bat[:timestamp], 
low:timestamp, high:timestamp, li:bit, hi:bit, anti:bit):bat[:oid] ",      
"VLTgenerator_subselect;",      "Overloaded selection routine"  ]
-[ "generator", "series",       "pattern generator.series(first:bte, 
last:bte):bat[:bte] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:bte, last:bte, 
step:bte):bat[:bte] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:dbl, 
last:dbl):bat[:dbl] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:dbl, last:dbl, 
step:dbl):bat[:dbl] ",   "VLTgenerator_table;",  "Create and materialize a 
generator table"      ]
-[ "generator", "series",       "pattern generator.series(first:flt, 
last:flt):bat[:flt] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:flt, last:flt, 
step:flt):bat[:flt] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:int, 
last:int):bat[:int] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:int, last:int, 
step:int):bat[:int] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:lng, 
last:lng):bat[:lng] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:lng, last:lng, 
step:lng):bat[:lng] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:sht, 
last:sht):bat[:sht] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:sht, last:sht, 
step:sht):bat[:sht] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:timestamp, 
last:timestamp, step:lng):bat[:timestamp] ", "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:bte, 
limit:bte):bat[:bte] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:bte, limit:bte, 
step:bte):bat[:bte] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:dbl, 
limit:dbl):bat[:dbl] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:dbl, limit:dbl, 
step:dbl):bat[:dbl] ",  "VLTgenerator_table;",  "Create and materialize a 
generator table"      ]
+[ "generator", "series",       "pattern generator.series(first:flt, 
limit:flt):bat[:flt] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:flt, limit:flt, 
step:flt):bat[:flt] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:int, 
limit:int):bat[:int] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:int, limit:int, 
step:int):bat[:int] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:lng, 
limit:lng):bat[:lng] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:lng, limit:lng, 
step:lng):bat[:lng] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:sht, 
limit:sht):bat[:sht] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:sht, limit:sht, 
step:sht):bat[:sht] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:timestamp, 
limit:timestamp, step:lng):bat[:timestamp] ",        "VLTgenerator_table;",  "" 
     ]
 [ "generator", "thetaselect",  "pattern generator.thetaselect(b:bat[:bte], 
cnd:bat[:oid], low:bte, oper:str):bat[:oid] ",      
"VLTgenerator_thetasubselect;", ""      ]
 [ "generator", "thetaselect",  "pattern generator.thetaselect(b:bat[:bte], 
low:bte, oper:str):bat[:oid] ",     "VLTgenerator_thetasubselect;", ""      ]
 [ "generator", "thetaselect",  "pattern generator.thetaselect(b:bat[:dbl], 
cnd:bat[:oid], low:dbl, oper:str):bat[:oid] ",      
"VLTgenerator_thetasubselect;", ""      ]
@@ -10999,7 +10999,10 @@ Ready.
 [ "sqlblob",   "#tostr",       "command sqlblob.#tostr():void ",       
"SQLBLOBtostr;",        ""      ]
 [ "sqlblob",   "sqlblob",      "command sqlblob.sqlblob(s:sqlblob):sqlblob ",  
"BLOBblob_blob;",       "Noop routine." ]
 [ "sqlblob",   "sqlblob",      "command sqlblob.sqlblob(s:str):sqlblob ",      
"BLOBsqlblob_fromstr;", ""      ]
+[ "sqlcatalog",        "alter_add_range_partition",    "pattern 
sqlcatalog.alter_add_range_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, min:any_1, max:any_1, nills:int, update:int):void ",  
"SQLalter_add_range_partition;",        "Catalog operation 
alter_add_range_partition"   ]
 [ "sqlcatalog",        "alter_add_table",      "pattern 
sqlcatalog.alter_add_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_add_table;",  "Catalog operation 
alter_add_table"     ]
+[ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, nills:int, update:int):void ",        
"SQLalter_add_value_partition;",        "Catalog operation 
alter_add_value_partition"   ]
+[ "sqlcatalog",        "alter_add_value_partition",    "pattern 
sqlcatalog.alter_add_value_partition(sname:str, mtnme:str, psnme:str, 
ptnme:str, nills:int, update:int, arg:any...):void ",    
"SQLalter_add_value_partition;",        "Catalog operation 
alter_add_value_partition"   ]
 [ "sqlcatalog",        "alter_del_table",      "pattern 
sqlcatalog.alter_del_table(sname:str, mtnme:str, psnme:str, ptnme:str, 
action:int):void ",     "SQLalter_del_table;",  "Catalog operation 
alter_del_table"     ]
 [ "sqlcatalog",        "alter_seq",    "pattern 
sqlcatalog.alter_seq(sname:str, seqname:str, seq:ptr, val:lng):void ", 
"SQLalter_seq;",        "Catalog operation alter_seq"   ]
 [ "sqlcatalog",        "alter_set_table",      "pattern 
sqlcatalog.alter_set_table(sname:str, tnme:str, access:int):void ",    
"SQLalter_set_table;",  "Catalog operation alter_set_table"     ]
@@ -11214,7 +11217,10 @@ Ready.
 [ "wkba",      "#tostr",       "command wkba.#tostr():void ",  "wkbaTOSTR;",   
""      ]
 [ "wkba",      "#write",       "command wkba.#write():void ",  "wkbaWRITE;",   
""      ]
 [ "wlc",       "action",       "pattern wlc.action(q:str):void ",      
"WLCaction;",   "Keep the database changing queries for replay. "       ]
+[ "wlc",       "alter_add_range_partition",    "pattern 
wlc.alter_add_range_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
min:str, max:str, nills:int, update:int):void ",     "WLCgeneric;",  "Catalog 
operation alter_add_range_partition"   ]
 [ "wlc",       "alter_add_table",      "pattern wlc.alter_add_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLCgeneric;",  
"Catalog operation alter_add_table"     ]
+[ "wlc",       "alter_add_value_partition",    "pattern 
wlc.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int):void ",       "WLCgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
+[ "wlc",       "alter_add_value_partition",    "pattern 
wlc.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int, arg:str...):void ",   "WLCgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlc",       "alter_del_table",      "pattern wlc.alter_del_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLCgeneric;",  
"Catalog operation alter_del_table"     ]
 [ "wlc",       "alter_seq",    "pattern wlc.alter_seq(sname:str, seqname:str, 
val:lng):void ", "WLCgeneric;",  "Catalog operation alter_seq"   ]
 [ "wlc",       "alter_set_table",      "pattern wlc.alter_set_table(sname:str, 
tnme:str, access:int):void ",   "WLCgeneric;",  "Catalog operation 
alter_set_table"     ]
@@ -11274,7 +11280,10 @@ Ready.
 [ "wlc",       "transaction_rollback", "pattern 
wlc.transaction_rollback(chain:int, name:str):void ",  "WLCgeneric;",  "A 
transaction statement (type can be commit,release,rollback or start)"        ]
 [ "wlc",       "update",       "pattern wlc.update(sname:str, tname:str, 
cname:str, tid:any, val:any):int ",   "WLCupdate;",   "Keep the update in the 
workload-capture-replay list"   ]
 [ "wlr",       "action",       "pattern wlr.action(q:str):void ",      
"WLRaction;",   "A query producing updates"     ]
+[ "wlr",       "alter_add_range_partition",    "pattern 
wlr.alter_add_range_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
min:str, max:str, nills:int, update:int):void ",     "WLRgeneric;",  "Catalog 
operation alter_add_range_partition"   ]
 [ "wlr",       "alter_add_table",      "pattern wlr.alter_add_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLRgeneric;",  
"Catalog operation alter_add_table"     ]
+[ "wlr",       "alter_add_value_partition",    "pattern 
wlr.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int):void ",       "WLRgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
+[ "wlr",       "alter_add_value_partition",    "pattern 
wlr.alter_add_value_partition(sname:str, mtnme:str, psnme:str, ptnme:str, 
nills:int, update:int, arg:str...):void ",   "WLRgeneric;",  "Catalog operation 
alter_add_value_partition"   ]
 [ "wlr",       "alter_del_table",      "pattern wlr.alter_del_table(sname:str, 
mtnme:str, psnme:str, ptnme:str, action:int):void ",    "WLRgeneric;",  
"Catalog operation alter_del_table"     ]
 [ "wlr",       "alter_seq",    "pattern wlr.alter_seq(sname:str, seqname:str, 
val:lng):void ", "WLRgeneric;",  "Catalog operation alter_seq"   ]
 [ "wlr",       "alter_set_table",      "pattern wlr.alter_set_table(sname:str, 
tnme:str, access:int):void ",   "WLRgeneric;",  "Catalog operation 
alter_set_table"     ]
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
@@ -14220,21 +14220,21 @@ Ready.
 [ "generator", "join", "pattern generator.join(gen:bat[:int], low:bat[:int], 
hgh:bat[:int], li:bit, ri:bit) (l:bat[:oid], r:bat[:oid]) ",      
"VLTgenerator_rangejoin;",      ""      ]
 [ "generator", "join", "pattern generator.join(gen:bat[:lng], low:bat[:lng], 
hgh:bat[:lng], li:bit, ri:bit) (l:bat[:oid], r:bat[:oid]) ",      
"VLTgenerator_rangejoin;",      ""      ]
 [ "generator", "join", "pattern generator.join(gen:bat[:sht], low:bat[:sht], 
hgh:bat[:sht], li:bit, ri:bit) (l:bat[:oid], r:bat[:oid]) ",      
"VLTgenerator_rangejoin;",      ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
last:bte):bat[:bte] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
last:bte, step:bte):bat[:bte] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
last:dbl):bat[:dbl] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
last:dbl, step:dbl):bat[:dbl] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
last:flt):bat[:flt] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
last:flt, step:flt):bat[:flt] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:hge, 
last:hge):bat[:hge] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:hge, 
last:hge, step:hge):bat[:hge] ",       "VLTgenerator_noop;",   "Retain the 
table definition, but don't materialize"    ]
-[ "generator", "parameters",   "pattern generator.parameters(first:int, 
last:int):bat[:int] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:int, 
last:int, step:int):bat[:int] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
last:lng):bat[:lng] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
last:lng, step:lng):bat[:lng] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
last:sht):bat[:sht] ", "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
last:sht, step:sht):bat[:sht] ",       "VLTgenerator_noop;",   ""      ]
-[ "generator", "parameters",   "pattern generator.parameters(first:timestamp, 
last:timestamp, step:lng):bat[:timestamp] ",     "VLTgenerator_noop;",   
"Retain the table definition, but don't materialize"    ]
+[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
limit:bte):bat[:bte] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:bte, 
limit:bte, step:bte):bat[:bte] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
limit:dbl):bat[:dbl] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:dbl, 
limit:dbl, step:dbl):bat[:dbl] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
limit:flt):bat[:flt] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:flt, 
limit:flt, step:flt):bat[:flt] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:hge, 
limit:hge):bat[:hge] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:hge, 
limit:hge, step:hge):bat[:hge] ",      "VLTgenerator_noop;",   "Retain the 
table definition, but don't materialize"    ]
+[ "generator", "parameters",   "pattern generator.parameters(first:int, 
limit:int):bat[:int] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:int, 
limit:int, step:int):bat[:int] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
limit:lng):bat[:lng] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:lng, 
limit:lng, step:lng):bat[:lng] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
limit:sht):bat[:sht] ",        "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:sht, 
limit:sht, step:sht):bat[:sht] ",      "VLTgenerator_noop;",   ""      ]
+[ "generator", "parameters",   "pattern generator.parameters(first:timestamp, 
limit:timestamp, step:lng):bat[:timestamp] ",    "VLTgenerator_noop;",   
"Retain the table definition, but don't materialize"    ]
 [ "generator", "projection",   "pattern generator.projection(b:bat[:oid], 
cand:bat[:bte]):bat[:bte] ", "VLTgenerator_projection;",     ""      ]
 [ "generator", "projection",   "pattern generator.projection(b:bat[:oid], 
cand:bat[:dbl]):bat[:dbl] ", "VLTgenerator_projection;",     ""      ]
 [ "generator", "projection",   "pattern generator.projection(b:bat[:oid], 
cand:bat[:flt]):bat[:flt] ", "VLTgenerator_projection;",     ""      ]
@@ -14259,21 +14259,21 @@ Ready.
 [ "generator", "select",       "pattern generator.select(b:bat[:sht], low:sht, 
high:sht, li:bit, hi:bit, anti:bit):bat[:oid] ",        
"VLTgenerator_subselect;",      ""      ]
 [ "generator", "select",       "pattern generator.select(b:bat[:timestamp], 
cand:bat[:oid], low:timestamp, high:timestamp, li:bit, hi:bit, 
anti:bit):bat[:oid] ",      "VLTgenerator_subselect;",      "Overloaded 
selection routine"  ]
 [ "generator", "select",       "pattern generator.select(b:bat[:timestamp], 
low:timestamp, high:timestamp, li:bit, hi:bit, anti:bit):bat[:oid] ",      
"VLTgenerator_subselect;",      "Overloaded selection routine"  ]
-[ "generator", "series",       "pattern generator.series(first:bte, 
last:bte):bat[:bte] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:bte, last:bte, 
step:bte):bat[:bte] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:dbl, 
last:dbl):bat[:dbl] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:dbl, last:dbl, 
step:dbl):bat[:dbl] ",   "VLTgenerator_table;",  "Create and materialize a 
generator table"      ]
-[ "generator", "series",       "pattern generator.series(first:flt, 
last:flt):bat[:flt] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:flt, last:flt, 
step:flt):bat[:flt] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:hge, 
last:hge):bat[:hge] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:hge, last:hge, 
step:hge):bat[:hge] ",   "VLTgenerator_table;",  "Create and materialize a 
generator table"      ]
-[ "generator", "series",       "pattern generator.series(first:int, 
last:int):bat[:int] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:int, last:int, 
step:int):bat[:int] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:lng, 
last:lng):bat[:lng] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:lng, last:lng, 
step:lng):bat[:lng] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:sht, 
last:sht):bat[:sht] ",     "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:sht, last:sht, 
step:sht):bat[:sht] ",   "VLTgenerator_table;",  ""      ]
-[ "generator", "series",       "pattern generator.series(first:timestamp, 
last:timestamp, step:lng):bat[:timestamp] ", "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:bte, 
limit:bte):bat[:bte] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:bte, limit:bte, 
step:bte):bat[:bte] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:dbl, 
limit:dbl):bat[:dbl] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:dbl, limit:dbl, 
step:dbl):bat[:dbl] ",  "VLTgenerator_table;",  "Create and materialize a 
generator table"      ]
+[ "generator", "series",       "pattern generator.series(first:flt, 
limit:flt):bat[:flt] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:flt, limit:flt, 
step:flt):bat[:flt] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:hge, 
limit:hge):bat[:hge] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:hge, limit:hge, 
step:hge):bat[:hge] ",  "VLTgenerator_table;",  "Create and materialize a 
generator table"      ]
+[ "generator", "series",       "pattern generator.series(first:int, 
limit:int):bat[:int] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:int, limit:int, 
step:int):bat[:int] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:lng, 
limit:lng):bat[:lng] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:lng, limit:lng, 
step:lng):bat[:lng] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:sht, 
limit:sht):bat[:sht] ",    "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:sht, limit:sht, 
step:sht):bat[:sht] ",  "VLTgenerator_table;",  ""      ]
+[ "generator", "series",       "pattern generator.series(first:timestamp, 
limit:timestamp, step:lng):bat[:timestamp] ",        "VLTgenerator_table;",  "" 
     ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to