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-between-mariadb-100-and-mysql-56
>
> 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