Details

    Description

      Hello,

      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
      cd /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb && /usr/bin/c++  -DHAVE_CONFIG_H -DMYSQL_DYNAMIC_PLUGIN -DTOKUDB_VERSION=5.6.41-84.1 -D_FILE_OFFSET_BITS=64 -Dtokudb_EXPORTS -I/builddir/build/BUILD/mariadb-10.5.2/wsrep-lib/include -I/builddir/build/BUILD/mariadb-10.5.2/wsrep-lib/wsrep-API/v26 -I/builddir/build/BUILD/mariadb-10.5.2/include -I/builddir/build/BUILD/mariadb-10.5.2/sql -I/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/PerconaFT -I/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/PerconaFT/portability -I/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/PerconaFT/util -I/builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/PerconaFT/buildheader  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fPIC -pie -fPIC -Wl,-z,relro,-z,now -fstack-protector --param=ssp-buffer-size=4 -Wno-shadow -Wno-implicit-fallthrough -std=c++11 -Wno-missing-field-initializers -O3 -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -Wno-uninitialized -D_FORTIFY_SOURCE=2 -DDBUG_OFF -fPIC   -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fPIC -std=gnu++11 -o CMakeFiles/tokudb.dir/ha_tokudb.cc.o -c /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/ha_tokudb.cc
      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
        170 | extern void *my_malloc(PSI_memory_key key, size_t size, myf MyFlags);
            |              ^~~~~~~~~
      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::realloc(void*, size_t, myf)':
      /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:55:25: error: invalid conversion from 'void*' to 'PSI_memory_key' {aka 'unsigned int'} [-fpermissive]
         55 |     return ::my_realloc(p, s, flags | MY_ALLOW_ZERO_PTR);
            |                         ^
            |                         |
            |                         void*
      /builddir/build/BUILD/mariadb-10.5.2/storage/tokudb/tokudb_memory.h:55:28: error: invalid conversion from 'size_t' {aka 'long unsigned int'} to 'void*' [-fpermissive]
         55 |     return ::my_realloc(p, s, flags | MY_ALLOW_ZERO_PTR);
            |                            ^
            |                            |
            |                            size_t {aka long unsigned int}
      /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)'
         55 |     return ::my_realloc(p, s, flags | MY_ALLOW_ZERO_PTR);
            |                                                        ^
      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:173:14: note: declared here
        173 | extern void *my_realloc(PSI_memory_key key, void *ptr, size_t size, myf MyFlags);
            |              ^~~~~~~~~~
      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
        176 | extern char *my_strdup(PSI_memory_key key, const char *from,myf MyFlags);
            |              ^~~~~~~~~
      /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)'
       6427 |     trans_register_ha(thd, false, 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: 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)'
       6592 |     trans_register_ha(thd, false, 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,
            |      ^~~~~~~~~~~~~~~~~
      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 function for 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:
      /builddir/build/BUILD/mariadb-10.5.2/sql/sql_array.h:122:3: note: candidatemake[2]: Leaving directory '/builddir/build/BUILD/mariadb-10.5.2'
      : 'Dynamic_array<Elem>::Dynamic_array(MEM_ROOT*, uint, uint) [with Elem = unsigned int; MEM_ROOT = st_mem_root; uint = unsigned int]'
        122 |   Dynamic_array(MEM_ROOT *root, uint prealloc=16, uint increment=16)
            |   ^~~~~~~~~~~~~
      /builddir/build/BUILD/mariadb-10.5.2/sql/sql_array.h:122:3: note:   candidate expects 3 arguments, 0 provided
      /builddir/build/BUILD/mariadb-10.5.2/sql/sql_array.h:117:3: note: candidate: 'Dynamic_array<Elem>::Dynamic_array(PSI_memory_key, uint, uint) [with Elem = unsigned int; PSI_memory_key = unsigned int; uint = unsigned int]'
        117 |   Dynamic_array(PSI_memory_key psi_key, uint prealloc=16, uint increment=16)
            |   ^~~~~~~~~~~~~
      /builddir/build/BUILD/mariadb-10.5.2/sql/sql_array.h:117:3: note:   candidate expects 3 arguments, 0 provided
      /builddir/build/BUILD/mariadb-10.5.2/sql/sql_array.h:113:29: note: candidate: 'constexpr Dynamic_array<unsigned int>::Dynamic_array(const Dynamic_array<unsigned int>&)'
        113 | template <class Elem> class Dynamic_array
            |                             ^~~~~~~~~~~~~
      /builddir/build/BUILD/mariadb-10.5.2/sql/sql_array.h:113:29: note:   candidate expects 1 argument, 0 provided
      make[2]: *** [storage/tokudb/CMakeFiles/tokudb.dir/build.make:66: storage/tokudb/CMakeFiles/tokudb.dir/ha_tokudb.cc.o] Error 1
      make[1]: *** [CMakeFiles/Makefile2:8761: storage/tokudb/CMakeFiles/tokudb.dir/all] Error 2
      make[1]: *** Waiting for unfinished jobs....
      
      

      Attachments

        Activity

          danblack Daniel Black added a comment - FYI MDEV-19780

          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 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).

          serg 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).
          mschorm Michal Schorm added a comment -

          @Sergei
          Thanks for heads-up.
          I will leave it disabled in MariaDB 10.5 & later.

          That means this issue can be closed.

          mschorm Michal Schorm added a comment - @Sergei Thanks for heads-up. I will leave it disabled in MariaDB 10.5 & later. That means this issue can be closed.
          Alex/AT 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).

          Alex/AT 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).

          People

            serg Sergei Golubchik
            mschorm Michal Schorm
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.