MariaDB 10.3.0 Release Notes

The most recent release of MariaDB 10.3 is:
MariaDB 10.3.39 Stable (GA) Download Now

Download Release Notes Changelog Overview of 10.3

Release date: 16 Apr 2017

MariaDB 10.3 is the new development series of MariaDB. It is an evolution of MariaDB 10.2 with several entirely new features not found anywhere else.

MariaDB 10.3.0 is an Alpha release.

Do not use alpha releases in production!

For an overview of MariaDB 10.3 see the What is MariaDB 10.3? page.

Thanks, and enjoy MariaDB!

Notable Changes

This is the first alpha release in the MariaDB 10.3 series. Alpha releases are useful for testing and planning, but should not be used in production.

Notable additions in this release include:

Syntax / General Features

Idle Transactions

Connections with idle transactions can be automatically killed after a specified time period by means of the idle_transaction_timeout, idle_readonly_transaction_timeout and idle_readwrite_transaction_timeout system variables.


When running with sql_mode=ORACLE, the server now understands a subset of Oracle's PL/SQL language instead of the traditional MariaDB syntax for stored routines. This work is in progress. See MDEV-10142 and MDEV-10764 for the current status and subtasks. The 10.3.0 release includes:

  • Providing compatibility for basic PL/SQL constructs - MDEV-10411
  • %TYPE in variable declarations - MDEV-10577
  • cursor%ROWTYPE in variable declarations - MDEV-12011
  • table%ROWTYPE in variable declarations - MDEV-12133
  • FOR loop statement - MDEV-10580
  • Implicit cursor FOR loop - MDEV-12098
  • Explicit cursor FOR LOOP - MDEV-10581
  • Cursors with parameters - MDEV-10597
  • Implicit cursor FOR LOOP for cursors with parameters - MDEV-12314
  • Explicit cursor attributes %ISOPEN, %ROWCOUNT, %FOUND, %NOTFOUND - MDEV-10582
  • Variable declarations can go after cursor declarations - MDEV-10598
  • Predefined exceptions: TOO_MANY_ROWS, NO_DATA_FOUND, DUP_VAL_ON_INDEX - MDEV-10839
  • RAISE statement for predefined exceptions - MDEV-10840
  • User defined exceptions - MDEV-10587
  • SP control functions SQLCODE, SQLERRM - MDEV-10578
  • Triggers: Understand :NEW.c1 and :OLD.c1 instead of NEW.c1 and OLD.c1 - MDEV-10579
  • Dynamic SQL placeholders - MDEV-10801
  • Allow VARCHAR and VARCHAR2 without length as a data type of routine parameters and in RETURN clause - MDEV-10596
  • CAST(..AS VARCHAR(N)) - MDEV-11275
  • Anonymous blocks - MDEV-10655
  • GOTO statement - MDEV-10697
  • Allow SELECT UNIQUE as a synonym for SELECT DISTINCT - MDEV-12086
  • Do not require BEGIN..END in multi-statement exception handlers in THEN clause - MDEV-12088
  • Understand optional routine name after the END keyword - MDEV-12089
  • Inside routines the CALL keywoard is optional - MDEV-12107
  • Make the concatenation operator ignore NULL arguments - MDEV-11880
  • make the CONCAT function ignore NULL arguments - MDEV-12143
  • Providing compatibility for basic SQL data types - MDEV-10343

Data Type API

10.3 continues refactoring for the data type API started in 10.2, which will make it possible to have user data type plugins. This work is still in progress (see MDEV-4912 for the current status and subtasks). Most of the task in this category do not change the server behavior. Some tasks implemented in 10.3.0 do have a good visible effect:

  • An expression of the GEOMETRY data type is not allowed any more:
    • as an argument to functions ABS(), CEILING(), FLOOR(), ROUND(), SUM(), AVG(), VARIANCE(), CAST(AS..), as well as to the unary minus operator - MDEV-12303, MDEV-12239, MDEV-12199, MDEV-12001
    • as an argument to hybrid functions such as CASE, COALESCE, IF which have other arguments of the numeric or temporal data types - MDEV-11478
    • as an argument to comparison operators in combination with numeric and temporal data types - MDEV-11692
    • as an argument to operators +, -, *, /, MOD - MDEV-12238
  • Wrong result for INSERT INTO t1 (datetime_field) VALUES (hybrid_function_of_TIME_data_type) - MDEV-11331
  • Expect "Impossible where condition" for WHERE timestamp_field>=DATE_ADD(TIMESTAMP'9999-01-01 00:00:00',INTERVAL 1000 YEAR) - MDEV-11333
  • SP variables of temporal data types do not replicate correctly - MDEV-11815
  • Incorrect result for (time_expr BETWEEN timestamp_exp1 AND timestamp_expr2) - MDEV-11482
  • Wrong result for CASE on a mixture of signed and unsigned expressions - MDEV-11554
  • Wrong result for (int_expr IN (mixture of signed and unsigned expressions)) - MDEV-11497
  • CASE with a mixture of TIME and DATETIME returns a wrong result - MDEV-11555
  • SP variables of the SET data type erroneously allow values with comma - MDEV-11146
  • mysql_list_field() returns wrong default values for VIEW - MDEV-11672

System Variables

The following new system variables have been added:

Status Variables

The following new status variables have been added:

See the What is MariaDB 10.3? page for an overview of MariaDB 10.3.

Do not use alpha releases in production!

For a complete list of changes made in MariaDB 10.3.0, with links to detailed information on each push, see the changelog.

Be notified of new MariaDB Server releases automatically by subscribing to the MariaDB Foundation community announce 'at' announcement list (this is a low traffic, announce-only list). MariaDB plc customers will be notified for all new releases, security issues and critical bug fixes for all MariaDB plc products thanks to the Notification Services.

MariaDB may already be included in your favorite OS distribution. More information can be found on the Distributions which Include MariaDB page.


Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.