From 71488f2d6de8db165ea81304ddf96c6ae97d7a58 Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Thu, 25 Apr 2024 02:47:36 +0200 Subject: [PATCH] - merged router subpackage and fixes from MYSQL_8_0 --- mysql.spec | 166 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 106 insertions(+), 60 deletions(-) diff --git a/mysql.spec b/mysql.spec index b0652aa..5d82810 100644 --- a/mysql.spec +++ b/mysql.spec @@ -463,6 +463,22 @@ This package contains the standard MySQL NDB CPC Daemon. %description ndb-cpc -l pl.UTF-8 Ten pakiet zawiera standardowego demona MySQL NDB CPC. +%package router +Summary: MySQL Router +Summary(pl.UTF-8): MySQL Router +Group: Applications/Databases +Requires: alternatives +Requires: %{name}-dirs = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} + +%description router +The MySQL Router software delivers a fast, multi-threaded way of +routing connections from MySQL Clients to MySQL Servers. + +%description router -l pl.UTF-8 +Oprogramowanie MySQL Router zapewnia szybki i wielowątkowy sposób +przekierowywania połączeń od klientów MySQL do serwerów MySQL. + %prep %setup -q %{?with_sphinx:-a100} %{!?with_system_boost:-a101} -n mysql-%{version} @@ -505,21 +521,23 @@ CPPFLAGS="%{rpmcppflags}" \ %{?with_systemtap:-DENABLE_DTRACE=ON} \ -DFEATURE_SET="community" \ -DINSTALL_LAYOUT=RPM \ - -DINSTALL_BINDIR=%{mysqllibdir}/bin \ - -DINSTALL_SBINDIR=%{mysqllibdir}/sbin \ - -DINSTALL_MANDIR=%{mysqldatadir}/man \ - -DINSTALL_LIBDIR=%{_lib} \ - -DINSTALL_PRIV_LIBDIR=%{_libdir}/mysql/%{mysqlversion}/private \ + -DINSTALL_BINDIR=%{mysqllibdir}/bin \ + -DINSTALL_SBINDIR=%{mysqllibdir}/sbin \ + -DINSTALL_MANDIR=%{mysqldatadir}/man \ + -DINSTALL_LIBDIR=%{_lib} \ + -DINSTALL_PRIV_LIBDIR=%{_libdir}/mysql/%{mysqlversion}/private \ -DINSTALL_MYSQLTESTDIR_RPM="" \ -DINSTALL_MYSQLDATADIR=/var/lib/mysql/%{mysqlversion} \ -DINSTALL_PLUGINDIR=%{_lib}/mysql/%{mysqlversion}/plugin \ - -DINSTALL_SECURE_FILE_PRIVDIR=/var/lib/mysql-files/%{mysqlversion} \ + -DINSTALL_SECURE_FILE_PRIVDIR=/var/lib/mysql-files/%{mysqlversion} \ -DINSTALL_SQLBENCHDIR=%{_datadir} \ -DINSTALL_SUPPORTFILESDIR=share/mysql/%{mysqlversion}/support \ -DINSTALL_MYSQLSHAREDIR=share/mysql/%{mysqlversion}/lang \ -DINSTALL_MYSQLTESTDIR=share/mysql/%{mysqlversion}/test \ - -DROUTER_INSTALL_LIBDIR=%{_libdir}/mysql/%{mysqlversion}/router/private \ - -DROUTER_INSTALL_PLUGINDIR=%{_libdir}/mysql/%{mysqlversion}/router \ + -DROUTER_INSTALL_DATADIR=/var/lib/mysqlrouter/%{mysqlversion} \ + -DROUTER_INSTALL_LIBDIR=%{_libdir}/mysql/%{mysqlversion}/router/private \ + -DROUTER_INSTALL_LOGDIR=/var/log/mysqlrouter/%{mysqlversion} \ + -DROUTER_INSTALL_PLUGINDIR=%{_libdir}/mysql/%{mysqlversion}/router \ -DMYSQL_UNIX_ADDR=/var/lib/mysql/%{mysqlversion}/mysql.sock \ %{?debug:-DWITH_DEBUG=ON} \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ @@ -533,7 +551,7 @@ CPPFLAGS="%{rpmcppflags}" \ -DWITH_LZ4=system \ -DWITH_PROTOBUF=system \ -DWITH_SASL=system \ - -DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \ + -DWITH_UNIT_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \ -DWITH_SSL=%{?with_ssl:system}%{!?with_ssl:no} \ %{!?with_system_boost:-DWITH_BOOST="$(pwd)/$(ls -1d ../boost_*)"} \ -DWITH_ZLIB=system \ @@ -547,8 +565,8 @@ CPPFLAGS="%{rpmcppflags}" \ %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT/etc/{logrotate.d,rc.d/init.d,sysconfig,mysql/%{mysqlversion},skel} \ - $RPM_BUILD_ROOT/var/{log/{archive,}/mysql/%{mysqlversion},lib/{mysql,mysql-files}/%{mysqlversion}} \ +install -d $RPM_BUILD_ROOT/etc/{ld.so.conf.d,logrotate.d,rc.d/init.d,sysconfig,mysql/%{mysqlversion},skel} \ + $RPM_BUILD_ROOT/var/{lib/mysqlrouter,log/{archive,}/{mysql,mysqlrouter}/%{mysqlversion},lib/{mysql,mysql-files}/%{mysqlversion}} \ $RPM_BUILD_ROOT%{_libdir} %{__make} -C build install \ @@ -561,9 +579,12 @@ sed -e 's,@mysqlversion@,%{mysqlversion},g;' %{SOURCE3} >$RPM_BUILD_ROOT/etc/log sed -e 's,@mysqlversion@,%{mysqlversion},g;' %{SOURCE4} >mysqld.conf sed -e 's,@mysqlversion@,%{mysqlversion},g;' %{SOURCE5} >$RPM_BUILD_ROOT%{_sysconfdir}/mysql/%{mysqlversion}/clusters.conf touch $RPM_BUILD_ROOT/var/log/mysql/%{mysqlversion}/{mysqld,query,slow}.log +touch $RPM_BUILD_ROOT/var/log/mysqlrouter/%{mysqlversion}/mysqlrouter.log mv $RPM_BUILD_ROOT/etc/logrotate.d/{mysqlrouter,%{name}-router} +echo "%{_libdir}/mysql/%{mysqlversion}/router/private" >$RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-router.conf + # remove innodb directives from mysqld.conf if mysqld is configured without %if %{without innodb} cp mysqld.conf mysqld.tmp @@ -665,18 +686,6 @@ update-alternatives \ update-alternatives \ --install %{_bindir}/mysql_migrate_keyring mysql_migrate_keyring %{_libdir}/mysql/%{mysqlversion}/bin/mysql_migrate_keyring %{mysqlpriority} \ --slave %{_mandir}/man1/mysql_migrate_keyring.1 mysql_migrate_keyring.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysql_migrate_keyring.1* || : -update-alternatives \ - --install %{_bindir}/mysqlrouter mysqlrouter %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter %{mysqlpriority} \ - --slave %{_mandir}/man1/mysqlrouter.1 mysqlrouter.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter.1* || : -update-alternatives \ - --install %{_bindir}/mysqlrouter_keyring mysqlrouter_keyring %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_keyring %{mysqlpriority} \ - --slave %{_mandir}/man1/mysqlrouter_keyring.1 mysqlrouter_keyring.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_keyring.1* || : -update-alternatives \ - --install %{_bindir}/mysqlrouter_passwd mysqlrouter_passwd %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_passwd %{mysqlpriority} \ - --slave %{_mandir}/man1/mysqlrouter_passwd.1 mysqlrouter_passwd.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_passwd.1* || : -update-alternatives \ - --install %{_bindir}/mysqlrouter_plugin_info mysqlrouter_plugin_info %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_plugin_info %{mysqlpriority} \ - --slave %{_mandir}/man1/mysqlrouter_plugin_info.1 mysqlrouter_plugin_info.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_plugin_info.1* || : update-alternatives \ --install %{_sbindir}/innochecksum innochecksum %{_libdir}/mysql/%{mysqlversion}/sbin/innochecksum %{mysqlpriority} \ --slave %{_mandir}/man1/innochecksum.1 innochecksum.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/innochecksum.1* || : @@ -707,10 +716,6 @@ update-alternatives \ if [ "$1" = "0" ]; then update-alternatives --remove ibd2sdi %{_libdir}/mysql/%{mysqlversion}/bin/ibd2sdi || : update-alternatives --remove mysql_migrate_keyring %{_libdir}/mysql/%{mysqlversion}/bin/mysql_migrate_keyring || : - update-alternatives --remove mysqlrouter %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter || : - update-alternatives --remove mysqlrouter_keyring %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_keyring || : - update-alternatives --remove mysqlrouter_passwd %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_passwd || : - update-alternatives --remove mysqlrouter_plugin_info %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_plugin_info || : update-alternatives --remove innochecksum %{_libdir}/mysql/%{mysqlversion}/sbin/innochecksum || : update-alternatives --remove my_print_defaults %{_libdir}/mysql/%{mysqlversion}/sbin/my_print_defaults || : update-alternatives --remove myisamchk %{_libdir}/mysql/%{mysqlversion}/sbin/myisamchk || : @@ -952,19 +957,46 @@ fi %post libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig +%pre router +%groupadd -g 348 mysqlrouter +%useradd -u 348 -d /var/lib/mysqlrouter -s /bin/false -g mysqlrouter -c "MySQL Router" mysqlrouter + +%post router +/sbin/ldconfig + +%posttrans router +update-alternatives \ + --install %{_bindir}/mysqlrouter mysqlrouter %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter %{mysqlpriority} \ + --slave %{_mandir}/man1/mysqlrouter.1 mysqlrouter.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter.1* || : +update-alternatives \ + --install %{_bindir}/mysqlrouter_keyring mysqlrouter_keyring %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_keyring %{mysqlpriority} \ + --slave %{_mandir}/man1/mysqlrouter_keyring.1 mysqlrouter_keyring.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_keyring.1* || : +update-alternatives \ + --install %{_bindir}/mysqlrouter_passwd mysqlrouter_passwd %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_passwd %{mysqlpriority} \ + --slave %{_mandir}/man1/mysqlrouter_passwd.1 mysqlrouter_passwd.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_passwd.1* || : +update-alternatives \ + --install %{_bindir}/mysqlrouter_plugin_info mysqlrouter_plugin_info %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_plugin_info %{mysqlpriority} \ + --slave %{_mandir}/man1/mysqlrouter_plugin_info.1 mysqlrouter_plugin_info.1 %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_plugin_info.1* || : + +%postun router +/sbin/ldconfig +if [ "$1" = "0" ]; then + update-alternatives --remove mysqlrouter %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter || : + update-alternatives --remove mysqlrouter_keyring %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_keyring || : + update-alternatives --remove mysqlrouter_passwd %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_passwd || : + update-alternatives --remove mysqlrouter_plugin_info %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_plugin_info || : + %userremove mysqlrouter + %groupremove mysqlrouter +fi + %files %defattr(644,root,root,755) %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name} -%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}-router %attr(754,root,root) /etc/rc.d/init.d/%{name} %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name} %attr(640,root,mysql) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mysql/%{mysqlversion}/clusters.conf %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/ibd2sdi %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysql_migrate_keyring -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_keyring -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_passwd -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_plugin_info %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/sbin/innochecksum %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/sbin/my_print_defaults %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/sbin/myisamchk @@ -973,6 +1005,7 @@ fi %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/sbin/mysql_upgrade %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/sbin/mysqlcheck %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/sbin/mysqld +%dir %{_libdir}/mysql/%{mysqlversion}/plugin %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/plugin/adt_null.so %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/plugin/auth.so %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/plugin/auth_socket.so @@ -1014,25 +1047,8 @@ fi %if %{with sphinx} %attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/plugin/ha_sphinx.so %endif +%dir %{_libdir}/mysql/%{mysqlversion}/private %{_libdir}/mysql/%{mysqlversion}/private/icudt*l -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/connection_pool.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/destination_status.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/http_auth_backend.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/http_auth_realm.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/http_server.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/io.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/keepalive.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/metadata_cache.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_api.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_connection_pool.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_metadata_cache.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_router.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_routing.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/router_openssl.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/router_protobuf.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/routing.so -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/private/libmysqlharness*.so* -%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/private/libmysqlrouter*.so* %{_datadir}/mysql/%{mysqlversion}/man/man1/ibd2sdi.1* %{_datadir}/mysql/%{mysqlversion}/man/man1/innochecksum.1* %{_datadir}/mysql/%{mysqlversion}/man/man1/my_print_defaults.1* @@ -1041,9 +1057,6 @@ fi %{_datadir}/mysql/%{mysqlversion}/man/man1/myisampack.1* %{_datadir}/mysql/%{mysqlversion}/man/man1/mysql_upgrade.1* %{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlcheck.1* -%{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter.1* -%{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_passwd.1* -%{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_plugin_info.1* %{_datadir}/mysql/%{mysqlversion}/man/man8/mysqld.8* %if %{?debug:1}0 @@ -1052,11 +1065,14 @@ fi %{_datadir}/mysql/%{mysqlversion}/man/man1/*resolve_stack_dump.1* %endif +%attr(750,mysql,mysql) %dir /var/log/mysql/%{mysqlversion} +%attr(750,mysql,mysql) %dir /var/log/archive/mysql/%{mysqlversion} %attr(640,mysql,mysql) %ghost /var/log/mysql/%{mysqlversion}/* # This is template for configuration file which is created after 'service mysql init' %{_datadir}/mysql/%{mysqlversion}/mysqld.conf +%dir %{_datadir}/mysql/%{mysqlversion}/lang %{_datadir}/mysql/%{mysqlversion}/lang/english %{_datadir}/mysql/%{mysqlversion}/lang/dictionary.txt %{_datadir}/mysql/%{mysqlversion}/lang/messages_to_clients.txt @@ -1109,20 +1125,13 @@ fi # root:root is proper here for mysql.rpm while mysql:mysql is potential security hole %attr(751,root,root) %dir /var/lib/mysql/%{mysqlversion} %attr(750,mysql,mysql) %dir /var/lib/mysql-files/%{mysqlversion} -%attr(750,mysql,mysql) %dir /var/log/mysql/%{mysqlversion} -%attr(750,mysql,mysql) %dir /var/log/archive/mysql/%{mysqlversion} %dir %{_libdir}/mysql/%{mysqlversion} %dir %{_libdir}/mysql/%{mysqlversion}/bin %dir %{_libdir}/mysql/%{mysqlversion}/sbin -%dir %{_libdir}/mysql/%{mysqlversion}/plugin -%dir %{_libdir}/mysql/%{mysqlversion}/private -%dir %{_libdir}/mysql/%{mysqlversion}/router -%dir %{_libdir}/mysql/%{mysqlversion}/router/private %dir %{_datadir}/mysql/%{mysqlversion} %dir %{_datadir}/mysql/%{mysqlversion}/man %dir %{_datadir}/mysql/%{mysqlversion}/man/man1 %dir %{_datadir}/mysql/%{mysqlversion}/man/man8 -%dir %{_datadir}/mysql/%{mysqlversion}/lang %files extras %defattr(644,root,root,755) @@ -1252,3 +1261,40 @@ fi %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/mysql-ndb-cpc %{_datadir}/mysql/%{mysqlversion}/man/man1/ndb_cpcd.1* %endif + +%files router +%defattr(644,root,root,755) +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}-router +%{_sysconfdir}/ld.so.conf.d/%{name}-router.conf +%dir %{_libdir}/mysql/%{mysqlversion}/router +%dir %{_libdir}/mysql/%{mysqlversion}/router/private +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_keyring +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_passwd +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/bin/mysqlrouter_plugin_info +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/connection_pool.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/destination_status.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/http_auth_backend.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/http_auth_realm.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/http_server.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/io.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/keepalive.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/metadata_cache.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_api.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_connection_pool.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_metadata_cache.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_router.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/rest_routing.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/router_openssl.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/router_protobuf.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/routing.so +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/private/libmysqlharness*.so* +%attr(755,root,root) %{_libdir}/mysql/%{mysqlversion}/router/private/libmysqlrouter*.so* +%{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter.1* +%{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_passwd.1* +%{_datadir}/mysql/%{mysqlversion}/man/man1/mysqlrouter_plugin_info.1* +%attr(751,root,root) %dir /var/lib/mysqlrouter +%attr(751,root,root) %dir /var/log/mysqlrouter +%attr(750,mysqlrouter,mysqlrouter) %dir /var/log/mysqlrouter/%{mysqlversion} +%attr(750,mysqlrouter,mysqlrouter) %dir /var/log/archive/mysqlrouter/%{mysqlversion} +%attr(640,mysql,mysql) %ghost /var/log/mysqlrouter/%{mysqlversion}/* -- 2.46.0