I've got a new compilation error in the TokuDB SE in MariaDB 10.5.2.
Reproducible on Fedora 30 and 31 (both have GCC 9.2.1), 32 and Rawihde (both have GCC 10.0.1).
[ 92%] Building CXX object storage/tokudb/CMakeFiles/tokudb.dir/ha_tokudb.cc.o
In file included from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:32,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h: In function'void* tokudb::memory::malloc(size_t, myf)':
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:46:32: error: too few arguments to function'void* my_malloc(PSI_memory_key, size_t, myf)'
46 | return ::my_malloc(s, flags);
| ^
In file included from /builddir/build/BUILD/mariadb-10.5.2/sql/sql_table.h:20,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_defines.h:32,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:29,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/include/my_sys.h:170:14: note: declared here
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:55:56: error: too few arguments to function'void* my_realloc(PSI_memory_key, void*, size_t, myf)'
In file included from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:32,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h: In function'char* tokudb::memory::strdup(const char*, myf)':
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:66:24: error: invalid conversion from 'const char*' to 'PSI_memory_key' {aka 'unsigned int'} [-fpermissive]
66 | return ::my_strdup(p, flags);
| ^
| |
| const char*
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:66:27: error: invalid conversion from 'myf' {aka 'long unsigned int'} to 'const char*' [-fpermissive]
66 | return ::my_strdup(p, flags);
| ^~~~~
| |
| myf {aka long unsigned int}
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:66:32: error: too few arguments to function'char* my_strdup(PSI_memory_key, const char*, myf)'
66 | return ::my_strdup(p, flags);
| ^
In file included from /builddir/build/BUILD/mariadb-10.5.2/sql/sql_table.h:20,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_defines.h:32,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:29,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/include/my_sys.h:176:14: note: declared here
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc: In member function'int ha_tokudb::create_txn(THD*, tokudb_trx_data*)':
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:6385:49: error: too few arguments to function'void trans_register_ha(THD*, bool, handlerton*, ulonglong)'
6385 | trans_register_ha(thd, true, tokudb_hton);
| ^
In file included from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_defines.h:33,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:29,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/sql/handler.h:5128:6: note: declared here
5128 | void trans_register_ha(THD *thd, bool all, handlerton *ht,
| ^~~~~~~~~~~~~~~~~
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:6427:46: error: too few arguments to function'void trans_register_ha(THD*, bool, handlerton*, ulonglong)'
In file included from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_defines.h:33,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:29,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/sql/handler.h:5128:6: note: declared here
5128 | void trans_register_ha(THD *thd, bool all, handlerton *ht,
| ^~~~~~~~~~~~~~~~~
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc: In member function'virtual int ha_tokudb::start_stmt(THD*, thr_lock_type)':
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:6592:46: error: too few arguments to function'void trans_register_ha(THD*, bool, handlerton*, ulonglong)'
In file included from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_defines.h:33,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:29,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
/builddir/build/BUILD/mariadb-10.5.2/sql/handler.h:5128:6: note: declared here
5128 | void trans_register_ha(THD *thd, bool all, handlerton *ht,
| ^~~~~~~~~~~~~~~~~
In file included from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:9020:
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb_alter_56.cc: In constructor 'tokudb_alter_ctx::tokudb_alter_ctx()':
/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb_alter_56.cc:62:35: error: no matching functionfor call to 'Dynamic_array<unsigned int>::Dynamic_array()'
62 | altered_table_kc_info(NULL) {
| ^
In file included from /builddir/build/BUILD/mariadb-10.5.2/sql/handler.h:35,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_defines.h:33,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/hatoku_hton.h:29,
from /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc:26:
My understanding is that serg did not want to remove the source code TokuDB from MariaDB Server 10.5 (see MDEV-19780) but only disable the compilation, similar to what was done to XtraDB in MariaDB Server 10.2. Maybe we can remove TokuDB from the next major release?
The addition of a third parameter to my_malloc() also broke mysys/my_new.cc, which I suppose is dead code now. The purpose of that file seems to have been defeated quite some time ago, because 10.5 cannot be compiled with older GCC than 4.8.5, due to the required level of C++11 support.
Marko Mäkelä
added a comment - My understanding is that serg did not want to remove the source code TokuDB from MariaDB Server 10.5 (see MDEV-19780 ) but only disable the compilation, similar to what was done to XtraDB in MariaDB Server 10.2. Maybe we can remove TokuDB from the next major release?
The addition of a third parameter to my_malloc() also broke mysys/my_new.cc , which I suppose is dead code now. The purpose of that file seems to have been defeated quite some time ago, because 10.5 cannot be compiled with older GCC than 4.8.5, due to the required level of C++11 support.
mschorm, are you sure you want to have it enabled? It's deprecated by its owner (Percona), we package it in old versions, but removed from 10.5, because we cannot maintain it ourselves, so bugs won't get fixed anymore (besides, may be, something simple).
Sergei Golubchik
added a comment - mschorm , are you sure you want to have it enabled? It's deprecated by its owner (Percona), we package it in old versions, but removed from 10.5, because we cannot maintain it ourselves, so bugs won't get fixed anymore (besides, may be, something simple).
Two patches just for the sake of it, for those who want to enable and build TokuDB for 10.5.
I am running it on large Zabbix installation and few other services in production for a week, looks ok to me.
First patch fixes the compatibility on function calls, enabling to build.
Second optional patch adds ZSTD compression - requires ZSTD 1.4.5 to be extracted to third_party/zstd-1.4.5 directory and CMake 3.x (won't build on i.e. CentOS 7 CMake 2.8).
Alex/AT
added a comment - Two patches just for the sake of it, for those who want to enable and build TokuDB for 10.5.
I am running it on large Zabbix installation and few other services in production for a week, looks ok to me.
First patch fixes the compatibility on function calls, enabling to build.
Second optional patch adds ZSTD compression - requires ZSTD 1.4.5 to be extracted to third_party/zstd-1.4.5 directory and CMake 3.x (won't build on i.e. CentOS 7 CMake 2.8).
FYI
MDEV-19780