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

Overview
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.
Issues
  • 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)
    
    opened by dbussink 21
  • 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)

    opened by cpcdoy 12
  • 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.

    opened by dbussink 10
  • 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.

    opened by sjmudd 10
  • 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.
    opened by Dieken 9
  • 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

    opened by dozhen0009 9
  • 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.

    opened by dongwook-chan 8
  • 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]
    
    opened by BillyONeal 8
  • 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
    opened by akopytov 8
  • 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

    opened by ljavorsk 7
  • 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).

    opened by tsahee 7
  • 8.0 tap exit

    8.0 tap exit

    Initial implementation of EXIT interface for IBM Security Guardium integration.

    See https://www.ibm.com/docs/en/guardium/11.4?topic=type-linux-unix-exit-libraries-configuration for documentation on our EXIT interface for currently supported databases.

    opened by mae-rockar-ibm 1
  • Each slow log prints out the database name

    Each slow log prints out the database name

    MySQL's slow log does not support rotate. So we go to rotate the slow.log by ourselves, but when we analyze the new slow.log separately, we cannot get the db of the sql because there is no use db. E.g: slow.log records: use db; select * from t1;

    rotate slow.log

    new slow.log records: select * from t2;

    We can't get the db of that sql from new slow.log.

    opened by diyuhuodong 2
Owner
MySQL
Oracle Corporation
MySQL
An Embedded NoSQL, Transactional Database Engine

UnQLite - Transactional Embedded Database Engine

PixLab | Symisc Systems 1.7k Jun 23, 2022
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

Apple 11.5k Jun 29, 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.

Neptune 7 Apr 24, 2022
PGSpider: High-Performance SQL Cluster Engine for distributed big data.

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

PGSpider 127 Jun 24, 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

null 155 Jun 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

RevK 3 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.

GitHub 248 Jun 11, 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.

StarRocks 2.7k Jun 26, 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.

HStreamDB 501 Jun 29, 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.

null 229 Jun 30, 2022
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

GridDB 1.8k Jun 27, 2022
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.

Timescale 13.3k Jun 27, 2022
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

null 5 Jun 25, 2022
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

Code Brasil 4 Jun 14, 2021
Flashback mysql data to any point

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

美团 1k Jun 23, 2022
A mini database for learning database

A mini database for learning database

Chuckie Tan 3 Nov 3, 2021
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.

SiriDB 464 Jun 13, 2022
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.

BerylDB 11 Apr 21, 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

OceanBase 76 Apr 6, 2022