2013-10-01

I recently read some comments that we at the MariaDB Foundation have not been very open about what we are doing.

We are very sorry about this. The problem is not that we are secret about what we are doing, the problem is that not many of us working at the MariaDB Foundation are very active bloggers.

I will try to address this concern by starting a monthly blog about the MariaDB development that MariaDB Foundation employees are doing. This together with Simon Phipps' state of the sea lion blog, which is published on the MariaDB Foundation blog, should hopefully give everyone a better idea of what we are doing.

At the MariaDB Foundation we are now 4 people working full time on code, documentation, and spreading MariaDB. Here are the things we have done since the Foundation was formed in December 2012:

Major development efforts based on code from the community:

MDEV-4568 Port Percona response time distribution as audit plugin

MDEV-4911 Add KILL query id, and add query id information to process list

MDEV-4684 Enhancement request: --init-command support for mysqlslap

Major new development efforts:

MDEV-4702 Reduce usage of LOCK_open

MDEV-4011 Per thread memory usage

MDEV-4902 sql_yacc.yy incompatible with bison 3

MDEV-4950 mysql_upgrade fails with disabled InnoDB (a bug that is not fixed in MySQL)

MDEV-21 LGPL C client library

LGPL Java client library.

Some work on a new LGPL ODBC driver for MySQL and MariaDB.

Better error messages (the error code in an error message now has descriptive text)

Faster connect (lots of small fixes).

MDEV-3941 CREATE TABLE xxx IF NOT EXISTS should not block if table exists.

The MariaDB Foundation has also done a lot of work on the merge of MySQL 5.6 to MariaDB 10.0. The most notable features done by the Foundation are:

All InnoDB changes

All performance schema changes

Cleaned up the HANDLER interfaces (to make life easier for storage engine writers).

TRANSACTION READ ONLY | READ WRITE

MySQL-5.6 TIME/TIMESTAMP/DATETIME data types with fractional seconds

MySQL-5.6 temporal literals

utf16le character set

TO_BASE64 and FROM_BASE64 SQL functions

MySQL-5.6 collation customization improvements (in progress)

Note that the above is not a complete list of what is in MariaDB 10.0!

We are working with external entities and contributors to get features into MariaDB. Some of these have required a lot of work on the MariaDB Foundation side:

CONNECT storage engine

Porting to various operating systems (*BSD, Linux flavors, Solaris)

Porting to unixODBC

Fixing compiler warnings

Testing and writing mtr tests

Checking, reporting and fixing valgrind warnings

Reviewing the author's code

Adding MySQL/MariaDB security support (FILE privilege and secure_file_priv)

Adding ConnectSE support in embedded server

Globalization: making ConnectSE support multiple MariaDB character sets

Discussing many aspects of better integration of ConnectSE into MariaDB with the author.

Packaging (RPMs, DEBs, MSI)

TokuDB storage engine

Review of code

Some small integration changes.

Parallel slave

Multi source replication

Worked closely with the original author to extend the code from a working proof of concept to production level code.

MDEV-4438 Spider storage engine

Continuously working with Kentoku

MDEV-4425 REGEXP enhancements (a Google Summer of Code project, in progress)

Mentoring Sudheera Palihakkara (the student)

Student's code reviews (for RLIKE and RLIKE_REPLACE)

Code enhancements proposals

CMake related enhancements

Wrote RLIKE_SUBSTR and RLIKE_INSTR functions

Added support for --crash-script in mysqld_safe.

A lot of basic system maintenence:

Reported a lot of bugs (this is not a full list):

MDEV-4489 Replication of big5, cp932, gbk, sjis strings makes wrong values on slave

MDEV-4634 Crash in CONVERT_TZ

MDEV-4635 Crash in UNIX_TIMESTAMP(STR_TO_DATE('2020','%Y'))

MDEV-4651 Crash in my_decimal2decimal in a ORDER BY query

MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'),TIME('00:00:00'))

MDEV-4653 Wrong result for CONVERT_TZ(TIME('00:00:00'),'+00:00','+7:5')

MDEV-4654 Wrong warning for CAST(TIME('10:20:30') AS DATE) + INTERVAL 1 DAY

MDEV-4655 Difference in how GREATEST and COALESCE process arguments

MDEV-4714 Wrong TIME value from a long string

MDEV-4724 MAKETIME does not preserve microseconds

MDEV-4838 Wrong metadata for DATE_ADD('string', INVERVAL)

MDEV-4841 "Wrong character set of ADDTIME() and DATE_ADD()"

MDEV-4842 STR_TO_DATE does not work with UCS2/UTF16/UTF32

MDEV-4843 Wrong data type for TIMESTAMP('2001-01-01','10:10:10')

MDEV-4844 Redundant warning in SELECT TIME('00:00:00.')

MDEV-4848 Wrong metadata or column type for LEAST(1.0,'10')

MDEV-4850 MATCH uses a wrong fulltext index with mismatching collation

MDEV-4857 Wrong result of HOUR('1 00:00:00')

MDEV-4858 Wrong error message for a huge unsigned value inserted into a TIME column

MDEV-4859 Wrong value and data type of "SELECT MAX(time_column) + 1 FROM t1"

MDEV-4861 TIME/DATETIME arithmetics does not preserve INTERVAL precision

MDEV-4862 Wrong result of MAKETIME(0, 0, 59.9)

MDEV-4863 COALESCE(time) returns wrong results in numeric context

MDEV-4868 Length of CURRENT_TIME is too long

MDEV-4869 Wrong result of MAKETIME(0, 0, -0.1)

MDEV-4870 Wrong values of CASE, COALESCE, IFNULL on a combination of different temporal types

MDEV-4871 Temporal literals do not accept nanoseconds

MDEV-4872 Inserting a huge number into a TIME column produces a wrong result

MDEV-4898 Too many warnings when inserting a bad value into a TIMESTAMP column

MDEV-4900 Bad value inserted into a TIME field on truncation

Fixed a LOT of bugs (the following is not a full list):

MDEV-4489 Replication of big5, cp932, gbk, sjis strings makes wrong values on slave

MDEV-4512 Valgrind warnings in my_long10_to_str_8bit on INTERVAL and DATE_ADD with incorrect types

MDEV-4518 Server crashes in is_white_space when it's run with query cache...

MDEV-4634 Crash in CONVERT_TZ

MDEV-4635 Crash in UNIX_TIMESTAMP(STR_TO_DATE('2020','%Y'))

MDEV-4639 my_datetime_to_str: Conditional jump or move depends on uninitialized value

MDEV-4651 Crash in my_decimal2decimal in a ORDER BY query

MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'),TIME('00:00:00'))

MDEV-4653 Wrong result for CONVERT_TZ(TIME('00:00:00'),'+00:00','+7:5')

MDEV-4724 MAKETIME does not preserve microseconds

MDEV-4804 Date comparing false result

MDEV-4819 Upgrade from MySQL 5.6 does not work

MDEV-4841 "Wrong character set of ADDTIME() and DATE_ADD()"

MDEV-4843 Wrong data type for TIMESTAMP('2001-01-01','10:10:10')

MDEV-4863 COALESCE(time) returns wrong results in numeric context

MDEV-4871 Temporal literals do not accept nanoseconds

Fixed MySQL bug #69861 LAST_INSERT_ID is replicated incorrectly if replication filters are used.

Fixed issues with partitions and create temporary table SELECT

If one declared several continue handler for the same condition on different level of stored procedures, all of them where executed. Now we only execute the innermost of them (the most relevant).

Don't abort InnoDB if one can't allocate resources for AIO

Added some fixes that should make MyISAM & Aria REPAIR work with more than 4G records.

MDEV-4352 LOAD DATA was not multi-source safe

MDEV-4394 Sporadic failures in multi_source tests

MDEV-4033 Unable to use slave's temporary directory /tmp - Can't create/write to file '/tmp/SQL_LOAD-' (Errcode: 17 "File exists")

Increase default value of max_binlog_cache_size and max_binlog_stmt_cache_size to ulonglong_max.

MDEV-4319 mysqlbinlog output ambiguous escaping (patch by Ian Good)

OPTION is now a valid identifier (not a reserved word)

Fixed issue with LOCK TABLE + ALTER TABLE ENABLE KEYS + SHOW commands.

MDEV-628 Querying myisam table metadata may corrupt the table.

Replace with an auto_increment primary key and another unique key didn't replicate correctly with REPLACE.

BUG#51763 Can't delete rows from MEMORY table with HASH key.

MDEV-389 Server crash inserting record on a temporary table after truncating it.

Fixed crashing bug in GROUP_CONCAT with ROLLUP

MDEV-4013 Password length in replication setup

MDEV-4009 main.delayed sporadically fails with "query 'REPLACE DELAYED t1 VALUES (5)' failed: 1317: Query execution was interrupted"

Fixed CREATE TABLE IF EXIST generates warnings instead of errors

Removed lock wait timeout warning when using CREATE TABLE IF EXISTS

Code cleanups and code rewrites.

Continued work to ensure that MariaDB works on many operating systems.

Did lots of small fixes for Solaris.

Review of code from the community.

Removed valgrind and compiler warnings.

Added new test cases.

QA & benchmarking.

Talked about MariaDB and Open Source/Free Software at a lot of conferences:

Percona Live London 2012

SkySQL Roadshow, Stuttgart

Vista developer Conference, Riga

PHP Conference, Pasila, Finland

SkySQL Roadshow, Amsterdam

Percona Live, Santa Clara

SkySQL Roadshow, London

MySQL Meetup, NYC

Suomen Arkistointi Seminaari, Mikkeli, Finland

SkySQL Roadshow, Berlin

Ali Baba Conference, Hangzhou, China

OSCON, Portland

Debconf, Switzerland

Froscon, St Augustin, Germany

Haaga-Helia Talks, Finland

IDCEE Conference, Ukraina

Latinux, Brazil & Peru

Highload Conference, Moscow

Foscon, Gotenburg, Sweden

Percona Live 2013, London

Other things people from the MariaDB foundation have done:

Created +200 and updated +3000 articles in the MariaDB Knowledge Base.

Visited a lot of companies to talk about the MariaDB Foundation.

Worked closely with OS distributions to get MariaDB accepted as a standard part of their distributions. Partly thanks to the MariaDB Foundation, the following distributions now have MariaDB packages:

GNU/Linux KDu

Mageia

Gentoo

openSUSE

Slackware

Arch Linux

ALTLinux

MariaDB Debian Live Images

Parabola GNU/Linux

TurboLinux

The Chakra Project

Fedora

Red Hat Enterprise Linux

FreeBSD

OpenBSD

Debian now has MariaDB packages in 'unstable'.

For a full list and to see which distributions are replacing MySQL with MariaDB, see this page.

Updated SHOW AUTHORS and SHOW CONTRIBUTORS to give more merit to active contributors and sponsors.

We are very thankfull to the MariaDB Foundation members and supporters that have made this work possible!

The current members are:

Booking.com

SkySQL

Parallels

If you want the MariaDB foundation to do even more work like the above, you should ensure that your company becomes member in the MariaDB Foundation! You can also sponsor the foundation as a private person!

PlanetMySQL Voting:
Vote UP /
Vote DOWN

Show more