Tuesday, October 16, 2012

Once more about comparison of subquery optimization in MySQL 5.6 and MariaDb 5.5, once more about nothing...


Has it ever happened to you, when attending a party or any other convention, to enter the hall, see a gang of nice people drinking, smiling, laughing, doing small talks, and you saying “hi” to them and in response getting just and empty stare somewhere above your head? And you then – trying to approach a guy looking quite familiar to you – stretch your hand to shake his hand just to watch him demonstratively turn his back to you? And so there you nervously looking around, and stealthily checking your back (no, no tail), and throwing a glance at your toes (still no hooves), and you passing your palm across your sweating forehead (no hints of horns). And “am I plagued?” comes to your head as you start regretting utterly that your appeared here at all, and you start wishing to be disintegrated, annihilated, completely blown out... You don't have to. Calm down. You are invisible. You are invisible for them. This is an Oracle convention, and you are not from Oracle. You do not exist. It's that simple.

Why am I getting so emotional, so mad? What's actually happened? What has forced me to express myself in the language that is not my native? Have I read this this blog? What's about it? The guy says “ I had demonstrated how subquery materialization, introduced in MySQL 5.6.5” , even though the feature was introduced as long ago as in MySQL 6.0 alpha in 2007? Well, big deal: lame wording, nothing more. The guy says about his latest feature: “I implemented”? I've checked: he really implemented it. Quite new code. The code is raw, contains obvious bugs,the first query you submitted from a test suite returned a badly chosen plan? Of course the code is raw (it's only RC after all), of course it contains bugs (any code contains bugs), and, of course you are extremely unlucky. The code exploits the same idea underneath as an unnamed implementation? Well, it's quite disputable. Besides “the same idea” with what? With that in MariaDB code? But MariaDB does not exist! Look at the blogs of MySQL developers. All of them. Look at the presentations from MySQL Connect. No mention of MariaDB. Ergo: it does not exists.

Dear MySQL developers from Oracle, the database engineers from Sun and my former colleagues from MySQL that still stay with Oracle (not too many of them though): Intentionally or unintentionally, with bad will or good will, you effectively destroy the house of FOSS (that is already pretty shaky due to its flimsy architecture) when you defiantly do not notice any other MySQL development, do not give any credit to the developers from the community. When I and my colleagues develop a new feature and give it to the community the only things I and my colleagues ask for is the acknowledgment from the community that I and my colleagues are considered as the authors of the feature. And the fact how much money Oracle spends on the development of its own features cannot deprive us of our authorship. So please, respect our authorship as we respect the authorship of anybody else, including yours. Otherwise there won't be any development community for MySQL. There might be some user community around Oracle's MySQL . This perhaps may be a goal for Oracle, but I doubt that it can be an attractive perspective for Percona, SkySQL, Galera and many other people from MySQL community.

I would like also to remind you about the culture of annotations that is indisputably acknowledged in open publications. Especially I remind about it for the engineers from Norway among whom are a few PhDs and who for sure are familiarized with this culture. Of course, theoretically speaking in any of my articles I can use the result of any theorem without giving any reference to the first publication. Yet, the chances are extremely low that the article will be published in any solid edition. And the chances are high that my next articles won't be accepted under some ridiculous pretext.

What if Oracle implicitly or explicitly prohibits the mention of the achievements of others in the blogs of its employees? Well, it's a hard question and at the moment I don't have any answer. I only know that a malicious corporate order cannot be taken as an excuse for my broken integrity. That's why, anticipating a very high probability of such kind of moral collisions, I preferred joining Monty Program AB instead of joining Oracle.

At the end I should apologize for Sergey Petrunia who published this blog several days ago and then went on vacation. In his blog, Sergey claimed that no implementation of Cost-based choice between Materialization and IN->EXISTS strategies could be found in MySQL 5.6.7. It turns out he was mistaken. His mistake is quite understandable though. He could not see any public commits for this feature, any traces of the feature in the official change log for the release. Anyway, unintentionally he published facts that were not true and he should have delivered his apologies, had he existed. But he doesn't. Neither do I.