MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

This is a release of MySQL, an SQL database server.

License information can be found in the LICENSE file.

In test packages where this file is renamed README-test, the license
file is renamed LICENSE-test.

This distribution may include materials developed by third parties.
For license and attribution notices for these materials,
please refer to the LICENSE file.

For further information on MySQL or additional documentation, visit
  http://dev.mysql.com/doc/

For additional downloads and the source of MySQL, visit
  http://dev.mysql.com/downloads/

MySQL is brought to you by the MySQL team at Oracle.
Comments
  • Fix fractional timeout values used with WAIT_FOR_EXECUTED_GTID_SET

    Fix fractional timeout values used with WAIT_FOR_EXECUTED_GTID_SET

    The casting logic here resulted in the timeout double to be cast into a ulonglong before the multiplication happened. This resulted in all timeouts being rounded down to whole seconds.

    The behavior is visible with statements like the following:

    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 0.1);
    +------------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 0.1) |
    +------------------------------------------------------------------------------+
    |                                                                            1 |
    +------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 0.5);
    +------------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 0.5) |
    +------------------------------------------------------------------------------+
    |                                                                            1 |
    +------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 1.0);
    +------------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 1.0) |
    +------------------------------------------------------------------------------+
    |                                                                            1 |
    +------------------------------------------------------------------------------+
    1 row in set (1.00 sec)
    
    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 1.5);
    +------------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('16d22a8b-e803-11e8-b46f-003d70c354d2:9067', 1.5) |
    +------------------------------------------------------------------------------+
    |                                                                            1 |
    +------------------------------------------------------------------------------+
    1 row in set (1.00 sec)
    

    The query execution time here shows the problem. Everything between 0.0 and 1.0 is rounted to a wait time of 0.0 seconds. When using a value in a 1.0 to 2.0 window, it rounds down to 1 seconds as visible in the query execution time.

    After this change it works as expected, again visible in the query execution time:

    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('f9702b80-e826-11e8-b833-f64268411190:4', 1.0);
    +---------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('f9702b80-e826-11e8-b833-f64268411190:4', 1.0) |
    +---------------------------------------------------------------------------+
    |                                                                         1 |
    +---------------------------------------------------------------------------+
    1 row in set (1.01 sec)
    
    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('f9702b80-e826-11e8-b833-f64268411190:4', 0.5);
    +---------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('f9702b80-e826-11e8-b833-f64268411190:4', 0.5) |
    +---------------------------------------------------------------------------+
    |                                                                         1 |
    +---------------------------------------------------------------------------+
    1 row in set (0.50 sec)
    
    mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('f9702b80-e826-11e8-b833-f64268411190:4', 0.1);
    +---------------------------------------------------------------------------+
    | WAIT_FOR_EXECUTED_GTID_SET('f9702b80-e826-11e8-b833-f64268411190:4', 0.1) |
    +---------------------------------------------------------------------------+
    |                                                                         1 |
    +---------------------------------------------------------------------------+
    1 row in set (0.10 sec)
    
  • Fix: non-compiling client/client_utils.cc

    Fix: non-compiling client/client_utils.cc

    Replaced make_pair<string, string > with pair<string, string > to be able to compile using gcc version 6.1.1 20160510 (Ubuntu 6.1.1-2ubuntu12~16.04)

  • Extend TLS/SSL functionality with SNI and using system roots

    Extend TLS/SSL functionality with SNI and using system roots

    This changes enables sending along the SNI extension to the server when connecting over TLS with a client. It's best practice these days to send SNI as a TLS client.

    Usage of SNI would also enable uses cases like routing of MySQL connections to different backends behind a single IP.

    This change only implements the client side parts. Server side there is also value in providing different certificates on different SNI names, for example for multi homed MySQL servers with different DNS entries to connect combined with verify_identity semantics.

    At first though, clients should start sending the extension before it's useful to implement anything on the server side.

    Additionally, the second commit here enables usage of the system roots when no CA file or path is configured. Right now a CA chain is required to be provided in verify_ca or verify_identity mode. This makes it much more cumbersome when writing a client that connects to a server where the certificate in the system roots and when it provides a proper certificate signed by such an authority.

    By falling back to the system roots, deployments are greatly simplified because it removes the need to manually specify the root chain. The root chain is highly operating system and deployment dependent, so it requires a different configuration flag on each platform.

    By setting up the system roots through OpenSSL, deploying a MySQL server with a root signed installed on a system is greatly simplified for client configuration.

    Many clients in other languages / on other platforms already follow a similar behavior where system roots are used if no specific CA chain is configured. This applies to for example Java, Go, Node.js, Rust & .NET.

    This change also makes it simpler for drivers that use libmysqlclient such as the ones often used in Ruby and Python to simplify configuration for developers there as well.

  • Adjust spec file to show a proper rpmbuild command

    Adjust spec file to show a proper rpmbuild command

    Also give an example for RHEL 7.

    I've not played with rpmbuild for some time and sat there copying the "sample" rpmbuild command to build the package only to realise later that I was missing the -ba.

    I think it probably makes sense to update this to reference the latest RHEL7 version. The patch is tiny and only a documentation change but might be handy and save someone a few minutes scratching their head like I did.

  • Fix multi-valued index

    Fix multi-valued index

    These commits fixed four bugs in multi-valued index:

    1. multi-valued index isn't picked in view
    2. multi-valued index isn't picked in prepared statement
    3. multi-valued index isn't picked in member of(col) OR member of(col)
    4. MySQL wrongly gets "impossible condition" thus empty result set for WHERE func(...) AND func(...) where func is member of, json_contains or json_overlaps.
  • make variables for slowlog dynamic on the special condition

    make variables for slowlog dynamic on the special condition

    For some special,we want to know all the request more detail,many like slowlog,rather than genlog,but some time It's difficult to reconnect all client

  • Update SQL modes in the comments in statements_event.h

    Update SQL modes in the comments in statements_event.h

    Existing comments int statements_event.h provides outdated values for sql mode system variables. This PR updates the values and adds new variables to prevent confusion.

  • Include missing headers breaking VS2019 version 16.6 nightly builds

    Include missing headers breaking VS2019 version 16.6 nightly builds

    Include the right headers in kdf_sha_crypt.cc:

    • <stddef.h> for size_t
    • <cstdlib> for std::strtol
    • <tuple> for std::tie (this is the one that broke the build)
    • <iterator> for std::distance

    Include the right headers in kdf_pbkdf2.cc:

    • <stdint.h> for uint8_t
    • <cstdlib> for std::strotl
    • <tuple> for std::tie (this is the one that broke the build)
    • <iterator> for std::distance

    Include the right headers in http_auth_method_basic.cc:

    • <iterator> for std::back_inserter (this is the one that broke the build)
    • <system_error> for std::make_error_code and std::errc

    Failing output was:

    F:\gitP\mysql\mysql-server\router\src\http\src\kdf_sha_crypt.cc(71): error C2039: 'tie': is not a member of 'std' [F:\gitP\mysql\mysql-server\build_amd64\router\src\http\src\http_auth_backend_lib.vcxproj]
    F:\gitP\mysql\mysql-server\router\src\http\src\kdf_sha_crypt.cc(71): error C3861: 'tie': identifier not found [F:\gitP\mysql\mysql-server\build_amd64\router\src\http\src\http_auth_backend_lib.vcxproj]
    F:\gitP\mysql\mysql-server\router\src\http\src\kdf_pbkdf2.cc(79): error C2039: 'tie': is not a member of 'std' [F:\gitP\mysql\mysql-server\build_amd64\router\src\http\src\http_auth_backend_lib.vcxproj]
    F:\gitP\mysql\mysql-server\router\src\http\src\kdf_pbkdf2.cc(79): error C3861: 'tie': identifier not found [F:\gitP\mysql\mysql-server\build_amd64\router\src\http\src\http_auth_backend_lib.vcxproj]
    
  • Few improvements related to CPU cache line size and padding

    Few improvements related to CPU cache line size and padding

    Bug #79636: CACHE_LINE_SIZE should be 128 on AArch64 Bug #79637: Hard-coded cache line size Bug #79638: Reconcile CACHE_LINE_SIZE with CPU_LEVEL1_DCACHE_LINESIZE Bug #79652: Suspicious padding in srv_conc_t

    • changed CPU_LEVEL1_DCACHE_LINESIZE to default to 128 bytes on POWER and AArch64 architectures in cases when no value could be detected by CMake using getconf
    • changed pfs_global.h to assume CPU_LEVEL1_DCACHE_LINESIZE is always defined (and throw a compile-time error if it's not)
    • changed CACHE_LINE_SIZE definition in ut0counter.h to be an alias of CPU_LEVEL1_DCACHE_LINESIZE
    • changed a number of hard-coded 64-byte cache line size values in the InnoDB code
    • fixed insufficient padding for srv_conc members in srv0conc.cc
  • Add include for limits library in robin_hood.h

    Add include for limits library in robin_hood.h

    This library is needed to be explicitly included for gcc11. It shouldn't affect other versions of gcc, but without it, code won't compile in with gcc11.

    You can read about it here (Header dependency changes): http://www.gnu.org/software/gcc/gcc-11/porting_to.html

  • support runtime LSE atomics detection for aarch64

    support runtime LSE atomics detection for aarch64

    Outline-atomics flag modifies builtin atomics to detect CPU support for atomic instructions in runtime, thus getting benefits of using LSE atomics without hurting compatibility. This flag has no effect if compiling for aarch64 >=v8.1.

    Due to the nature of exclusive accesses, which are used when LSE atomics are not available, the effect of LSE atomics is much stronger on large core counts. We've observed as far as 4x transactions per second on sysbench read_only by adding outline-atomics to 64-core aarch64 server (AWS g6.16xlarge).

  • Bump certifi from 2019.11.28 to 2022.12.7 in /extra/libcbor/doc/source

    Bump certifi from 2019.11.28 to 2022.12.7 in /extra/libcbor/doc/source

    Bumps certifi from 2019.11.28 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

An Embedded NoSQL, Transactional Database Engine

UnQLite - Transactional Embedded Database Engine

Dec 24, 2022
FoundationDB - the open source, distributed, transactional key-value store
FoundationDB - the open source, distributed, transactional key-value store

FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as

Dec 31, 2022
Simple-MySQL-API is a free and easy API to manipulate MySQL with C99 and GCC compiler under GNU/Linux OS.

Simple-MySQL-API is a free and easy API to manipulate MySQL with C99 and GCC compiler under GNU/Linux OS.

Aug 21, 2022
PGSpider: High-Performance SQL Cluster Engine for distributed big data.

PGSpider: High-Performance SQL Cluster Engine for distributed big data.

Sep 8, 2022
A friendly and lightweight C++ database library for MySQL, PostgreSQL, SQLite and ODBC.

QTL QTL is a C ++ library for accessing SQL databases and currently supports MySQL, SQLite, PostgreSQL and ODBC. QTL is a lightweight library that con

Dec 12, 2022
StarRocks is a next-gen sub-second MPP database for full analysis senarios, including multi-dimensional analytics, real-time analytics and ad-hoc query, formerly known as DorisDB.

StarRocks is a next-gen sub-second MPP database for full analysis senarios, including multi-dimensional analytics, real-time analytics and ad-hoc query, formerly known as DorisDB.

Dec 30, 2022
The database built for IoT streaming data storage and real-time stream processing.
The database built for IoT streaming data storage and real-time stream processing.

The database built for IoT streaming data storage and real-time stream processing.

Dec 26, 2022
Config and tools for config of tasmota devices from mysql database

tasmota-sql Tools for management of tasmota devices based on mysql. The tasconfig command can load config from tasmota and store in sql, or load from

Jan 8, 2022
Trilogy is a client library for MySQL-compatible database servers, designed for performance, flexibility, and ease of embedding.

Trilogy is a client library for MySQL-compatible database servers, designed for performance, flexibility, and ease of embedding.

Dec 31, 2022
GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

GalaxyEngine is a MySQL branch originated from Alibaba Group, especially supports large-scale distributed database system.

Jan 4, 2023
GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.
GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.

Overview GridDB is Database for IoT with both NoSQL interface and SQL Interface. Please refer to GridDB Features Reference for functionality. This rep

Jan 8, 2023
TimescaleDB is an open-source database designed to make SQL scalable for time-series data.

An open-source time-series SQL database optimized for fast ingest and complex queries. Packaged as a PostgreSQL extension.

Jan 2, 2023
Reading, thinking and coding about MySQL,InnoDB and MGR

MySQL 8.0.27 Review by adzfolc Notifications In this doc, I will make the rules of my code review and period summary for later review. This chapter ma

Dec 27, 2022
A mini database for learning database

A mini database for learning database

Nov 14, 2022
SiriDB is a highly-scalable, robust and super fast time series database

SiriDB is a highly-scalable, robust and super fast time series database. Build from the ground up SiriDB uses a unique mechanism to operate without a global index and allows server resources to be added on the fly. SiriDB's unique query language includes dynamic grouping of time series for easy analysis over large amounts of time series.

Jan 9, 2023
Sistema de gestão corporativa em interface de linha de comando, para banco de dados MySQL/MariaDB

SimpleERP Sistema de gestão corporativa em interface de linha de comando, para banco de dados MySQL/MariaDB Autores Miguel Nischor - Project Lead Como

Jun 14, 2021
Flashback mysql data to any point

一、简介 MyFlash是由美团点评公司技术工程部开发维护的一个回滚DML操作的工具。该工具通过解析v4版本的binlog,完成回滚操作。相对已有的回滚工具,其增加了更多的过滤选项,让回滚更加容易。 该工具已经在美团点评内部使用 二、详细说明 安装 使用 测试用例 三、限制 binlog格式必须为r

Dec 30, 2022
Beryl-cli is a client for the BerylDB database server
Beryl-cli is a client for the BerylDB database server

Beryl-cli is a client for the BerylDB database server. It offers multiple commands and is designed to be fast and user-friendly.

Oct 9, 2022
A proxy server for OceanBase Database.

OceanBase Database Proxy TODO: some badges here OceanBase Database Proxy (ODP for short) is a dedicated proxy server for OceanBase Database. OceanBase

Dec 9, 2022