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