summaryrefslogtreecommitdiff
path: root/sql-common/client.c
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch '10.6' into 10.7Sergei Golubchik2022-05-111-0/+2
|\
| * Merge branch '10.5' into 10.6Sergei Golubchik2022-05-101-0/+2
| |\
| | * Merge branch '10.4' into 10.5Sergei Golubchik2022-05-091-0/+2
| | |\
| | | * MDEV-11853: semisync thread can be killed after sync binlog but before ACK ↵Brandon Nesterenko2022-04-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in the sync state Problem: ======== If a primary is shutdown during an active semi-sync connection during the period when the primary is awaiting an ACK, the primary hard kills the active communication thread and does not ensure the transaction was received by a replica. This can lead to an inconsistent replication state. Solution: ======== During shutdown, the primary should wait for an ACK or timeout before hard killing a thread which is awaiting a communication. We extend the `SHUTDOWN WAIT FOR SLAVES` logic to identify and ignore any threads waiting for a semi-sync ACK in phase 1. Then, before stopping the ack receiver thread, the shutdown is delayed until all waiting semi-sync connections receive an ACK or time out. The connections are then killed in phase 2. Notes: 1) There remains an unresolved corner case that affects this patch. MDEV-28141: Slave crashes with Packets out of order when connecting to a shutting down master. Specifically, If a slave is connecting to a master which is actively shutting down, the slave can crash with a "Packets out of order" assertion error. To get around this issue in the MTR tests, the primary will wait a small amount of time before phase 1 killing threads to let the replicas safely stop (if applicable). 2) This patch also fixes MDEV-28114: Semi-sync Master ACK Receiver Thread Can Error on COM_QUIT Reviewed By ============ Andrei Elkin <andrei.elkin@mariadb.com>
* | | | MDEV-19275 Provide SQL service to plugins.Alexey Botchkov2021-10-191-13/+4
|/ / / | | | | | | | | | | | | | | | SQL service added. It provides the limited set of client library functions to be used by plugin.
* | | Change CHARSET_INFO character set and collaction names to LEX_CSTRINGMonty2021-05-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change removed 68 explict strlen() calls from the code. The following renames was done to ensure we don't use the old names when merging code from earlier releases, as using the new variables for print function could result in crashes: - charset->csname renamed to charset->cs_name - charset->name renamed to charset->coll_name Almost everything where mechanical changes except: - Changed to use the new Protocol::store(LEX_CSTRING..) when possible - Changed to use field->store(LEX_CSTRING*, CHARSET_INFO*) when possible - Changed to use String->append(LEX_CSTRING&) when possible Other things: - There where compiler issues with ensuring that all character set names points to the same string: gcc doesn't allow one to use integer constants when defining global structures (constant char * pointers works fine). To get around this, I declared defines for each character set name length.
* | | MDEV-8334: Rename utf8 to utf8mb3Rucha Deodhar2021-05-191-3/+5
| | | | | | | | | | | | | | | | | | This patch changes the main name of 3 byte character set from utf8 to utf8mb3. New old_mode UTF8_IS_UTF8MB3 is added and set TRUE by default, so that utf8 would mean utf8mb3. If not set, utf8 would mean utf8mb4.
* | | Merge 10.5 into 10.6Marko Mäkelä2021-03-261-2/+2
|\ \ \ | |/ /
| * | Fix various spelling errors still found in codeOtto Kekäläinen2021-03-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reseting -> Resetting Unknow -> Unknown capabilites -> capabilities choosen -> chosen direcory -> directory informations -> information openned -> opened refered -> referred to access -> one to access missmatch -> mismatch succesfully -> successfully dont -> don't
* | | Merge 10.5 into 10.6Marko Mäkelä2020-11-021-2/+2
|\ \ \ | |/ /
| * | Merge branch '10.4' into 10.5Sujatha2020-09-291-2/+2
| |\ \ | | |/
| | * Merge branch '10.3' into 10.4Sujatha2020-09-281-2/+2
| | |\
| | | * Merge branch '10.2' into 10.3Sujatha2020-09-281-2/+2
| | | |\
| | | | * UBSAN: Fix a bit shift overflowMarko Mäkelä2020-09-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Shifting a 16-bit type by 16 bits is undefined behaviour. The result is at least 32 bits, so let us cast the shift operand to a wider type before shifting.
* | | | | Merge branch '10.5' into 10.6Oleksandr Byelkin2020-09-021-0/+6
|\ \ \ \ \ | |/ / / /
| * | | | MDEV-19275 Provide SQL service to plugins.Alexey Botchkov2020-08-141-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Protocol_local fixed so it can be used now. Some Protocol:: methods made virtual so they can adapt. as well as net_ok and net_send_error functions. execute_sql_string function is exported to the plugins. To be changed with the mysql_use_result.
* | | | | MDEV-23238 - remove async client from server code.Vladislav Vaintroub2020-09-011-114/+5
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | It is already in libmariadb, and server (also that client in server) does not need it. It does not work in embedded either since it relies on non-blocking sockets
* | | | Merge 10.4 into 10.5Marko Mäkelä2020-08-011-0/+2
|\ \ \ \ | |/ / /
| * | | Merge 10.3 into 10.4Marko Mäkelä2020-07-311-0/+2
| |\ \ \ | | |/ /
| | * | Merge 10.2 into 10.3Marko Mäkelä2020-07-311-0/+2
| | |\ \ | | | |/
| | | * MDEV-14203: rpl.rpl_extra_col_master_myisam, ↵Sujatha2020-07-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rpl.rpl_slave_load_tmpdir_not_exist failed in buildbot with a warning Problem: ======= rpl.rpl_slave_load_tmpdir_not_exist 'stmt' w3 [ fail ] Found warnings/errors in server log file! Test ended at 2017-09-27 20:34:55 [Warning] Master is configured to log replication events with checksum, but will not send such events to slaves that cannot process them ^ Found warnings in /mnt/buildbot/build/mariadb-10.2.10/mysql-test/var/3/log/mysqld.1.err ok Analysis: ======== When slave tries to connect to master 'get_master_version_and_clock' function is invoked to perform elaborated slave-master handshake. During this process slave server queries master server, to know if it is checksum aware and at the same time master is notified about its CRC-awareness. The master's side instant value of @@global.binlog_checksum is stored in the dump thread's uservar area as well as cached locally to become known in consensus by master and slave. Post hand-shake slave requests master for binlog dump. It sends 'COM_BINLOG_DUMP'. This command is sent to master by 'cli_advanced_command' call. If there is some temporary network failure during this request_dump call, 'end_server' is invoked to close the current connection between master and slave. Upon connection close the dump thread on the master gets terminated and it clears the 'uservar' data it got through master-slave handshake. The 'COM_BINLOG_DUMP' command is sent once again without master-slave handshake. Since the checksum data is not available with new dump thread a warning gets reported. Fix: === Upon network write error donot attempt reconnect, proceed to master-slave handshake. This ensures that master is aware of slave's capability to use checksums.
* | | | Merge 10.4 into 10.5Marko Mäkelä2020-05-051-3/+17
|\ \ \ \ | |/ / /
| * | | Merge 10.3 into 10.4Marko Mäkelä2020-05-051-3/+17
| |\ \ \ | | |/ /
| | * | Merge branch '10.2' into 10.3Oleksandr Byelkin2020-05-041-3/+17
| | |\ \ | | | |/
| | | * Merge branch '10.1' into 10.2Oleksandr Byelkin2020-05-021-3/+17
| | | |\
| | | | * Merge branch '5.5' into 10.1Oleksandr Byelkin2020-04-301-3/+17
| | | | |\
| | | | | * Bug#30689251 - BACKPORT TO MYSQL-5.6, BUG#29597896 - NULL POINTER ↵Anushree Prakash B2020-04-301-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DEREFERENCE IN LIBMYSQL DESCRIPTION: ============ There can be issues if the packets sent by the server are not proper. Certain checks should be performed at the client side while unpacking fields data. FIX: ==== Check for the appropriate fields data and error out if it is not present. RB: 23601
* | | | | | cleanup: PSI key is *always* the first argumentSergei Golubchik2020-03-101-4/+5
| | | | | |
* | | | | | perfschema memory related instrumentation changesSergei Golubchik2020-03-101-38/+97
| | | | | |
* | | | | | Merge 10.4 into 10.5Marko Mäkelä2020-01-281-1/+4
|\ \ \ \ \ \ | |/ / / / /
| * | | | | Merge branch '10.3' into 10.4Oleksandr Byelkin2020-01-211-1/+4
| |\ \ \ \ \ | | |/ / / /
| | * | | | Merge branch '10.2' into 10.3Oleksandr Byelkin2020-01-211-1/+4
| | |\ \ \ \ | | | |/ / /
| | | * | | Merge branch '10.1' into 10.2Oleksandr Byelkin2020-01-201-1/+4
| | | |\ \ \ | | | | |/ /
| | | | * | Merge branch '5.5' into 10.1Oleksandr Byelkin2020-01-191-1/+4
| | | | |\ \ | | | | | |/
| | | | | * Bug#29630767 - USE OF UNINITIALIZED VALUE IN LIBMYSQL (CLIENT.CC FUNCTION ↵mariadb-5.5.67Sergei Golubchik2020-01-181-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | RUN_PLUGIN_AUTH)
* | | | | | Merge 10.4 into 10.5Marko Mäkelä2019-12-161-1/+1
|\ \ \ \ \ \ | |/ / / / /
| * | | | | Merge branch '10.3' into 10.4Oleksandr Byelkin2019-12-091-1/+1
| |\ \ \ \ \ | | |/ / / /
| | * | | | Lintian complains on spelling errorFaustin Lammler2019-12-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The lintian check complains on spelling error: https://salsa.debian.org/mariadb-team/mariadb-10.3/-/jobs/95739
* | | | | | cleanup: don't use my_getopt_is_args_separator()Sergei Golubchik2019-10-141-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | only my_getopt should use it, because it changes my_getopt's behavior. If one simply wants to skip the separator - don't ask it to be added in the first place
* | | | | | Merge 10.4 into 10.5Marko Mäkelä2019-06-201-247/+7
|\ \ \ \ \ \ | |/ / / / /
| * | | | | Merge 10.3 into 10.4Marko Mäkelä2019-06-191-246/+6
| |\ \ \ \ \ | | |/ / / /
| | * | | | Merge 10.2 into 10.3Marko Mäkelä2019-06-191-246/+6
| | |\ \ \ \ | | | |/ / /
| | | * | | MDEV-19750 mysql command wrong encodingVladislav Vaintroub2019-06-171-246/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Restore the detection of default charset in command line utilities. It worked up to 10.1, but was broken by Connector/C. Moved code for detection of default charset from sql-common/client.c to mysys, and make command line utilities to use this code if charset was not specified on the command line.
* | | | | | Windows related cleanups, remove old code.Vladislav Vaintroub2019-06-181-30/+15
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Do not scan registry to check if TCPIP is supported. - Do not read registry under HKEY_LOCAL_MACHINE\SOFTWARE\MySQL anymore. - Do not load threadpool function dynamically, it is available since Win7. - simplify win32_init_tcp_ip(), and return error of WSAStartup() fails. - Correct comment in my_parameter_handler()
* | | | | MDEV-18531 : Use WolfSSL instead of YaSSL as "bundled" SSL/encryption libraryVladislav Vaintroub2019-05-221-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Add new submodule for WolfSSL - Build and use wolfssl and wolfcrypt instead of yassl/taocrypt - Use HAVE_WOLFSSL instead of HAVE_YASSL - Increase MY_AES_CTX_SIZE, to avoid compile time asserts in my_crypt.cc (sizeof(EVP_CIPHER_CTX) is larger on WolfSSL)
* | | | | Merge branch '10.3' into 10.4Oleksandr Byelkin2019-05-191-3/+5
|\ \ \ \ \ | |/ / / /
| * | | | Merge 10.2 into 10.3Marko Mäkelä2019-05-141-1/+1
| |\ \ \ \ | | |/ / /
| | * | | Merge 10.1 into 10.2Marko Mäkelä2019-05-131-1/+1
| | |\ \ \ | | | |/ /
| | | * | Merge branch '5.5' into 10.1Vicențiu Ciorbaru2019-05-111-1/+1
| | | |\ \ | | | | |/
| | | | * Update FSF AddressVicențiu Ciorbaru2019-05-111-1/+1
| | | | | | | | | | | | | | | | | | | | * Update wrong zip-code