What is MariaDB 10.3?
MariaDB 10.3 will be the next major development version. There are currently no releases. MariaDB 10.2 is the current major development version and, being a release candidate, is mostly feature-complete, so major new features will be going into 10.3.
The following lists the major new features in MariaDB 10.3:
Implemented Features
Syntax / general features
- CREATE SEQUENCE - MDEV-10139
- DROP SEQUENCE
- NEXT VALUE FOR
- PREVIOUS VALUE FOR
- INTERSECT and EXCEPT - MDEV-10141
- ROW data type for stored routine variables - MDEV-10914, MDEV-12007, MDEV-12291
- TYPE OF and ROW TYPE OF anchored data types for stored routine variables - MDEV-12461
- Cursors with parameters - MDEV-12457
Compatibility
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
- sql_mode=ORACLE: Providing compatibility for basic PL/SQL constructs - MDEV-10411
- sql_mode=ORACLE: %TYPE in variable declarations - MDEV-10577
- sql_mode=ORACLE: cursor%ROWTYPE in variable declarations - MDEV-12011
- sql_mode=ORACLE: table%ROWTYPE in variable declarations - MDEV-12133
- sql_mode=ORACLE: FOR loop statement - MDEV-10580
- sql_mode=ORACLE: Implicit cursor FOR loop - MDEV-12098
- sql_mode=ORACLE: Explicit cursor FOR LOOP - MDEV-10581
- sql_mode=ORACLE: Cursors with parameters - MDEV-10597
- sql_mode=ORACLE: Implicit cursor FOR LOOP for cursors with parameters - MDEV-12314
- sql_mode=ORACLE: Explicit cursor attributes %ISOPEN, %ROWCOUNT, %FOUND, %NOTFOUND - MDEV-10582
- sql_mode=ORACLE: SQL%ROWCOUNT - MDEV-10583
- sql_mode=ORACLE: Variable declarations can go after cursor declarations - MDEV-10598
- sql_mode=ORACLE: Predefined exceptions: TOO_MANY_ROWS, NO_DATA_FOUND, DUP_VAL_ON_INDEX - MDEV-10839
- sql_mode=ORACLE: RAISE statement for predefined exceptions - MDEV-10840
- sql_mode=ORACLE: User defined exceptions - MDEV-10587
- sql_mode=ORACLE: SP control functions SQLCODE, SQLERRM - MDEV-10578
- sql_mode=ORACLE: Triggers: Understand :NEW.c1 and :OLD.c1 instead of NEW.c1 and OLD.c1 - MDEV-10579
- sql_mode=ORACLE: Dynamic SQL placeholders - MDEV-10801
- sql_mode=ORACLE: Allow VARCHAR and VARCHAR2 without length as a data type of routine parameters and in RETURN clause - MDEV-10596
- sql_mode=ORACLE: CAST(..AS VARCHAR(N)) - MDEV-11275
- sql_mode=ORACLE: Anonymous blocks - MDEV-10655
- sql_mode=ORACLE: GOTO statement - MDEV-10697
- sql_mode=ORACLE: Allow SELECT UNIQUE as a synonym for SELECT DISTINCT - MDEV-12086
- sql_mode=ORACLE: Do not require BEGIN..END in multi-statement exception handlers in THEN clause - MDEV-12088
- sql_mode=ORACLE: Understand optional routine name after the END keyword - MDEV-12089
- sql_mode=ORACLE: Inside routines the CALL keywoard is optional - MDEV-12107
- sql_mode=ORACLE: Make the concatenation operator ignore NULL arguments - MDEV-11880
- sql_mode=ORACLE: make the CONCAT function ignore NULL arguments - MDEV-12143
- sql_mode=ORACLE: TRUNCATE TABLE t1 [ {DROP|REUSE} STORAGE ] - MDEV-10588
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 do have a visible effect:
- 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
- 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