1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00
Aleksey Midenkov a3c379ea61 MDEV-23799 CREATE .. SELECT wrong result on join versioned table
For join to work correctly versioning condition must be added to table
on_expr. Without that JOIN_CACHE gets expression (1)

  trigcond(xtitle.row_end = TIMESTAMP'2038-01-19 06:14:07.999999') and
  trigcond(xtitle.elementId = x.`id` and xtitle.pkey = 'title')

instead of (2)

  trigcond(xtitle.elementId = x.`id` and xtitle.pkey = 'title')

for join_null_complements(). It is NULL-row of xtitle for
complementing the join and the above comparisons of course FALSE, but
trigcond (Item_func_trig_cond) makes them TRUE via its trig_var
property which is bound to some boolean properties of JOIN_TAB.

Expression (2) evaluated to TRUE because its trig_var is bound to
first_inner_tab->not_null_compl. The expression (1) does not evaluate
correctly because row_end comparison's trig_var is bound to
first_inner->found earlier. As a result JOIN_CACHE::check_match()
skipped the row for join_null_complements().

When we add versioning condition to table's on_expr the optimizer in
make_join_select() distributes conditions differently. tmp_cond
inherits on_expr value and in Good case it is full expression

xgender.elementId = x.`id` and xgender.pkey = 'gender' and
xgender.row_end = TIMESTAMP'2038-01-19 06:14:07.999999'

while in Bad case it is only

xgender.elementId = x.`id` and xgender.pkey = 'gender'.

Later in Good row_end condition is optimized out and we get one
trigcond in form of (2).
2020-10-20 10:49:54 +03:00
2019-09-03 13:17:32 +03:00
2020-09-28 17:27:42 +05:30
2020-08-03 13:41:29 +02:00
2020-07-02 06:17:51 +03:00
2020-09-28 17:27:42 +05:30
2019-06-14 07:36:47 +02:00
2020-09-21 16:39:23 +03:00
2020-09-21 11:04:04 +03:00
2020-08-02 11:18:30 +02:00
2019-05-14 17:18:46 +03:00
2020-08-03 13:41:29 +02:00
2019-05-14 17:18:46 +03:00
2020-05-04 16:47:11 +02:00
2020-08-13 18:18:25 +03:00
2020-09-28 17:27:42 +05:30
2020-07-02 06:17:51 +03:00
2020-09-28 17:27:42 +05:30
2020-09-28 17:27:42 +05:30
2020-09-22 21:12:48 +03:00
2020-09-28 17:27:42 +05:30
2020-08-20 09:12:16 +03:00
2019-12-02 12:41:13 +02:00
2019-12-02 12:41:13 +02:00
2018-05-05 14:01:59 +02:00
2020-01-31 11:37:12 +02:00
2020-07-20 15:11:59 +03:00
2020-08-03 13:41:29 +02:00
2020-08-03 13:41:29 +02:00
2019-05-11 21:29:06 +03:00
2018-09-10 16:47:44 +04:00
2012-06-18 16:57:58 -04:00
2019-05-12 17:20:23 +02:00
2019-05-13 17:54:04 +03:00
2020-10-07 11:25:40 -04:00

Code status:

  • Travis CI status travis-ci.org (10.3 branch)
  • Appveyor CI status ci.appveyor.com

MariaDB: drop-in replacement for MySQL

MariaDB is 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. 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 Foundation and the MariaDB Corporation, 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-features/

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

As MariaDB is a full replacement of MySQL, the MySQL manual at http://dev.mysql.com/doc is generally applicable.

Help:

More help is available from the Maria Discuss mailing list https://launchpad.net/~maria-discuss and the #maria IRC channel on Freenode.

Licensing:


NOTE:

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/

Bugs in the MySQL code can also be submitted at: https://bugs.mysql.com

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


Description
Сервер MariaDB - это разработанный сообществом форк сервера MySQL
https://mariadb.org Readme 2 GiB
Languages
MariaDB\ 71.9%
C++ 16.2%
C 10.5%
Shell 0.5%
Perl 0.4%
Other 0.3%