MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
Find a file
Aleksey Midenkov 10643cffe9 MDEV-37325 Incorrect results for INTERSECT ALL in ORACLE mode
Oracle mode has no priority between set-operators but the current
implementation with disable_index_if_needed() can not work with
arbitrary mix of distinct/non-distinct set-operators as the algorithm
is tied to the properly wrapped version of expression. Index can be
disabled only once and cannot be reenabled afterwards.

To adapt Oracle mode for the aforementioned implementation we
prioritize each set operator with parens in the order of
appearance. So the expression:

  S1 op1 S2 op2 S3 op3 S4

will be rewritten like this:

  (((S1 op1 S2) op2 S3) op3 S4).

The rewritten expression is valid for both Oracle and default mode and
renders the same result. Prioritizing is done with
create_priority_nest() but it was tweaked to work with derived to be
the first operand. Originally create_priority_nest() could wrap only
second operand, like this:

  S1 op1 S2 op2 S3 -> S1 op1 (S2 op2 S3).

Now this behaviour is kept by non-NULL attach_to argument. With NULL
attach_to argument it produces this transformation:

  S1 op1 S2 -> (S1 op1 S2), but to be strict it will look like this:
  SELECT .. FROM (S1 op1 S2).

This expression is treated as the first one in the select list, so
nothing to "attach to".

On importance of not making fake_select_lex after
create_priority_nest() in parsed_select_expr_start(). This will fail
nastily in Protocol::valid_handler() check in store_longlong() for
EXPLAIN. This happens because select_options are inherited from newly
made fake_select_lex but without SELECT_DESCRIBE flag which is meant
to be assigned by mysql_explain_union() but union_needs_tmp_table() is
false (because now top-level unit has no set-operator, it is just
select from derived), so SELECT_DESCRIBE assignment is
skipped. Depending on that flag send_result_set_metadata() is
conditionally executed in JOIN::exec_inner(). And originally it is
done via select_describe() branch for top-level select when there is
no set operator (it is select from derived as explained above), not
via direct send_result_set_metadata().

On IS_OR_WAS_ORACLE. Sql_mode_save_for_frm_handling removes MODE_ORACLE
when view is registered or opened. We cannot return it back as this
conflicts with MDEV-12478 (tested by compat/oracle.func_concat). So we
are temporarily adding WAS_ORACLE flag instead. WAS_MODE_ORACLE is for
testing both WAS_ORACLE and MODE_ORACLE simultaneously.
2025-12-23 14:02:55 +03:00
.github Merge 10.6 into 10.9 2023-05-19 15:11:06 +03:00
BUILD Fixed compiler issues when compiling with UBSAN 2025-09-04 18:08:38 +03:00
client MDEV-36269: improve error handling for source command 2025-12-10 19:00:09 +04:00
cmake MDEV-38332 Detect Hurd based on CMAKE_SYSTEM_NAME being "GNU" 2025-12-18 12:58:36 +11:00
dbug Merge 10.6 into 10.8 2023-02-10 13:43:53 +02:00
debian MDEV-37776: Debian shlibs:Depends shouldn't be explict 2025-10-27 18:38:59 +11:00
Docs Merge 10.4 into 10.5 2022-09-26 13:34:38 +03:00
extra Merge 10.6 into 10.11 2025-11-28 12:44:34 +02:00
include MDEV-32266 All queries in stored procedures increment empty_queries counter 2025-11-19 13:46:51 +02:00
libmariadb@9e2b0370de new CC 3.3 2025-10-20 11:48:59 +02:00
libmysqld MDEV-36234: Add innodb_linux_aio 2025-06-23 13:51:52 +03:00
libservices Merge 10.6 into 10.11 2024-02-08 15:04:46 +02:00
man Merge branch '10.6' into 10.11 2024-07-22 15:14:50 +02:00
mysql-test MDEV-37325 Incorrect results for INTERSECT ALL in ORACLE mode 2025-12-23 14:02:55 +03:00
mysys MDEV-37662: Binlog Corruption When tmpdir is Full 2025-11-19 07:05:49 -07:00
mysys_ssl MDEV-35838 libressl support differences in CRYPTO_set_mem_functions 2025-01-14 12:13:22 +11:00
plugin MDEV-3799 Windows WITH_ZLIB=bundled build errors with hashicorp_key_management 2025-10-30 16:46:33 +01:00
randgen/conf Group commit for maria engine. 2010-02-12 15:12:28 +02:00
scripts Merge branch '10.6' into 10.11 2025-12-19 14:18:11 +11:00
sql MDEV-37325 Incorrect results for INTERSECT ALL in ORACLE mode 2025-12-23 14:02:55 +03:00
sql-bench Updated sql-bench to run with PostgreSQL 14.9 2023-09-09 15:14:45 +03:00
sql-common Merge branch '10.6' into 10.11 2025-01-30 11:55:13 +01:00
storage MDEV-37972 Factor out duplicate code shared by spider_internal_xa_{commit,rollback}_by_xid 2025-12-19 14:21:20 +11:00
strings MDEV-30692: conf_to_src incompatible with CHARSET_INFO changes (postfix) 2025-09-10 13:50:59 +10:00
support-files fix rpm upgrade tests after MDEV-37726 2025-11-03 14:00:16 +01:00
tests Merge branch '10.6' into 10.11 2025-04-26 10:47:03 +02:00
tpool MDEV-37728: Fix shutdown deadlock between thr_timer_end and set_period 2025-09-24 22:25:59 +02:00
unittest Improve crc32 test data 2025-10-02 15:44:34 +03:00
vio Merge branch '10.6' into 10.11 2025-05-26 16:59:32 +02:00
win Merge branch '10.6' into 10.11 2025-07-28 18:06:31 +02:00
wsrep-lib@7010f0ab58 MDEV-31517 Wrong variable name in the configuration leads Galera to 2025-12-01 12:37:56 +02:00
zlib Merge branch 'merge-zlib' (1.3.1) into 10.4 2024-04-26 13:50:03 +02:00
.clang-format Remove duplicate key "Language" from .clang-format 2024-04-17 16:52:37 +02:00
.gitattributes Merge branch '10.5' into 10.6 2022-02-03 17:01:31 +01:00
.gitignore Merge 10.6 into 10.11 2025-05-21 07:36:35 +03:00
.gitlab-ci.yml Merge branch '10.6' into 10.11 2024-07-22 15:14:50 +02:00
.gitmodules Merge remote-tracking branch '10.4' into 10.5 2023-03-31 21:32:41 +02:00
appveyor.yml Fix appveyor config 2025-04-18 19:53:55 +02:00
BUILD-CMAKE Minor spelling fixes in code comments, docs and output 2018-01-12 16:49:02 +02:00
CMakeLists.txt MDEV-37791: gcov doesn't work on macOS 2025-10-13 09:55:29 -04:00
config.h.cmake MDEV-36839: Revert MDEV-7409 2025-07-22 10:05:24 -06:00
configure.cmake Merge branch '10.6' into 10.11 2024-10-29 15:24:38 +01:00
CONTRIBUTING.md Remove mention of Freenode 2021-09-22 07:15:08 +02:00
COPYING Update FSF Address 2019-05-11 21:29:06 +03:00
CREDITS Update sponsors 2024-08-12 09:32:30 +01:00
INSTALL-SOURCE Update AskMonty and Atlassian references to MariaDB 2016-03-08 15:24:01 +02:00
INSTALL-WIN-SOURCE Update AskMonty and Atlassian references to MariaDB 2016-03-08 15:24:01 +02:00
KNOWN_BUGS.txt Changed some MySQL names in messages to MariaDB 2018-12-09 20:49:05 +02:00
README.md Update README for branch choice 2024-05-29 13:49:32 +01:00
THIRDPARTY Merge branch '10.6' into 10.11 2024-02-01 18:36:14 +01:00
VERSION bump the VERSION 2025-11-06 12:29:42 -05:00

Code status:

  • Appveyor CI status ci.appveyor.com

MariaDB: The innovative open source database

MariaDB was designed as a drop-in replacement of MySQL(R) with more features, new storage engines, fewer bugs, and better performance.

MariaDB is brought to you by the MariaDB Foundation and the MariaDB Corporation. Please read the CREDITS file for details about the MariaDB Foundation, and who is developing MariaDB.

MariaDB is developed by many of the original developers of MySQL who now work for the MariaDB Corporation, the MariaDB Foundation and by many people in the community.

MySQL, which is the base of MariaDB, is a product and trademark of Oracle Corporation, Inc. For a list of developers and other contributors, see the Credits appendix. You can also run 'SHOW authors' to get a list of active contributors.

A description of the MariaDB project and a manual can be found at:

https://mariadb.org

https://mariadb.com/kb/en/

https://mariadb.com/kb/en/mariadb-vs-mysql-features/

https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/

https://mariadb.com/kb/en/new-and-old-releases/

Getting the code, building it and testing it

Refer to the following guide: https://mariadb.org/get-involved/getting-started-for-developers/get-code-build-test/ which outlines how to build the source code correctly and run the MariaDB testing framework, as well as which branch to target for your contributions.

Help

More help is available from the Maria Discuss mailing list https://lists.mariadb.org/postorius/lists/discuss.lists.mariadb.org/ and MariaDB's Zulip instance, https://mariadb.zulipchat.com/

Licensing


MariaDB is specifically available only under version 2 of the GNU General Public License (GPLv2). (I.e. Without the "any later version" clause.) This is inherited from MySQL. Please see the README file in the MySQL distribution for more information.

License information can be found in the COPYING file. Third party license information can be found in the THIRDPARTY file.


Bug Reports

Bug and/or error reports regarding MariaDB should be submitted at: https://jira.mariadb.org

For reporting security vulnerabilities see: https://mariadb.org/about/security-policy/

The code for MariaDB, including all revision history, can be found at: https://github.com/MariaDB/server