mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
Merge branch '11.4' into 11.8
This commit is contained in:
@@ -34,9 +34,10 @@ typedef struct st_line_buffer
|
||||
bool truncated;
|
||||
} LINE_BUFFER;
|
||||
|
||||
extern LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file);
|
||||
extern LINE_BUFFER *batch_readline_command(LINE_BUFFER *buffer, char * str);
|
||||
extern char *batch_readline(LINE_BUFFER *buffer, bool binary_mode);
|
||||
extern void batch_readline_end(LINE_BUFFER *buffer);
|
||||
extern bool init_line_buffer(LINE_BUFFER *buffer, File file, ulong size,
|
||||
ulong max_size);
|
||||
|
||||
#endif /* CLIENT_MY_READLINE_INCLUDED */
|
||||
|
||||
@@ -1211,6 +1211,81 @@ inline int get_command_index(char cmd_char)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static LINE_BUFFER *batch_readline_init(ulong max_size, const char *path)
|
||||
{
|
||||
LINE_BUFFER *line_buff;
|
||||
File file;
|
||||
MY_STAT input_file_stat;
|
||||
char buff[FN_REFLEN + 512];
|
||||
|
||||
if (path)
|
||||
{
|
||||
if ((file= my_open(path, O_RDONLY | O_BINARY, MYF(0))) < 0)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
if (my_errno == EACCES && my_stat(path, &input_file_stat, MYF(0)) &&
|
||||
MY_S_ISDIR(input_file_stat.st_mode))
|
||||
my_snprintf(buff, sizeof(buff), "Can't read from a directory '%.*s'",
|
||||
FN_REFLEN, path);
|
||||
else
|
||||
#endif
|
||||
my_snprintf(buff, sizeof(buff), "Failed to open file '%.*s', error: %d",
|
||||
FN_REFLEN, path, my_errno);
|
||||
put_info(buff, INFO_ERROR, 0);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
file= my_fileno(stdin);
|
||||
}
|
||||
|
||||
if (my_fstat(file, &input_file_stat, MYF(0)))
|
||||
{
|
||||
my_snprintf(buff, sizeof(buff), "Failed to stat file '%.*s', error: %d",
|
||||
FN_REFLEN, path ? path : "stdin", my_errno);
|
||||
goto err1;
|
||||
}
|
||||
|
||||
if (MY_S_ISDIR(input_file_stat.st_mode))
|
||||
{
|
||||
my_snprintf(buff, sizeof(buff), "Can't read from a directory '%.*s'",
|
||||
FN_REFLEN, path ? path : "stdin");
|
||||
goto err1;
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
if (MY_S_ISBLK(input_file_stat.st_mode))
|
||||
{
|
||||
my_snprintf(buff, sizeof(buff), "Can't read from a block device '%.*s'",
|
||||
FN_REFLEN, path ? path : "stdin");
|
||||
goto err1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!(line_buff= (LINE_BUFFER*) my_malloc(PSI_NOT_INSTRUMENTED,
|
||||
sizeof(*line_buff),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
{
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (init_line_buffer(line_buff, file, IO_SIZE, max_size))
|
||||
{
|
||||
my_free(line_buff);
|
||||
goto err;
|
||||
}
|
||||
|
||||
return line_buff;
|
||||
|
||||
err1:
|
||||
put_info(buff, INFO_ERROR, 0);
|
||||
err:
|
||||
if (path)
|
||||
my_close(file, MYF(0));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int delimiter_index= -1;
|
||||
static int charset_index= -1;
|
||||
static int sandbox_index= -1;
|
||||
@@ -1285,10 +1360,8 @@ int main(int argc,char *argv[])
|
||||
}
|
||||
|
||||
if (status.batch && !status.line_buff &&
|
||||
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
|
||||
!(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, NULL)))
|
||||
{
|
||||
put_info("Can't initialize batch_readline - may be the input source is "
|
||||
"a directory or a block device.", INFO_ERROR, 0);
|
||||
free_defaults(defaults_argv);
|
||||
my_end(0);
|
||||
exit(1);
|
||||
@@ -4723,7 +4796,6 @@ static int com_source(String *, char *line)
|
||||
LINE_BUFFER *line_buff;
|
||||
int error;
|
||||
STATUS old_status;
|
||||
FILE *sql_file;
|
||||
my_bool save_ignore_errors;
|
||||
|
||||
if (status.sandbox)
|
||||
@@ -4743,18 +4815,10 @@ static int com_source(String *, char *line)
|
||||
end--;
|
||||
end[0]=0;
|
||||
unpack_filename(source_name,source_name);
|
||||
/* open file name */
|
||||
if (!(sql_file = my_fopen(source_name, O_RDONLY | O_BINARY,MYF(0))))
|
||||
{
|
||||
char buff[FN_REFLEN+60];
|
||||
sprintf(buff,"Failed to open file '%s', error: %d", source_name,errno);
|
||||
return put_info(buff, INFO_ERROR, 0);
|
||||
}
|
||||
|
||||
if (!(line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, sql_file)))
|
||||
if (!(line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, source_name)))
|
||||
{
|
||||
my_fclose(sql_file,MYF(0));
|
||||
return put_info("Can't initialize batch_readline", INFO_ERROR, 0);
|
||||
return ignore_errors ? -1 : 1;
|
||||
}
|
||||
|
||||
/* Save old status */
|
||||
@@ -4773,7 +4837,7 @@ static int com_source(String *, char *line)
|
||||
ignore_errors= save_ignore_errors;
|
||||
status=old_status; // Continue as before
|
||||
in_com_source= aborted= 0;
|
||||
my_fclose(sql_file,MYF(0));
|
||||
my_close(line_buff->file, MYF(0));
|
||||
batch_readline_end(line_buff);
|
||||
/*
|
||||
If we got an error during source operation, don't abort the client
|
||||
|
||||
@@ -23,38 +23,11 @@
|
||||
#include <my_dir.h>
|
||||
#include "my_readline.h"
|
||||
|
||||
static bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,
|
||||
ulong max_size);
|
||||
static bool init_line_buffer_from_string(LINE_BUFFER *buffer,char * str);
|
||||
static size_t fill_buffer(LINE_BUFFER *buffer);
|
||||
static char *intern_read_line(LINE_BUFFER *buffer, ulong *out_length);
|
||||
|
||||
|
||||
LINE_BUFFER *batch_readline_init(ulong max_size,FILE *file)
|
||||
{
|
||||
LINE_BUFFER *line_buff;
|
||||
|
||||
#ifndef _WIN32
|
||||
MY_STAT input_file_stat;
|
||||
if (my_fstat(fileno(file), &input_file_stat, MYF(MY_WME)) ||
|
||||
MY_S_ISDIR(input_file_stat.st_mode) ||
|
||||
MY_S_ISBLK(input_file_stat.st_mode))
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
if (!(line_buff=(LINE_BUFFER*)
|
||||
my_malloc(PSI_NOT_INSTRUMENTED, sizeof(*line_buff),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
return 0;
|
||||
if (init_line_buffer(line_buff,my_fileno(file),IO_SIZE,max_size))
|
||||
{
|
||||
my_free(line_buff);
|
||||
return 0;
|
||||
}
|
||||
return line_buff;
|
||||
}
|
||||
|
||||
|
||||
char *batch_readline(LINE_BUFFER *line_buff, bool binary_mode)
|
||||
{
|
||||
char *pos;
|
||||
@@ -105,8 +78,7 @@ LINE_BUFFER *batch_readline_command(LINE_BUFFER *line_buff, char * str)
|
||||
Functions to handle buffered readings of lines from a stream
|
||||
******************************************************************************/
|
||||
|
||||
static bool
|
||||
init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,ulong max_buffer)
|
||||
bool init_line_buffer(LINE_BUFFER *buffer,File file,ulong size,ulong max_buffer)
|
||||
{
|
||||
buffer->file=file;
|
||||
buffer->bufread=size;
|
||||
|
||||
@@ -120,8 +120,8 @@ ELSEIF(DEB)
|
||||
SET(WITH_ZLIB system CACHE STRING "")
|
||||
SET(WITH_LIBWRAP ON)
|
||||
SET(HAVE_EMBEDDED_PRIVILEGE_CONTROL ON)
|
||||
# No hurd implementation
|
||||
IF(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "i686-AT386")
|
||||
# On Hurd systems (GNU) there is no auth socket implementation
|
||||
IF(NOT CMAKE_SYSTEM_NAME STREQUAL "GNU")
|
||||
SET(PLUGIN_AUTH_SOCKET YES CACHE STRING "")
|
||||
ENDIF()
|
||||
SET(WITH_EMBEDDED_SERVER ON CACHE BOOL "")
|
||||
|
||||
@@ -75,6 +75,7 @@ extern int (*dbug_sanity)(void);
|
||||
|
||||
#define DBUG_PRINT(keyword,arglist) \
|
||||
do if (_db_pargs_(__LINE__,keyword)) _db_doprnt_ arglist; while(0)
|
||||
#define DBUG_DUMP(keyword,a1,a2) _db_dump_(__LINE__,keyword,a1,a2)
|
||||
|
||||
#ifdef HAVE_ATTRIBUTE_CLEANUP
|
||||
#define DBUG_ENTER(a) struct _db_stack_frame_ _db_stack_frame_ __attribute__((cleanup(_db_return_))); \
|
||||
@@ -94,6 +95,7 @@ extern int (*dbug_sanity)(void);
|
||||
#define DBUG_RETURN(a1) return(a1)
|
||||
#define DBUG_VOID_RETURN return
|
||||
#define DBUG_PRINT(keyword,arglist) do{} while(0)
|
||||
#define DBUG_DUMP(keyword,a1,a2) do{} while(0)
|
||||
#endif
|
||||
|
||||
#define DBUG_EXECUTE(keyword,a1) \
|
||||
@@ -111,7 +113,6 @@ extern int (*dbug_sanity)(void);
|
||||
#define DBUG_SET_INITIAL(a1) _db_set_init_ (a1)
|
||||
#define DBUG_PROCESS(a1) _db_process_(a1)
|
||||
#define DBUG_FILE _db_fp_()
|
||||
#define DBUG_DUMP(keyword,a1,a2) _db_dump_(__LINE__,keyword,a1,a2)
|
||||
#define DBUG_END() _db_end_ ()
|
||||
#define DBUG_LOCK_FILE _db_lock_file_()
|
||||
#define DBUG_UNLOCK_FILE _db_unlock_file_()
|
||||
@@ -230,7 +231,7 @@ void debug_sync_point(const char* lock_name, uint lock_timeout);
|
||||
one should #include <sstream>. We intentionally avoid including it here to save
|
||||
compilation time.
|
||||
*/
|
||||
# ifdef DBUG_OFF
|
||||
# if defined DBUG_OFF || !defined DBUG_TRACE
|
||||
# define DBUG_LOG(keyword, v) do {} while (0)
|
||||
# else
|
||||
# define DBUG_LOG(keyword, v) do { \
|
||||
|
||||
@@ -5,7 +5,7 @@ if (!$_galera_variables_delta) {
|
||||
--let $galera_variables_delta=0
|
||||
}
|
||||
|
||||
--let $galera_variables_expected=`SELECT 51 + $galera_variables_delta`
|
||||
--let $galera_variables_expected=`SELECT 50 + $galera_variables_delta`
|
||||
|
||||
--let $galera_variables_count=`SELECT COUNT(*) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep%'`
|
||||
|
||||
|
||||
@@ -64,3 +64,156 @@ rm -fv crldir/*
|
||||
cp -v client-cert.crl crldir/`openssl x509 -in client-cert.pem -noout -issuer_hash`.r0
|
||||
|
||||
rm -rf demoCA
|
||||
|
||||
# --- Certificate Chain ---
|
||||
# These tests are inspired from the following commit from MySQL Server
|
||||
# https://github.com/mysql/mysql-server/commit/969afef933f1872c5f38ea93047ef05c4509c335
|
||||
#
|
||||
# Credits to salman.s.khan@oracle.com
|
||||
#
|
||||
# -------------------------------------------------------------------------------------
|
||||
#
|
||||
# STEPS TO GENERATE THE FOLLOWING CHAINED CERTIFICATES WHICH IS USED IN THE TEST CASE :
|
||||
#
|
||||
# +---------+
|
||||
# | Root CA |
|
||||
# +---------+
|
||||
# |
|
||||
# /------------+-----------\
|
||||
# | |
|
||||
# +------------------+ +------------------+
|
||||
# | Intermediate CA1 | | Intermediate CA2 |
|
||||
# +------------------+ +------------------+
|
||||
# | |
|
||||
# +-------------+ +-------------+
|
||||
# | Server | | Client |
|
||||
# | certificate | | certificate |
|
||||
# +-------------+ +-------------+
|
||||
|
||||
cd cachain
|
||||
|
||||
mkdir ca
|
||||
mkdir server
|
||||
mkdir clients
|
||||
|
||||
mkdir ca/root.certs
|
||||
touch ca/root.index.txt
|
||||
touch ca/root.index.txt.attr
|
||||
echo '01' > ca/root.serial
|
||||
|
||||
cat > ca/root.cfg << EOF
|
||||
[ ca ]
|
||||
default_ca = CA_default
|
||||
[ CA_default ]
|
||||
dir = $PWD/ca
|
||||
certs = \$dir/certs
|
||||
database = \$dir/root.index.txt
|
||||
serial = \$dir/root.serial
|
||||
policy= policy_match
|
||||
[ policy_match ]
|
||||
organizationName = match
|
||||
organizationalUnitName = optional
|
||||
commonName = supplied
|
||||
emailAddress = optional
|
||||
[ v3_ca ]
|
||||
subjectKeyIdentifier=hash
|
||||
authorityKeyIdentifier=keyid:always,issuer
|
||||
basicConstraints = critical,CA:TRUE
|
||||
keyUsage = critical,keyCertSign,cRLSign
|
||||
[ v3_ca_intermediate ]
|
||||
subjectKeyIdentifier=hash
|
||||
authorityKeyIdentifier=keyid:always,issuer
|
||||
basicConstraints = critical,CA:TRUE,pathlen:0
|
||||
keyUsage = critical,keyCertSign,cRLSign
|
||||
EOF
|
||||
|
||||
# Generate Root CA key and cert
|
||||
openssl genrsa -out ca/root.key 4096
|
||||
openssl req -new -x509 '-sha256' -key ca/root.key -out ca/root.crt -days 7200 -subj "/O=MariaDB/OU=MariaDB/CN=Root CA" -config ca/root.cfg -extensions v3_ca
|
||||
|
||||
# Generate Intermediate CA1 key and cert
|
||||
openssl genrsa -out ca/intermediate_ca1.key 4096
|
||||
openssl req -new '-sha256' -key ca/intermediate_ca1.key -out ca/intermediate_ca1.csr -subj "/O=MariaDB/OU=MariaDB/CN=Intermediate CA1"
|
||||
|
||||
openssl ca -batch -days 7200 -notext -md sha256 -in ca/intermediate_ca1.csr -out ca/intermediate_ca1.crt -keyfile ca/root.key -cert ca/root.crt -outdir ca/root.certs/ -config ca/root.cfg -extensions v3_ca_intermediate
|
||||
|
||||
mkdir ca/intermediate_ca1.certs
|
||||
touch ca/intermediate_ca1.index.txt
|
||||
touch ca/intermediate_ca1.index.txt.attr
|
||||
echo '01' > ca/intermediate_ca1.serial
|
||||
|
||||
cat > ca/intermediate_ca1.cfg << EOF
|
||||
[ ca ]
|
||||
default_ca = CA_default
|
||||
[ CA_default ]
|
||||
dir = $PWD/ca
|
||||
certs = \$dir/intermediate_ca1.certs
|
||||
database = \$dir/intermediate_ca1.index.txt
|
||||
serial = \$dir/intermediate_ca1.serial
|
||||
policy= policy_match
|
||||
[ policy_match ]
|
||||
commonName = supplied
|
||||
[ alt_names ]
|
||||
DNS.1 = localhost
|
||||
IP.1 = 127.0.0.1
|
||||
[ server_cert ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = critical,digitalSignature,keyEncipherment
|
||||
extendedKeyUsage = serverAuth
|
||||
subjectAltName = @alt_names
|
||||
EOF
|
||||
|
||||
# Generate Server key and cert
|
||||
openssl genrsa -out server/server.key 4096
|
||||
openssl req -new '-sha256' -key server/server.key -out server/server.csr -subj "/CN=localhost"
|
||||
|
||||
openssl ca -batch -days 7200 -notext -md sha256 -in server/server.csr -out server/server.crt -keyfile ca/intermediate_ca1.key -cert ca/intermediate_ca1.crt -outdir ca/intermediate_ca1.certs/ -config ca/intermediate_ca1.cfg -extensions server_cert
|
||||
|
||||
# Generate Intermediate CA2 key and cert
|
||||
openssl genrsa -out ca/intermediate_ca2.key 4096
|
||||
|
||||
openssl req -new '-sha256' -key ca/intermediate_ca2.key -out ca/intermediate_ca2.csr -subj "/O=MariaDB/OU=MariaDB/CN=Intermediate CA2"
|
||||
openssl ca -batch -days 7200 -notext -md sha256 -in ca/intermediate_ca2.csr -out ca/intermediate_ca2.crt -keyfile ca/root.key -cert ca/root.crt -outdir ca/root.certs/ -config ca/root.cfg -extensions v3_ca_intermediate
|
||||
|
||||
mkdir ca/intermediate_ca2.certs
|
||||
touch ca/intermediate_ca2.index.txt
|
||||
touch ca/intermediate_ca2.index.txt.attr
|
||||
echo '01' > ca/intermediate_ca2.serial
|
||||
|
||||
cat > ca/intermediate_ca2.cfg << EOF
|
||||
[ ca ]
|
||||
default_ca = CA_default
|
||||
[ CA_default ]
|
||||
dir = $PWD/ca
|
||||
certs = \$dir/intermediate_ca2.certs
|
||||
database = \$dir/intermediate_ca2.index.txt
|
||||
serial = \$dir/intermediate_ca2.serial
|
||||
policy= policy_match
|
||||
[ policy_match ]
|
||||
commonName = supplied
|
||||
[ client_cert ]
|
||||
basicConstraints = CA:FALSE
|
||||
keyUsage = critical,digitalSignature,keyEncipherment
|
||||
extendedKeyUsage = clientAuth
|
||||
EOF
|
||||
|
||||
# Generate Client key and cert
|
||||
openssl genrsa -out clients/client.key 4096
|
||||
openssl req -new '-sha256' -key clients/client.key -out clients/client.csr -subj "/CN=client"
|
||||
|
||||
openssl ca -batch -days 7200 -notext -md sha256 -in clients/client.csr -out clients/client.crt -keyfile ca/intermediate_ca2.key -cert ca/intermediate_ca2.crt -outdir ca/intermediate_ca2.certs/ -config ca/intermediate_ca2.cfg -extensions client_cert
|
||||
|
||||
cat server/server.crt ca/intermediate_ca1.crt > server/server.cachain
|
||||
|
||||
cat clients/client.crt ca/intermediate_ca2.crt > clients/client.cachain
|
||||
|
||||
cat ca/root.crt ca/intermediate_ca1.crt > ca/root_intermediate_ca1.crt
|
||||
|
||||
# Generate Unrelated Root CA key and cert
|
||||
openssl genrsa -out ca/unrelated_root.key 4096
|
||||
openssl req -new -x509 '-sha256' -key ca/unrelated_root.key -out ca/unrelated_root.crt -days 7200 -subj "/O=MariaDB/OU=MariaDB/CN=Root CA" -config ca/root.cfg -extensions v3_ca
|
||||
|
||||
cp -v ca/root.crt ca/root_intermediate_ca1.crt ca/unrelated_root.crt server/server.key server/server.cachain clients/client.key clients/client.cachain ./
|
||||
rm -rf ca server clients
|
||||
|
||||
cd ..
|
||||
|
||||
3
mysql-test/main/chained_ssl_certificates.opt
Normal file
3
mysql-test/main/chained_ssl_certificates.opt
Normal file
@@ -0,0 +1,3 @@
|
||||
--ssl-ca=$MYSQL_TEST_DIR/std_data/cachain/root.crt
|
||||
--ssl-key=$MYSQL_TEST_DIR/std_data/cachain/server.key
|
||||
--ssl-cert=$MYSQL_TEST_DIR/std_data/cachain/server.cachain
|
||||
12
mysql-test/main/chained_ssl_certificates.result
Normal file
12
mysql-test/main/chained_ssl_certificates.result
Normal file
@@ -0,0 +1,12 @@
|
||||
call mtr.add_suppression("Server SSL certificate doesn't verify");
|
||||
CREATE USER 'user1'@'%' REQUIRE SSL;
|
||||
Variable_name Value
|
||||
Ssl_version TLS
|
||||
|
||||
Restart server and provide ssl-ca comprising intermediate_ca1 in addition to the root ca.
|
||||
Variable_name Value
|
||||
Ssl_version TLS
|
||||
|
||||
Restart server and provide unrelated ssl-ca at server startup
|
||||
ERROR 2026 (HY000): TLS/SSL error:
|
||||
DROP USER 'user1';
|
||||
74
mysql-test/main/chained_ssl_certificates.test
Normal file
74
mysql-test/main/chained_ssl_certificates.test
Normal file
@@ -0,0 +1,74 @@
|
||||
# These tests are inspired from the following commit from MySQL Server
|
||||
# https://github.com/mysql/mysql-server/commit/969afef933f1872c5f38ea93047ef05c4509c335
|
||||
|
||||
# Credits to salman.s.khan@oracle.com
|
||||
|
||||
#####################################################################################
|
||||
# This test verifies MariaDB can handle chained ssl certificate
|
||||
# This test uses chained ssl certificates which is depicted as
|
||||
# below:-
|
||||
#
|
||||
# +---------+
|
||||
# | Root CA |
|
||||
# +---------+
|
||||
# |
|
||||
# /------------+-----------\
|
||||
# | |
|
||||
# +------------------+ +------------------+
|
||||
# | Intermediate CA1 | | Intermediate CA2 |
|
||||
# +------------------+ +------------------+
|
||||
# | |
|
||||
# +-------------+ +-------------+
|
||||
# | Server | | Client |
|
||||
# | certificate | | certificate |
|
||||
# +-------------+ +-------------+
|
||||
#
|
||||
# certificates that may be helpful for chain construction.
|
||||
# In order to validate server cert correctly, we need to
|
||||
# provide the trusted root certificate and the untrusted
|
||||
# intermediate certificates as part of ssl-ca. Hence
|
||||
# root_intermediate_ca1.crt (trusted root certificate +
|
||||
# untrusted intermediate ca1 certificate) is passed as with
|
||||
# --ssl-ca option
|
||||
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_ssl_communication.inc
|
||||
|
||||
#Suppress warning by the server certificate verification check: unrelated CA
|
||||
call mtr.add_suppression("Server SSL certificate doesn't verify");
|
||||
|
||||
CREATE USER 'user1'@'%' REQUIRE SSL;
|
||||
|
||||
--replace_result TLSv1.3 TLS TLSv1.2 TLS
|
||||
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-verify-server-cert --ssl-ca=$MYSQL_TEST_DIR/std_data/cachain/root.crt --ssl-cert=$MYSQL_TEST_DIR/std_data/cachain/client.cachain --ssl-key=$MYSQL_TEST_DIR/std_data/cachain/client.key -e "SHOW STATUS LIKE 'ssl_version'"
|
||||
|
||||
--echo
|
||||
--echo Restart server and provide ssl-ca comprising intermediate_ca1 in addition to the root ca.
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--write_line "restart:--ssl-ca=$MYSQL_TEST_DIR/std_data/cachain/root_intermediate_ca1.crt --ssl-key=$MYSQL_TEST_DIR/std_data/cachain/server.key --ssl-cert=$MYSQL_TEST_DIR/std_data/cachain/server.cachain" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--replace_result TLSv1.3 TLS TLSv1.2 TLS
|
||||
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-verify-server-cert --ssl-ca=$MYSQL_TEST_DIR/std_data/cachain/root.crt --ssl-cert=$MYSQL_TEST_DIR/std_data/cachain/client.cachain --ssl-key=$MYSQL_TEST_DIR/std_data/cachain/client.key -e "SHOW STATUS LIKE 'ssl_version'"
|
||||
|
||||
--echo
|
||||
--echo Restart server and provide unrelated ssl-ca at server startup
|
||||
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--write_line "restart:--ssl-ca=$MYSQL_TEST_DIR/std_data/cachain/unrelated_root.crt --ssl-key=$MYSQL_TEST_DIR/std_data/cachain/server.key --ssl-cert=$MYSQL_TEST_DIR/std_data/cachain/server.cachain" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--replace_regex /(ERROR 2026 \(HY000\): TLS\/SSL error:).*/\1/
|
||||
--error 1
|
||||
--exec $MYSQL --host=localhost -P $MASTER_MYPORT --user=user1 --ssl-verify-server-cert --ssl-ca=$MYSQL_TEST_DIR/std_data/cachain/unrelated_root.crt --ssl-cert=$MYSQL_TEST_DIR/std_data/cachain/client.cachain --ssl-key=$MYSQL_TEST_DIR/std_data/cachain/client.key -e "SHOW STATUS LIKE 'ssl_version'" 2>&1
|
||||
--echo
|
||||
|
||||
# Cleanup
|
||||
DROP USER 'user1';
|
||||
@@ -6063,4 +6063,111 @@ drop table t1;
|
||||
#
|
||||
SELECT ( WITH RECURSIVE x AS ( WITH x AS ( SELECT 1 FROM t14 ) SELECT x ) , t14 AS ( SELECT 1 UNION SELECT 'x' FROM x ) SELECT x FROM x WHERE ( SELECT x FROM x ) ) ;
|
||||
ERROR 42S22: Unknown column 'x' in 'SELECT'
|
||||
#
|
||||
# MDEV-32299 Segfault when preparing unreferenced select in recursive CTE
|
||||
#
|
||||
SELECT ( WITH RECURSIVE x AS ( SELECT * FROM ( SELECT UTC_TIMESTAMP FROM ( SELECT ( WITH x AS ( WITH x AS ( SELECT * FROM x ) SELECT 1 ) SELECT 1 ) ) x ) x UNION SELECT NULL ) ( SELECT x FROM x ) ) ;
|
||||
ERROR 42S22: Unknown column 'x' in 'SELECT'
|
||||
select (
|
||||
with recursive x as (
|
||||
select * from (
|
||||
select utc_timestamp
|
||||
from (
|
||||
select (
|
||||
with x as (
|
||||
with x as (
|
||||
select * from x
|
||||
)
|
||||
select 1
|
||||
)
|
||||
select 1
|
||||
) s
|
||||
) y
|
||||
) z
|
||||
union
|
||||
select null
|
||||
)
|
||||
(select x from x)
|
||||
);
|
||||
ERROR 42S22: Unknown column 'x' in 'SELECT'
|
||||
select (
|
||||
with recursive r as (
|
||||
select * from (
|
||||
with a as (
|
||||
select * from r
|
||||
)
|
||||
select 1
|
||||
) y
|
||||
union
|
||||
select 1
|
||||
)
|
||||
(select * from r)
|
||||
);
|
||||
(
|
||||
with recursive r as (
|
||||
select * from (
|
||||
with a as (
|
||||
select * from r
|
||||
)
|
||||
select 1
|
||||
) y
|
||||
union
|
||||
select 1
|
||||
)
|
||||
(select * from r)
|
||||
)
|
||||
1
|
||||
create table t1 (x int);
|
||||
with recursive r as (
|
||||
select f1 from (
|
||||
with a as (
|
||||
select x from t1
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
union
|
||||
select null
|
||||
)
|
||||
(select * from r);
|
||||
f1
|
||||
1
|
||||
NULL
|
||||
with recursive r as (
|
||||
select f1 from (
|
||||
with a as (
|
||||
select f2 from t1
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
union
|
||||
select null
|
||||
)
|
||||
(select * from r);
|
||||
ERROR 42S22: Unknown column 'f2' in 'SELECT'
|
||||
drop table t1;
|
||||
with recursive r as (
|
||||
select 1 as f1
|
||||
union
|
||||
select f1 from (
|
||||
with a as (
|
||||
select f1 from r
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
)
|
||||
(select f1 from r);
|
||||
f1
|
||||
1
|
||||
with recursive r as (
|
||||
select 1 as f1
|
||||
union
|
||||
select f1 from (
|
||||
with a as (
|
||||
select f2 from r
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
)
|
||||
(select f1 from r);
|
||||
ERROR 42S22: Unknown column 'f2' in 'SELECT'
|
||||
# End of 10.6 tests
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
--source include/no_msan_without_big.inc
|
||||
--source include/not_valgrind.inc
|
||||
--source include/have_innodb.inc
|
||||
# --view-protocol fails due to MDEV-37119 for MDEV-32299
|
||||
--source include/no_view_protocol.inc
|
||||
|
||||
create table t1 (a int, b varchar(32));
|
||||
insert into t1 values
|
||||
@@ -4067,4 +4069,121 @@ drop table t1;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
SELECT ( WITH RECURSIVE x AS ( WITH x AS ( SELECT 1 FROM t14 ) SELECT x ) , t14 AS ( SELECT 1 UNION SELECT 'x' FROM x ) SELECT x FROM x WHERE ( SELECT x FROM x ) ) ;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-32299 Segfault when preparing unreferenced select in recursive CTE
|
||||
--echo #
|
||||
|
||||
# As in bug report
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
SELECT ( WITH RECURSIVE x AS ( SELECT * FROM ( SELECT UTC_TIMESTAMP FROM ( SELECT ( WITH x AS ( WITH x AS ( SELECT * FROM x ) SELECT 1 ) SELECT 1 ) ) x ) x UNION SELECT NULL ) ( SELECT x FROM x ) ) ;
|
||||
|
||||
#0 0x00005555569dff7b in TABLE_LIST::reset_const_table (this=0x7fffe0019938) at ../src/sql/table.cc:9615
|
||||
#1 0x00005555569dffd4 in TABLE_LIST::reset_const_table (this=0x7fffe001a8c0) at ../src/sql/table.cc:9622
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
select (
|
||||
with recursive x as (
|
||||
select * from (
|
||||
select utc_timestamp
|
||||
from (
|
||||
select (
|
||||
with x as (
|
||||
with x as (
|
||||
select * from x
|
||||
)
|
||||
select 1
|
||||
)
|
||||
select 1
|
||||
) s
|
||||
) y
|
||||
) z
|
||||
|
||||
union
|
||||
|
||||
select null
|
||||
)
|
||||
(select x from x)
|
||||
);
|
||||
|
||||
#6 0x00007ffff7639206 in __assert_fail (assertion=0x555555e121b6 "table_ref->table || table_ref->view", file=0x555555cdf138 "../src/sql/table.cc", line=7305, function=0x555555e30e24 "void Field_iterator_table_ref::set_field_iterator()") at ./assert/assert.c:101
|
||||
#7 0x00005555569da013 in Field_iterator_table_ref::set_field_iterator (this=0x7ffff0a9afc0) at ../src/sql/table.cc:7305
|
||||
select (
|
||||
with recursive r as (
|
||||
select * from (
|
||||
with a as (
|
||||
select * from r
|
||||
)
|
||||
select 1
|
||||
) y
|
||||
|
||||
union
|
||||
|
||||
select 1
|
||||
)
|
||||
(select * from r)
|
||||
);
|
||||
|
||||
# Field resolution in unreferenced:
|
||||
create table t1 (x int);
|
||||
|
||||
with recursive r as (
|
||||
select f1 from (
|
||||
with a as (
|
||||
select x from t1
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
|
||||
union
|
||||
|
||||
select null
|
||||
)
|
||||
(select * from r);
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
with recursive r as (
|
||||
select f1 from (
|
||||
with a as (
|
||||
select f2 from t1
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
|
||||
union
|
||||
|
||||
select null
|
||||
)
|
||||
(select * from r);
|
||||
|
||||
drop table t1;
|
||||
|
||||
with recursive r as (
|
||||
select 1 as f1
|
||||
|
||||
union
|
||||
|
||||
select f1 from (
|
||||
with a as (
|
||||
select f1 from r
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
)
|
||||
(select f1 from r);
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
with recursive r as (
|
||||
select 1 as f1
|
||||
|
||||
union
|
||||
|
||||
select f1 from (
|
||||
with a as (
|
||||
select f2 from r
|
||||
)
|
||||
select 1 as f1
|
||||
) y
|
||||
)
|
||||
(select f1 from r);
|
||||
|
||||
|
||||
--echo # End of 10.6 tests
|
||||
|
||||
@@ -5396,4 +5396,9 @@ result
|
||||
[["2", "6"], ["3", "8"], ["4", "5"], ["1", "7"]]
|
||||
[["2", "6"], ["3", "8"], ["4", "5"], ["1", "7"]]
|
||||
[["2", "6"], ["3", "8"], ["4", "5"], ["1", "7"]]
|
||||
#
|
||||
# MDEV-33640: Server crashes at my_hash_free
|
||||
#
|
||||
SELECT JSON_SCHEMA_VALID('{"properties": "a_string": {"pattern": "^[5-9]$"}}}', '{"a_string": "8"}');
|
||||
ERROR HY000: Invalid value for keyword properties
|
||||
# End of 11.4 Test
|
||||
|
||||
@@ -4277,4 +4277,12 @@ SELECT ( WITH x AS ( WITH x ( x ) AS ( SELECT ( 1.000000 ) ) SELECT x FROM x ) S
|
||||
|
||||
select json_array_intersect('[["1", "7"], ["2", "6"], ["4", "5"], ["3", "8"]]', '[["2","6"],["3","8"],["4","5"],["1","7"]]') as result from (values (1),(2),(3),(4),(5)) x;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33640: Server crashes at my_hash_free
|
||||
--echo #
|
||||
|
||||
--error ER_JSON_INVALID_VALUE_FOR_KEYWORD
|
||||
SELECT JSON_SCHEMA_VALID('{"properties": "a_string": {"pattern": "^[5-9]$"}}}', '{"a_string": "8"}');
|
||||
|
||||
--echo # End of 11.4 Test
|
||||
|
||||
@@ -180,7 +180,7 @@ F 17
|
||||
EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 )
|
||||
GROUP BY c1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range k1 k1 5 NULL 2 Using where
|
||||
1 SIMPLE t1 range k1 k1 5 NULL 2 Using where; Using index for group-by
|
||||
SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 )
|
||||
GROUP BY c1;
|
||||
c1 max(i2)
|
||||
@@ -438,6 +438,43 @@ disconnect con1;
|
||||
connection default;
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_lru_scan_depth= @lru_depth.save;
|
||||
#
|
||||
# MDEV-38426: Clustered PK not used for Loose Index Scan optimization
|
||||
#
|
||||
create table t1 (
|
||||
col1 int not null,
|
||||
col2 int not null,
|
||||
col3 int,
|
||||
primary key(col1, col2)
|
||||
) engine=innodb;
|
||||
insert into t1 select
|
||||
A.seq,
|
||||
B.seq,
|
||||
A.seq
|
||||
from
|
||||
seq_1_to_10 A,
|
||||
seq_1_to_1000 B;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
# This must use Loose Scan:
|
||||
explain select distinct col1 from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL PRIMARY 4 NULL 11 Using index for group-by
|
||||
# This must use Loose Scan:
|
||||
explain select col1 from t1 group by col1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL PRIMARY 4 NULL 11 Using index for group-by
|
||||
# This must use Loose Scan:
|
||||
explain select col1, min(col2) from t1 group by col1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL PRIMARY 4 NULL 11 Using index for group-by
|
||||
# This will not use Loose Index Scan as col3 is not in PK:
|
||||
explain select col1, min(col2), col3 from t1 group by col1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 8 NULL 10000
|
||||
drop table t1;
|
||||
set global innodb_stats_persistent= @innodb_stats_persistent_save;
|
||||
set global innodb_stats_persistent_sample_pages=
|
||||
@innodb_stats_persistent_sample_pages_save;
|
||||
|
||||
@@ -323,6 +323,40 @@ while ($run)
|
||||
DROP TABLE t1;
|
||||
SET GLOBAL innodb_lru_scan_depth= @lru_depth.save;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-38426: Clustered PK not used for Loose Index Scan optimization
|
||||
--echo #
|
||||
--source include/have_sequence.inc
|
||||
|
||||
create table t1 (
|
||||
col1 int not null,
|
||||
col2 int not null,
|
||||
col3 int,
|
||||
primary key(col1, col2)
|
||||
) engine=innodb;
|
||||
insert into t1 select
|
||||
A.seq,
|
||||
B.seq,
|
||||
A.seq
|
||||
from
|
||||
seq_1_to_10 A,
|
||||
seq_1_to_1000 B;
|
||||
analyze table t1;
|
||||
|
||||
--echo # This must use Loose Scan:
|
||||
explain select distinct col1 from t1;
|
||||
|
||||
--echo # This must use Loose Scan:
|
||||
explain select col1 from t1 group by col1;
|
||||
|
||||
--echo # This must use Loose Scan:
|
||||
explain select col1, min(col2) from t1 group by col1;
|
||||
|
||||
--echo # This will not use Loose Index Scan as col3 is not in PK:
|
||||
explain select col1, min(col2), col3 from t1 group by col1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
set global innodb_stats_persistent= @innodb_stats_persistent_save;
|
||||
set global innodb_stats_persistent_sample_pages=
|
||||
@innodb_stats_persistent_sample_pages_save;
|
||||
|
||||
@@ -121,3 +121,46 @@ connection default;
|
||||
DROP DATABASE meow;
|
||||
set local sql_mode=default;
|
||||
set global sql_mode=default;
|
||||
#
|
||||
# MDEV-37950: INSERT ... RETURNING exposes columns for which
|
||||
# the user lacks SELECT privilege
|
||||
#
|
||||
CREATE USER regular;
|
||||
GRANT INSERT ON *.* TO regular;
|
||||
GRANT DELETE ON *.* TO regular;
|
||||
CREATE DATABASE test1;
|
||||
DROP TABLE IF EXISTS test1.t_trigger_test1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test1.t_trigger_test1'
|
||||
CREATE TABLE test1.t_trigger_test1 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50),
|
||||
note VARCHAR(100)
|
||||
);
|
||||
CREATE TRIGGER test1.trg_before_insert
|
||||
BEFORE INSERT ON test1.t_trigger_test1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.name = CONCAT('BEFORE_', NEW.name);
|
||||
END |
|
||||
INSERT INTO test1.t_trigger_test1 (name) VALUES ('Alice') RETURNING *;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
INSERT INTO test1.t_trigger_test1 (name) VALUES ('Alice') RETURNING id, name, note;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
# same for DELETE because delete with "WHERE" still requires to
|
||||
# read from the table, which basically means having select privileges
|
||||
DELETE FROM test1.t_trigger_test1 WHERE id=1;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
DELETE FROM test1.t_trigger_test1 WHERE id=1 RETURNING id;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
DELETE FROM test1.t_trigger_test1 WHERE id=1 RETURNING *;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
DELETE FROM test1.t_trigger_test1 RETURNING *;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
DELETE FROM test1.t_trigger_test1 RETURNING id;
|
||||
ERROR 42000: SELECT command denied to user 'regular'@'localhost' for column 'id' in table 't_trigger_test1'
|
||||
DELETE FROM test1.t_trigger_test1;
|
||||
DROP TRIGGER test1.trg_before_insert;
|
||||
DROP TABLE test1.t_trigger_test1;
|
||||
DROP USER regular;
|
||||
DROP DATABASE test1;
|
||||
|
||||
@@ -158,3 +158,60 @@ DROP DATABASE meow;
|
||||
|
||||
set local sql_mode=default;
|
||||
set global sql_mode=default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-37950: INSERT ... RETURNING exposes columns for which
|
||||
--echo # the user lacks SELECT privilege
|
||||
--echo #
|
||||
CREATE USER regular;
|
||||
GRANT INSERT ON *.* TO regular;
|
||||
GRANT DELETE ON *.* TO regular;
|
||||
|
||||
CREATE DATABASE test1;
|
||||
DROP TABLE IF EXISTS test1.t_trigger_test1;
|
||||
CREATE TABLE test1.t_trigger_test1 (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50),
|
||||
note VARCHAR(100)
|
||||
);
|
||||
DELIMITER |;
|
||||
CREATE TRIGGER test1.trg_before_insert
|
||||
BEFORE INSERT ON test1.t_trigger_test1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.name = CONCAT('BEFORE_', NEW.name);
|
||||
END |
|
||||
DELIMITER ;|
|
||||
|
||||
change_user regular;
|
||||
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
INSERT INTO test1.t_trigger_test1 (name) VALUES ('Alice') RETURNING *;
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
INSERT INTO test1.t_trigger_test1 (name) VALUES ('Alice') RETURNING id, name, note;
|
||||
|
||||
--echo # same for DELETE because delete with "WHERE" still requires to
|
||||
--echo # read from the table, which basically means having select privileges
|
||||
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
DELETE FROM test1.t_trigger_test1 WHERE id=1;
|
||||
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
DELETE FROM test1.t_trigger_test1 WHERE id=1 RETURNING id;
|
||||
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
DELETE FROM test1.t_trigger_test1 WHERE id=1 RETURNING *;
|
||||
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
DELETE FROM test1.t_trigger_test1 RETURNING *;
|
||||
|
||||
--error ER_COLUMNACCESS_DENIED_ERROR
|
||||
DELETE FROM test1.t_trigger_test1 RETURNING id;
|
||||
|
||||
DELETE FROM test1.t_trigger_test1;
|
||||
|
||||
change_user root;
|
||||
DROP TRIGGER test1.trg_before_insert;
|
||||
DROP TABLE test1.t_trigger_test1;
|
||||
DROP USER regular;
|
||||
DROP DATABASE test1;
|
||||
|
||||
@@ -1094,23 +1094,31 @@ NULL UNION RESULT <union1,4> ALL NULL NULL NULL NULL NULL
|
||||
set sql_mode= 'oracle';
|
||||
explain SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t3 system NULL NULL NULL NULL 0 Const row not found
|
||||
2 UNION u3 system NULL NULL NULL NULL 0 Const row not found
|
||||
3 INTERSECT i3 system NULL NULL NULL NULL 0 Const row not found
|
||||
NULL UNIT RESULT <unit1,2,3> ALL NULL NULL NULL NULL NULL
|
||||
select * from t3 union select * from u3 intersect select * from i3;
|
||||
1 PRIMARY <derived4> ALL NULL NULL NULL NULL 2
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
3 UNION NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
|
||||
5 INTERSECT NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL
|
||||
select x from t3 union select x from u3 intersect select x from i3;
|
||||
x
|
||||
SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
SELECT x from t3 union select x from u3 intersect all select x from i3;
|
||||
x
|
||||
insert into t3 values (0);
|
||||
insert into i3 values (0);
|
||||
Select * from t3 union select * from u3 intersect select * from i3;
|
||||
Select x from t3 union select x from u3 intersect select x from i3;
|
||||
x
|
||||
0
|
||||
SELECT * FROM t3 UNION SELECT * FROM u3 INTERSECT ALL SELECT * FROM i3;
|
||||
SELECT x FROM t3 UNION SELECT x FROM u3 INTERSECT ALL SELECT x FROM i3;
|
||||
x
|
||||
0
|
||||
create view v as select * from t3 union select * from u3 intersect select * from i3;
|
||||
select * from v;
|
||||
x
|
||||
0
|
||||
drop tables t3, u3, i3;
|
||||
drop view v;
|
||||
# First line of these results is column names, not the result
|
||||
# (pay attention to "affected rows")
|
||||
values (1, 2) union all values (1, 2);
|
||||
@@ -1136,10 +1144,47 @@ values (1, 2) union all values (1, 2) union values (4, 3) union all values (4, 3
|
||||
1 2
|
||||
4 3
|
||||
affected rows: 2
|
||||
set sql_mode= default;
|
||||
create table t1 (a int, b int);
|
||||
create table t2 like t1;
|
||||
insert t1 values (1, 2), (1, 2), (1, 2), (2, 3), (2, 3), (3, 4), (3, 4);
|
||||
insert t2 values (1, 2), (1, 2), (2, 3), (2, 3), (2, 3), (2, 3), (4, 5);
|
||||
select * from t1 intersect all select * from t2;
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
1 2
|
||||
2 3
|
||||
select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
select * from t1 intersect all (select * from t2 union values (1, 2));
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
(select * from t1 intersect all select * from t2) union values (1, 2);
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
create view v1 as select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
show create view v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` intersect all select `t2`.`a` AS `a`,`t2`.`b` AS `b` from `t2` union values (1,2) latin1 latin1_swedish_ci
|
||||
select * from v1;
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
create view v2 as select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` union select `__5`.`1` AS `1`,`__5`.`2` AS `2` from (values (1,2) intersect all select `t2`.`a` AS `a`,`t2`.`b` AS `b` from `t2`) `__5` latin1 latin1_swedish_ci
|
||||
select * from v2;
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
3 4
|
||||
set sql_mode= 'oracle';
|
||||
select * from t1 intersect select * from t2;
|
||||
a b
|
||||
1 2
|
||||
@@ -1169,8 +1214,6 @@ select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
1 2
|
||||
2 3
|
||||
select * from t1 intersect all (select * from t2 union values (1, 2));
|
||||
a b
|
||||
1 2
|
||||
@@ -1181,9 +1224,209 @@ a b
|
||||
2 3
|
||||
explain select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 7
|
||||
2 INTERSECT t2 ALL NULL NULL NULL NULL 7
|
||||
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3> ALL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived4> ALL NULL NULL NULL NULL 8
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 7
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 7
|
||||
3 INTERSECT t2 ALL NULL NULL NULL NULL 7
|
||||
NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
|
||||
5 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNION RESULT <union4,5> ALL NULL NULL NULL NULL NULL
|
||||
show create view v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select "__6"."a" AS "a","__6"."b" AS "b" from (select "__4"."a" AS "a","__4"."b" AS "b" from (select "t1"."a" AS "a","t1"."b" AS "b" from "t1" intersect all select "t2"."a" AS "a","t2"."b" AS "b" from "t2") "__4" union values (1,2)) "__6" latin1 latin1_swedish_ci
|
||||
select * from v1;
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE VIEW "v2" AS select "__7"."a" AS "a","__7"."b" AS "b" from (select "t1"."a" AS "a","t1"."b" AS "b" from "t1" union select "__5"."1" AS "1","__5"."2" AS "2" from (select "__6"."1" AS "1","__6"."2" AS "2" from (values (1,2) intersect all select "t2"."a" AS "a","t2"."b" AS "b" from "t2") "__6") "__5") "__7" latin1 latin1_swedish_ci
|
||||
select * from v2;
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
3 4
|
||||
create view v3 as select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
show create view v3;
|
||||
View Create View character_set_client collation_connection
|
||||
v3 CREATE VIEW "v3" AS select "__6"."a" AS "a","__6"."b" AS "b" from (select "__8"."a" AS "a","__8"."b" AS "b" from (select "__4"."a" AS "a","__4"."b" AS "b" from (select "__6"."a" AS "a","__6"."b" AS "b" from (select "t1"."a" AS "a","t1"."b" AS "b" from "t1" union values (1,2)) "__6") "__4" intersect all select "t2"."a" AS "a","t2"."b" AS "b" from "t2") "__8") "__6" latin1 latin1_swedish_ci
|
||||
select * from v3;
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
drop tables t1, t2;
|
||||
drop view v1, v2, v3;
|
||||
create table t3 (x int);
|
||||
create table u3 (x int);
|
||||
create table i3 (x int);
|
||||
create view v4 as SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
select * from v4;
|
||||
x
|
||||
drop tables t3, u3, i3;
|
||||
drop view v4;
|
||||
set sql_mode= default;
|
||||
#
|
||||
# MDEV-37325 Incorrect results for INTERSECT ALL in ORACLE mode
|
||||
#
|
||||
create table t1 (a int, b int);
|
||||
create table t2 like t1;
|
||||
insert t1 values (1, 2), (1, 2), (1, 2), (1, 2);
|
||||
insert t2 values (1, 2), (1, 2);
|
||||
select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
explain select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||
4 EXCEPT <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 2
|
||||
3 INTERSECT NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL
|
||||
NULL EXCEPT RESULT <except1,4> ALL NULL NULL NULL NULL NULL
|
||||
Explain select * from (select * from (select * from t1 except all select * from t2) __3 intersect all values (1,2)) __5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||
2 DERIVED <derived3> ALL NULL NULL NULL NULL 4
|
||||
3 DERIVED t1 ALL NULL NULL NULL NULL 4
|
||||
4 EXCEPT t2 ALL NULL NULL NULL NULL 2
|
||||
NULL EXCEPT RESULT <except3,4> ALL NULL NULL NULL NULL NULL
|
||||
5 INTERSECT NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL INTERSECT RESULT <intersect2,5> ALL NULL NULL NULL NULL NULL
|
||||
create view v1 as select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
show create view v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` except all select `__5`.`a` AS `a`,`__5`.`b` AS `b` from (select `t2`.`a` AS `a`,`t2`.`b` AS `b` from `t2` intersect all values (1,2)) `__5` latin1 latin1_swedish_ci
|
||||
select * from v1;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
drop view v1;
|
||||
create view v1 as ((select * from t1 except all select * from t2) intersect all values (1, 2));
|
||||
show create view v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `__5`.`a` AS `a`,`__5`.`b` AS `b` from (select `t1`.`a` AS `a`,`t1`.`b` AS `b` from `t1` except all select `t2`.`a` AS `a`,`t2`.`b` AS `b` from `t2`) `__5` intersect all values (1,2) latin1 latin1_swedish_ci
|
||||
select * from v1;
|
||||
a b
|
||||
1 2
|
||||
drop view v1;
|
||||
explain select * from ((select * from t1 except all select * from t2) intersect all values (1, 2)) v;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived5> ALL NULL NULL NULL NULL 2
|
||||
5 DERIVED <derived2> ALL NULL NULL NULL NULL 4
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 4
|
||||
3 EXCEPT t2 ALL NULL NULL NULL NULL 2
|
||||
NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
|
||||
4 INTERSECT NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL INTERSECT RESULT <intersect5,4> ALL NULL NULL NULL NULL NULL
|
||||
# Oracle: first UNION, then INTERSECT ALL
|
||||
set sql_mode= 'oracle';
|
||||
create view v2 as select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
show create view v2;
|
||||
View Create View character_set_client collation_connection
|
||||
v2 CREATE VIEW "v2" AS select "__6"."a" AS "a","__6"."b" AS "b" from (select "__8"."a" AS "a","__8"."b" AS "b" from (select "__4"."a" AS "a","__4"."b" AS "b" from (select "__6"."a" AS "a","__6"."b" AS "b" from (select "t1"."a" AS "a","t1"."b" AS "b" from "t1" except all select "t2"."a" AS "a","t2"."b" AS "b" from "t2") "__6") "__4" intersect all values (1,2)) "__8") "__6" latin1 latin1_swedish_ci
|
||||
select * from v2;
|
||||
a b
|
||||
1 2
|
||||
drop view v2;
|
||||
EXPLAIN select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived4> ALL NULL NULL NULL NULL 2
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 4
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 4
|
||||
3 EXCEPT t2 ALL NULL NULL NULL NULL 2
|
||||
NULL EXCEPT RESULT <except2,3> ALL NULL NULL NULL NULL NULL
|
||||
5 INTERSECT NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL
|
||||
select * from t2 union all select * from t2;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
select * from t1 except all select * from t2 intersect all values (1, 2) union values (2, 3);
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
select * from t2 union all select * from t2 except all select * from t2 intersect all values (1, 2) union values (2, 3);
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
select * from t1 except all select * from t2 union values (2, 3);
|
||||
a b
|
||||
1 2
|
||||
2 3
|
||||
# Default: first INTERSECT ALL, then UNION
|
||||
select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
a b
|
||||
1 2
|
||||
select * from t1 union (values (1, 2) intersect all select * from t2);
|
||||
a b
|
||||
1 2
|
||||
set sql_mode= default;
|
||||
select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
a b
|
||||
1 2
|
||||
select * from t1 union (values (1, 2) intersect all select * from t2);
|
||||
a b
|
||||
1 2
|
||||
set sql_mode= 'oracle';
|
||||
create or replace table t2 like t1;
|
||||
insert t2 values (1, 2), (2, 3);
|
||||
create table t3 select * from t1 except all select * from t2;
|
||||
select * from t3;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
select * from t3 intersect all select * from t1;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
show create table t2;
|
||||
Table Create Table
|
||||
t2 CREATE TABLE "t2" (
|
||||
"a" int(11) DEFAULT NULL,
|
||||
"b" int(11) DEFAULT NULL
|
||||
)
|
||||
select * from t2 order by a desc;
|
||||
a b
|
||||
2 3
|
||||
1 2
|
||||
select * from t1 except all select * from t2;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
select * from t1 except all select * from t2 union all values (0, 1);
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
0 1
|
||||
select * from t1 except all select * from t2 union all values (0, 1) order by a limit 2;
|
||||
a b
|
||||
0 1
|
||||
1 2
|
||||
select * from t1 except all select * from t2 intersect all select * from t1;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
select * from t1 except all select * from t2 intersect all select * from t1 union all select * from t2;
|
||||
a b
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
1 2
|
||||
2 3
|
||||
select * from t1 except all select * from t2 intersect all select * from t1 union all select * from t2 order by a desc limit 3;
|
||||
a b
|
||||
2 3
|
||||
1 2
|
||||
1 2
|
||||
drop tables t1, t2, t3;
|
||||
set sql_mode= default;
|
||||
|
||||
@@ -338,13 +338,22 @@ create table i3 (x int);
|
||||
explain SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
set sql_mode= 'oracle';
|
||||
explain SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
# TODO: there is a bug in --view protocol, it displays column name as '*' instead of 'x'
|
||||
--replace_result * x
|
||||
select * from t3 union select * from u3 intersect select * from i3;
|
||||
--replace_result * x
|
||||
SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
insert into t3 values (0);
|
||||
insert into i3 values (0);
|
||||
--replace_result * x
|
||||
Select * from t3 union select * from u3 intersect select * from i3;
|
||||
--replace_result * x
|
||||
SELECT * FROM t3 UNION SELECT * FROM u3 INTERSECT ALL SELECT * FROM i3;
|
||||
# CREATE VIEW still works good
|
||||
create view v as select * from t3 union select * from u3 intersect select * from i3;
|
||||
select * from v;
|
||||
drop tables t3, u3, i3;
|
||||
drop view v;
|
||||
|
||||
--enable_info
|
||||
--echo # First line of these results is column names, not the result
|
||||
@@ -374,10 +383,26 @@ values (1, 2) union all values (1, 2) union values (4, 3) union all values (4, 3
|
||||
values (1, 2) union all values (1, 2) union values (4, 3) union all values (4, 3) union all values (1, 2) union values (1, 2);
|
||||
--disable_info
|
||||
|
||||
set sql_mode= default;
|
||||
create table t1 (a int, b int);
|
||||
create table t2 like t1;
|
||||
insert t1 values (1, 2), (1, 2), (1, 2), (2, 3), (2, 3), (3, 4), (3, 4);
|
||||
insert t2 values (1, 2), (1, 2), (2, 3), (2, 3), (2, 3), (2, 3), (4, 5);
|
||||
|
||||
select * from t1 intersect all select * from t2;
|
||||
select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
select * from t1 intersect all (select * from t2 union values (1, 2));
|
||||
(select * from t1 intersect all select * from t2) union values (1, 2);
|
||||
|
||||
create view v1 as select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
|
||||
create view v2 as select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
show create view v2;
|
||||
select * from v2;
|
||||
|
||||
set sql_mode= 'oracle';
|
||||
select * from t1 intersect select * from t2;
|
||||
select * from t1 intersect all select * from t2;
|
||||
--echo # Default: first INTERSECT ALL, then UNION
|
||||
@@ -392,5 +417,85 @@ select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
select * from t1 intersect all (select * from t2 union values (1, 2));
|
||||
(select * from t1 intersect all select * from t2) union values (1, 2);
|
||||
explain select * from t1 intersect all select * from t2 union values (1, 2);
|
||||
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
|
||||
show create view v2;
|
||||
select * from v2;
|
||||
|
||||
create view v3 as select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
show create view v3;
|
||||
select * from v3;
|
||||
|
||||
drop tables t1, t2;
|
||||
drop view v1, v2, v3;
|
||||
|
||||
create table t3 (x int);
|
||||
create table u3 (x int);
|
||||
create table i3 (x int);
|
||||
create view v4 as SELECT * from t3 union select * from u3 intersect all select * from i3;
|
||||
select * from v4;
|
||||
drop tables t3, u3, i3;
|
||||
drop view v4;
|
||||
set sql_mode= default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-37325 Incorrect results for INTERSECT ALL in ORACLE mode
|
||||
--echo #
|
||||
create table t1 (a int, b int);
|
||||
create table t2 like t1;
|
||||
insert t1 values (1, 2), (1, 2), (1, 2), (1, 2);
|
||||
insert t2 values (1, 2), (1, 2);
|
||||
select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
explain select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
Explain select * from (select * from (select * from t1 except all select * from t2) __3 intersect all values (1,2)) __5;
|
||||
|
||||
create view v1 as select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
create view v1 as ((select * from t1 except all select * from t2) intersect all values (1, 2));
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
explain select * from ((select * from t1 except all select * from t2) intersect all values (1, 2)) v;
|
||||
|
||||
--echo # Oracle: first UNION, then INTERSECT ALL
|
||||
set sql_mode= 'oracle';
|
||||
create view v2 as select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
show create view v2;
|
||||
select * from v2;
|
||||
drop view v2;
|
||||
|
||||
EXPLAIN select * from t1 except all select * from t2 intersect all values (1, 2);
|
||||
|
||||
select * from t2 union all select * from t2;
|
||||
select * from t1 except all select * from t2 intersect all values (1, 2) union values (2, 3);
|
||||
select * from t2 union all select * from t2 except all select * from t2 intersect all values (1, 2) union values (2, 3);
|
||||
select * from t1 except all select * from t2 union values (2, 3);
|
||||
--echo # Default: first INTERSECT ALL, then UNION
|
||||
select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
select * from t1 union (values (1, 2) intersect all select * from t2);
|
||||
set sql_mode= default;
|
||||
select * from t1 union values (1, 2) intersect all select * from t2;
|
||||
select * from t1 union (values (1, 2) intersect all select * from t2);
|
||||
|
||||
set sql_mode= 'oracle';
|
||||
create or replace table t2 like t1;
|
||||
insert t2 values (1, 2), (2, 3);
|
||||
create table t3 select * from t1 except all select * from t2;
|
||||
select * from t3;
|
||||
select * from t3 intersect all select * from t1;
|
||||
show create table t2;
|
||||
select * from t2 order by a desc;
|
||||
select * from t1 except all select * from t2;
|
||||
select * from t1 except all select * from t2 union all values (0, 1);
|
||||
select * from t1 except all select * from t2 union all values (0, 1) order by a limit 2;
|
||||
select * from t1 except all select * from t2 intersect all select * from t1;
|
||||
select * from t1 except all select * from t2 intersect all select * from t1 union all select * from t2;
|
||||
select * from t1 except all select * from t2 intersect all select * from t1 union all select * from t2 order by a desc limit 3;
|
||||
drop tables t1, t2, t3;
|
||||
set sql_mode= default;
|
||||
|
||||
@@ -262,3 +262,9 @@ SET @@global.collation_server= @save_collation_server;
|
||||
SET @@global.character_set_client= @save_character_set_client;
|
||||
SET @@global.collation_connection= @save_collation_connection;
|
||||
FOUND 1 /Aborted connection.*'u' host: '192.0.2.1' real ip: '(localhost|::1)'/ in mysqld.1.err
|
||||
#
|
||||
# MDEV-36269: Improve error handling for SOURCE command
|
||||
# Test that SOURCE on an existent directory returns a clear error
|
||||
#
|
||||
ERROR at line 1: Can't read from a directory '.'
|
||||
End of 10.11 tests
|
||||
|
||||
@@ -63,3 +63,13 @@ SET @@global.collation_connection= @save_collation_connection;
|
||||
let SEARCH_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
let SEARCH_PATTERN= Aborted connection.*'u' host: '192.0.2.1' real ip: '(localhost|::1)';
|
||||
source include/search_pattern_in_file.inc;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-36269: Improve error handling for SOURCE command
|
||||
--echo # Test that SOURCE on an existent directory returns a clear error
|
||||
--echo #
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL -e "source ." 2>&1
|
||||
|
||||
--echo End of 10.11 tests
|
||||
|
||||
@@ -776,8 +776,8 @@ The following specify which files/extra groups are read (specified before remain
|
||||
connection before aborting the write
|
||||
--new-mode=name Used to introduce new behavior to existing MariaDB
|
||||
versions. Any combination of: FIX_DISK_TMPTABLE_COSTS,
|
||||
FIX_INDEX_STATS_FOR_ALL_NULLS, or ALL to set all
|
||||
combinations
|
||||
FIX_INDEX_STATS_FOR_ALL_NULLS, FIX_INDEX_LOOKUP_COST, or
|
||||
ALL to set all combinations
|
||||
--note-verbosity=name
|
||||
Verbosity level for note-warnings given to the user. See
|
||||
also @@sql_notes. Any combination of: basic,
|
||||
|
||||
42
mysql-test/main/optimizer_costs_innodb.result
Normal file
42
mysql-test/main/optimizer_costs_innodb.result
Normal file
@@ -0,0 +1,42 @@
|
||||
#
|
||||
# MDEV-38164: Poor cost calculations for index access cause bad query plans for big VARCHARs in 11.x
|
||||
#
|
||||
create table t1 (
|
||||
pk1 int not null,
|
||||
pk2 int not null,
|
||||
filler1 varchar(500),
|
||||
filler2 varchar(500),
|
||||
filler3 varchar(500),
|
||||
filler4 varchar(500),
|
||||
filler5 varchar(500),
|
||||
filler6 varchar(500),
|
||||
filler7 varchar(500),
|
||||
filler8 varchar(500),
|
||||
filler9 varchar(500),
|
||||
fillerA varchar(500),
|
||||
fillerB varchar(500),
|
||||
fillerC varchar(500),
|
||||
fillerD varchar(500),
|
||||
fillerE varchar(500),
|
||||
fillerF varchar(500),
|
||||
primary key(pk1, pk2)
|
||||
) collate utf8mb4_general_ci engine=innodb;
|
||||
insert into t1 (pk1, pk2) select
|
||||
mod(seq, 8), seq
|
||||
from
|
||||
seq_1_to_10000;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
# Before the fix: this will use full table scan:
|
||||
explain select * from t1 where pk1=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL PRIMARY NULL NULL # 10000 Using where
|
||||
set @save_new_mode=@@new_mode;
|
||||
set new_mode=concat(@@new_mode,'FIX_INDEX_LOOKUP_COST');
|
||||
explain select * from t1 where pk1=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref PRIMARY PRIMARY 4 # 1250
|
||||
set new_mode=@save_new_mode;
|
||||
drop table t1;
|
||||
44
mysql-test/main/optimizer_costs_innodb.test
Normal file
44
mysql-test/main/optimizer_costs_innodb.test
Normal file
@@ -0,0 +1,44 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_sequence.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-38164: Poor cost calculations for index access cause bad query plans for big VARCHARs in 11.x
|
||||
--echo #
|
||||
create table t1 (
|
||||
pk1 int not null,
|
||||
pk2 int not null,
|
||||
filler1 varchar(500),
|
||||
filler2 varchar(500),
|
||||
filler3 varchar(500),
|
||||
filler4 varchar(500),
|
||||
filler5 varchar(500),
|
||||
filler6 varchar(500),
|
||||
filler7 varchar(500),
|
||||
filler8 varchar(500),
|
||||
filler9 varchar(500),
|
||||
fillerA varchar(500),
|
||||
fillerB varchar(500),
|
||||
fillerC varchar(500),
|
||||
fillerD varchar(500),
|
||||
fillerE varchar(500),
|
||||
fillerF varchar(500),
|
||||
primary key(pk1, pk2)
|
||||
) collate utf8mb4_general_ci engine=innodb;
|
||||
|
||||
insert into t1 (pk1, pk2) select
|
||||
mod(seq, 8), seq
|
||||
from
|
||||
seq_1_to_10000;
|
||||
analyze table t1;
|
||||
|
||||
--echo # Before the fix: this will use full table scan:
|
||||
--replace_column 8 #
|
||||
explain select * from t1 where pk1=1;
|
||||
|
||||
set @save_new_mode=@@new_mode;
|
||||
set new_mode=concat(@@new_mode,'FIX_INDEX_LOOKUP_COST');
|
||||
--replace_column 8 #
|
||||
explain select * from t1 where pk1=1;
|
||||
|
||||
set new_mode=@save_new_mode;
|
||||
drop table t1;
|
||||
@@ -391,3 +391,25 @@ partitio values in (2, 3, 4),
|
||||
pn values in (52, 53, 54));
|
||||
drop table t1;
|
||||
# End of 10.7 tests
|
||||
#
|
||||
# MDEV-35562 On partitionen tables algorithm is not supported
|
||||
# throw "no such file or directory" error
|
||||
#
|
||||
CREATE TABLE t1par (
|
||||
f1 datetime ,
|
||||
f2 VARCHAR(2) ,
|
||||
f3 VARCHAR(200) NOT NULL ,
|
||||
f4 VARCHAR(100) charset utf8
|
||||
)
|
||||
PARTITION BY RANGE COLUMNS(f2)
|
||||
(
|
||||
PARTITION p_01 VALUES LESS THAN ('02') ENGINE = InnoDB,
|
||||
PARTITION p_31 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB
|
||||
);
|
||||
ALTER online TABLE t1par MODIFY COLUMN f3 VARCHAR(201) NULL, ALGORITHM=NOCOPY , LOCK=NONE;
|
||||
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1845 ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE
|
||||
drop table t1par;
|
||||
# End of 10.11 tests
|
||||
|
||||
@@ -323,3 +323,26 @@ partition by list(x) (
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 10.7 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-35562 On partitionen tables algorithm is not supported
|
||||
--echo # throw "no such file or directory" error
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1par (
|
||||
f1 datetime ,
|
||||
f2 VARCHAR(2) ,
|
||||
f3 VARCHAR(200) NOT NULL ,
|
||||
f4 VARCHAR(100) charset utf8
|
||||
)
|
||||
PARTITION BY RANGE COLUMNS(f2)
|
||||
(
|
||||
PARTITION p_01 VALUES LESS THAN ('02') ENGINE = InnoDB,
|
||||
PARTITION p_31 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB
|
||||
);
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
ALTER online TABLE t1par MODIFY COLUMN f3 VARCHAR(201) NULL, ALGORITHM=NOCOPY , LOCK=NONE;
|
||||
show warnings;
|
||||
drop table t1par;
|
||||
|
||||
--echo # End of 10.11 tests
|
||||
|
||||
@@ -1015,5 +1015,45 @@ ERROR HY000: The target table v of the UPDATE is not updatable
|
||||
DROP VIEW v;
|
||||
DROP TABLE t;
|
||||
#
|
||||
# rownum in having without group by
|
||||
#
|
||||
create table t1 (a int primary key, b int);
|
||||
insert into t1 values (1, 1), (2, 1), (3, 1), (4, 2), (5, 2), (6, 2);
|
||||
select * from (select * from t1 order by a, b) dt having rownum() = 4;
|
||||
a b
|
||||
4 2
|
||||
drop table t1;
|
||||
#
|
||||
# rownum in subquery
|
||||
#
|
||||
create table t1 (a int primary key, b int);
|
||||
insert into t1 values (1, 1), (2, 1), (3, 1), (4, 2), (5, 2), (6, 2);
|
||||
explain select * from t1 where a in (select rownum() from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 6
|
||||
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 <subquery2>.rownum() 1 Using index condition
|
||||
2 MATERIALIZED t1 index NULL PRIMARY 4 NULL 6 Using index
|
||||
select * from t1 where a in (select rownum() from t1);
|
||||
a b
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 2
|
||||
5 2
|
||||
6 2
|
||||
set optimizer_switch='materialization=off';
|
||||
explain select * from t1 where a + 1 in (select rownum() from t1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 Using where
|
||||
2 DEPENDENT SUBQUERY t1 index NULL PRIMARY 4 NULL 6 Using index
|
||||
select * from t1 where a + 1 in (select rownum() from t1);
|
||||
a b
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 2
|
||||
5 2
|
||||
drop table t1;
|
||||
#
|
||||
# End of 10.6 tests
|
||||
#
|
||||
|
||||
@@ -617,6 +617,34 @@ UPDATE v SET f = 10 WHERE e > 42 LIMIT 1;
|
||||
DROP VIEW v;
|
||||
DROP TABLE t;
|
||||
|
||||
--echo #
|
||||
--echo # rownum in having without group by
|
||||
--echo #
|
||||
|
||||
create table t1 (a int primary key, b int);
|
||||
insert into t1 values (1, 1), (2, 1), (3, 1), (4, 2), (5, 2), (6, 2);
|
||||
select * from (select * from t1 order by a, b) dt having rownum() = 4;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # rownum in subquery
|
||||
--echo #
|
||||
|
||||
create table t1 (a int primary key, b int);
|
||||
insert into t1 values (1, 1), (2, 1), (3, 1), (4, 2), (5, 2), (6, 2);
|
||||
|
||||
# When rownum used in subquery, the subquery shouldn't be transformed to semijoin
|
||||
explain select * from t1 where a in (select rownum() from t1);
|
||||
select * from t1 where a in (select rownum() from t1);
|
||||
|
||||
set optimizer_switch='materialization=off';
|
||||
# When rownum used in IN-subquery and the subquery is transformed to EXISTS, the new condition should be added to HAVING clause.
|
||||
explain select * from t1 where a + 1 in (select rownum() from t1);
|
||||
select * from t1 where a + 1 in (select rownum() from t1);
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.6 tests
|
||||
--echo #
|
||||
|
||||
@@ -2114,4 +2114,33 @@ a b c d e
|
||||
2 NULL NULL NULL NULL
|
||||
set join_cache_level= default;
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
# MDEV-38240: Selectivity sampling not performed when the table has no indexed conditions
|
||||
#
|
||||
set use_stat_tables=PREFERABLY;
|
||||
create table t1 (a varchar(100), b int);
|
||||
insert into t1 select seq, seq from seq_1_to_1000;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
set optimizer_use_condition_selectivity=5;
|
||||
# Must produce filtered=1% or so:
|
||||
explain extended
|
||||
select * from t1 where a like '%99%';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 1000 1.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` like '%99%'
|
||||
# Must have same filtered as above
|
||||
explain extended
|
||||
select * from t1 where a like '%99%' and (b is null or b is not null);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 1000 1.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` like '%99%' and (`test`.`t1`.`b` is null or `test`.`t1`.`b` is not null)
|
||||
drop table t1;
|
||||
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
||||
set use_stat_tables= @save_use_stat_tables;
|
||||
# End of 11.4 tests
|
||||
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
|
||||
|
||||
@@ -1456,4 +1456,27 @@ SELECT * FROM t1 LEFT JOIN (t2 JOIN t3 ON t2.b = t3.e) ON t2.c = 1;
|
||||
set join_cache_level= default;
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-38240: Selectivity sampling not performed when the table has no indexed conditions
|
||||
--echo #
|
||||
set use_stat_tables=PREFERABLY;
|
||||
create table t1 (a varchar(100), b int);
|
||||
insert into t1 select seq, seq from seq_1_to_1000;
|
||||
analyze table t1;
|
||||
|
||||
set optimizer_use_condition_selectivity=5;
|
||||
--echo # Must produce filtered=1% or so:
|
||||
explain extended
|
||||
select * from t1 where a like '%99%';
|
||||
|
||||
--echo # Must have same filtered as above
|
||||
explain extended
|
||||
select * from t1 where a like '%99%' and (b is null or b is not null);
|
||||
drop table t1;
|
||||
|
||||
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
||||
set use_stat_tables= @save_use_stat_tables;
|
||||
|
||||
--echo # End of 11.4 tests
|
||||
|
||||
--source include/test_db_charset_restore.inc
|
||||
|
||||
@@ -2121,6 +2121,35 @@ a b c d e
|
||||
2 NULL NULL NULL NULL
|
||||
set join_cache_level= default;
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
# MDEV-38240: Selectivity sampling not performed when the table has no indexed conditions
|
||||
#
|
||||
set use_stat_tables=PREFERABLY;
|
||||
create table t1 (a varchar(100), b int);
|
||||
insert into t1 select seq, seq from seq_1_to_1000;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Engine-independent statistics collected
|
||||
test.t1 analyze status OK
|
||||
set optimizer_use_condition_selectivity=5;
|
||||
# Must produce filtered=1% or so:
|
||||
explain extended
|
||||
select * from t1 where a like '%99%';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 1000 1.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` like '%99%'
|
||||
# Must have same filtered as above
|
||||
explain extended
|
||||
select * from t1 where a like '%99%' and (b is null or b is not null);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 1000 1.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`a` like '%99%' and (`test`.`t1`.`b` is null or `test`.`t1`.`b` is not null)
|
||||
drop table t1;
|
||||
set optimizer_use_condition_selectivity= @save_optimizer_use_condition_selectivity;
|
||||
set use_stat_tables= @save_use_stat_tables;
|
||||
# End of 11.4 tests
|
||||
ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
|
||||
set optimizer_switch=@save_optimizer_switch_for_selectivity_test;
|
||||
set @tmp_ust= @@use_stat_tables;
|
||||
|
||||
@@ -95,6 +95,7 @@ FLUSH PRIVILEGES;
|
||||
ALTER TABLE mysql.servers ENGINE=Aria;
|
||||
FLUSH PRIVILEGES;
|
||||
drop server s1;
|
||||
ALTER TABLE mysql.servers ENGINE=Aria;
|
||||
#
|
||||
# MDEV-35622 SEGV, ASAN use-after-poison when reading system table with less than expected number of columns
|
||||
# MDEV-37777 upgrade from MySQL 5.7 regression, mysql.servers invalid structure
|
||||
|
||||
@@ -99,6 +99,8 @@ FLUSH PRIVILEGES;
|
||||
ALTER TABLE mysql.servers ENGINE=Aria;
|
||||
FLUSH PRIVILEGES;
|
||||
drop server s1;
|
||||
# Restore the table back to original engine, to not disrupt following tests.
|
||||
ALTER TABLE mysql.servers ENGINE=Aria;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-35622 SEGV, ASAN use-after-poison when reading system table with less than expected number of columns
|
||||
|
||||
@@ -7,34 +7,44 @@ insert into t3 values (1,1),(3,3);
|
||||
set SQL_MODE=ORACLE;
|
||||
(select a,b from t1) union (select c,d from t2) intersect (select e,f from t3) union (select 4,4);
|
||||
a b
|
||||
4 4
|
||||
3 3
|
||||
4 4
|
||||
explain extended
|
||||
(select a,b from t1) union (select c,d from t2) intersect (select e,f from t3) union (select 4,4);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 UNION t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 INTERSECT t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
4 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3,4> ALL NULL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived6> ALL NULL NULL NULL NULL 2 100.00
|
||||
6 DERIVED <derived4> ALL NULL NULL NULL NULL 2 100.00
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 4 100.00
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 UNION t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
5 INTERSECT t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL NULL
|
||||
7 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNION RESULT <union6,7> ALL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 (/* select#1 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1") union (/* select#2 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2") intersect (/* select#3 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3") union (/* select#4 */ select 4 AS "4",4 AS "4")
|
||||
Note 1003 /* select#1 */ select "__7"."a" AS "a","__7"."b" AS "b" from (/* select#6 */ select "__5"."a" AS "a","__5"."b" AS "b" from (/* select#4 */ select "__3"."a" AS "a","__3"."b" AS "b" from ((/* select#2 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1") union (/* select#3 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2")) "__3" intersect (/* select#5 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3")) "__5" union (/* select#7 */ select 4 AS "4",4 AS "4")) "__7"
|
||||
(select e,f from t3) intersect (select c,d from t2) union (select a,b from t1) union (select 4,4);
|
||||
e f
|
||||
5 5
|
||||
3 3
|
||||
5 5
|
||||
6 6
|
||||
4 4
|
||||
explain extended
|
||||
(select e,f from t3) intersect (select c,d from t2) union (select a,b from t1) union (select 4,4);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 INTERSECT t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 UNION t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
4 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3,4> ALL NULL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived6> ALL NULL NULL NULL NULL 4 100.00
|
||||
6 DERIVED <derived4> ALL NULL NULL NULL NULL 4 100.00
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DERIVED t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 INTERSECT t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
5 UNION t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL UNION RESULT <union4,5> ALL NULL NULL NULL NULL NULL NULL
|
||||
7 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNION RESULT <union6,7> ALL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 (/* select#1 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3") intersect (/* select#2 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2") union (/* select#3 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1") union (/* select#4 */ select 4 AS "4",4 AS "4")
|
||||
Note 1003 /* select#1 */ select "__7"."e" AS "e","__7"."f" AS "f" from (/* select#6 */ select "__5"."e" AS "e","__5"."f" AS "f" from (/* select#4 */ select "__3"."e" AS "e","__3"."f" AS "f" from ((/* select#2 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3") intersect (/* select#3 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2")) "__3" union (/* select#5 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1")) "__5" union (/* select#7 */ select 4 AS "4",4 AS "4")) "__7"
|
||||
create table t12(c1 int);
|
||||
insert into t12 values(1);
|
||||
insert into t12 values(2);
|
||||
@@ -61,18 +71,21 @@ insert into t3 values (1,1),(3,3);
|
||||
set SQL_MODE=ORACLE;
|
||||
select a,b from t1 union all select c,d from t2 intersect select e,f from t3 union all select 4,'4' from dual;
|
||||
a b
|
||||
4 4
|
||||
3 3
|
||||
4 4
|
||||
explain extended
|
||||
select a,b from t1 union all select c,d from t2 intersect select e,f from t3 union all select 4,'4' from dual;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 UNION t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 INTERSECT t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
4 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3,4> ALL NULL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived6> ALL NULL NULL NULL NULL 2 100.00
|
||||
6 DERIVED <derived4> ALL NULL NULL NULL NULL 2 100.00
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 4 100.00
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 UNION t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
5 INTERSECT t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL NULL
|
||||
7 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1" union all /* select#2 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2" intersect /* select#3 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3" union all /* select#4 */ select 4 AS "4",'4' AS "4"
|
||||
Note 1003 /* select#1 */ select "__7"."a" AS "a","__7"."b" AS "b" from (/* select#6 */ select "__5"."a" AS "a","__5"."b" AS "b" from (/* select#4 */ select "__3"."a" AS "a","__3"."b" AS "b" from (/* select#2 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1" union all /* select#3 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2") "__3" intersect /* select#5 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3") "__5" union all /* select#7 */ select 4 AS "4",'4' AS "4") "__7"
|
||||
select a,b from t1 union all select c,d from t2 intersect all select e,f from t3 union all select 4,'4' from dual;
|
||||
a b
|
||||
3 3
|
||||
@@ -80,29 +93,35 @@ a b
|
||||
explain extended
|
||||
select a,b from t1 union all select c,d from t2 intersect all select e,f from t3 union all select 4,'4' from dual;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 UNION t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 INTERSECT t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
4 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3,4> ALL NULL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived6> ALL NULL NULL NULL NULL 2 100.00
|
||||
6 DERIVED <derived4> ALL NULL NULL NULL NULL 2 100.00
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 4 100.00
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 UNION t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
5 INTERSECT t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL INTERSECT RESULT <intersect4,5> ALL NULL NULL NULL NULL NULL NULL
|
||||
7 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1" union all /* select#2 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2" intersect all /* select#3 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3" union all /* select#4 */ select 4 AS "4",'4' AS "4"
|
||||
Note 1003 /* select#1 */ select "__7"."a" AS "a","__7"."b" AS "b" from (/* select#6 */ select "__5"."a" AS "a","__5"."b" AS "b" from (/* select#4 */ select "__3"."a" AS "a","__3"."b" AS "b" from (/* select#2 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1" union all /* select#3 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2") "__3" intersect all /* select#5 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3") "__5" union all /* select#7 */ select 4 AS "4",'4' AS "4") "__7"
|
||||
select e,f from t3 intersect select c,d from t2 union all select a,b from t1 union all select 4,'4' from dual;
|
||||
e f
|
||||
5 5
|
||||
3 3
|
||||
5 5
|
||||
6 6
|
||||
4 4
|
||||
explain extended
|
||||
select e,f from t3 intersect select c,d from t2 union all select a,b from t1 union all select 4,'4' from dual;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 INTERSECT t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 UNION t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
4 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3,4> ALL NULL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived6> ALL NULL NULL NULL NULL 4 100.00
|
||||
6 DERIVED <derived4> ALL NULL NULL NULL NULL 4 100.00
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DERIVED t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 INTERSECT t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
5 UNION t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
7 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3" intersect /* select#2 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2" union all /* select#3 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1" union all /* select#4 */ select 4 AS "4",'4' AS "4"
|
||||
Note 1003 /* select#1 */ select "__7"."e" AS "e","__7"."f" AS "f" from (/* select#6 */ select "__5"."e" AS "e","__5"."f" AS "f" from (/* select#4 */ select "__3"."e" AS "e","__3"."f" AS "f" from (/* select#2 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3" intersect /* select#3 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2") "__3" union all /* select#5 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1") "__5" union all /* select#7 */ select 4 AS "4",'4' AS "4") "__7"
|
||||
select e,f from t3 intersect all select c,d from t2 union all select a,b from t1 union all select 4,'4' from dual;
|
||||
e f
|
||||
3 3
|
||||
@@ -112,13 +131,16 @@ e f
|
||||
explain extended
|
||||
select e,f from t3 intersect all select c,d from t2 union all select a,b from t1 union all select 4,'4' from dual;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 INTERSECT t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 UNION t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
4 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
NULL UNIT RESULT <unit1,2,3,4> ALL NULL NULL NULL NULL NULL NULL
|
||||
1 PRIMARY <derived6> ALL NULL NULL NULL NULL 4 100.00
|
||||
6 DERIVED <derived4> ALL NULL NULL NULL NULL 4 100.00
|
||||
4 DERIVED <derived2> ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DERIVED t3 ALL NULL NULL NULL NULL 2 100.00
|
||||
3 INTERSECT t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
NULL INTERSECT RESULT <intersect2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
5 UNION t1 ALL NULL NULL NULL NULL 2 100.00
|
||||
7 UNION NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3" intersect all /* select#2 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2" union all /* select#3 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1" union all /* select#4 */ select 4 AS "4",'4' AS "4"
|
||||
Note 1003 /* select#1 */ select "__7"."e" AS "e","__7"."f" AS "f" from (/* select#6 */ select "__5"."e" AS "e","__5"."f" AS "f" from (/* select#4 */ select "__3"."e" AS "e","__3"."f" AS "f" from (/* select#2 */ select "test"."t3"."e" AS "e","test"."t3"."f" AS "f" from "test"."t3" intersect all /* select#3 */ select "test"."t2"."c" AS "c","test"."t2"."d" AS "d" from "test"."t2") "__3" union all /* select#5 */ select "test"."t1"."a" AS "a","test"."t1"."b" AS "b" from "test"."t1") "__5" union all /* select#7 */ select 4 AS "4",'4' AS "4") "__7"
|
||||
set SQL_MODE=default;
|
||||
drop table t1,t2,t3;
|
||||
set SQL_MODE=oracle;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
connect ssl_con,localhost,root,,,,,SSL;
|
||||
select variable_name from performance_schema.status_by_thread where VARIABLE_NAME LIKE 'Ssl%';
|
||||
select variable_name from performance_schema.status_by_thread where VARIABLE_NAME LIKE 'Ssl%' and thread_id in($default_id, $ssl_con_id);
|
||||
variable_name
|
||||
Ssl_cipher
|
||||
Ssl_cipher_list
|
||||
|
||||
@@ -12,9 +12,12 @@
|
||||
--source include/default_charset.inc
|
||||
--source include/have_perfschema.inc
|
||||
|
||||
let $default_id=`select thread_id from performance_schema.threads where processlist_id=connection_id()`;
|
||||
|
||||
connect (ssl_con,localhost,root,,,,,SSL);
|
||||
|
||||
select variable_name from performance_schema.status_by_thread where VARIABLE_NAME LIKE 'Ssl%';
|
||||
let $ssl_con_id=`select thread_id from performance_schema.threads where processlist_id=connection_id()`;
|
||||
evalp select variable_name from performance_schema.status_by_thread where VARIABLE_NAME LIKE 'Ssl%' and thread_id in($default_id, $ssl_con_id);
|
||||
|
||||
# Check ssl turned on
|
||||
SELECT (VARIABLE_VALUE <> '') AS have_ssl FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME='Ssl_cipher';
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
let $count_sessions=1;
|
||||
|
||||
call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction");
|
||||
--disable_query_log
|
||||
@@ -694,7 +694,6 @@ xa rollback 'test1';
|
||||
xa recover;
|
||||
drop table asd;
|
||||
disconnect con_tmp;
|
||||
--source include/wait_until_disconnected.inc
|
||||
connection default;
|
||||
|
||||
--echo # MDEV-30978: a read-only server should still allow the commit of
|
||||
@@ -718,7 +717,6 @@ xa rollback '2';
|
||||
|
||||
--echo # Read-only disconnect case
|
||||
|
||||
--source include/count_sessions.inc
|
||||
connect (con1_ro,localhost,root,,);
|
||||
xa start '3';
|
||||
select 0;
|
||||
@@ -732,7 +730,6 @@ xa recover;
|
||||
--error ER_XA_RBROLLBACK
|
||||
xa commit '3';
|
||||
|
||||
--source include/count_sessions.inc
|
||||
connect (con2_ro,localhost,root,,);
|
||||
xa start '4';
|
||||
select 0;
|
||||
@@ -781,6 +778,7 @@ xa end 'r:foo';
|
||||
xa prepare 'r:foo';
|
||||
disconnect con1;
|
||||
connection default;
|
||||
--source include/wait_until_count_sessions.inc
|
||||
xa recover;
|
||||
|
||||
xa start 'r:bar';
|
||||
|
||||
62
mysql-test/std_data/cachain/client.cachain
Normal file
62
mysql-test/std_data/cachain/client.cachain
Normal file
@@ -0,0 +1,62 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
hA==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFVjCCAz6gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA2MRAwDgYDVQQKDAdNYXJp
|
||||
YURCMRAwDgYDVQQLDAdNYXJpYURCMRAwDgYDVQQDDAdSb290IENBMB4XDTI1MTIx
|
||||
MjE2NTY0NFoXDTQ1MDgyOTE2NTY0NFowPzEQMA4GA1UECgwHTWFyaWFEQjEQMA4G
|
||||
A1UECwwHTWFyaWFEQjEZMBcGA1UEAwwQSW50ZXJtZWRpYXRlIENBMjCCAiIwDQYJ
|
||||
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL+xpdkcY7Xg/B+7ct45WHJtvArOwQdm
|
||||
vo6itdVRrXEc+MprySGjbLYvm+MB4QhI/e0Xhwvhh/6WAacSF9nu+GiWw02fZ5hR
|
||||
KNiepxAua+uxulPUcDapFRUt+w1H0HfB85qIChvJ1f56t+gtvLZpkNmS+p1U5wnp
|
||||
pFdIyBVDF3t6lr0Aoa5LRo1mbcB9MT4lJ7uMzcoTHFFQq4ROeyoRnleFGN0tIbqa
|
||||
njMBvN6lRpQToPfstQdD4B8LLwwYmJvPYInxJx76QV39PzPOsmq581WCMi49z3B4
|
||||
gBLxNP5/QfrXC6DVCFs1aq9SyuclcIcquMvgvrvQ0hI6l5xbvj6DLySUfJI1unCw
|
||||
GUdvg2U1DCQN3TPU3j8tHXHQJgp7y9NNCbaLKi60X+vWB3uhWnAzqV+QMvDxbA3w
|
||||
4PZobeBOeygst7f3020UVAcRZLpb4l/MJTzdjTVjmPz0I3wenKPj6m19BH+iVabz
|
||||
p4jc4wlBZuyBmhQ4UpYuCYzuIh+ki2daZc43UmdDx8sEKBooE1LBnn85pSQNwBuM
|
||||
Iu8FdqN/FpVlfnrbjM1sFKvDfm91knGRRQnd4R1WKm8PB0kmmQ6rq5eMc37Gn7oG
|
||||
cCWXomCtaVDExZ7MVscPAWVtfTpHKNkHpKh0WjEtO2+qY1Ts3h1EeJMTjp602rTo
|
||||
6vlmm8egTvQ9AgMBAAGjZjBkMB0GA1UdDgQWBBQb7bQ2OioBaqskMvxj1Age8IzC
|
||||
IzAfBgNVHSMEGDAWgBQEiu6rzWpHMQmM8hx+uT1eOZrSrDASBgNVHRMBAf8ECDAG
|
||||
AQH/AgEAMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAFRDs8s5g
|
||||
OZu+0XoDGOka5rVEcuKukOd8hM1kx5YXuFOsKISShJywCGtpBbs2acjqEjKMiiME
|
||||
uZSAapm/9YwQv1wM3XNqjzypxAl4ibE/5noJR7vDS0ixMgO884pDVdvHYwfw1aEJ
|
||||
lxMfDQkY3foMVDLNgkscHtJWH3rQ9icf6ATzvJh03Oxsk/5ku056Fs2hcNzrK0un
|
||||
omrycfAEIBikkqlS/OCWAHNp5nBkxcl/ZN1dO5empcbaYIuDSd9d4oPAFkbW3qoa
|
||||
cqOYrwWbKjlbPQ1vXmst0KmWnErWurm7e3aSkXzUTLRor12p0pfyydpQ79vNm/md
|
||||
uDXzhMc4/xdMQCSHMcVfbD2Oduz/Xh7G5n+NbGHNj1FzChraHj7Mr+/ls6sY8uRA
|
||||
oE/xB+Y+BJcJgsghUhulVFnF/tDPWDwHkSiDG8yXxaOr98/hdtdVlk2SZRmhmu5J
|
||||
8yVhAyPj/v7dxInQ4aE4AEkEtlSV9qHo1armzyORa9kqKbWUR9h3yba/U65citRQ
|
||||
sT7eDkoYueNew6mYcWrh7mCY6HflhM9Kskyem+Ev5BOPjNHyRU/yuSytfOQefa4R
|
||||
Zwh4oTAWlPImUlcImnDHaXTlCxu8carg87tk4RNlQX9VhsqJtZEFA9dvhfyCW1k0
|
||||
t9zG0FnuvV5vtSrkT/DUEnTHpSbzgO5dpU0=
|
||||
-----END CERTIFICATE-----
|
||||
52
mysql-test/std_data/cachain/client.key
Normal file
52
mysql-test/std_data/cachain/client.key
Normal file
@@ -0,0 +1,52 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
0txeBq/S0KIBpAsLK5G0aqD+qASd630=
|
||||
-----END PRIVATE KEY-----
|
||||
31
mysql-test/std_data/cachain/root.crt
Normal file
31
mysql-test/std_data/cachain/root.crt
Normal file
@@ -0,0 +1,31 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFXTCCA0WgAwIBAgIUMS/WV2Y7lwQy/yLQDAFU66GhILkwDQYJKoZIhvcNAQEL
|
||||
BQAwNjEQMA4GA1UECgwHTWFyaWFEQjEQMA4GA1UECwwHTWFyaWFEQjEQMA4GA1UE
|
||||
AwwHUm9vdCBDQTAeFw0yNTEyMTIxNjU2NDJaFw00NTA4MjkxNjU2NDJaMDYxEDAO
|
||||
BgNVBAoMB01hcmlhREIxEDAOBgNVBAsMB01hcmlhREIxEDAOBgNVBAMMB1Jvb3Qg
|
||||
Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC74Ifa/BBjtlkdANjj
|
||||
8IWn8+RL9/CODm5xURmWfJSzW4vebZZPGwkd3J5grTW3Zr+XGpXfbFPwC63pPDAu
|
||||
8CzVXCDNSK+Fa2usoLsnYW2CmxeMqrUeBVZk4YCZ0ztjwvvZkwrbN6L/uk0OMpy7
|
||||
T6c0lxysMAuTXYPGY8NNDW0tpKh2LbxzGsAkREbM17vAHveHyiJ8YmWHmUeujqir
|
||||
IlEcClTVEqSR8sWDwu01W/aD9u9wY1CJZyTNF3lJPZ8XqNBVZ89Ydl0y7W1oXOno
|
||||
b/6CTZYUxMQ/xUL00L1i+VcIKjV8jZFrFyrjJsnGlvqLlzUQ3dwFKJISIMcF9Jb2
|
||||
PnZTGNjhzROil3zrItjKTbScgLiWuqAh8YNmRRisDIlkMr8kFU2FjznrMkFP3LK8
|
||||
BPBKKwNaYzcbeR6xwMgj3rJvT5PDk0ffBn/hjyhgpVJfp10hvkFtV2kSE/ttmU0O
|
||||
+SQXgjXxsPs9223oTgjxt5FfZei+mdOJ69G6/boupF9eYpKe0cNLYnF0V+rFoxiK
|
||||
LFUQhNMJVDBca/cp791N9Nb1bhKSHnR+zQNQjBH4BAmWKzuzKLrt3L6QKK59xyy9
|
||||
HdbM/ohbEEKialgm/Lwrr+olcpyPMwujM5B0r9B+Z4b/oPEIsncNpCl553r7YQZ5
|
||||
P9PYiJ/kOBxCwnYeYlwk+KygNQIDAQABo2MwYTAdBgNVHQ4EFgQUBIruq81qRzEJ
|
||||
jPIcfrk9Xjma0qwwHwYDVR0jBBgwFoAUBIruq81qRzEJjPIcfrk9Xjma0qwwDwYD
|
||||
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIB
|
||||
AD47H7tlk1aWFEf1UK9Xnh2hELTSXX3/uE5Sxx32DINTL2wcqiLOgxTMEaNr1EeF
|
||||
dCkuADFclEsJfh+mWmhRsD7KKKlq4grMX9jTobfj0sd84M+d+YgkqAlP9f9b6QrX
|
||||
e9pv2FVCL467JARWSZRuLJ7SZOHK88ajNnAG36LFdtXBDOAcogtddRfAil/5PMP4
|
||||
HIgZQOG96h0yMDoIJB1RIicf8f56xsC5m1Jbz4B3V8rPcCGK9CKWLrgd0FiXZV45
|
||||
GMuXLsOfEaUEtMz/gRIdQlMHgTWk6Inprm9wynL51J0gE3BZIm26G1gpae3GcG5Z
|
||||
q8BQQbQfn6Tg/H8a+56H1CDclt9qQjRMRDH81r5w7hK1LvjKrEKjdmzmxaPAqq71
|
||||
Ne5gXJxYjgSwpFB5MYX4K0Do2zoqE7HhuGc/0oWhm0IrAy616tOZtmopoNiYoJ88
|
||||
xjHXRCKs6w6vPsNew75u5N7mU7IlCXjxVSF6cSyRd4fnBY3kRxZPJWlOe8jsIuED
|
||||
PZYfAI+10nOGNY7c3scvxgZCnNU0THryem0PNIM0XaM/fR+SH+Kl+V9x14sDouIS
|
||||
B6gCYEk2oZW7EdfLN3FXFufoIPNsR1KkDsh7RKYamMVlSsGEEFPt3h9I0c3kAaOT
|
||||
FHZ29DjuAuSGaEvs4NiOsYmaQP51BM1sFs/gkz678KZy
|
||||
-----END CERTIFICATE-----
|
||||
62
mysql-test/std_data/cachain/root_intermediate_ca1.crt
Normal file
62
mysql-test/std_data/cachain/root_intermediate_ca1.crt
Normal file
@@ -0,0 +1,62 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFXTCCA0WgAwIBAgIUMS/WV2Y7lwQy/yLQDAFU66GhILkwDQYJKoZIhvcNAQEL
|
||||
BQAwNjEQMA4GA1UECgwHTWFyaWFEQjEQMA4GA1UECwwHTWFyaWFEQjEQMA4GA1UE
|
||||
AwwHUm9vdCBDQTAeFw0yNTEyMTIxNjU2NDJaFw00NTA4MjkxNjU2NDJaMDYxEDAO
|
||||
BgNVBAoMB01hcmlhREIxEDAOBgNVBAsMB01hcmlhREIxEDAOBgNVBAMMB1Jvb3Qg
|
||||
Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC74Ifa/BBjtlkdANjj
|
||||
8IWn8+RL9/CODm5xURmWfJSzW4vebZZPGwkd3J5grTW3Zr+XGpXfbFPwC63pPDAu
|
||||
8CzVXCDNSK+Fa2usoLsnYW2CmxeMqrUeBVZk4YCZ0ztjwvvZkwrbN6L/uk0OMpy7
|
||||
T6c0lxysMAuTXYPGY8NNDW0tpKh2LbxzGsAkREbM17vAHveHyiJ8YmWHmUeujqir
|
||||
IlEcClTVEqSR8sWDwu01W/aD9u9wY1CJZyTNF3lJPZ8XqNBVZ89Ydl0y7W1oXOno
|
||||
b/6CTZYUxMQ/xUL00L1i+VcIKjV8jZFrFyrjJsnGlvqLlzUQ3dwFKJISIMcF9Jb2
|
||||
PnZTGNjhzROil3zrItjKTbScgLiWuqAh8YNmRRisDIlkMr8kFU2FjznrMkFP3LK8
|
||||
BPBKKwNaYzcbeR6xwMgj3rJvT5PDk0ffBn/hjyhgpVJfp10hvkFtV2kSE/ttmU0O
|
||||
+SQXgjXxsPs9223oTgjxt5FfZei+mdOJ69G6/boupF9eYpKe0cNLYnF0V+rFoxiK
|
||||
LFUQhNMJVDBca/cp791N9Nb1bhKSHnR+zQNQjBH4BAmWKzuzKLrt3L6QKK59xyy9
|
||||
HdbM/ohbEEKialgm/Lwrr+olcpyPMwujM5B0r9B+Z4b/oPEIsncNpCl553r7YQZ5
|
||||
P9PYiJ/kOBxCwnYeYlwk+KygNQIDAQABo2MwYTAdBgNVHQ4EFgQUBIruq81qRzEJ
|
||||
jPIcfrk9Xjma0qwwHwYDVR0jBBgwFoAUBIruq81qRzEJjPIcfrk9Xjma0qwwDwYD
|
||||
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIB
|
||||
AD47H7tlk1aWFEf1UK9Xnh2hELTSXX3/uE5Sxx32DINTL2wcqiLOgxTMEaNr1EeF
|
||||
dCkuADFclEsJfh+mWmhRsD7KKKlq4grMX9jTobfj0sd84M+d+YgkqAlP9f9b6QrX
|
||||
e9pv2FVCL467JARWSZRuLJ7SZOHK88ajNnAG36LFdtXBDOAcogtddRfAil/5PMP4
|
||||
HIgZQOG96h0yMDoIJB1RIicf8f56xsC5m1Jbz4B3V8rPcCGK9CKWLrgd0FiXZV45
|
||||
GMuXLsOfEaUEtMz/gRIdQlMHgTWk6Inprm9wynL51J0gE3BZIm26G1gpae3GcG5Z
|
||||
q8BQQbQfn6Tg/H8a+56H1CDclt9qQjRMRDH81r5w7hK1LvjKrEKjdmzmxaPAqq71
|
||||
Ne5gXJxYjgSwpFB5MYX4K0Do2zoqE7HhuGc/0oWhm0IrAy616tOZtmopoNiYoJ88
|
||||
xjHXRCKs6w6vPsNew75u5N7mU7IlCXjxVSF6cSyRd4fnBY3kRxZPJWlOe8jsIuED
|
||||
PZYfAI+10nOGNY7c3scvxgZCnNU0THryem0PNIM0XaM/fR+SH+Kl+V9x14sDouIS
|
||||
B6gCYEk2oZW7EdfLN3FXFufoIPNsR1KkDsh7RKYamMVlSsGEEFPt3h9I0c3kAaOT
|
||||
FHZ29DjuAuSGaEvs4NiOsYmaQP51BM1sFs/gkz678KZy
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
wzJ8juBHAKg9M4albgBgoNUeUgw7glBXH8g=
|
||||
-----END CERTIFICATE-----
|
||||
62
mysql-test/std_data/cachain/server.cachain
Normal file
62
mysql-test/std_data/cachain/server.cachain
Normal file
@@ -0,0 +1,62 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
wzJ8juBHAKg9M4albgBgoNUeUgw7glBXH8g=
|
||||
-----END CERTIFICATE-----
|
||||
52
mysql-test/std_data/cachain/server.key
Normal file
52
mysql-test/std_data/cachain/server.key
Normal file
@@ -0,0 +1,52 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
By7FxU8G7cnqto61l/KLwxdIeAZFui4=
|
||||
-----END PRIVATE KEY-----
|
||||
31
mysql-test/std_data/cachain/unrelated_root.crt
Normal file
31
mysql-test/std_data/cachain/unrelated_root.crt
Normal file
@@ -0,0 +1,31 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
@@ -103,6 +103,10 @@ sub skip_combinations {
|
||||
$skip{'include/check_windows_admin.inc'} = 'Requires admin privileges'
|
||||
unless IS_WINDOWS and Win32::IsAdminUser();
|
||||
|
||||
# MDEV-38326. Chained TLS certificates fails verification for schannel clients
|
||||
$skip{'main/chained_ssl_certificates.test'} = 'Skip if on Windows without OpenSSL'
|
||||
unless !IS_WINDOWS || $openssl_ver;
|
||||
|
||||
%skip;
|
||||
}
|
||||
|
||||
|
||||
41
mysql-test/suite/binlog/r/binlog_mdev37541.result
Normal file
41
mysql-test/suite/binlog/r/binlog_mdev37541.result
Normal file
@@ -0,0 +1,41 @@
|
||||
create table t1 (a int primary key, b text) engine=innodb;
|
||||
connect trx1_rollback,localhost,root,,;
|
||||
CREATE TABLE t_x (a int) engine=MEMORY;
|
||||
SET binlog_format=row;
|
||||
CREATE TEMPORARY TABLE tt_tmp ( id INT ) ENGINE = Memory;
|
||||
BEGIN;
|
||||
insert into t_x values (1);
|
||||
drop temporary table tt_tmp;
|
||||
insert into t1 values (99, "gotta log first");
|
||||
SET DEBUG_SYNC= 'reset';
|
||||
SET DEBUG_SYNC= "before_group_commit_queue SIGNAL trx1_at_log WAIT_FOR trx1_go";
|
||||
ROLLBACK;
|
||||
connect trx2_commit,localhost,root,,;
|
||||
insert into t1 values (99, "second best in binlog");
|
||||
connection default;
|
||||
SET DEBUG_SYNC= "now WAIT_FOR trx1_at_log";
|
||||
SET DEBUG_SYNC= "now SIGNAL trx1_go";
|
||||
connection trx2_commit;
|
||||
select * from t1;
|
||||
a b
|
||||
99 second best in binlog
|
||||
# Prove the logging order is Trx1, Trx2
|
||||
include/show_binlog_events.inc
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Annotate_rows # # insert into t_x values (1)
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t_x)
|
||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Annotate_rows # # insert into t1 values (99, "gotta log first")
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # ROLLBACK
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; insert into t1 values (99, "second best in binlog")
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
drop table t_x, t1;
|
||||
disconnect trx1_rollback;
|
||||
disconnect trx2_commit;
|
||||
# end of the tests
|
||||
59
mysql-test/suite/binlog/t/binlog_mdev37541.test
Normal file
59
mysql-test/suite/binlog/t/binlog_mdev37541.test
Normal file
@@ -0,0 +1,59 @@
|
||||
--source include/have_debug_sync.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_binlog_format_mixed.inc
|
||||
|
||||
# MDEV-37541 Race of rolling back and committing transaction to binlog
|
||||
# The tests reproduce a scenario of two conflicting transactions
|
||||
# of which the dependency decides to rollback. In order to reproduce the bug
|
||||
# the parent features side effects (produced by DROP TEMPORARY TABLE)
|
||||
# and multiple engines.
|
||||
# The tests prove that the child transaction can not win race to binlogging
|
||||
# with its parent as it gets stuck at engine lock acquiring all time
|
||||
# while the parent conducts binlogging on its own.
|
||||
|
||||
create table t1 (a int primary key, b text) engine=innodb;
|
||||
|
||||
connect(trx1_rollback,localhost,root,,);
|
||||
CREATE TABLE t_x (a int) engine=MEMORY;
|
||||
|
||||
--let $master_file= query_get_value(SHOW MASTER STATUS, File, 1)
|
||||
--let $binlog_start=query_get_value(SHOW MASTER STATUS, Position, 1)
|
||||
SET binlog_format=row;
|
||||
CREATE TEMPORARY TABLE tt_tmp ( id INT ) ENGINE = Memory;
|
||||
BEGIN;
|
||||
insert into t_x values (1);
|
||||
drop temporary table tt_tmp;
|
||||
insert into t1 values (99, "gotta log first");
|
||||
|
||||
SET DEBUG_SYNC= 'reset';
|
||||
SET DEBUG_SYNC= "before_group_commit_queue SIGNAL trx1_at_log WAIT_FOR trx1_go";
|
||||
|
||||
--send ROLLBACK
|
||||
|
||||
connect(trx2_commit,localhost,root,,);
|
||||
--send insert into t1 values (99, "second best in binlog")
|
||||
|
||||
connection default;
|
||||
|
||||
# Make sure ROLLBACK is in the binlogging phase ..
|
||||
SET DEBUG_SYNC= "now WAIT_FOR trx1_at_log";
|
||||
# .. and the contender trx2 in the locking phase ..
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.innodb_trx
|
||||
where trx_state = "LOCK WAIT" and trx_query like "%insert into t1 values%";
|
||||
source include/wait_condition.inc;
|
||||
# .. when both provided unfreeze the trx:s ..
|
||||
SET DEBUG_SYNC= "now SIGNAL trx1_go";
|
||||
|
||||
connection trx2_commit;
|
||||
reap;
|
||||
select * from t1;
|
||||
|
||||
# .. to observe proper binlogging.
|
||||
--echo # Prove the logging order is Trx1, Trx2
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
drop table t_x, t1;
|
||||
disconnect trx1_rollback;
|
||||
disconnect trx2_commit;
|
||||
--echo # end of the tests
|
||||
@@ -156,7 +156,7 @@ c1 c2
|
||||
1 one
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View character_set_client collation_connection
|
||||
v1 CREATE VIEW "v1" AS select "t1"."c1" AS "c1","t1"."c2" AS "c2" from "t1" union select "t1"."c1" AS "c1",NULL AS "NULL" from "t1" order by 1,2 cp1250 latin2_general_ci
|
||||
v1 CREATE VIEW "v1" AS select "__4"."c1" AS "c1","__4"."c2" AS "c2" from (select "__5"."c1" AS "c1","__5"."c2" AS "c2" from (select "t1"."c1" AS "c1","t1"."c2" AS "c2" from "t1" union select "t1"."c1" AS "c1",NULL AS "NULL" from "t1") "__5") "__4" order by 1,2 cp1250 latin2_general_ci
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
EXPLAIN EXTENDED SELECT '';
|
||||
|
||||
@@ -37,9 +37,9 @@ c2
|
||||
menny
|
||||
SELECT c2 FROM tx1 MINUS SELECT c2 from tx2 UNION SELECT c2 from tx3;
|
||||
c2
|
||||
jim
|
||||
menny
|
||||
linda
|
||||
jim
|
||||
kris
|
||||
create table MINUS (a int);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'MINUS (a int)' at line 1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1172,21 +1172,25 @@ eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) limit 2);
|
||||
--replace_result * 2
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) limit 2 offset 1);
|
||||
--replace_result * 2
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) order by 1 limit 2);
|
||||
--replace_result * 2
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) order by 1 limit 2 offset 1);
|
||||
--replace_result * 2
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
@@ -1194,6 +1198,7 @@ eval explain extended $q;
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) limit 2) union select 2;
|
||||
eval $q;
|
||||
--replace_result derived4 derived2
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
@@ -1204,16 +1209,19 @@ eval explain extended $q;
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 2) union select 2;
|
||||
eval $q;
|
||||
--replace_result derived4 derived2
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 2 offset 1) union select 2;
|
||||
eval $q;
|
||||
--replace_result derived4 derived2
|
||||
eval explain extended $q;
|
||||
|
||||
|
||||
let $q=
|
||||
select 3 union all (values (5), (7), (1), (3), (4) limit 2 offset 3);
|
||||
--replace_result * 3
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
@@ -1224,12 +1232,14 @@ eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 3 union all (values (5), (7), (1), (3), (4) order by 1 limit 2);
|
||||
--replace_result * 3
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 2) union all select 3;
|
||||
eval $q;
|
||||
--replace_result derived4 derived2
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
@@ -1254,12 +1264,14 @@ eval explain extended $q;
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 3 offset 1) union all select 3 order by 1;
|
||||
eval $q;
|
||||
--replace_result derived4 derived2
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 3 offset 1) union all select 3
|
||||
order by 1 limit 2 offset 1;
|
||||
eval $q;
|
||||
--replace_result derived4 derived2
|
||||
eval explain extended $q;
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
|
||||
@@ -17283,8 +17283,7 @@ set f1 = f1;
|
||||
return f1;
|
||||
END//
|
||||
SELECT fn104('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\0\0\0\0\0\0?\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0@\0\0\0\0\0\0@');
|
||||
fn104('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\0\0\0\0\0\0?\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0@\0\0\0\0\0\0@')
|
||||
| ||||