Infor announced this week, that they will provide open source database alternatives to some of their products. MariaDB has been chosen, tested, and certified by Infor to be the open source database of choice (together with MySQL) for the Infor LN and ION products. Infor LN is Infor’s flagship ERP and is sometimes better known by its former name, Baan. It has 25 years of manufacturing know-how built into it and is used by more than 5,000 companies worldwide in a wide range of industries. These include automotive, industrial equipment and machinery, high tech and electronics, and aerospace and defense. This is a big stamp of approval that even the most critical systems can be run on MariaDB.

In other news, there are currently several really interesting paths coming together into some important milestones. The rest of this post will be about them and I hope you are as excited about them as we are and please do let us know what you think, as always.

MariaDB 10.0

First up, MariaDB 10.0. In my late spring blog post about the next version of MariaDB, we informed you that the next version will be called MariaDB 10.0. There was a little storm of feedback on this and most of the feedback was related to how different tools will react with this versioning change. We’re still looking into this, but it’s good to remember that MariaDB includes features and functionality that aren’t in MySQL and that it would be good for tools to handle the MariaDB version string separately to make use of the advantages of MariaDB, like extended statistics and more switches compared to MySQL. Currently we are just a few days away from releasing the Alpha version of MariaDB 10.0 and I would like to make particular mention of two features:

  • Multi-source replication, which is a longtime wish of many users. In scenarios where you partition your data over many masters you can then replicate the data from all masters onto one slave. This is very useful for analytical queries towards the whole data or for backing up all data.
  • Get the query plan of a running statement (SHOW EXPLAIN). In MySQL and MariaDB up until now a query plan printout (EXPLAIN) wasn’t always correct because the actual running query wasn’t studied, which is the case now with SHOW EXPLAIN.

To get more details on what MariaDB 10.0 includes, please read Monty’s blog post. The Alpha version of MariaDB 10.0 is about to be released. Stay tuned!

Cassandra, JSON and Dynamic Columns

For those of you keeping score, one and a half years ago Dynamic Columns was introduced into MariaDB. This feature allows you to store a different set of columns for every row in a table. In that manner Dynamic Columns can be called NoSQL-like.

Whether or not the first intention of introducing Dynamic Columns was to become the foundation for data interchange, it definitely has. Since we introduced Dynamic Columns we have received user input, and have researched how to make it better and the end result is that Dynamic Columns now has some new capabilities:

  • Database interoperability: It’s pretty rare that companies use only a single type of databases and even critical business systems are often built on several different types of databases. Usually the data residing in those different databases are combined in an upper application level. MariaDB introduces the possibility to do this at a low level inside the MariaDB database. The first implementation of this is integration with Cassandra. Yes, you can now combine data residing in Cassandra with data inside MariaDB and all this is done through normal looking queries on the MariaDB side.
  • Data interchange: JSON has become a very popular standard for data interchange. In Dynamic Columns one can now request a row in JSON format.

The feature preview release of the Dynamic Columns with the above features included will be made available today and all of this will naturally become part of MariaDB 10.0, currently scheduled for the version 10.0.1.

MariaDB Galera Cluster

Next, you may recall that at the beginning of the month we introduced MariaDB Galera Cluster. This Alpha version has been out now for about three weeks and we’ve been testing and fixing it to prepare for the next development release. To be honest, most end user problems have been related to packaging and running the product on a specific platform. The final steps of finalizing, and preparing for, the Beta version are currently being taken.

Be part of the MariaDB project

Another push we’re making at this time is to actively extend involvement in MariaDB. Every new installation of MariaDB of course counts to this, but what I’m actually referring to is that we want to involve more companies and individuals in the MariaDB project. This doesn’t necessarily mean digging into the MariaDB source code. That is always welcome, of course. But another very important way to help the project is to sponsor specific work in MariaDB or make general financial contributions.

Patrik Sallner, CEO of SkySQL, said yesterday in his blog post about the launch of their new SkySQL products and offerings for MariaDB and MySQL, that there are a lot of businesses out there having really critical workloads running on MySQL and MariaDB. If you happen to represent one of these businesses, please consider the possibility of being part of planning the future of the product your critical business is run on. Please contact me through Monty Program for further information.

A personal task and wish

Lastly, we try to be as open as possible inside the MariaDB team in regards to the MariaDB project and I think we have succeeded fairly well. We are definitely continuing on that path. However there are always things we can do to improve, and one of them that I personally think is important for both MySQL and MariaDB is evolution predictability. Users want to know in which direction the product is going and to have a roadmap that clearly tells what’s going to be in the next version and what is planned for future versions after that. I will work on the MariaDB side to create a longer-term roadmap with as many details as possible and I do hope we’ll see something similar from the Oracle MySQL team.

A few months ago we announced the EXPLAIN Analyzer, a simple tool to help you understand how MariaDB / MySQL was running queries. For users of HeidiSQL this is now even easier. As discussed in their news post you can now send a query to the EXPLAIN analyzer with a single click.

We hope this helps both new and experienced users better understand the queries they run.

More information about the EXPLAIN Analyzer and the simple API client authors can use to add support to their apps is available in the AskMonty Knowledgebase:

About a week ago I was looking at MySQL 5.5.27, and noticed a curious thing. Despite the fact that the new MySQL release contained its usual share of bug fixes, not a single one of them was accompanied with a test case.

Now, let me tell you something about tests. For many years MySQL was using its own testing framework, called mysql-test. The first version was written as early as 1999. Over the years it has accumulated a lot of tests. Tests for new features and regression tests — those that guarantee that a bug, once fixed, will never ever show up again. We had pretty strict policies about it in MySQL AB (and, later, Sun Microsystems) — every new bug fix always had to come with a test case for the bug. And because these tests were always run on many platforms for every push (by the continuous integration tool called Pushbuild — developed in-house by Kristian Nielsen) we were reasonably sure that any bug, once fixed, will stay fixed forever. I’m not with MySQL anymore, but I still cannot imagine that Oracle would weaken that rule. So, it must be something else then.

One of the changes that 5.5.27 brings in an extension to the mysql-test-run script — the driver script of the mysql-test suite — which makes it look for test cases in a new directory. In addition to the usual location (that is, the mysql-test/ directory in the source tree), it will now look for test cases in the internal/mysql-test/ directory. Does this mean that test cases are no longer open source? Oracle did not reply to my question. But indeed, there is evidence that this guess is true. For example, this commit mail shows that new test cases, indeed, go in this “internal” directory, which is not included in the MySQL source distribution.

MySQL test cases were always an important part of the MySQL source tree. They were particularly useful for storage engine developers and for other people extending MySQL, for example, at Facebook, Twitter, and Taobao.  But also for Linux distributions which add their patches to the base MySQL, and even to users, who don’t modify the sources — they still want to confirm that a particular bug was fixed or that their custom-built binary has no obvious flaws.

In May, at the Ubuntu Developer Summit in Oakland, Oracle had 7 representatives there, and they promised that Oracle will be more contributor- and distribution-friendly. It is sad to see that instead of that the MySQL source tree is being closed down.

MySQL AB was never very good at building a development community around the product. There weren’t many MySQL developers or contributors to the project outside of MySQL AB, and the company didn’t do much to increase their number. But now Oracle has noticed them — and it intentionally kills whatever is left of the MySQL development community. Without test cases MySQL becomes as opaque to external developers as any piece of closed source software, and only those most experienced and familiar with the MySQL code base will be able to continue working with it.

UPDATE: It’s difficult to find anything more valuable to external developers than test cases. But arguably the revision history is. It groups changes to these millions of lines of source code into change sets, one change set per a distinct feature or a particular bug fix. It allows to see who changed a specific line of code, when, and why. And it seems that Oracle is going to keep this information to itself too. Public MySQL trees on launchpad with the revision history are not being updated.

Now, is there a single successful Open Source project with no developer community at all ?

UPDATE 2: We’re not the only ones this issue affects. See also: