Hello Sergei, On Tue, Oct 28, 2014 at 12:39 PM, Sergei Golubchik <serg@mariadb.org> wrote:
Hi, Geoff!
On Oct 27, Geoff Montee wrote:
I've been building MySQL 5.6 from source for a while. I recently started testing MariaDB Galera Cluster 10.0. When I build MariaDB Galera Cluster from source, I originally used the same cmake flags that I used for MySQL 5.6, along with the additional flags specified in Codership's documentation:
http://galeracluster.com/documentation-webpages/installmariadbsrc.html
My build process basically comes down to this:
cmake . -L -DCMAKE_INSTALL_PREFIX=$MYQL_PREFIX -DMYSQL_DATADIR=$MYSQL_DATA -DWITH_SSL=yes -DWITH_READLINE=ON -DWITH_PIC=ON -DWITH_UNIT_TESTS=0 -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=1 make make install
With MariaDB Galera Cluster 10.0.14, the server that gets built does not have the Archive and Blackhole storage engines enabled by default. I do see that "ha_archive.so" and "ha_blackhole.so" were built and placed in plugin_dir, so I could probably enable them manually with INSTALL PLUGIN.
This surprised me, because these engines are enabled by default in MySQL 5.6, and I see no mention of this difference here:
https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#incompatibilities-...
Of course, if I add "-DWITH_ARCHIVE_STORAGE_ENGINE=ON -DWITH_BLACKHOLE_STORAGE_ENGINE=ON" to my cmake arguments, then these engines are enabled in the MariaDB server that gets built.
Is this difference intentional? If so, you may want to add a note to the documentation referenced above.
This has changed in MySQL-5.6 about in 2012, as a response to the internal bug
Bug#13595996 CREATE A CONSISTENT DEVELOPMENT CMAKE OPTION SET AND MAKE IT A DEFAULT
Interesting. I just checked MySQL 5.5, and when I build it with the above flags, it has the same behavior as MariaDB 10.0: the Archive and Blackhole storage engines are only included as shared libraries in plugin_dir. Thanks for that clarification.
This change links storage engines statically into the server by default, not only in mysql_release configuration, as it was before.
But we intentinally don't do that. There is a release configuration, as specified in https://mariadb.com/kb/en/generic-build-instructions/ it is
cmake . -DBUILD_CONFIG=mysql_release
and if you don't use it, you can assemble your own configuration as you see fit.
Thanks! I'll change my build scripts.
Regards, Sergei
P.S. Note that both mysql and mariadb have a concept of "default" engines - engines that are compiled in by default. They are:
mysql-5.6 $ grep -lw DEFAULT storage/*/CMakeLists.txt storage/innobase/CMakeLists.txt storage/ndb/CMakeLists.txt storage/perfschema/CMakeLists.txt
mariadb-10.0 $ grep -lw DEFAULT storage/*/CMakeLists.txt storage/maria/CMakeLists.txt storage/perfschema/CMakeLists.txt storage/xtradb/CMakeLists.txt
I'm not entirely sure why MySQL enables non-default engines by default, looks kind of weird.
That is weird. A quick look at the MySQL 5.6 source code suggests that these storage engines are being enabled in cmake/build_configurations/feature_set.cmake. Geoff