Changeset: aec05a862c85 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aec05a862c85
Modified Files:
        MonetDB.spec
        buildtools/conf/monetdbd.conf
        buildtools/selinux/monetdb.fc
        buildtools/selinux/monetdb.te
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        debian/control
        debian/monetdb5-server.dirs
        debian/monetdb5-server.postinst
        debian/monetdb5-sql.install
        debian/monetdb5-sql.postinst
        gdk/gdk_system.h
        gdk/gdk_tracer.c
        gdk/gdk_tracer.h
        gdk/gdk_utils.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/mtime.mal
        monetdb5/modules/mal/mdb.c
        rpm.mk.in
        sql/backends/monet5/sql_statement.c
        sql/common/sql_types.c
        sql/server/rel_optimizer.c
        sql/server/rel_propagate.c
        sql/server/rel_updates.c
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/date_functions.SF-967145.stable.out
        
sql/test/BugTracker-2016/Tests/date_calculation_and_comparison_wrong_results.Bug-3940.sql
        
sql/test/BugTracker-2016/Tests/date_calculation_and_comparison_wrong_results.Bug-3940.stable.out
        sql/test/Tests/hot-snapshot.py
        sql/test/VOC/Tests/median.Bug-3096.stable.out
        sql/test/bugs/Tests/default_with_cast.SF-1334486.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/pg_regress/Tests/date.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
        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
        tools/merovingian/ChangeLog.Jun2020
Branch: default
Log Message:

Merged with Jun2020


diffs (truncated from 1456 to 300 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -107,11 +107,14 @@ URL: https://www.monetdb.org/
 BugURL: https://bugs.monetdb.org/
 Source: 
https://www.monetdb.org/downloads/sources/Nov2019-SP3/%{name}-%{version}.tar.bz2
 
-# we need systemd for the _unitdir macro to exist
-# we need checkpolicy and selinux-policy-devel for the SELinux policy
+# The Fedora packaging document says we need systemd-rpm-macros for
+# the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7
+# that doesn't exist and we need systemd, so instead we just require
+# the macro file that contains the definitions.
+# We need checkpolicy and selinux-policy-devel for the SELinux policy.
 %if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
 # RHEL >= 7, and all current Fedora
-BuildRequires: systemd
+BuildRequires: /usr/lib/rpm/macros.d/macros.systemd
 BuildRequires: checkpolicy
 BuildRequires: selinux-policy-devel
 BuildRequires: hardlink
@@ -519,15 +522,27 @@ package if you want to use the MonetDB d
 to use the SQL front end, you also need %{name}-SQL-server5.
 
 %pre -n MonetDB5-server
-getent group monetdb >/dev/null || groupadd -r monetdb
-getent passwd monetdb >/dev/null || \
-    useradd -r -g monetdb -d %{_localstatedir}/MonetDB -s /sbin/nologin \
-       -c "MonetDB Server" monetdb
+getent group monetdb >/dev/null || groupadd --system monetdb
+if getent passwd monetdb >/dev/null; then
+    case $(getent passwd monetdb | cut -d: -f6) in
+    %{_localstatedir}/MonetDB) # old value
+       # change home directory, but not using usermod
+       # usermod requires there not to be any running processes owned by the 
user
+       EDITOR='sed -i 
"/^monetdb:/s|:%{_localstatedir}/MonetDB:|:%{_localstatedir}/lib/monetdb:|"'
+       unset VISUAL
+       export EDITOR
+       /sbin/vipw > /dev/null
+       ;;
+    esac
+else
+    useradd --system --gid monetdb --home-dir %{_localstatedir}/lib/monetdb \
+       --shell /sbin/nologin --comment "MonetDB Server" monetdb
+fi
 exit 0
 
 %files -n MonetDB5-server
 %defattr(-,root,root)
-%attr(750,monetdb,monetdb) %dir %{_localstatedir}/MonetDB
+%attr(2750,monetdb,monetdb) %dir %{_localstatedir}/lib/monetdb
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5
 %attr(2770,monetdb,monetdb) %dir %{_localstatedir}/monetdb5/dbfarm
 %{_bindir}/mserver5
@@ -633,6 +648,9 @@ Recommends: %{name}-SQL-server5-hugeint%
 %endif
 Suggests: %{name}-client%{?_isa} = %{version}-%{release}
 %endif
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
+%systemd_requires
+%endif
 
 %description SQL-server5
 MonetDB is a database management system that is developed from a
@@ -643,6 +661,17 @@ accelerators.  It also has an SQL front 
 This package contains the SQL front end for MonetDB.  If you want to
 use SQL with MonetDB, you will need to install this package.
 
+%if %{?rhel:0}%{!?rhel:1} || 0%{?rhel} >= 7
+%post SQL-server5
+%systemd_post monetdbd.service
+
+%preun SQL-server5
+%systemd_preun monetdbd.service
+
+%postun SQL-server5
+%systemd_postun_with_restart monetdbd.service
+%endif
+
 %files SQL-server5
 %defattr(-,root,root)
 %{_bindir}/monetdb
@@ -660,6 +689,7 @@ use SQL with MonetDB, you will need to i
 %exclude %{_prefix}/lib/systemd/system/monetdbd.service
 %endif
 %config(noreplace) %attr(664,monetdb,monetdb) 
%{_localstatedir}/monetdb5/dbfarm/.merovingian_properties
+%verify(not mtime) %attr(664,monetdb,monetdb) 
%{_localstatedir}/monetdb5/dbfarm/.merovingian_lock
 %config(noreplace) %attr(644,root,root) %{_sysconfdir}/logrotate.d/monetdbd
 %{_libdir}/monetdb5/autoload/??_sql.mal
 %{_libdir}/monetdb5/lib_sql.so
@@ -910,7 +940,7 @@ mv %{buildroot}%{_sysconfdir}/tmpfiles.d
 rmdir %{buildroot}%{_sysconfdir}/tmpfiles.d
 %endif
 
-install -d -m 0750 %{buildroot}%{_localstatedir}/MonetDB
+install -d -m 0750 %{buildroot}%{_localstatedir}/lib/monetdb
 install -d -m 0770 %{buildroot}%{_localstatedir}/monetdb5/dbfarm
 install -d -m 0775 %{buildroot}%{_localstatedir}/log/monetdb
 install -d -m 0775 %{buildroot}%{_rundir}/monetdb
diff --git a/buildtools/conf/monetdbd.conf b/buildtools/conf/monetdbd.conf
--- a/buildtools/conf/monetdbd.conf
+++ b/buildtools/conf/monetdbd.conf
@@ -1,3 +1,3 @@
 # this file is for systemd
-# monetdbd needs a directory in /var/run that is owned by monetdb:monetdb
+# monetdbd needs a directory in /run that is owned by monetdb:monetdb
 d /run/monetdb 0775 monetdb monetdb -
diff --git a/buildtools/selinux/monetdb.fc b/buildtools/selinux/monetdb.fc
--- a/buildtools/selinux/monetdb.fc
+++ b/buildtools/selinux/monetdb.fc
@@ -2,8 +2,14 @@
 /usr/bin/mserver5                              --      
gen_context(system_u:object_r:mserver5_exec_t,s0)
 /usr/lib/systemd/system/monetdbd.*                     
gen_context(system_u:object_r:monetdbd_unit_file_t,s0)
 /var/log/monetdb(/.*)?                                 
gen_context(system_u:object_r:monetdbd_log_t,s0)
+# for some reason we cannot use /run/monetdb here, even though that is the 
real name
+/var/run/monetdb(/.*)?                                 
gen_context(system_u:object_r:monetdbd_var_run_t,s0)
+# database "farm"
 /var/monetdb5/dbfarm(/.*)?                             
gen_context(system_u:object_r:mserver5_db_t,s0)
 /var/monetdb5/dbfarm/\.merovingian_properties  --      
gen_context(system_u:object_r:monetdbd_etc_t,s0)
-/var/run/monetdb(/.*)?                                 
gen_context(system_u:object_r:monetdbd_var_run_t,s0)
 /var/monetdb5/dbfarm/\.merovingian_lock                --      
gen_context(system_u:object_r:monetdbd_lock_t,s0)
 /var/monetdb5/dbfarm/.*/\.gdk_lock             --      
gen_context(system_u:object_r:mserver5_lock_t,s0)
+/var/lib/monetdb(/.*)?                                 
gen_context(system_u:object_r:mserver5_db_t,s0)
+/var/lib/monetdb/\.merovingian_properties      --      
gen_context(system_u:object_r:monetdbd_etc_t,s0)
+/var/lib/monetdb/\.merovingian_lock            --      
gen_context(system_u:object_r:monetdbd_lock_t,s0)
+/var/lib/monetdb/.*/\.gdk_lock                 --      
gen_context(system_u:object_r:mserver5_lock_t,s0)
diff --git a/buildtools/selinux/monetdb.te b/buildtools/selinux/monetdb.te
--- a/buildtools/selinux/monetdb.te
+++ b/buildtools/selinux/monetdb.te
@@ -1,4 +1,4 @@
-policy_module(monetdb, 0.9)
+policy_module(monetdb, 1.0)
 # The above line declares that this file is a SELinux policy file. Its
 # name is monetdb, so the file should be saved as monetdb.te
 
@@ -7,6 +7,7 @@ require {
        type proc_net_t;
        type tmp_t;
        type var_t;
+       type var_lib_t;
        type user_home_t;
        type user_home_dir_t;
        type unconfined_service_t;      # for EPEL 7
@@ -132,12 +133,14 @@ manage_sock_files_pattern(mserver5_t, ms
 allow mserver5_t monetdbd_t:fifo_file { read write getattr };
 allow mserver5_t monetdbd_t:unix_stream_socket { read write getopt shutdown };
 allow mserver5_t var_t:dir { read };
+allow mserver5_t var_lib_t:dir { read };
 # we want to be able to read some cgroup files
 fs_search_cgroup_dirs(mserver5_t);
 fs_read_cgroup_files(mserver5_t);
 allow mserver5_t cgroup_t:dir search;
 allow mserver5_t self:process execmem;
 allow monetdbd_t var_t:dir { read };
+allow monetdbd_t var_lib_t:dir { read };
 gen_tunable(mserver5_can_read_home, false)
 tunable_policy(`mserver5_can_read_home', `
     userdom_search_user_home_dirs(mserver5_t)
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
@@ -13805,7 +13805,7 @@ stdout of test 'MAL-signatures` in direc
 [ "mtime",     "dayofyear",    "command mtime.dayofyear(d:date):int ", 
"MTIMEdate_extract_dayofyear;", "Returns N where d is the Nth day\n\tof the 
year (january 1 returns 1)" ]
 [ "mtime",     "decade",       "command mtime.decade(d:date):int ",    
"MTIMEdate_extract_decade;",    "extracts decade from date."    ]
 [ "mtime",     "decade",       "command mtime.decade(t:timestamp):int ",       
"MTIMEtimestamp_decade;",       ""      ]
-[ "mtime",     "diff", "command mtime.diff(val1:date, val2:date):lng ",        
"MTIMEdate_diff;",      "returns the number of days\n\tbetween 'val1' and 
'val2'."      ]
+[ "mtime",     "diff", "command mtime.diff(val1:date, val2:date):int ",        
"MTIMEdate_diff;",      "returns the number of days\n\tbetween 'val1' and 
'val2'."      ]
 [ "mtime",     "diff", "command mtime.diff(val1:daytime, val2:daytime):lng ",  
"MTIMEdaytime_diff_msec;",      "returns the number of msec between 'val1' and 
'val2'." ]
 [ "mtime",     "diff", "command mtime.diff(val1:timestamp, val2:timestamp):lng 
",      "MTIMEtimestamp_diff_msec;",    "returns the number of 
milliseconds\n\tbetween 'val1' and 'val2'."      ]
 [ "mtime",     "epoch",        "command mtime.epoch(t:timestamp):int ",        
"MTIMEseconds_since_epoch;",    "unix-time (epoch) support: seconds since 
epoch"        ]
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
@@ -19257,7 +19257,7 @@ stdout of test 'MAL-signatures` in direc
 [ "mtime",     "dayofyear",    "command mtime.dayofyear(d:date):int ", 
"MTIMEdate_extract_dayofyear;", "Returns N where d is the Nth day\n\tof the 
year (january 1 returns 1)" ]
 [ "mtime",     "decade",       "command mtime.decade(d:date):int ",    
"MTIMEdate_extract_decade;",    "extracts decade from date."    ]
 [ "mtime",     "decade",       "command mtime.decade(t:timestamp):int ",       
"MTIMEtimestamp_decade;",       ""      ]
-[ "mtime",     "diff", "command mtime.diff(val1:date, val2:date):lng ",        
"MTIMEdate_diff;",      "returns the number of days\n\tbetween 'val1' and 
'val2'."      ]
+[ "mtime",     "diff", "command mtime.diff(val1:date, val2:date):int ",        
"MTIMEdate_diff;",      "returns the number of days\n\tbetween 'val1' and 
'val2'."      ]
 [ "mtime",     "diff", "command mtime.diff(val1:daytime, val2:daytime):lng ",  
"MTIMEdaytime_diff_msec;",      "returns the number of msec between 'val1' and 
'val2'." ]
 [ "mtime",     "diff", "command mtime.diff(val1:timestamp, val2:timestamp):lng 
",      "MTIMEtimestamp_diff_msec;",    "returns the number of 
milliseconds\n\tbetween 'val1' and 'val2'."      ]
 [ "mtime",     "epoch",        "command mtime.epoch(t:timestamp):int ",        
"MTIMEseconds_since_epoch;",    "unix-time (epoch) support: seconds since 
epoch"        ]
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
@@ -263,6 +263,7 @@ bit GDKfataljumpenable;
 str GDKfatalmsg;
 char *GDKfilepath(int farmid, const char *dir, const char *nme, const char 
*ext);
 void GDKfree(void *blk);
+int GDKgetdebug(void);
 const char *GDKgetenv(const char *name);
 int GDKgetenv_int(const char *name, int def);
 bool GDKgetenv_istext(const char *name, const char *text);
@@ -302,6 +303,7 @@ str GDKstrdup(const char *s) __attribute
 str GDKstrndup(const char *s, size_t n) 
__attribute__((__warn_unused_result__));
 gdk_return GDKtracer_fill_comp_info(BAT *id, BAT *component, BAT *log_level);
 gdk_return GDKtracer_flush_buffer(void);
+const char *GDKtracer_get_component_level(const char *comp);
 void GDKtracer_log(const char *file, const char *func, int lineno, log_level_t 
lvl, component_t comp, const char *syserr, _In_z_ _Printf_format_string_ const 
char *format, ...) __attribute__((__format__(__printf__, 7, 8)));
 void GDKtracer_reinit_basic(int sig);
 gdk_return GDKtracer_reset_adapter(void);
@@ -1512,7 +1514,7 @@ str MTIMEcurrent_timestamp(timestamp *re
 str MTIMEdate_add_msec_interval(date *ret, const date *d, const lng *ms);
 str MTIMEdate_addmonths(date *ret, const date *d, const int *m);
 str MTIMEdate_date(date *dst, const date *src);
-str MTIMEdate_diff(lng *ret, const date *v1, const date *v2);
+str MTIMEdate_diff(int *ret, const date *v1, const date *v2);
 str MTIMEdate_diff_bulk(bat *ret, const bat *bid1, const bat *bid2);
 str MTIMEdate_extract_century(int *ret, const date *src);
 str MTIMEdate_extract_century_bulk(bat *ret, const bat *bid);
diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -1,6 +1,6 @@
 Source: monetdb
 Section: misc
-Priority: extra
+Priority: optional
 Maintainer: MonetDB BV <i...@monetdb.org>
 Homepage: https://www.monetdb.org/
 Vcs-Browser: https://dev.monetdb.org/hg/MonetDB/
@@ -315,7 +315,7 @@ Description: MonetDB testing Python prog
 Package: monetdb-dbg
 Architecture: any
 Section: debug
-Priority: extra
+Priority: optional
 Depends: ${misc:Depends}
 Description: Debugging symbols for monetdb packages
  MonetDB is a database management system that is developed from a
diff --git a/debian/monetdb5-server.dirs b/debian/monetdb5-server.dirs
--- a/debian/monetdb5-server.dirs
+++ b/debian/monetdb5-server.dirs
@@ -1,2 +1,3 @@
+/var/lib/monetdb
 /var/monetdb5
 /var/monetdb5/dbfarm
diff --git a/debian/monetdb5-server.postinst b/debian/monetdb5-server.postinst
--- a/debian/monetdb5-server.postinst
+++ b/debian/monetdb5-server.postinst
@@ -14,21 +14,15 @@ case "$1" in
            addgroup --system monetdb
        fi
         if ! getent passwd monetdb > /dev/null; then
-            adduser --system --ingroup monetdb --home /var/lib/monetdb 
--disabled-password --shell /usr/sbin/nologin monetdb
+            adduser --system --ingroup monetdb --home /var/lib/monetdb \
+                   --disabled-password --shell /usr/sbin/nologin monetdb
         fi
-       # move database from old location to new location
-       if [ -d /var/MonetDB5/dbfarm -a -d /var/monetdb5/dbfarm -a ! 
/var/MonetDB5/dbfarm -ef /var/monetdb5/dbfarm ]; then
-               # old database exists and is different from new
-               if [ ! -d /var/monetdb5 ] || [ `find /var/monetdb5 -print | wc 
-l` -le 2 ]; then
-                       # new database is still empty
-                       [ -d /var/monetdb5/dbfarm ] && rmdir 
/var/monetdb5/dbfarm
-                       [ -d /var/monetdb5 ] && rmdir /var/monetdb5
-                       mv /var/MonetDB5 /var/monetdb5
-               fi
-       fi
        mkdir -p /var/monetdb5/dbfarm
        chown monetdb:monetdb /var/monetdb5 /var/monetdb5/dbfarm
        chmod ug=rwx,g+s,o= /var/monetdb5 /var/monetdb5/dbfarm
+       mkdir -p /var/lib/monetdb
+       chown monetdb:monetdb /var/lib/monetdb
+       chmod ug=rwx,g+s,o= /var/lib/monetdb
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/debian/monetdb5-sql.install b/debian/monetdb5-sql.install
--- a/debian/monetdb5-sql.install
+++ b/debian/monetdb5-sql.install
@@ -3,7 +3,7 @@ debian/tmp/usr/bin/monetdb usr/bin
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5/autoload/??_sql.mal 
usr/lib/x86_64-linux-gnu/monetdb5/autoload
 debian/tmp/usr/lib/systemd/system/monetdbd.service lib/systemd/system
 debian/tmp/etc/logrotate.d/monetdbd etc/logrotate.d
-debian/tmp/etc/tmpfiles.d/monetdbd.conf etc/tmpfiles.d
+debian/tmp/etc/tmpfiles.d/monetdbd.conf usr/lib/tmpfiles.d
 # usr/lib/x86_64-linux-gnu/monetdb5/sql*.mal EXCEPT: sql*_hge.mal
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5/sql.mal 
usr/lib/x86_64-linux-gnu/monetdb5
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5/sql[!_]*.mal 
usr/lib/x86_64-linux-gnu/monetdb5
@@ -12,6 +12,7 @@ debian/tmp/usr/lib/x86_64-linux-gnu/mone
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5/sql_[!adhr]*.mal 
usr/lib/x86_64-linux-gnu/monetdb5
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5/lib_sql.so 
usr/lib/x86_64-linux-gnu/monetdb5
 debian/tmp/var/monetdb5/dbfarm/.merovingian_properties var/monetdb5/dbfarm
+debian/tmp/var/monetdb5/dbfarm/.merovingian_lock var/monetdb5/dbfarm
 
 # usr/lib/x86_64-linux-gnu/monetdb5/createdb/*.sql EXCEPT: *_bam.sql, 
*_fits.sql, *_geom.sql, *_gsl.sql, *_hge.sql, *_lidar.sql
 debian/tmp/usr/lib/x86_64-linux-gnu/monetdb5/createdb/??_[!abfgjlu]*.sql 
usr/lib/x86_64-linux-gnu/monetdb5/createdb
diff --git a/debian/monetdb5-sql.postinst b/debian/monetdb5-sql.postinst
--- a/debian/monetdb5-sql.postinst
+++ b/debian/monetdb5-sql.postinst
@@ -14,6 +14,8 @@ case "$1" in
        chown monetdb:monetdb /var/log/monetdb /run/monetdb
        chmod ug=rwx,o= /var/log/monetdb
        chmod ug=rwx,o=rx /run/monetdb
+       chown monetdb:monetdb /var/monetdb5/dbfarm/.meovingian_*
+       chmod ug=rw,o=r /var/monetdb5/dbfarm/.merovingian_*
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to