1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge branch '11.0' into 11.1

This commit is contained in:
Oleksandr Byelkin
2023-08-09 08:25:14 +02:00
870 changed files with 11721 additions and 6317 deletions

1
.gitignore vendored
View File

@@ -7,6 +7,7 @@
*.rpm *.rpm
.*.swp .*.swp
*.ninja *.ninja
.ccls-cache/
.ninja_* .ninja_*
*.mri *.mri
*.mri.tpl *.mri.tpl

View File

@@ -207,7 +207,7 @@ fedora-sanitizer:
- builddir/_CPack_Packages/Linux/RPM/SPECS/ - builddir/_CPack_Packages/Linux/RPM/SPECS/
parallel: parallel:
matrix: matrix:
- SANITIZER: [-DWITH_ASAN=YES, -DWITH_TSAN=YES, -DWITH_UBSAN=YES, -DWITH_MSAN=YES] - SANITIZER: [-DWITH_ASAN=YES, -DWITH_TSAN=YES, -DWITH_UBSAN=YES]
centos8: centos8:
stage: build stage: build
@@ -297,6 +297,7 @@ centos7:
main.mysqldump : Field separator argument is not what is expected; check the manual when executing 'SELECT INTO OUTFILE' main.mysqldump : Field separator argument is not what is expected; check the manual when executing 'SELECT INTO OUTFILE'
main.flush_logs_not_windows : query 'flush logs' succeeded - should have failed with error ER_CANT_CREATE_FILE (1004) main.flush_logs_not_windows : query 'flush logs' succeeded - should have failed with error ER_CANT_CREATE_FILE (1004)
main.mysql_upgrade_noengine : upgrade output order does not match the expected main.mysql_upgrade_noengine : upgrade output order does not match the expected
main.func_math : MDEV-20966 - Wrong error code
" > skiplist " > skiplist
- ./mtr --suite=main --force --parallel=auto --xml-report=$CI_PROJECT_DIR/junit.xml --skip-test-list=skiplist $RESTART_POLICY - ./mtr --suite=main --force --parallel=auto --xml-report=$CI_PROJECT_DIR/junit.xml --skip-test-list=skiplist $RESTART_POLICY
@@ -369,22 +370,6 @@ mysql-test-run-ubsan:
junit: junit:
- junit.xml - junit.xml
mysql-test-run-msan:
stage: test
variables:
RESTART_POLICY: "--force-restart"
dependencies:
- "fedora-sanitizer: [-DWITH_MSAN=YES]"
needs:
- "fedora-sanitizer: [-DWITH_MSAN=YES]"
<<: *mysql-test-run-def
allow_failure: true
artifacts:
when: always # Also show results when tests fail
reports:
junit:
- junit.xml
rpmlint: rpmlint:
stage: test stage: test
dependencies: dependencies:
@@ -439,52 +424,70 @@ fedora install:
- installed-database.sql - installed-database.sql
- upgraded-database.sql - upgraded-database.sql
fedora upgrade: cppcheck:
stage: test stage: sast
dependencies: needs: []
- fedora variables:
needs: GIT_STRATEGY: fetch
- fedora GIT_SUBMODULE_STRATEGY: normal
script: script:
- dnf install -y mariadb-server - yum install -y cppcheck diffutils
# Fedora does not support running services in Docker (like Debian packages do) so start it manually # --template: use a single-line template
- /usr/libexec/mariadb-check-socket # --force: check large directories without warning
- /usr/libexec/mariadb-prepare-db-dir # -i<directory>: ignore this directory when scanning
- sudo -u mysql /usr/libexec/mariadbd --basedir=/usr & sleep 10 # -j: run multiple cppcheck threads
# Dump database contents in installed state # Use newline to escape colon in yaml
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-installed-database.sql - >
- /usr/libexec/mariadb-check-upgrade cppcheck --template="{file}:{line}: {severity}: {message}" --force
# Dump database contents in upgraded state client dbug extra include libmariadb libmysqld libservices mysql-test mysys mysys_ssl pcre plugin
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > old-upgraded-database.sql strings tests unittest vio wsrep-lib sql sql-common storage
- mariadb --skip-column-names -e "SELECT @@version, @@version_comment" # Show version -istorage/mroonga -istorage/tokudb -istorage/spider -istorage/rocksdb -iextra/ -ilibmariadb/ -istorage/columnstore
# @TODO: Upgrade from Fedora 33 MariaDB 10.4 to MariaDB.org latest does not work --output-file=cppcheck.txt -j $(nproc)
# so do this manual step to remove conflicts until packaging is fixed # Parallel jobs may output findings in an nondeterministic order. Sort to match ignorelist.
- yum remove -y mariadb-server-utils mariadb-gssapi-server mariadb-cracklib-password-check mariadb-backup mariadb-connector-c-config - cat cppcheck.txt | sort > cppcheck_sorted.txt
- rm -f rpm/*debuginfo* # Not relevant in this test # Remove line numbers for diff
- yum install -y rpm/*.rpm - sed 's/:[^:]*:/:/' cppcheck_sorted.txt > cppcheck_sorted_no_line_numbers.txt
# nothing provides galera-4 on Fedora, so this step fails if built with wsrep # Only print new issues not found in ignore list
- mysql -e "SHUTDOWN;" - echo "Problems found in ignore list that were not discovered by cppcheck (may have been fixed)."
- /usr/bin/mariadb-install-db # This step should not do anything on upgrades, just exit - diff --changed-group-format='%>' --unchanged-group-format='' cppcheck_sorted_no_line_numbers.txt tests/code_quality/cppcheck_ignorelist.txt || true
- sudo -u mysql /usr/sbin/mariadbd & sleep 10 - echo "Problems found by cppcheck that were not in ignore list."
# Dump database contents in installed state - diff --changed-group-format='%<' --unchanged-group-format='' cppcheck_sorted_no_line_numbers.txt tests/code_quality/cppcheck_ignorelist.txt > lines_not_ignored.txt || true
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-installed-database.sql || true - cat lines_not_ignored.txt && test ! -s lines_not_ignored.txt
# The step above fails on: mariadb-dump: Couldn't execute 'show events': Cannot proceed, because event scheduler is disabled (1577)
# @TODO: Since we did a manual start, we also need to run upgrade manually
- /usr/bin/mariadb-upgrade
# Dump database contents in upgraded state
- mariadb-dump --all-databases --all-tablespaces --triggers --routines --events --skip-extended-insert > new-upgraded-database.sql
- |
mariadb --skip-column-names -e "SELECT @@version, @@version_comment" | tee /tmp/version
grep $MARIADB_MAJOR_VERSION /tmp/version || echo "MariaDB didn't upgrade properly"
- mariadb --table -e "SELECT * FROM mysql.global_priv; SHOW CREATE USER root@localhost; SHOW CREATE USER 'mariadb.sys'@localhost"
- mariadb --table -e "SELECT * FROM mysql.plugin; SHOW PLUGINS"
artifacts: artifacts:
when: always
paths: paths:
- old-installed-database.sql - cppcheck_sorted.txt
- old-upgraded-database.sql
- new-installed-database.sql
- new-upgraded-database.sql
flawfinder:
stage: sast
needs: []
variables:
GIT_STRATEGY: fetch
GIT_SUBMODULE_STRATEGY: normal
script:
- yum install -y python3 python3-pip jq diffutils git
- pip install flawfinder
- flawfinder --falsepositive --quiet --html . > flawfinder-all-vulnerabilities.html
- cat flawfinder-all-vulnerabilities.html | grep "Hits ="
- flawfinder --falsepositive --quiet --minlevel=5 --sarif . > flawfinder-output.json
# FlawFinder's --sarif output will display all vulnerabilities despite having --minlevel=5 specified.
# Therefore, we postprocess the results with jq and filter out findings where the vulnerability level is less than 5.
# Also in the SARIF output format, the vulnerabilities are ranked as 0.2/0.4/0.6/0.8/1.0 which correspond to the --minlevel=1/2/3/4/5 of FlawFinder.
# Additionally, we sort the results because individual findings are consistent across different runs, but their ordering may not be.
# Vulnerabilities can also be ignored in-line (/* Flawfinder: ignore */), but this option was chosen as to not clutter the codebase.
- jq 'del(.runs[] | .tool | .driver | .rules) | del(.runs[] | .results[] | select(.rank < 1)) | del(.runs[] | .results[] | .locations[] | .physicalLocation | .region | .startLine) | .runs[0].results|=sort_by(.fingerprints)' flawfinder-output.json > flawfinder-min-level5.json
# Diff against known vulnerabilities, but ignore the line number.
- echo "Problems found in ignore list that were not discovered by flawfinder (may have been fixed)."
- diff --changed-group-format='%>' --unchanged-group-format='' flawfinder-min-level5.json tests/code_quality/flawfinder_ignorelist.json || true
- echo "Problems found by flawfinder that were not in ignore list."
- diff --changed-group-format='%<' --unchanged-group-format='' flawfinder-min-level5.json tests/code_quality/flawfinder_ignorelist.json > lines_not_ignored.txt || true
- cat lines_not_ignored.txt && test ! -s lines_not_ignored.txt
artifacts:
when: always
paths:
- flawfinder-all-vulnerabilities.html
- flawfinder-min-level5.json
mini-benchmark: mini-benchmark:
stage: test stage: test
dependencies: dependencies:

View File

@@ -27,8 +27,6 @@ IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
"None" "Debug" "Release" "MinSizeRel" "RelWithDebInfo") "None" "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
ENDIF() ENDIF()
PROJECT(MariaDB)
# Remove the following comment if you don't want to have striped binaries # Remove the following comment if you don't want to have striped binaries
# in RPM's: # in RPM's:
@@ -39,6 +37,8 @@ FOREACH(p CMP0022 CMP0046 CMP0040 CMP0048 CMP0054 CMP0075 CMP0069 CMP0135)
ENDIF() ENDIF()
ENDFOREACH() ENDFOREACH()
PROJECT(MariaDB)
MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}") MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}")
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}

View File

@@ -2142,7 +2142,7 @@ static int get_options(int argc, char **argv)
current_db= my_strdup(PSI_NOT_INSTRUMENTED, *argv, MYF(MY_WME)); current_db= my_strdup(PSI_NOT_INSTRUMENTED, *argv, MYF(MY_WME));
} }
if (tty_password) if (tty_password)
opt_password= get_tty_password(NullS); opt_password= my_get_tty_password(NullS);
if (debug_info_flag) if (debug_info_flag)
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO; my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
if (debug_check_flag) if (debug_check_flag)
@@ -4887,7 +4887,7 @@ char *mysql_authentication_dialog_ask(MYSQL *mysql, int type,
if (type == 2) /* password */ if (type == 2) /* password */
{ {
s= get_tty_password(""); s= my_get_tty_password("");
strnmov(buf, s, buf_len); strnmov(buf, s, buf_len);
buf[buf_len-1]= 0; buf[buf_len-1]= 0;
my_free(s); my_free(s);

View File

@@ -1458,7 +1458,7 @@ int main(int argc, char **argv)
if (tty_password) if (tty_password)
{ {
opt_password= get_tty_password(NullS); opt_password= my_get_tty_password(NullS);
/* add password to defaults file */ /* add password to defaults file */
add_one_option_cnf_file(&ds_args, "password", opt_password); add_one_option_cnf_file(&ds_args, "password", opt_password);
} }

View File

@@ -369,7 +369,7 @@ int main(int argc,char *argv[])
} }
commands = temp_argv; commands = temp_argv;
if (tty_password) if (tty_password)
opt_password = get_tty_password(NullS); opt_password = my_get_tty_password(NullS);
(void) signal(SIGINT,endprog); /* Here if abort */ (void) signal(SIGINT,endprog); /* Here if abort */
(void) signal(SIGTERM,endprog); /* Here if abort */ (void) signal(SIGTERM,endprog); /* Here if abort */
@@ -1100,8 +1100,8 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
else if (argc == 1) else if (argc == 1)
{ {
/* prompt for password */ /* prompt for password */
typed_password= get_tty_password("New password: "); typed_password= my_get_tty_password("New password: ");
verified= get_tty_password("Confirm new password: "); verified= my_get_tty_password("Confirm new password: ");
if (strcmp(typed_password, verified) != 0) if (strcmp(typed_password, verified) != 0)
{ {
my_printf_error(0,"Passwords don't match",MYF(ME_BELL)); my_printf_error(0,"Passwords don't match",MYF(ME_BELL));

View File

@@ -2260,7 +2260,7 @@ get_one_option(const struct my_option *opt, const char *argument,
break; break;
} }
if (tty_password) if (tty_password)
pass= get_tty_password(NullS); pass= my_get_tty_password(NullS);
return 0; return 0;
} }

View File

@@ -481,7 +481,7 @@ static int get_options(int *argc, char ***argv)
DBUG_RETURN(1); DBUG_RETURN(1);
} }
if (tty_password) if (tty_password)
opt_password = get_tty_password(NullS); opt_password = my_get_tty_password(NullS);
if (debug_info_flag) if (debug_info_flag)
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO; my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
if (debug_check_flag) if (debug_check_flag)

View File

@@ -1351,7 +1351,7 @@ static int get_options(int *argc, char ***argv)
return EX_USAGE; return EX_USAGE;
} }
if (tty_password) if (tty_password)
opt_password=get_tty_password(NullS); opt_password=my_get_tty_password(NullS);
return(0); return(0);
} /* get_options */ } /* get_options */
@@ -2847,11 +2847,7 @@ static uint dump_routines_for_db(char *db)
routine_type[i], routine_name); routine_type[i], routine_name);
if (mysql_query_with_error_report(mysql, &routine_res, query_buff)) if (mysql_query_with_error_report(mysql, &routine_res, query_buff))
{ continue;
mysql_free_result(routine_list_res);
routine_list_res= 0;
DBUG_RETURN(1);
}
while ((row= mysql_fetch_row(routine_res))) while ((row= mysql_fetch_row(routine_res)))
{ {
@@ -3357,7 +3353,8 @@ static uint get_table_structure(const char *table, const char *db, char *table_t
my_snprintf(query_buff, sizeof(query_buff), my_snprintf(query_buff, sizeof(query_buff),
"select column_name, extra, generation_expression, data_type " "select column_name, extra, generation_expression, data_type "
"from information_schema.columns where table_schema=database() " "from information_schema.columns where table_schema=database() "
"and table_name=%s", quote_for_equal(table, temp_buff)); "and table_name=%s order by ordinal_position",
quote_for_equal(table, temp_buff));
if (mysql_query_with_error_report(mysql, &result, query_buff)) if (mysql_query_with_error_report(mysql, &result, query_buff))
{ {
if (path) if (path)
@@ -3442,7 +3439,8 @@ static uint get_table_structure(const char *table, const char *db, char *table_t
"`EXTRA` AS `Extra`, " "`EXTRA` AS `Extra`, "
"`COLUMN_COMMENT` AS `Comment` " "`COLUMN_COMMENT` AS `Comment` "
"FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE " "FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE "
"TABLE_SCHEMA = %s AND TABLE_NAME = %s"; "TABLE_SCHEMA = %s AND TABLE_NAME = %s "
"ORDER BY ORDINAL_POSITION";
verbose_msg("%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n", verbose_msg("%s: Warning: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
my_progname_short, mysql_error(mysql)); my_progname_short, mysql_error(mysql));

View File

@@ -319,7 +319,7 @@ static int get_options(int *argc, char ***argv)
current_db= *((*argv)++); current_db= *((*argv)++);
(*argc)--; (*argc)--;
if (tty_password) if (tty_password)
opt_password=get_tty_password(NullS); opt_password=my_get_tty_password(NullS);
return(0); return(0);
} }

View File

@@ -378,7 +378,7 @@ get_options(int *argc,char ***argv)
exit(ho_error); exit(ho_error);
if (tty_password) if (tty_password)
opt_password=get_tty_password(NullS); opt_password=my_get_tty_password(NullS);
if (opt_count) if (opt_count)
{ {
/* /*

View File

@@ -1545,7 +1545,7 @@ get_options(int *argc,char ***argv)
} }
if (tty_password) if (tty_password)
opt_password= get_tty_password(NullS); opt_password= my_get_tty_password(NullS);
DBUG_RETURN(0); DBUG_RETURN(0);
} }

View File

@@ -116,7 +116,7 @@ static my_bool opt_compress= 0, silent= 0, verbose= 0;
static my_bool debug_info_flag= 0, debug_check_flag= 0; static my_bool debug_info_flag= 0, debug_check_flag= 0;
static my_bool tty_password= 0; static my_bool tty_password= 0;
static my_bool opt_mark_progress= 0; static my_bool opt_mark_progress= 0;
static my_bool ps_protocol= 0, ps_protocol_enabled= 0; static my_bool ps_protocol= 0, ps_protocol_enabled= 0, ps2_protocol_enabled= 0;
static my_bool sp_protocol= 0, sp_protocol_enabled= 0; static my_bool sp_protocol= 0, sp_protocol_enabled= 0;
static my_bool view_protocol= 0, view_protocol_enabled= 0; static my_bool view_protocol= 0, view_protocol_enabled= 0;
static my_bool service_connection_enabled= 1; static my_bool service_connection_enabled= 1;
@@ -157,6 +157,7 @@ static struct property prop_list[] = {
{ &display_session_track_info, 0, 1, 1, "$ENABLED_STATE_CHANGE_INFO" }, { &display_session_track_info, 0, 1, 1, "$ENABLED_STATE_CHANGE_INFO" },
{ &display_metadata, 0, 0, 0, "$ENABLED_METADATA" }, { &display_metadata, 0, 0, 0, "$ENABLED_METADATA" },
{ &ps_protocol_enabled, 0, 0, 0, "$ENABLED_PS_PROTOCOL" }, { &ps_protocol_enabled, 0, 0, 0, "$ENABLED_PS_PROTOCOL" },
{ &ps2_protocol_enabled, 0, 0, 0, "$ENABLED_PS2_PROTOCOL" },
{ &view_protocol_enabled, 0, 0, 0, "$ENABLED_VIEW_PROTOCOL"}, { &view_protocol_enabled, 0, 0, 0, "$ENABLED_VIEW_PROTOCOL"},
{ &service_connection_enabled, 0, 1, 0, "$ENABLED_SERVICE_CONNECTION"}, { &service_connection_enabled, 0, 1, 0, "$ENABLED_SERVICE_CONNECTION"},
{ &disable_query_log, 0, 0, 1, "$ENABLED_QUERY_LOG" }, { &disable_query_log, 0, 0, 1, "$ENABLED_QUERY_LOG" },
@@ -173,6 +174,7 @@ enum enum_prop {
P_SESSION_TRACK, P_SESSION_TRACK,
P_META, P_META,
P_PS, P_PS,
P_PS2,
P_VIEW, P_VIEW,
P_CONN, P_CONN,
P_QUERY, P_QUERY,
@@ -263,6 +265,7 @@ static size_t suite_dir_len, overlay_dir_len;
/* Precompiled re's */ /* Precompiled re's */
static regex_t ps_re; /* the query can be run using PS protocol */ static regex_t ps_re; /* the query can be run using PS protocol */
static regex_t ps2_re; /* the query can be run using PS protocol with second execution*/
static regex_t sp_re; /* the query can be run as a SP */ static regex_t sp_re; /* the query can be run as a SP */
static regex_t view_re; /* the query can be run as a view*/ static regex_t view_re; /* the query can be run as a view*/
@@ -381,6 +384,7 @@ enum enum_commands {
Q_LOWERCASE, Q_LOWERCASE,
Q_START_TIMER, Q_END_TIMER, Q_START_TIMER, Q_END_TIMER,
Q_CHARACTER_SET, Q_DISABLE_PS_PROTOCOL, Q_ENABLE_PS_PROTOCOL, Q_CHARACTER_SET, Q_DISABLE_PS_PROTOCOL, Q_ENABLE_PS_PROTOCOL,
Q_DISABLE_PS2_PROTOCOL, Q_ENABLE_PS2_PROTOCOL,
Q_DISABLE_VIEW_PROTOCOL, Q_ENABLE_VIEW_PROTOCOL, Q_DISABLE_VIEW_PROTOCOL, Q_ENABLE_VIEW_PROTOCOL,
Q_DISABLE_SERVICE_CONNECTION, Q_ENABLE_SERVICE_CONNECTION, Q_DISABLE_SERVICE_CONNECTION, Q_ENABLE_SERVICE_CONNECTION,
Q_ENABLE_NON_BLOCKING_API, Q_DISABLE_NON_BLOCKING_API, Q_ENABLE_NON_BLOCKING_API, Q_DISABLE_NON_BLOCKING_API,
@@ -474,6 +478,8 @@ const char *command_names[]=
"character_set", "character_set",
"disable_ps_protocol", "disable_ps_protocol",
"enable_ps_protocol", "enable_ps_protocol",
"disable_ps2_protocol",
"enable_ps2_protocol",
"disable_view_protocol", "disable_view_protocol",
"enable_view_protocol", "enable_view_protocol",
"disable_service_connection", "disable_service_connection",
@@ -7394,7 +7400,7 @@ int parse_args(int argc, char **argv)
if (argc == 1) if (argc == 1)
opt_db= *argv; opt_db= *argv;
if (tty_password) if (tty_password)
opt_pass= get_tty_password(NullS); /* purify tested */ opt_pass= my_get_tty_password(NullS); /* purify tested */
if (debug_info_flag) if (debug_info_flag)
my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO; my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
if (debug_check_flag) if (debug_check_flag)
@@ -8482,6 +8488,19 @@ void run_query_stmt(struct st_connection *cn, struct st_command *command,
} }
#endif #endif
/*
Execute the query first time if second execution enable
*/
if(ps2_protocol_enabled && match_re(&ps2_re, query))
{
if (do_stmt_execute(cn))
{
handle_error(command, mysql_stmt_errno(stmt),
mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds);
goto end;
}
}
/* /*
Execute the query Execute the query
*/ */
@@ -9092,6 +9111,9 @@ int util_query(MYSQL* org_mysql, const char* query){
org_mysql->unix_socket); org_mysql->unix_socket);
cur_con->util_mysql= mysql; cur_con->util_mysql= mysql;
if (mysql->charset != org_mysql->charset)
mysql_set_character_set(mysql, org_mysql->charset->
IF_EMBEDDED(cs_name.str, csname));
} }
} }
else else
@@ -9471,6 +9493,13 @@ void init_re(void)
"[[:space:]]*UNINSTALL[[:space:]]+|" "[[:space:]]*UNINSTALL[[:space:]]+|"
"[[:space:]]*UPDATE[[:space:]]" "[[:space:]]*UPDATE[[:space:]]"
")"; ")";
/*
Filter for queries that can be run for second
execution of prepare statement
*/
const char *ps2_re_str =
"^("
"[[:space:]]*SELECT[[:space:]])";
/* /*
Filter for queries that can be run as views Filter for queries that can be run as views
@@ -9480,6 +9509,7 @@ void init_re(void)
"[[:space:]]*SELECT[[:space:]])"; "[[:space:]]*SELECT[[:space:]])";
init_re_comp(&ps_re, ps_re_str); init_re_comp(&ps_re, ps_re_str);
init_re_comp(&ps2_re, ps2_re_str);
init_re_comp(&sp_re, sp_re_str); init_re_comp(&sp_re, sp_re_str);
init_re_comp(&view_re, view_re_str); init_re_comp(&view_re, view_re_str);
} }
@@ -9516,6 +9546,7 @@ int match_re(regex_t *re, char *str)
void free_re(void) void free_re(void)
{ {
regfree(&ps_re); regfree(&ps_re);
regfree(&ps2_re);
regfree(&sp_re); regfree(&sp_re);
regfree(&view_re); regfree(&view_re);
} }
@@ -9867,6 +9898,9 @@ int main(int argc, char **argv)
if (cursor_protocol) if (cursor_protocol)
ps_protocol= 1; ps_protocol= 1;
/* Enable second execution of SELECT for ps-protocol
if ps-protocol is used */
ps2_protocol_enabled= ps_protocol;
ps_protocol_enabled= ps_protocol; ps_protocol_enabled= ps_protocol;
sp_protocol_enabled= sp_protocol; sp_protocol_enabled= sp_protocol;
view_protocol_enabled= view_protocol; view_protocol_enabled= view_protocol;
@@ -10290,6 +10324,12 @@ int main(int argc, char **argv)
case Q_ENABLE_PS_PROTOCOL: case Q_ENABLE_PS_PROTOCOL:
set_property(command, P_PS, ps_protocol); set_property(command, P_PS, ps_protocol);
break; break;
case Q_DISABLE_PS2_PROTOCOL:
set_property(command, P_PS2, 0);
break;
case Q_ENABLE_PS2_PROTOCOL:
set_property(command, P_PS2, ps_protocol);
break;
case Q_DISABLE_VIEW_PROTOCOL: case Q_DISABLE_VIEW_PROTOCOL:
set_property(command, P_VIEW, 0); set_property(command, P_VIEW, 0);
/* Close only util connections */ /* Close only util connections */

View File

@@ -10,7 +10,7 @@ FUNCTION (CHECK_AWS_SDK RETVAL REASON)
SKIP_AWS_SDK("AWS_SDK_EXTERNAL_PROJECT is not ON") SKIP_AWS_SDK("AWS_SDK_EXTERNAL_PROJECT is not ON")
ENDIF() ENDIF()
IF(NOT NOT_FOR_DISTRIBUTION) IF(NOT NOT_FOR_DISTRIBUTION)
SKIP_AWS_SDK("AWS SDK has Apache 2.0 License which is not complatible with GPLv2. Set -DNOT_FOR_DISTRIBUTION=ON if you need it") SKIP_AWS_SDK("AWS SDK has Apache 2.0 License which is not compatible with GPLv2. Set -DNOT_FOR_DISTRIBUTION=ON if you need it")
ENDIF() ENDIF()
# Check compiler support # Check compiler support
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU") IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU")

View File

@@ -73,7 +73,7 @@ It was originally forked from Percona XtraBackup 2.3.8.")
# Packages with default description # Packages with default description
SET(CPACK_RPM_client_PACKAGE_SUMMARY "MariaDB database client binaries") SET(CPACK_RPM_client_PACKAGE_SUMMARY "MariaDB database client binaries")
SET(CPACK_RPM_client_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_DESCRIPTION}") SET(CPACK_RPM_client_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_DESCRIPTION}")
SET(CPACK_RPM_common_PACKAGE_SUMMARY "MariaDB database common files (e.g. /etc/mysql/conf.d/mariadb.cnf)") SET(CPACK_RPM_common_PACKAGE_SUMMARY "MariaDB database common configuration files (e.g. /etc/mysql/conf.d/mariadb.cnf)")
SET(CPACK_RPM_common_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_DESCRIPTION}") SET(CPACK_RPM_common_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_DESCRIPTION}")
SET(CPACK_RPM_compat_PACKAGE_SUMMARY "MariaDB database client library MySQL compat package") SET(CPACK_RPM_compat_PACKAGE_SUMMARY "MariaDB database client library MySQL compat package")
SET(CPACK_RPM_compat_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_DESCRIPTION}") SET(CPACK_RPM_compat_PACKAGE_DESCRIPTION "${CPACK_RPM_PACKAGE_DESCRIPTION}")
@@ -109,6 +109,8 @@ SET(CPACK_RPM_SPEC_MORE_DEFINE "
%define restart_flag %{restart_flag_dir}/need-restart %define restart_flag %{restart_flag_dir}/need-restart
%define _lto_cflags %{nil} %define _lto_cflags %{nil}
%define pretrans %{nil}
%{?filter_setup: %{?filter_setup:
%filter_provides_in \\\\.\\\\(test\\\\|result\\\\|h\\\\|cc\\\\|c\\\\|inc\\\\|opt\\\\|ic\\\\|cnf\\\\|rdiff\\\\|cpp\\\\)$ %filter_provides_in \\\\.\\\\(test\\\\|result\\\\|h\\\\|cc\\\\|c\\\\|inc\\\\|opt\\\\|ic\\\\|cnf\\\\|rdiff\\\\|cpp\\\\)$
%filter_requires_in \\\\.\\\\(test\\\\|result\\\\|h\\\\|cc\\\\|c\\\\|inc\\\\|opt\\\\|ic\\\\|cnf\\\\|rdiff\\\\|cpp\\\\)$ %filter_requires_in \\\\.\\\\(test\\\\|result\\\\|h\\\\|cc\\\\|c\\\\|inc\\\\|opt\\\\|ic\\\\|cnf\\\\|rdiff\\\\|cpp\\\\)$
@@ -259,6 +261,8 @@ SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_compat_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) SET(CPACK_RPM_compat_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_compat_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) SET(CPACK_RPM_compat_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
SET(CPACK_RPM_cracklib-password-check_POST_INSTALL_SCRIPT_FILE
${CMAKE_SOURCE_DIR}/plugin/cracklib_password_check/support-files/rpm/mariadb-plugin-cracklib-password-check-postin.sh)
MACRO(ALTERNATIVE_NAME real alt) MACRO(ALTERNATIVE_NAME real alt)
IF(${ARGC} GREATER 2) IF(${ARGC} GREATER 2)

42
debian/control vendored
View File

@@ -82,9 +82,9 @@ Description: MariaDB database development files
language in the world. The main goals of MariaDB are speed, robustness and language in the world. The main goals of MariaDB are speed, robustness and
ease of use. ease of use.
. .
This package includes development libraries and header files. To allow sources This package includes development libraries and header files to allow sources
expecting the MariaDB Connector/C to build. Sources that expect the MySQL expecting the MariaDB Connector/C to build. Sources that expect the MySQL
Client libraries should use files from the libmariadb-dev-compat package. client libraries should use files from the libmariadb-dev-compat package.
Package: libmariadb-dev-compat Package: libmariadb-dev-compat
Architecture: any Architecture: any
@@ -232,18 +232,18 @@ Breaks: libmariadb-dev (<< ${source:Version}),
Replaces: libmariadb-dev (<< ${source:Version}), Replaces: libmariadb-dev (<< ${source:Version}),
libmariadbclient-dev (<< ${source:Version}), libmariadbclient-dev (<< ${source:Version}),
libmysqld-dev libmysqld-dev
Description: MariaDB embedded database, development files Description: MariaDB embedded database, development files package
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and language in the world. The main goals of MariaDB are speed, robustness and
ease of use. ease of use.
. .
This package includes the embedded server library development and header files. This package includes the MariaDB embedded server library development and header files.
Package: mysql-common Package: mysql-common
Architecture: all Architecture: all
Depends: ${misc:Depends} Depends: ${misc:Depends}
Description: MariaDB database common files (e.g. /etc/mysql/my.cnf) Description: MariaDB client common configuration files package (e.g. /etc/mysql/my.cnf)
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and language in the world. The main goals of MariaDB are speed, robustness and
@@ -257,7 +257,7 @@ Architecture: all
Depends: mysql-common (>= 5.6.25), Depends: mysql-common (>= 5.6.25),
${misc:Depends} ${misc:Depends}
Multi-Arch: foreign Multi-Arch: foreign
Description: MariaDB common configuration files Description: MariaDB database common files (e.g. /etc/mysql/mariadb.conf.d/)
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
server. SQL (Structured Query Language) is the most popular database query server. SQL (Structured Query Language) is the most popular database query
language in the world. The main goals of MariaDB are speed, robustness and language in the world. The main goals of MariaDB are speed, robustness and
@@ -929,8 +929,8 @@ Depends: mariadb-client-core (= ${binary:Version}),
${misc:Depends}, ${misc:Depends},
${shlibs:Depends} ${shlibs:Depends}
Description: Backup tool for MariaDB server Description: Backup tool for MariaDB server
This backup tool is guaranteed to be compatible with MariaDB. Based on Xtrabackup, but improved to work with MariaDB server.
Based on Xtrabackup, but improved to work with MariaDB. This backup tool is guaranteed to be compatible with MariaDB server.
. .
Please refer to the MariaDB Knowledge Base on more information on Please refer to the MariaDB Knowledge Base on more information on
how to use this tool. how to use this tool.
@@ -957,11 +957,11 @@ Replaces: mariadb-connect-engine-10.0,
mariadb-connect-engine-10.4, mariadb-connect-engine-10.4,
mariadb-server-10.0, mariadb-server-10.0,
mariadb-server-10.1 mariadb-server-10.1
Description: Connect storage engine for MariaDB Description: Connect storage engine for MariaDB server
Connect engine supports a number of file formats (dbf, xml, txt, bin, etc), Connect engine supports a number of file formats (dbf, xml, txt, bin, etc),
connections to ODBC tables and remote MySQL tables, as well as a number of connections to ODBC tables and remote MySQL tables, as well as a number of
other interesting features. other interesting features.
This package contains the Connect plugin for MariaDB. This package contains the Connect plugin for MariaDB server.
Package: mariadb-plugin-s3 Package: mariadb-plugin-s3
Architecture: any Architecture: any
@@ -988,10 +988,10 @@ Replaces: mariadb-rocksdb-engine-10.2,
mariadb-rocksdb-engine-10.3, mariadb-rocksdb-engine-10.3,
mariadb-rocksdb-engine-10.4 mariadb-rocksdb-engine-10.4
Recommends: python3-mysqldb Recommends: python3-mysqldb
Description: RocksDB storage engine for MariaDB Description: RocksDB storage engine for MariaDB server
The RocksDB storage engine is a high performance storage engine, aimed The RocksDB storage engine is a high performance storage engine, aimed
at maximising storage efficiency while maintaining InnoDB-like performance. at maximising storage efficiency while maintaining InnoDB-like performance.
This package contains the RocksDB plugin for MariaDB. This package contains the RocksDB plugin for MariaDB server.
Package: mariadb-plugin-oqgraph Package: mariadb-plugin-oqgraph
Architecture: any Architecture: any
@@ -1013,10 +1013,10 @@ Replaces: mariadb-oqgraph-engine-10.0,
mariadb-oqgraph-engine-10.4, mariadb-oqgraph-engine-10.4,
mariadb-server-10.0, mariadb-server-10.0,
mariadb-server-10.1 mariadb-server-10.1
Description: OQGraph storage engine for MariaDB Description: OQGraph storage engine for MariaDB server
The OQGraph engine is a computation engine plugin for handling hierarchies The OQGraph engine is a computation engine plugin for handling hierarchies
(trees) and graphs (friend-of-a-friend, etc) cleanly through standard SQL. (trees) and graphs (friend-of-a-friend, etc) cleanly through standard SQL.
This package contains the OQGraph plugin for MariaDB. This package contains the OQGraph plugin for MariaDB server.
Package: mariadb-plugin-mroonga Package: mariadb-plugin-mroonga
Architecture: any-alpha any-amd64 any-arm any-arm64 any-i386 any-ia64 any-mips64el any-mips64r6el any-mipsel any-mipsr6el any-nios2 any-powerpcel any-ppc64el any-sh3 any-sh4 any-tilegx Architecture: any-alpha any-amd64 any-arm any-arm64 any-i386 any-ia64 any-mips64el any-mips64r6el any-mipsel any-mipsr6el any-nios2 any-powerpcel any-ppc64el any-sh3 any-sh4 any-tilegx
@@ -1033,10 +1033,10 @@ Replaces: mariadb-server-10.0,
mariadb-server-10.2, mariadb-server-10.2,
mariadb-server-10.3, mariadb-server-10.3,
mariadb-server-10.4 mariadb-server-10.4
Description: Mroonga storage engine for MariaDB Description: Mroonga storage engine for MariaDB server
Mroonga (formerly named Groonga Storage Engine) is a storage engine that Mroonga (formerly named Groonga Storage Engine) is a storage engine that
provides fast CJK-ready full text searching using column store. provides fast CJK-ready full text searching using column store.
This package contains the Mroonga plugin for MariaDB. This package contains the Mroonga plugin for MariaDB server.
Package: mariadb-plugin-spider Package: mariadb-plugin-spider
Architecture: any Architecture: any
@@ -1053,9 +1053,9 @@ Replaces: mariadb-server-10.0,
mariadb-server-10.2, mariadb-server-10.2,
mariadb-server-10.3, mariadb-server-10.3,
mariadb-server-10.4 mariadb-server-10.4
Description: Spider storage engine for MariaDB Description: Spider storage engine for MariaDB server
The Spider storage engine with built-in sharding features. It supports The Spider storage engine with built-in sharding features. It supports
partitioning and xa transactions, and allows tables of different MariaDB partitioning and xa transactions, and allows tables of different MariaDB server
instances to be handled as if they were on the same instance. It refers to one instances to be handled as if they were on the same instance. It refers to one
possible implementation of ISO/IEC 9075-9:2008 SQL/MED. possible implementation of ISO/IEC 9075-9:2008 SQL/MED.
@@ -1110,11 +1110,11 @@ Depends: libcrack2 (>= 2.9.0),
mariadb-server, mariadb-server,
${misc:Depends}, ${misc:Depends},
${shlibs:Depends} ${shlibs:Depends}
Description: CrackLib Password Validation Plugin for MariaDB Description: CrackLib Password Validation Plugin for MariaDB server
This password validation plugin uses cracklib to allow only This password validation plugin uses cracklib to allow only
sufficiently secure (as defined by cracklib) user passwords in MariaDB. sufficiently secure (as defined by cracklib) user passwords in MariaDB server.
. .
Install and configure this to enforce stronger passwords for MariaDB users. Install and configure this to enforce stronger passwords for MariaDB server users.
Package: mariadb-plugin-hashicorp-key-management Package: mariadb-plugin-hashicorp-key-management
Architecture: any Architecture: any

View File

@@ -1129,11 +1129,15 @@ print_summary(
fprintf(fil_out, "index_id\t#pages\t\t#leaf_pages\t#recs_per_page" fprintf(fil_out, "index_id\t#pages\t\t#leaf_pages\t#recs_per_page"
"\t#bytes_per_page\n"); "\t#bytes_per_page\n");
for (std::map<unsigned long long, per_index_stats>::const_iterator it = index_ids.begin(); for (const auto &ids : index_ids) {
it != index_ids.end(); it++) { const per_index_stats& index = ids.second;
const per_index_stats& index = it->second; if (!index.pages) {
DBUG_ASSERT(index.free_pages);
continue;
}
fprintf(fil_out, "%lld\t\t%lld\t\t%lld\t\t%lld\t\t%lld\n", fprintf(fil_out, "%lld\t\t%lld\t\t%lld\t\t%lld\t\t%lld\n",
it->first, index.pages, index.leaf_pages, ids.first, index.pages, index.leaf_pages,
index.total_n_recs / index.pages, index.total_n_recs / index.pages,
index.total_data_bytes / index.pages); index.total_data_bytes / index.pages);
} }

View File

@@ -147,7 +147,9 @@ IF(WOLFSSL_X86_64_BUILD)
LIST(APPEND WOLFCRYPT_SOURCES ${WOLFCRYPT_SRCDIR}/cpuid.c) LIST(APPEND WOLFCRYPT_SOURCES ${WOLFCRYPT_SRCDIR}/cpuid.c)
IF(MSVC) IF(MSVC)
SET(WOLFSSL_AESNI 1) SET(WOLFSSL_AESNI 1)
LIST(APPEND WOLFCRYPT_SOURCES ${WOLFCRYPT_SRCDIR}/aes_asm.asm) LIST(APPEND WOLFCRYPT_SOURCES
${WOLFCRYPT_SRCDIR}/aes_asm.asm
${WOLFCRYPT_SRCDIR}/aes_gcm_asm.asm)
IF(CMAKE_C_COMPILER_ID MATCHES Clang) IF(CMAKE_C_COMPILER_ID MATCHES Clang)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes -msse4.2 -mpclmul -mrdrnd -mrdseed") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -maes -msse4.2 -mpclmul -mrdrnd -mrdseed")
ENDIF() ENDIF()

View File

@@ -78,4 +78,5 @@
{ "HA_ERR_ABORTED_BY_USER", HA_ERR_ABORTED_BY_USER, "" }, { "HA_ERR_ABORTED_BY_USER", HA_ERR_ABORTED_BY_USER, "" },
{ "HA_ERR_DISK_FULL", HA_ERR_DISK_FULL, "" }, { "HA_ERR_DISK_FULL", HA_ERR_DISK_FULL, "" },
{ "HA_ERR_INCOMPATIBLE_DEFINITION", HA_ERR_INCOMPATIBLE_DEFINITION, "" }, { "HA_ERR_INCOMPATIBLE_DEFINITION", HA_ERR_INCOMPATIBLE_DEFINITION, "" },
{ "HA_ERR_NO_ENCRYPTION", HA_ERR_NO_ENCRYPTION, "" },
{ "HA_ERR_COMMIT_ERROR", HA_ERR_COMMIT_ERROR, "" }, { "HA_ERR_COMMIT_ERROR", HA_ERR_COMMIT_ERROR, "" },

View File

@@ -37,6 +37,7 @@ typedef struct st_json_string_t
const uchar *c_str; /* Current position in JSON string */ const uchar *c_str; /* Current position in JSON string */
const uchar *str_end; /* The end on the string. */ const uchar *str_end; /* The end on the string. */
my_wc_t c_next; /* UNICODE of the last read character */ my_wc_t c_next; /* UNICODE of the last read character */
int c_next_len; /* character lenght of the last read character. */
int error; /* error code. */ int error; /* error code. */
CHARSET_INFO *cs; /* Character set of the JSON string. */ CHARSET_INFO *cs; /* Character set of the JSON string. */
@@ -50,7 +51,7 @@ void json_string_set_cs(json_string_t *s, CHARSET_INFO *i_cs);
void json_string_set_str(json_string_t *s, void json_string_set_str(json_string_t *s,
const uchar *str, const uchar *end); const uchar *str, const uchar *end);
#define json_next_char(j) \ #define json_next_char(j) \
(j)->wc((j)->cs, &(j)->c_next, (j)->c_str, (j)->str_end) ((j)->c_next_len= (j)->wc((j)->cs, &(j)->c_next, (j)->c_str, (j)->str_end))
#define json_eos(j) ((j)->c_str >= (j)->str_end) #define json_eos(j) ((j)->c_str >= (j)->str_end)
/* /*
read_string_const_chr() reads the next character of the string constant read_string_const_chr() reads the next character of the string constant

View File

@@ -250,11 +250,30 @@ static inline void lex_string_set3(LEX_CSTRING *lex_str, const char *c_str,
static inline int safe_strcpy(char *dst, size_t dst_size, const char *src) static inline int safe_strcpy(char *dst, size_t dst_size, const char *src)
{ {
DBUG_ASSERT(dst_size > 0); DBUG_ASSERT(dst_size > 0);
/* Note, strncpy will zerofill end of dst if src shorter than dst_size */
/* 1) IF there is a 0 byte in the first dst_size bytes of src, strncpy will
* 0-terminate dst, and pad dst with additional 0 bytes out to dst_size.
*
* 2) IF there is no 0 byte in the first dst_size bytes of src, strncpy will
* copy dst_size bytes, and the final byte won't be 0.
*
* In GCC 8+, the `-Wstringop-truncation` warning will object to strncpy()
* being used in this way, so we need to disable this warning for this
* single statement.
*/
#if defined(__GNUC__) && __GNUC__ >= 8
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstringop-truncation"
#endif
strncpy(dst, src, dst_size); strncpy(dst, src, dst_size);
#if defined(__GNUC__) && __GNUC__ >= 8
#pragma GCC diagnostic pop
#endif
if (dst[dst_size-1]) if (dst[dst_size-1])
{ {
/* Ensure string is zero terminated */ /* Only possible in case (2), meaning src was truncated. */
dst[dst_size-1]= 0; dst[dst_size-1]= 0;
return 1; return 1;
} }

View File

@@ -48,6 +48,7 @@
#define HA_OPEN_NO_PSI_CALL 1024U /* Don't call/connect PSI */ #define HA_OPEN_NO_PSI_CALL 1024U /* Don't call/connect PSI */
#define HA_OPEN_MERGE_TABLE 2048U #define HA_OPEN_MERGE_TABLE 2048U
#define HA_OPEN_FOR_CREATE 4096U #define HA_OPEN_FOR_CREATE 4096U
#define HA_OPEN_FOR_DROP (1U << 13) /* Open part of drop */
/* /*
Allow opening even if table is incompatible as this is for ALTER TABLE which Allow opening even if table is incompatible as this is for ALTER TABLE which
@@ -270,10 +271,9 @@ enum ha_base_keytype {
#define HA_NOSAME 1U /* Set if not dupplicated records */ #define HA_NOSAME 1U /* Set if not dupplicated records */
#define HA_PACK_KEY 2U /* Pack string key to previous key */ #define HA_PACK_KEY 2U /* Pack string key to previous key */
#define HA_AUTO_KEY 16U #define HA_AUTO_KEY 16U /* MEMORY/MyISAM/Aria internal */
#define HA_BINARY_PACK_KEY 32U /* Packing of all keys to prev key */ #define HA_BINARY_PACK_KEY 32U /* Packing of all keys to prev key */
#define HA_FULLTEXT 128U /* For full-text search */ #define HA_FULLTEXT 128U /* For full-text search */
#define HA_UNIQUE_CHECK 256U /* Check the key for uniqueness */
#define HA_SPATIAL 1024U /* For spatial search */ #define HA_SPATIAL 1024U /* For spatial search */
#define HA_NULL_ARE_EQUAL 2048U /* NULL in key are cmp as equal */ #define HA_NULL_ARE_EQUAL 2048U /* NULL in key are cmp as equal */
#define HA_GENERATED_KEY 8192U /* Automatically generated key */ #define HA_GENERATED_KEY 8192U /* Automatically generated key */
@@ -285,7 +285,7 @@ enum ha_base_keytype {
/* The combination of the above can be used for key type comparison. */ /* The combination of the above can be used for key type comparison. */
#define HA_KEYFLAG_MASK (HA_NOSAME | HA_AUTO_KEY | \ #define HA_KEYFLAG_MASK (HA_NOSAME | HA_AUTO_KEY | \
HA_FULLTEXT | HA_UNIQUE_CHECK | \ HA_FULLTEXT | \
HA_SPATIAL | HA_NULL_ARE_EQUAL | HA_GENERATED_KEY | \ HA_SPATIAL | HA_NULL_ARE_EQUAL | HA_GENERATED_KEY | \
HA_UNIQUE_HASH) HA_UNIQUE_HASH)
@@ -454,6 +454,7 @@ enum ha_base_keytype {
#define HA_ERR_CRASHED 126 /* Indexfile is crashed */ #define HA_ERR_CRASHED 126 /* Indexfile is crashed */
#define HA_ERR_WRONG_IN_RECORD 127 /* Record-file is crashed */ #define HA_ERR_WRONG_IN_RECORD 127 /* Record-file is crashed */
#define HA_ERR_OUT_OF_MEM 128 /* Out of memory */ #define HA_ERR_OUT_OF_MEM 128 /* Out of memory */
#define HA_ERR_RETRY_INIT 129 /* Initialization failed and should be retried */
#define HA_ERR_NOT_A_TABLE 130 /* not a MYI file - no signature */ #define HA_ERR_NOT_A_TABLE 130 /* not a MYI file - no signature */
#define HA_ERR_WRONG_COMMAND 131 /* Command not supported */ #define HA_ERR_WRONG_COMMAND 131 /* Command not supported */
#define HA_ERR_OLD_FILE 132 /* old databasfile */ #define HA_ERR_OLD_FILE 132 /* old databasfile */
@@ -529,14 +530,15 @@ enum ha_base_keytype {
#define HA_ERR_DISK_FULL 189 #define HA_ERR_DISK_FULL 189
#define HA_ERR_INCOMPATIBLE_DEFINITION 190 #define HA_ERR_INCOMPATIBLE_DEFINITION 190
#define HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE 191 /* Too many words in a phrase */ #define HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE 191 /* Too many words in a phrase */
#define HA_ERR_DECRYPTION_FAILED 192 /* Table encrypted but decypt failed */ #define HA_ERR_DECRYPTION_FAILED 192 /* Table encrypted but decrypt failed */
#define HA_ERR_FK_DEPTH_EXCEEDED 193 /* FK cascade depth exceeded */ #define HA_ERR_FK_DEPTH_EXCEEDED 193 /* FK cascade depth exceeded */
#define HA_ERR_TABLESPACE_MISSING 194 /* Missing Tablespace */ #define HA_ERR_TABLESPACE_MISSING 194 /* Missing Tablespace */
#define HA_ERR_SEQUENCE_INVALID_DATA 195 #define HA_ERR_SEQUENCE_INVALID_DATA 195
#define HA_ERR_SEQUENCE_RUN_OUT 196 #define HA_ERR_SEQUENCE_RUN_OUT 196
#define HA_ERR_COMMIT_ERROR 197 #define HA_ERR_COMMIT_ERROR 197
#define HA_ERR_PARTITION_LIST 198 #define HA_ERR_PARTITION_LIST 198
#define HA_ERR_LAST 198 /* Copy of last error nr * */ #define HA_ERR_NO_ENCRYPTION 199
#define HA_ERR_LAST 199 /* Copy of last error nr * */
/* Number of different errors */ /* Number of different errors */
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1) #define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)

View File

@@ -109,7 +109,8 @@ static const char *handler_error_messages[]=
"Sequence has been run out", "Sequence has been run out",
"Sequence values are conflicting", "Sequence values are conflicting",
"Error during commit", "Error during commit",
"Cannot select partitions" "Cannot select partitions",
"Cannot initialize encryption. Check that all encryption parameters have been set"
}; };
#endif /* MYSYS_MY_HANDLER_ERRORS_INCLUDED */ #endif /* MYSYS_MY_HANDLER_ERRORS_INCLUDED */

View File

@@ -1093,7 +1093,7 @@ extern size_t escape_string_for_mysql(CHARSET_INFO *charset_info,
char *to, size_t to_length, char *to, size_t to_length,
const char *from, size_t length, const char *from, size_t length,
my_bool *overflow); my_bool *overflow);
extern char *get_tty_password(const char *opt_message); extern char *my_get_tty_password(const char *opt_message);
#ifdef _WIN32 #ifdef _WIN32
#define BACKSLASH_MBTAIL #define BACKSLASH_MBTAIL
/* File system character set */ /* File system character set */

View File

@@ -141,6 +141,7 @@ typedef unsigned long long my_ulonglong;
#define ER_WRONG_FK_OPTION_FOR_VIRTUAL_COLUMN ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN #define ER_WRONG_FK_OPTION_FOR_VIRTUAL_COLUMN ER_WRONG_FK_OPTION_FOR_GENERATED_COLUMN
#define ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN #define ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN
#define ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS ER_UNSUPPORTED_ENGINE_FOR_GENERATED_COLUMNS #define ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS ER_UNSUPPORTED_ENGINE_FOR_GENERATED_COLUMNS
#define ER_QUERY_EXCEEDED_ROWS_EXAMINED_LIMIT ER_QUERY_RESULT_INCOMPLETE
#define ER_KEY_COLUMN_DOES_NOT_EXITS ER_KEY_COLUMN_DOES_NOT_EXIST #define ER_KEY_COLUMN_DOES_NOT_EXITS ER_KEY_COLUMN_DOES_NOT_EXIST
#define ER_DROP_PARTITION_NON_EXISTENT ER_PARTITION_DOES_NOT_EXIST #define ER_DROP_PARTITION_NON_EXISTENT ER_PARTITION_DOES_NOT_EXIST

View File

@@ -260,7 +260,7 @@ enum enum_indicator_type
#define CLIENT_DEPRECATE_EOF (1ULL << 24) #define CLIENT_DEPRECATE_EOF (1ULL << 24)
#define CLIENT_PROGRESS_OBSOLETE (1ULL << 29) #define CLIENT_PROGRESS_OBSOLETE (1ULL << 29)
#define CLIENT_SSL_VERIFY_SERVER_CERT (1ULL << 30) #define CLIENT_SSL_VERIFY_SERVER_CERT_OBSOLETE (1ULL << 30)
/* /*
It used to be that if mysql_real_connect() failed, it would delete any It used to be that if mysql_real_connect() failed, it would delete any
options set by the client, unless the CLIENT_REMEMBER_OPTIONS flag was options set by the client, unless the CLIENT_REMEMBER_OPTIONS flag was
@@ -318,7 +318,6 @@ enum enum_indicator_type
CLIENT_MULTI_STATEMENTS | \ CLIENT_MULTI_STATEMENTS | \
CLIENT_MULTI_RESULTS | \ CLIENT_MULTI_RESULTS | \
CLIENT_PS_MULTI_RESULTS | \ CLIENT_PS_MULTI_RESULTS | \
CLIENT_SSL_VERIFY_SERVER_CERT | \
CLIENT_REMEMBER_OPTIONS | \ CLIENT_REMEMBER_OPTIONS | \
MARIADB_CLIENT_PROGRESS | \ MARIADB_CLIENT_PROGRESS | \
CLIENT_PLUGIN_AUTH | \ CLIENT_PLUGIN_AUTH | \
@@ -335,9 +334,8 @@ enum enum_indicator_type
If any of the optional flags is supported by the build it will be switched If any of the optional flags is supported by the build it will be switched
on before sending to the client during the connection handshake. on before sending to the client during the connection handshake.
*/ */
#define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \ #define CLIENT_BASIC_FLAGS ((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \
& ~CLIENT_COMPRESS) \ & ~CLIENT_COMPRESS)
& ~CLIENT_SSL_VERIFY_SERVER_CERT)
enum mariadb_field_attr_t enum mariadb_field_attr_t
{ {

View File

@@ -41,6 +41,7 @@ struct st_mysql_options_extention {
uint proc_info_length); uint proc_info_length);
HASH connection_attributes; HASH connection_attributes;
size_t connection_attributes_length; size_t connection_attributes_length;
my_bool tls_verify_server_cert;
}; };
typedef struct st_mysql_methods typedef struct st_mysql_methods

View File

@@ -24,8 +24,8 @@
#define HAVE_OPENSSL11 1 #define HAVE_OPENSSL11 1
#define SSL_LIBRARY OpenSSL_version(OPENSSL_VERSION) #define SSL_LIBRARY OpenSSL_version(OPENSSL_VERSION)
#define ERR_remove_state(X) ERR_clear_error() #define ERR_remove_state(X) ERR_clear_error()
#define EVP_CIPHER_CTX_SIZE 176 #define EVP_CIPHER_CTX_SIZE 200
#define EVP_MD_CTX_SIZE 72 #define EVP_MD_CTX_SIZE 80
#undef EVP_MD_CTX_init #undef EVP_MD_CTX_init
#define EVP_MD_CTX_init(X) do { memset((X), 0, EVP_MD_CTX_SIZE); EVP_MD_CTX_reset(X); } while(0) #define EVP_MD_CTX_init(X) do { memset((X), 0, EVP_MD_CTX_SIZE); EVP_MD_CTX_reset(X); } while(0)
#undef EVP_CIPHER_CTX_init #undef EVP_CIPHER_CTX_init

View File

@@ -219,3 +219,7 @@ error:
DBUG_RETURN(0); DBUG_RETURN(0);
} }
char *get_tty_password(const char *opt_message)
{
return my_get_tty_password(opt_message);
}

View File

@@ -30,7 +30,9 @@
flush status; flush status;
eval EXPLAIN $query; eval EXPLAIN $query;
--disable_ps2_protocol
eval $query; eval $query;
--enable_ps2_protocol
let $cost= let $cost=
query_get_value(SHOW STATUS LIKE 'Last_query_cost', Value, 1); query_get_value(SHOW STATUS LIKE 'Last_query_cost', Value, 1);

View File

@@ -1,4 +1,6 @@
--disable_ps2_protocol
--connection slave --connection slave
SET @saved_slave_type_conversions = @@slave_type_conversions; SET @saved_slave_type_conversions = @@slave_type_conversions;
@@ -257,4 +259,4 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
DROP TABLE t1,t2; DROP TABLE t1,t2;
--sync_slave_with_master --sync_slave_with_master
--enable_ps2_protocol

View File

@@ -6,6 +6,7 @@
## - $engine_type should be set ## - $engine_type should be set
## ##
--disable_ps2_protocol
set sql_mode=no_engine_substitution; set sql_mode=no_engine_substitution;
eval set default_storage_engine = $engine_type; eval set default_storage_engine = $engine_type;
set autocommit=1; set autocommit=1;
@@ -787,3 +788,4 @@ call p_verify_status_increment(2, 0, 2, 0);
drop table t1, t2, t3; drop table t1, t2, t3;
drop procedure p_verify_status_increment; drop procedure p_verify_status_increment;
drop function f1; drop function f1;
--enable_ps2_protocol

View File

@@ -76,6 +76,15 @@ INSERT INTO t1 VALUES (_BINARY'\\''
SELECT a, HEX(a) FROM t1; SELECT a, HEX(a) FROM t1;
DROP TABLE t1; DROP TABLE t1;
#
# test how strings are written into view's frm
#
disable_view_protocol;
create view v1 as select hex('<27>\'), hex('<EFBFBD>\t');
select * from v1;
drop view v1;
enable_view_protocol;
# Checking that with character_set_client=binary 0x5C in 0xE05C # Checking that with character_set_client=binary 0x5C in 0xE05C
# is treated as escape rather than the second byte of a multi-byte character, # is treated as escape rather than the second byte of a multi-byte character,
# even if character_set_connection is big5/cp932/gbk/sjis. # even if character_set_connection is big5/cp932/gbk/sjis.
@@ -109,5 +118,5 @@ SELECT HEX(a) FROM t1;
DROP TABLE t1; DROP TABLE t1;
--enable_view_protocol --enable_view_protocol
--echo # Start of ctype_E05C.inc --echo # End of ctype_E05C.inc

View File

@@ -463,6 +463,7 @@ select * from t1;
show create table t1; show create table t1;
drop table t1; drop table t1;
--disable_ps2_protocol
# Ensure that row_count() value is reset after drop table. # Ensure that row_count() value is reset after drop table.
select 1; select 1;
select hex(concat(row_count())); select hex(concat(row_count()));
@@ -474,6 +475,7 @@ select hex(concat(found_rows()));
create table t1 as select concat(found_rows()) as c1; create table t1 as select concat(found_rows()) as c1;
show create table t1; show create table t1;
drop table t1; drop table t1;
--enable_ps2_protocol
create table t1 as select concat(uuid_short()) as c1; create table t1 as select concat(uuid_short()) as c1;
show create table t1; show create table t1;

View File

@@ -10,6 +10,7 @@ SELECT
FROM FROM
seq_0_to_65535', @@character_set_connection, @@collation_connection); seq_0_to_65535', @@character_set_connection, @@collation_connection);
--disable_service_connection
SELECT COLLATION(c) FROM v_bmp LIMIT 1; SELECT COLLATION(c) FROM v_bmp LIMIT 1;
SELECT HEX(codepoint) FROM v_bmp WHERE HEX(WEIGHT_STRING(c))='FFFD'; SELECT HEX(codepoint) FROM v_bmp WHERE HEX(WEIGHT_STRING(c))='FFFD';
@@ -23,4 +24,6 @@ SELECT codepoint_hex4,HEX(WEIGHT_STRING(c))
FROM v_bmp FROM v_bmp
WHERE codepoint_hex4<>HEX(WEIGHT_STRING(c)); WHERE codepoint_hex4<>HEX(WEIGHT_STRING(c));
--enable_service_connection
DROP VIEW v_bmp; DROP VIEW v_bmp;

View File

@@ -165,9 +165,11 @@ while ($_dt_tables)
# Now that we have the comma-separated list of columns, we can write # Now that we have the comma-separated list of columns, we can write
# the table to a file. # the table to a file.
--disable_ps2_protocol
--let $_dt_outfile= `SELECT @@datadir` --let $_dt_outfile= `SELECT @@datadir`
--let $_dt_outfile= $_dt_outfile/diff_table-$_dt_connection-$_dt_database-$_dt_table --let $_dt_outfile= $_dt_outfile/diff_table-$_dt_connection-$_dt_database-$_dt_table
eval SELECT * INTO OUTFILE '$_dt_outfile' FROM $_dt_database.$_dt_table ORDER BY `$_dt_column_list`; eval SELECT * INTO OUTFILE '$_dt_outfile' FROM $_dt_database.$_dt_table ORDER BY `$_dt_column_list`;
--enable_ps2_protocol
# Compare files. # Compare files.
if ($_dt_prev_outfile) if ($_dt_prev_outfile)

View File

@@ -30,7 +30,9 @@
flush status; flush status;
eval EXPLAIN $query; eval EXPLAIN $query;
--disable_ps2_protocol
eval $query; eval $query;
--enable_ps2_protocol
let $best_cost= let $best_cost=
query_get_value(SHOW STATUS LIKE 'Last_query_cost', Value, 1); query_get_value(SHOW STATUS LIKE 'Last_query_cost', Value, 1);

View File

@@ -26,6 +26,7 @@
--echo # query: $query --echo # query: $query
--echo # select: $select --echo # select: $select
--echo # --echo #
--disable_ps2_protocol
--disable_view_protocol --disable_view_protocol
if ($select) { if ($select) {
--enable_prepare_warnings --enable_prepare_warnings
@@ -164,3 +165,4 @@ SHOW STATUS WHERE (Variable_name LIKE 'Sort%' OR
--echo --echo
--enable_view_protocol --enable_view_protocol
--enable_ps2_protocol

View File

@@ -824,6 +824,7 @@ eval CREATE TABLE t2 (
i $datetime DEFAULT $current_timestamp ON UPDATE $current_timestamp NOT NULL i $datetime DEFAULT $current_timestamp ON UPDATE $current_timestamp NOT NULL
); );
--disable_ps2_protocol
SELECT 1 INTO OUTFILE 't3.dat' FROM dual; SELECT 1 INTO OUTFILE 't3.dat' FROM dual;
SELECT NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL SELECT NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
@@ -831,6 +832,7 @@ INTO OUTFILE 't4.dat'
FROM dual; FROM dual;
SELECT 1, 2 INTO OUTFILE 't5.dat' FROM dual; SELECT 1, 2 INTO OUTFILE 't5.dat' FROM dual;
--enable_ps2_protocol
--echo # Mon Aug 1 15:11:19 2011 UTC --echo # Mon Aug 1 15:11:19 2011 UTC
SET TIMESTAMP = 1312211479.918273; SET TIMESTAMP = 1312211479.918273;
@@ -929,9 +931,11 @@ remove_file $MYSQLD_DATADIR/test/t5.dat;
--echo # Mon Aug 1 15:11:19 2011 UTC --echo # Mon Aug 1 15:11:19 2011 UTC
SET TIMESTAMP = 1312211479.089786; SET TIMESTAMP = 1312211479.089786;
--disable_ps2_protocol
SELECT 1 INTO OUTFILE "file1.dat" FROM dual; SELECT 1 INTO OUTFILE "file1.dat" FROM dual;
SELECT NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL SELECT NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
INTO OUTFILE "file2.dat" FROM dual; INTO OUTFILE "file2.dat" FROM dual;
--enable_ps2_protocol
--echo # Too short row --echo # Too short row

View File

@@ -54,6 +54,8 @@ set GLOBAL query_cache_type=ON;
set LOCAL query_cache_type=ON; set LOCAL query_cache_type=ON;
set GLOBAL query_cache_size=1355776; set GLOBAL query_cache_size=1355776;
--disable_ps2_protocol
reset query cache; reset query cache;
flush status; flush status;
connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK); connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
@@ -173,6 +175,8 @@ show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
show status like "Qcache_not_cached"; show status like "Qcache_not_cached";
--enable_ps2_protocol
# Cleanup # Cleanup
connection root; connection root;

View File

@@ -878,6 +878,7 @@ set @@optimizer_where_cost=@save_optimizer_where_cost;
DROP TABLE t1,t2; DROP TABLE t1,t2;
--disable_ps2_protocol
--echo # check "Handler_pushed" status varuiables --echo # check "Handler_pushed" status varuiables
CREATE TABLE t1 ( CREATE TABLE t1 (
c1 CHAR(1), c1 CHAR(1),
@@ -899,6 +900,7 @@ SELECT * FROM t1 WHERE (c2='3' or c2='4') and c2 % 2 = 0 ;
show status like "Handler_icp%"; show status like "Handler_icp%";
DROP TABLE t1; DROP TABLE t1;
--enable_ps2_protocol
# #
# MDEV-308 lp:1008516 - Failing assertion: templ->mysql_col_len == len # MDEV-308 lp:1008516 - Failing assertion: templ->mysql_col_len == len

View File

@@ -14,6 +14,7 @@
# old name was innodb_cache.test # old name was innodb_cache.test
# main code went into include/query_cache.inc # main code went into include/query_cache.inc
# #
--disable_ps2_protocol
--disable_view_protocol --disable_view_protocol
SET global query_cache_type=ON; SET global query_cache_type=ON;
SET local query_cache_type=ON; SET local query_cache_type=ON;
@@ -192,3 +193,4 @@ drop table t2;
SET global query_cache_type=default; SET global query_cache_type=default;
--enable_view_protocol --enable_view_protocol
--enable_ps2_protocol

View File

@@ -44,13 +44,14 @@ flush status;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
--disable_ps2_protocol
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
--enable_ps2_protocol
drop table t1; drop table t1;
@@ -79,12 +80,14 @@ flush status;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
--disable_ps2_protocol
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
--enable_ps2_protocol
drop table t1; drop table t1;
@@ -114,6 +117,7 @@ INSERT INTO t1 VALUES (1, now(), 0);
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
--disable_ps2_protocol
BEGIN; BEGIN;
UPDATE `t1` SET `cool` = 1 WHERE `id` = 1; UPDATE `t1` SET `cool` = 1 WHERE `id` = 1;
SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1; SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
@@ -126,6 +130,7 @@ SELECT cool FROM `t1` WHERE (`t1`.id = 1) LIMIT 1;
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
show status like "Qcache_hits"; show status like "Qcache_hits";
--enable_ps2_protocol
drop table t1; drop table t1;

View File

@@ -23,6 +23,8 @@
set GLOBAL query_cache_type=ON; set GLOBAL query_cache_type=ON;
set LOCAL query_cache_type=ON; set LOCAL query_cache_type=ON;
--disable_ps2_protocol
connect (con1,localhost,root,,test,$MASTER_MYPORT,); connect (con1,localhost,root,,test,$MASTER_MYPORT,);
connection default; connection default;
@@ -252,6 +254,7 @@ set @a=10;
execute stmt1 using @a; execute stmt1 using @a;
show status like 'Qcache_hits'; show status like 'Qcache_hits';
--enable_ps2_protocol
drop table t1; drop table t1;
disconnect con1; disconnect con1;

View File

@@ -1 +1,3 @@
--disable_ps2_protocol
eval select "Outfile OK" into outfile "$MYSQLTEST_VARDIR/tmp/outfile.test"; eval select "Outfile OK" into outfile "$MYSQLTEST_VARDIR/tmp/outfile.test";
--enable_ps2_protocol

View File

@@ -34,8 +34,10 @@ SET sql_mode=DEFAULT;
--eval CREATE TABLE t1 (a $type DEFAULT $defval, b $type DEFAULT $defval) --eval CREATE TABLE t1 (a $type DEFAULT $defval, b $type DEFAULT $defval)
--eval INSERT INTO t1 VALUES (DEFAULT,DEFAULT); --eval INSERT INTO t1 VALUES (DEFAULT,DEFAULT);
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--disable_ps2_protocol
--eval SELECT a INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/mdev-7824.txt' FROM t1 --eval SELECT a INTO OUTFILE '$MYSQLTEST_VARDIR/tmp/mdev-7824.txt' FROM t1
DELETE FROM t1; DELETE FROM t1;
--enable_ps2_protocol
SET sql_mode=TRADITIONAL; SET sql_mode=TRADITIONAL;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error ER_INVALID_DEFAULT_VALUE_FOR_FIELD --error ER_INVALID_DEFAULT_VALUE_FOR_FIELD

View File

@@ -11,7 +11,7 @@ let $counter= 5000;
let $mysql_errno= 9999; let $mysql_errno= 9999;
while ($mysql_errno) while ($mysql_errno)
{ {
--error 0,ER_ACCESS_DENIED_ERROR,ER_SERVER_SHUTDOWN,ER_CONNECTION_KILLED,ER_LOCK_WAIT_TIMEOUT,2002,2006,2013 --error 0,ER_ACCESS_DENIED_ERROR,ER_SERVER_SHUTDOWN,ER_CONNECTION_KILLED,ER_LOCK_WAIT_TIMEOUT,2002,2006,2013,HA_ERR_NO_ENCRYPTION
select 1; select 1;
dec $counter; dec $counter;
@@ -33,6 +33,10 @@ while ($mysql_errno)
{ {
let $mysql_errno=0; let $mysql_errno=0;
} }
if ($mysql_errno == 199)
{
let $mysql_errno=0;
}
if ($mysql_errno > 0) if ($mysql_errno > 0)
{ {
--sleep 0.1 --sleep 0.1

View File

@@ -46,7 +46,9 @@ if (`SELECT LENGTH(@@secure_file_priv) > 0`)
--let $_wvtf_suffix= `SELECT UUID()` --let $_wvtf_suffix= `SELECT UUID()`
--let $_wvtf_tmp_file= $MYSQLTEST_VARDIR/_wvtf_$_wvtf_suffix --let $_wvtf_tmp_file= $MYSQLTEST_VARDIR/_wvtf_$_wvtf_suffix
--disable_ps2_protocol
--eval SELECT '$write_var' INTO DUMPFILE '$_wvtf_tmp_file' --eval SELECT '$write_var' INTO DUMPFILE '$_wvtf_tmp_file'
--enable_ps2_protocol
--copy_file $_wvtf_tmp_file $write_to_file --copy_file $_wvtf_tmp_file $write_to_file
--remove_file $_wvtf_tmp_file --remove_file $_wvtf_tmp_file
} }

View File

@@ -119,19 +119,19 @@ for my $k (sort keys %debuggers) {
my $v = $debuggers{$k}; my $v = $debuggers{$k};
$v = $debuggers{$k} = $debuggers{$v} if not ref $v; # resolve aliases $v = $debuggers{$k} = $debuggers{$v} if not ref $v; # resolve aliases
sub register_opt($$) { sub register_opt($$$) {
my ($name, $msg) = @_; my ($prefix, $name, $msg) = @_;
$opts{"$name=s"} = \$opt_vals{$name}; $opts{"$prefix$name=s"} = \$opt_vals{$prefix.$name};
$help .= wrap(sprintf(" %-23s", $name), ' 'x25, "$msg under $name\n"); $help .= wrap(sprintf(" %-23s", $prefix.$name), ' 'x25, "$msg under $name\n");
} }
$v->{script} = '' unless $v->{script}; $v->{script} = '' unless $v->{script};
$v->{options} =~ s/(\{exe\}|$)/ {options} $&/ unless $v->{options} =~ /\{options\}/; $v->{options} =~ s/(\{exe\}|$)/ {options} $&/ unless $v->{options} =~ /\{options\}/;
register_opt "$k" => "Start mariadbd"; register_opt "", $k, "Start mysqld";
register_opt "client-$k" => "Start mariadb-test client"; register_opt "client-", $k, "Start mysqltest client";
register_opt "boot-$k" => "Start bootstrap server"; register_opt "boot-", $k, "Start bootstrap server";
register_opt "manual-$k" => "Before running test(s) let user manually start mariadbd"; register_opt "manual-", "$k", "Before running test(s) let user manually start mariadbd";
} }
sub subst($%) { sub subst($%) {

View File

@@ -68,7 +68,7 @@ sub _cpuinfo {
} }
} }
$F= undef; # Close file $F= undef; # Close file
return $self; return $self->{cpus};
} }
@@ -95,12 +95,7 @@ sub _kstat {
push(@{$self->{cpus}}, $cpuinfo); push(@{$self->{cpus}}, $cpuinfo);
} }
# At least one cpu should have been found return $self->{cpus};
# if this method worked
if ( $self->{cpus} ) {
return $self;
}
return undef;
} }

View File

@@ -119,3 +119,89 @@ select cast(json_extract(@out,'$[0]') as DOUBLE) > 0 as PAGES_UPDATED_MORE_THAN_
PAGES_UPDATED_MORE_THAN_ZERO PAGES_UPDATED_MORE_THAN_ZERO
1 1
drop table t1; drop table t1;
#
# MDEV-31764: ASAN use-after-poison in trace_engine_stats upon ANALYZE FORMAT=JSON
#
ANALYZE FORMAT=JSON SELECT count(*) FROM information_schema.GLOBAL_STATUS;
# Another testcase without I_S:
CREATE TABLE t1 (a INT);
INSERT INTO t1 SELECT seq FROM seq_1_to_100;
CREATE TABLE t2 (s INT);
INSERT INTO t2 SELECT seq FROM seq_1_to_10;
# Must use SJ-Materialization to hit the issue with temp.table:
ANALYZE FORMAT=JSON SELECT * FROM t1 WHERE a IN (SELECT s FROM t2);
ANALYZE
{
"query_optimization": {
"r_total_time_ms": "REPLACED"
},
"query_block": {
"select_id": 1,
"cost": "REPLACED",
"r_loops": 1,
"r_total_time_ms": "REPLACED",
"const_condition": "1",
"nested_loop": [
{
"table": {
"table_name": "t1",
"access_type": "ALL",
"loops": 1,
"r_loops": 1,
"rows": 100,
"r_rows": 100,
"cost": "REPLACED",
"r_table_time_ms": "REPLACED",
"r_other_time_ms": "REPLACED",
"r_engine_stats": REPLACED,
"filtered": 100,
"r_filtered": 100
}
},
{
"table": {
"table_name": "<subquery2>",
"access_type": "eq_ref",
"possible_keys": ["distinct_key"],
"key": "distinct_key",
"key_length": "4",
"used_key_parts": ["s"],
"ref": ["func"],
"r_loops": 100,
"r_table_loops": 110,
"rows": 1,
"r_rows": 0.1,
"r_table_time_ms": "REPLACED",
"r_other_time_ms": "REPLACED",
"filtered": 100,
"r_filtered": 100,
"materialized": {
"unique": 1,
"query_block": {
"select_id": 2,
"nested_loop": [
{
"table": {
"table_name": "t2",
"access_type": "ALL",
"loops": 1,
"r_loops": 1,
"rows": 10,
"r_rows": 10,
"cost": "REPLACED",
"r_table_time_ms": "REPLACED",
"r_other_time_ms": "REPLACED",
"r_engine_stats": REPLACED,
"filtered": 100,
"r_filtered": 100
}
}
]
}
}
}
}
]
}
}
DROP TABLE t1, t2;

View File

@@ -62,3 +62,23 @@ select cast(json_extract(@out,'$[0]') as DOUBLE) > 0 as PAGES_UPDATED_MORE_THAN_
drop table t1; drop table t1;
--echo #
--echo # MDEV-31764: ASAN use-after-poison in trace_engine_stats upon ANALYZE FORMAT=JSON
--echo #
--disable_result_log
ANALYZE FORMAT=JSON SELECT count(*) FROM information_schema.GLOBAL_STATUS;
--enable_result_log
--echo # Another testcase without I_S:
CREATE TABLE t1 (a INT);
INSERT INTO t1 SELECT seq FROM seq_1_to_100;
CREATE TABLE t2 (s INT);
INSERT INTO t2 SELECT seq FROM seq_1_to_10;
--echo # Must use SJ-Materialization to hit the issue with temp.table:
--source include/analyze-format.inc
ANALYZE FORMAT=JSON SELECT * FROM t1 WHERE a IN (SELECT s FROM t2);
DROP TABLE t1, t2;

View File

@@ -19,7 +19,9 @@ SET @@global.slow_query_log = ON;
create table t1 (a int); create table t1 (a int);
INSERT INTO t1 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); INSERT INTO t1 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
--disable_ps2_protocol
select * from t1 where a<3; select * from t1 where a<3;
--enable_ps2_protocol
drop table t1; drop table t1;
let SLOW_LOG_FILE= `select @@slow_query_log_file`; let SLOW_LOG_FILE= `select @@slow_query_log_file`;

View File

@@ -11,7 +11,9 @@ set default_storage_engine=innodb;
# #
create table t1 (pk int auto_increment primary key, f varchar(20)); create table t1 (pk int auto_increment primary key, f varchar(20));
insert t1 (f) values ('a'), ('b'), ('c'), ('d'); insert t1 (f) values ('a'), ('b'), ('c'), ('d');
--disable_ps2_protocol
select null, f into outfile 'load.data' from t1 limit 1; select null, f into outfile 'load.data' from t1 limit 1;
--enable_ps2_protocol
load data infile 'load.data' into table t1; load data infile 'load.data' into table t1;
insert t1 (f) values ('<==='); insert t1 (f) values ('<===');
select * from t1; select * from t1;

View File

@@ -45,7 +45,9 @@ remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_error.sql;
--echo # --echo #
--disable_query_log --disable_query_log
create table t1 select 2 as a, concat(repeat('MySQL', @@max_allowed_packet/10), ';') as b; create table t1 select 2 as a, concat(repeat('MySQL', @@max_allowed_packet/10), ';') as b;
--disable_ps2_protocol
eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1; eval select * into outfile '$MYSQLTEST_VARDIR/tmp/long_query.sql' from t1;
--enable_ps2_protocol
--enable_query_log --enable_query_log
--source include/kill_mysqld.inc --source include/kill_mysqld.inc
--error 1 --error 1

View File

@@ -6,6 +6,7 @@
--echo # Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees --echo # Bug #39022: Mysql randomly crashing in lock_sec_rec_cons_read_sees
--echo # --echo #
--disable_ps2_protocol
call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction"); call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction");
CREATE TABLE t1(a TINYINT NOT NULL,b TINYINT,PRIMARY KEY(b)) ENGINE=innodb; CREATE TABLE t1(a TINYINT NOT NULL,b TINYINT,PRIMARY KEY(b)) ENGINE=innodb;
@@ -56,3 +57,4 @@ disconnect thread1;
connection default; connection default;
DROP TABLE t1,t2; DROP TABLE t1,t2;
--enable_ps2_protocol

View File

@@ -402,9 +402,11 @@ SET @@GLOBAL.max_allowed_packet=2048;
# reconnect to make the new max packet size take effect # reconnect to make the new max packet size take effect
--connect (newconn, localhost, root,,) --connect (newconn, localhost, root,,)
--disable_ps2_protocol
SELECT CONVERT('a', BINARY(2049)); SELECT CONVERT('a', BINARY(2049));
SELECT CONVERT('a', CHAR(2049)); SELECT CONVERT('a', CHAR(2049));
SELECT length(CONVERT(repeat('a',2048), CHAR(2049))); SELECT length(CONVERT(repeat('a',2048), CHAR(2049)));
--enable_ps2_protocol
connection default; connection default;
disconnect newconn; disconnect newconn;

View File

@@ -172,7 +172,10 @@ insert t1 (b) values (1);
insert t1 (b) values (10); insert t1 (b) values (10);
select * from t1 where a is null; select * from t1 where a is null;
set sql_auto_is_null=1; set sql_auto_is_null=1;
#Enable after fix MDEV-31307
--disable_ps2_protocol
select * from t1 where a is null; select * from t1 where a is null;
--enable_ps2_protocol
--error ER_CONSTRAINT_FAILED --error ER_CONSTRAINT_FAILED
insert t1 (b) values (1); insert t1 (b) values (1);
drop table t1; drop table t1;

View File

@@ -8,6 +8,8 @@ eval CREATE TABLE t1(a $typec);
ALTER TABLE t1 ADD KEY(a(10)); ALTER TABLE t1 ADD KEY(a(10));
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
--disable_ps2_protocol
--echo # Make sure column was actually compressed --echo # Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000)); INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1; SELECT LEFT(a, 10), LENGTH(a) FROM t1;
@@ -94,6 +96,8 @@ SELECT * FROM t1 ORDER BY a;
SELECT a+1 FROM t1 ORDER BY 1; SELECT a+1 FROM t1 ORDER BY 1;
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions'); SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
--enable_ps2_protocol
DROP TABLE t1; DROP TABLE t1;
--echo # --echo #

View File

@@ -48,6 +48,7 @@ select count(distinct n1), count(distinct n2) from t1;
select count(distinct n2), n1 from t1 group by n1; select count(distinct n2), n1 from t1 group by n1;
drop table t1; drop table t1;
--disable_ps2_protocol
# test the conversion from tree to MyISAM # test the conversion from tree to MyISAM
create table t1 (n int default NULL); create table t1 (n int default NULL);
let $1=5000; let $1=5000;
@@ -82,5 +83,6 @@ flush status;
select count(distinct s) from t1; select count(distinct s) from t1;
show status like 'Created_tmp_disk_tables'; show status like 'Created_tmp_disk_tables';
drop table t1; drop table t1;
--enable_ps2_protocol
# End of 4.1 tests # End of 4.1 tests

View File

@@ -1218,7 +1218,7 @@ drop table if exists t1,t2,t3;
# Fix modified for MariaDB: we support this syntax # Fix modified for MariaDB: we support this syntax
create table t1 (a int) transactional=0; create table t1 (a int) transactional=0;
Warnings: Warnings:
Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=0' Warning 1911 Unknown option 'transactional'
create table t2 (a int) page_checksum=1; create table t2 (a int) page_checksum=1;
create table t3 (a int) row_format=page; create table t3 (a int) row_format=page;
drop table t1,t2,t3; drop table t1,t2,t3;
@@ -2016,7 +2016,7 @@ drop table t1;
# MDEV-18428 Memory: If transactional=0 is specified in CREATE TABLE, it is not possible to ALTER TABLE # MDEV-18428 Memory: If transactional=0 is specified in CREATE TABLE, it is not possible to ALTER TABLE
# #
create table t1 (c int(10) unsigned) engine=memory transactional=0; create table t1 (c int(10) unsigned) engine=memory transactional=0;
ERROR HY000: Table storage engine 'MEMORY' does not support the create option 'TRANSACTIONAL=0' ERROR HY000: Unknown option 'transactional'
# #
# End of 10.2 tests # End of 10.2 tests
# #

View File

@@ -1879,7 +1879,7 @@ drop table t1;
--echo # --echo #
--echo # MDEV-18428 Memory: If transactional=0 is specified in CREATE TABLE, it is not possible to ALTER TABLE --echo # MDEV-18428 Memory: If transactional=0 is specified in CREATE TABLE, it is not possible to ALTER TABLE
--echo # --echo #
--error ER_ILLEGAL_HA_CREATE_OPTION --error ER_UNKNOWN_OPTION
create table t1 (c int(10) unsigned) engine=memory transactional=0; create table t1 (c int(10) unsigned) engine=memory transactional=0;
--echo # --echo #

View File

@@ -1214,6 +1214,8 @@ generation name
2 Grandma Ann 2 Grandma Ann
2 Grandma Sally 2 Grandma Sally
2 Grandpa Ben 2 Grandpa Ben
Warnings:
Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 1. The query result may be incomplete
# query with recursive tables using key access # query with recursive tables using key access
alter table folks add primary key (id); alter table folks add primary key (id);
explain explain
@@ -2479,6 +2481,8 @@ DROP TABLE edges;
# in a heap table # in a heap table
# #
create table t1 (id int, test_data varchar(36)); create table t1 (id int, test_data varchar(36));
set @save_max_recursive_iterations= @@max_recursive_iterations;
set max_recursive_iterations= 200000;
insert into t1(id, test_data) insert into t1(id, test_data)
select id, test_data select id, test_data
from ( from (
@@ -2490,6 +2494,7 @@ select id + 1, uuid() from data_generator where id < 150000
select * from data_generator select * from data_generator
) as a; ) as a;
drop table t1; drop table t1;
set max_recursive_iterations= @save_max_recursive_iterations;
# #
# MDEV-10773: ANALYZE for query with recursive CTE # MDEV-10773: ANALYZE for query with recursive CTE
# #
@@ -2715,6 +2720,8 @@ select * from applied_modules;
m m
m1 m1
m2 m2
Warnings:
Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 2. The query result may be incomplete
drop table value_nodes, module_nodes, module_arguments, module_results; drop table value_nodes, module_nodes, module_arguments, module_results;
# #
# mdev-12519: recursive references in subqueries # mdev-12519: recursive references in subqueries
@@ -5990,4 +5997,52 @@ a a
9 9 9 9
10 10 10 10
drop table t1; drop table t1;
#
# MDEV-20010 Equal on two RANK window functions create wrong result
#
create table t1 (a int, b int) engine= innodb;
insert into t1 values (4, -2), (3, -1);
SELECT RANK() OVER (ORDER BY D.C) = RANK() OVER (ORDER BY B.a) FROM
(SELECT 5 AS C FROM t1) as D, (SELECT t1.b AS A FROM t1) AS B;
RANK() OVER (ORDER BY D.C) = RANK() OVER (ORDER BY B.a)
1
1
0
0
select b, rank() over (order by c) , rank() over (order by dt1.b)
from
(select 5 as c from t1) as dt,
(select b from t1) as dt1;
b rank() over (order by c) rank() over (order by dt1.b)
-2 1 1
-2 1 1
-1 1 3
-1 1 3
select b, rank() over (order by c) , rank() over (order by dt1.b),
rank() over (order by c) = rank() over (order by dt1.b)
from
(select 5 as c from t1) as dt,
(select b from t1) as dt1;
b rank() over (order by c) rank() over (order by dt1.b) rank() over (order by c) = rank() over (order by dt1.b)
-2 1 1 1
-2 1 1 1
-1 1 3 0
-1 1 3 0
alter table t1 engine=myisam;
select b, rank() over (order by c) , rank() over (order by dt1.b)
from
(select 5 as c from t1) as dt,
(select b from t1) as dt1;
b rank() over (order by c) rank() over (order by dt1.b)
-2 1 1
-2 1 1
-1 1 3
-1 1 3
create view v1 as select b,5 as c from t1;
select b, rank() over (order by c) from v1 order by b;
b rank() over (order by c)
-2 1
-1 1
drop view v1;
drop table t1;
# End of 10.4 tests # End of 10.4 tests

View File

@@ -2,6 +2,7 @@
# This is too slow on MSAN # This is too slow on MSAN
--source include/not_msan.inc --source include/not_msan.inc
--source include/not_valgrind.inc --source include/not_valgrind.inc
--source include/have_innodb.inc
create table t1 (a int, b varchar(32)); create table t1 (a int, b varchar(32));
insert into t1 values insert into t1 values
@@ -1535,6 +1536,9 @@ DROP TABLE edges;
create table t1 (id int, test_data varchar(36)); create table t1 (id int, test_data varchar(36));
set @save_max_recursive_iterations= @@max_recursive_iterations;
set max_recursive_iterations= 200000;
insert into t1(id, test_data) insert into t1(id, test_data)
select id, test_data select id, test_data
from ( from (
@@ -1548,6 +1552,8 @@ select id, test_data
drop table t1; drop table t1;
set max_recursive_iterations= @save_max_recursive_iterations;
--echo # --echo #
--echo # MDEV-10773: ANALYZE for query with recursive CTE --echo # MDEV-10773: ANALYZE for query with recursive CTE
--echo # --echo #
@@ -4019,4 +4025,37 @@ with cte_e as (
drop table t1; drop table t1;
--echo #
--echo # MDEV-20010 Equal on two RANK window functions create wrong result
--echo #
create table t1 (a int, b int) engine= innodb;
insert into t1 values (4, -2), (3, -1);
SELECT RANK() OVER (ORDER BY D.C) = RANK() OVER (ORDER BY B.a) FROM
(SELECT 5 AS C FROM t1) as D, (SELECT t1.b AS A FROM t1) AS B;
select b, rank() over (order by c) , rank() over (order by dt1.b)
from
(select 5 as c from t1) as dt,
(select b from t1) as dt1;
select b, rank() over (order by c) , rank() over (order by dt1.b),
rank() over (order by c) = rank() over (order by dt1.b)
from
(select 5 as c from t1) as dt,
(select b from t1) as dt1;
alter table t1 engine=myisam;
select b, rank() over (order by c) , rank() over (order by dt1.b)
from
(select 5 as c from t1) as dt,
(select b from t1) as dt1;
create view v1 as select b,5 as c from t1;
select b, rank() over (order by c) from v1 order by b;
drop view v1;
drop table t1;
--echo # End of 10.4 tests --echo # End of 10.4 tests

View File

@@ -725,15 +725,15 @@ create table t1 (a blob);
insert into t1 values (0xEE00); insert into t1 values (0xEE00);
select * into outfile 'test/t1.txt' from t1; select * into outfile 'test/t1.txt' from t1;
delete from t1; delete from t1;
select hex(load_file('MYSQLD_DATADIR/test/t1.txt'));; select hex(load_file('MYSQLD_DATADIR/test/t1.txt')) as lf;
hex(load_file('MYSQLD_DATADIR/test/t1.txt')) lf
5CEE5C300A 5CEE5C300A
load data infile 't1.txt' into table t1; load data infile 't1.txt' into table t1;
select hex(a) from t1; select hex(a) from t1;
hex(a) hex(a)
EE00 EE00
drop table t1; drop table t1;
End of 5.0 tests # End of 5.0 tests
# #
# Start of 5.5 tests # Start of 5.5 tests
# #
@@ -4893,6 +4893,11 @@ a HEX(a)
\'<27>\ 5C27E05C \'<27>\ 5C27E05C
<EFBFBD>\'\ E05C275C <EFBFBD>\'\ E05C275C
DROP TABLE t1; DROP TABLE t1;
create view v1 as select hex('<27>\'), hex('<27>\t');
select * from v1;
hex('<27>\') hex('<27>\t')
E05C E05C74
drop view v1;
SET character_set_client=binary, character_set_results=binary; SET character_set_client=binary, character_set_results=binary;
SELECT @@character_set_client, @@character_set_connection, @@character_set_results; SELECT @@character_set_client, @@character_set_connection, @@character_set_results;
@@character_set_client @@character_set_connection @@character_set_results @@character_set_client @@character_set_connection @@character_set_results
@@ -4932,7 +4937,7 @@ HEX(a)
E05C5B E05C5B
E05B E05B
DROP TABLE t1; DROP TABLE t1;
# Start of ctype_E05C.inc # End of ctype_E05C.inc
SET NAMES big5; SET NAMES big5;
CREATE TABLE t1 (a ENUM('<27>@') CHARACTER SET big5); CREATE TABLE t1 (a ENUM('<27>@') CHARACTER SET big5);
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;

View File

@@ -78,20 +78,19 @@ select hex(convert(_big5 0xC84041 using ucs2));
set names big5; set names big5;
create table t1 (a blob); create table t1 (a blob);
insert into t1 values (0xEE00); insert into t1 values (0xEE00);
--disable_ps2_protocol
select * into outfile 'test/t1.txt' from t1; select * into outfile 'test/t1.txt' from t1;
--enable_ps2_protocol
delete from t1; delete from t1;
#enable after fix MDEV-27871
--disable_view_protocol
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
--replace_result $MYSQLD_DATADIR MYSQLD_DATADIR --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR
--eval select hex(load_file('$MYSQLD_DATADIR/test/t1.txt')); --eval select hex(load_file('$MYSQLD_DATADIR/test/t1.txt')) as lf
load data infile 't1.txt' into table t1; load data infile 't1.txt' into table t1;
select hex(a) from t1; select hex(a) from t1;
--remove_file $MYSQLD_DATADIR/test/t1.txt --remove_file $MYSQLD_DATADIR/test/t1.txt
drop table t1; drop table t1;
#enable_view_protocol
# #
--echo End of 5.0 tests --echo # End of 5.0 tests
--echo # --echo #

View File

@@ -3352,6 +3352,40 @@ DROP FUNCTION f1;
# End of 10.3 tests # End of 10.3 tests
# #
# #
# Start of 10.4 tests
#
#
# MDEV-28384 UBSAN: null pointer passed as argument 1, which is declared to never be null in my_strnncoll_binary on SELECT ... COUNT or GROUP_CONCAT
#
CREATE TABLE t (c BLOB NOT NULL);
INSERT IGNORE INTO t VALUES (0);
SELECT COUNT(*) FROM t WHERE EXTRACTVALUE(c,'a')='a';
COUNT(*)
0
DROP TABLE t;
SET sql_mode='';
CREATE TABLE t (c TEXT NOT NULL);
INSERT INTO t VALUES();
Warnings:
Warning 1364 Field 'c' doesn't have a default value
INSERT IGNORE INTO t VALUES (NULL);
Warnings:
Warning 1048 Column 'c' cannot be null
SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM t GROUP BY c;
GROUP_CONCAT(c ORDER BY BINARY c)
,
DROP TABLE t;
#
# MDEV-30982 UBSAN: runtime error: null pointer passed as argument 2, which is declared to never be null in my_strnncoll_binary on DELETE
#
CREATE TABLE t (c1 SET('1','2','3'),c2 BINARY);
INSERT INTO t VALUES (0,0);
DELETE FROM t WHERE c2<c1;
DROP TABLE t;
#
# End of 10.4 tests
#
#
# Start of 10.5 tests # Start of 10.5 tests
# #
# #

View File

@@ -196,6 +196,39 @@ DROP FUNCTION f1;
--echo # End of 10.3 tests --echo # End of 10.3 tests
--echo # --echo #
--echo #
--echo # Start of 10.4 tests
--echo #
--echo #
--echo # MDEV-28384 UBSAN: null pointer passed as argument 1, which is declared to never be null in my_strnncoll_binary on SELECT ... COUNT or GROUP_CONCAT
--echo #
CREATE TABLE t (c BLOB NOT NULL);
INSERT IGNORE INTO t VALUES (0);
SELECT COUNT(*) FROM t WHERE EXTRACTVALUE(c,'a')='a';
DROP TABLE t;
SET sql_mode='';
CREATE TABLE t (c TEXT NOT NULL);
INSERT INTO t VALUES();
INSERT IGNORE INTO t VALUES (NULL);
SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM t GROUP BY c;
DROP TABLE t;
--echo #
--echo # MDEV-30982 UBSAN: runtime error: null pointer passed as argument 2, which is declared to never be null in my_strnncoll_binary on DELETE
--echo #
CREATE TABLE t (c1 SET('1','2','3'),c2 BINARY);
INSERT INTO t VALUES (0,0);
DELETE FROM t WHERE c2<c1;
DROP TABLE t;
--echo #
--echo # End of 10.4 tests
--echo #
--echo # --echo #
--echo # Start of 10.5 tests --echo # Start of 10.5 tests
--echo # --echo #

View File

@@ -254,7 +254,7 @@ DROP TABLE cs, cl0, cl1, tcs;
# CHARACTER SET cs1 NOT NULL COLLATE cs2_xxx DEFAULT '' [COLLATE cs2_xxx] # CHARACTER SET cs1 NOT NULL COLLATE cs2_xxx DEFAULT '' [COLLATE cs2_xxx]
# CHARACTER SET cs1 NOT NULL DEFAULT '' COLLATE cs2_xxx # CHARACTER SET cs1 NOT NULL DEFAULT '' COLLATE cs2_xxx
# #
--disable_ps2_protocol
DELETE FROM results DELETE FROM results
WHERE is_conflicting_charset_explicit_collate_explicit(result, cs, cl0); WHERE is_conflicting_charset_explicit_collate_explicit(result, cs, cl0);
SELECT ROW_COUNT(); SELECT ROW_COUNT();
@@ -601,7 +601,7 @@ WHERE cs='' AND cl0=''
AND result NOT LIKE 'ERROR%' AND result NOT LIKE 'ERROR%'
AND result RLIKE cl1; AND result RLIKE cl1;
SELECT ROW_COUNT(); SELECT ROW_COUNT();
--enable_ps2_protocol
--vertical_results --vertical_results

View File

@@ -20413,6 +20413,11 @@ a HEX(a)
\'<27>\ 5C27E05C \'<27>\ 5C27E05C
<EFBFBD>\'\ E05C275C <EFBFBD>\'\ E05C275C
DROP TABLE t1; DROP TABLE t1;
create view v1 as select hex('<27>\'), hex('<27>\t');
select * from v1;
hex('<27>\') hex('<27>\t')
E05C E05C74
drop view v1;
SET character_set_client=binary, character_set_results=binary; SET character_set_client=binary, character_set_results=binary;
SELECT @@character_set_client, @@character_set_connection, @@character_set_results; SELECT @@character_set_client, @@character_set_connection, @@character_set_results;
@@character_set_client @@character_set_connection @@character_set_results @@character_set_client @@character_set_connection @@character_set_results
@@ -20452,7 +20457,7 @@ HEX(a)
E05C5B E05C5B
E05B E05B
DROP TABLE t1; DROP TABLE t1;
# Start of ctype_E05C.inc # End of ctype_E05C.inc
# #
# End of 10.0 tests # End of 10.0 tests
# #

View File

@@ -5237,6 +5237,11 @@ a HEX(a)
\'<27>\ 5C27E05C \'<27>\ 5C27E05C
<EFBFBD>\'\ E05C275C <EFBFBD>\'\ E05C275C
DROP TABLE t1; DROP TABLE t1;
create view v1 as select hex('<27>\'), hex('<27>\t');
select * from v1;
hex('<27>\') hex('<27>\t')
E05C E05C74
drop view v1;
SET character_set_client=binary, character_set_results=binary; SET character_set_client=binary, character_set_results=binary;
SELECT @@character_set_client, @@character_set_connection, @@character_set_results; SELECT @@character_set_client, @@character_set_connection, @@character_set_results;
@@character_set_client @@character_set_connection @@character_set_results @@character_set_client @@character_set_connection @@character_set_results
@@ -5276,7 +5281,7 @@ HEX(a)
E05C5B E05C5B
E05B E05B
DROP TABLE t1; DROP TABLE t1;
# Start of ctype_E05C.inc # End of ctype_E05C.inc
SET NAMES utf8, character_set_connection=gbk; SET NAMES utf8, character_set_connection=gbk;
# #
# MDEV-13118 Wrong results with LOWER and UPPER and subquery # MDEV-13118 Wrong results with LOWER and UPPER and subquery

View File

@@ -8925,6 +8925,33 @@ DROP TABLE t1;
# End of 10.2 tests # End of 10.2 tests
# #
# #
# Start of 10.4 tests
#
#
# MDEV-28384 UBSAN: null pointer passed as argument 1, which is declared to never be null in my_strnncoll_binary on SELECT ... COUNT or GROUP_CONCAT
#
CREATE TABLE t (c TEXT CHARACTER SET latin1 COLLATE latin1_bin NOT NULL);
INSERT IGNORE INTO t VALUES (0);
SELECT COUNT(*) FROM t WHERE EXTRACTVALUE(c,'a')='a';
COUNT(*)
0
DROP TABLE t;
SET sql_mode='';
CREATE TABLE t (c TEXT CHARACTER SET latin1 COLLATE latin1_bin NOT NULL);
INSERT INTO t VALUES();
Warnings:
Warning 1364 Field 'c' doesn't have a default value
INSERT IGNORE INTO t VALUES (NULL);
Warnings:
Warning 1048 Column 'c' cannot be null
SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM t GROUP BY c;
GROUP_CONCAT(c ORDER BY BINARY c)
,
DROP TABLE t;
#
# End of 10.4 tests
#
#
# Start of 10.5 tests # Start of 10.5 tests
# #
# #
@@ -8936,9 +8963,9 @@ CREATE OR REPLACE TABLE t1 AS SELECT CAST(1 AS BINARY), CAST(@a AS BINARY), CAST
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`CAST(1 AS BINARY)` varbinary(1) DEFAULT NULL, `CAST(1 AS BINARY)` varbinary(1) NOT NULL,
`CAST(@a AS BINARY)` varbinary(20) DEFAULT NULL, `CAST(@a AS BINARY)` varbinary(20) DEFAULT NULL,
`CAST(@b:=3 AS BINARY)` varbinary(1) DEFAULT NULL `CAST(@b:=3 AS BINARY)` varbinary(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1; DROP TABLE t1;
# #

View File

@@ -464,6 +464,30 @@ DROP TABLE t1;
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #
--echo #
--echo # Start of 10.4 tests
--echo #
--echo #
--echo # MDEV-28384 UBSAN: null pointer passed as argument 1, which is declared to never be null in my_strnncoll_binary on SELECT ... COUNT or GROUP_CONCAT
--echo #
CREATE TABLE t (c TEXT CHARACTER SET latin1 COLLATE latin1_bin NOT NULL);
INSERT IGNORE INTO t VALUES (0);
SELECT COUNT(*) FROM t WHERE EXTRACTVALUE(c,'a')='a';
DROP TABLE t;
SET sql_mode='';
CREATE TABLE t (c TEXT CHARACTER SET latin1 COLLATE latin1_bin NOT NULL);
INSERT INTO t VALUES();
INSERT IGNORE INTO t VALUES (NULL);
SELECT GROUP_CONCAT(c ORDER BY BINARY c) FROM t GROUP BY c;
DROP TABLE t;
--echo #
--echo # End of 10.4 tests
--echo #
--echo # --echo #
--echo # Start of 10.5 tests --echo # Start of 10.5 tests
--echo # --echo #

View File

@@ -178,8 +178,7 @@ drop table t1;
# #
# Check more automatic conversion # Check more automatic conversion
# #
# Enable view protocol after fix MDEV-28017 --disable_service_connection
--disable_view_protocol
set names koi8r; set names koi8r;
create table t1 (c1 char(10) character set cp1251); create table t1 (c1 char(10) character set cp1251);
insert into t1 values ('<27>'); insert into t1 values ('<27>');
@@ -204,7 +203,7 @@ select rpad(c1,3,'
#select case c1 when '<27>' then '<27>' when '<27>' then '<27>' else 'c' end from t1; #select case c1 when '<27>' then '<27>' when '<27>' then '<27>' else 'c' end from t1;
#select export_set(5,c1,'<27>'), export_set(5,'<27>',c1) from t1; #select export_set(5,c1,'<27>'), export_set(5,'<27>',c1) from t1;
drop table t1; drop table t1;
--enable_view_protocol --enable_service_connection
# #
# Bug 20695: problem with field default value's character set # Bug 20695: problem with field default value's character set

View File

@@ -18947,6 +18947,11 @@ a HEX(a)
\'<27>\ 5C27E05C \'<27>\ 5C27E05C
<EFBFBD>\'\ E05C275C <EFBFBD>\'\ E05C275C
DROP TABLE t1; DROP TABLE t1;
create view v1 as select hex('<27>\'), hex('<27>\t');
select * from v1;
hex('<27>\') hex('<27>\t')
E05C E05C74
drop view v1;
SET character_set_client=binary, character_set_results=binary; SET character_set_client=binary, character_set_results=binary;
SELECT @@character_set_client, @@character_set_connection, @@character_set_results; SELECT @@character_set_client, @@character_set_connection, @@character_set_results;
@@character_set_client @@character_set_connection @@character_set_results @@character_set_client @@character_set_connection @@character_set_results
@@ -18986,7 +18991,7 @@ HEX(a)
E05C5B E05C5B
E05B E05B
DROP TABLE t1; DROP TABLE t1;
# Start of ctype_E05C.inc # End of ctype_E05C.inc
# #
# End of 10.0 tests # End of 10.0 tests
# #

View File

@@ -76,8 +76,10 @@ DROP TABLE t1;
--echo # Problem # 1 (original report): wrong parsing of ucs2 data --echo # Problem # 1 (original report): wrong parsing of ucs2 data
SET character_set_connection=ucs2; SET character_set_connection=ucs2;
--enable_prepare_warnings --enable_prepare_warnings
--disable_ps2_protocol
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt'; SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
--disable_prepare_warnings --disable_prepare_warnings
--enable_ps2_protocol
CREATE TABLE t1(a INT); CREATE TABLE t1(a INT);
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2 LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
(@b) SET a=REVERSE(@b); (@b) SET a=REVERSE(@b);
@@ -88,11 +90,12 @@ DROP TABLE t1;
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
remove_file $MYSQLD_DATADIR/test/tmpp.txt; remove_file $MYSQLD_DATADIR/test/tmpp.txt;
--disable_ps2_protocol
--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost --echo # Problem # 2 : if you write and read ucs2 data to a file they're lost
--enable_prepare_warnings --enable_prepare_warnings
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2; SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
--disable_prepare_warnings --disable_prepare_warnings
--enable_ps2_protocol
CREATE TABLE t1(a INT); CREATE TABLE t1(a INT);
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2 LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
(@b) SET a=REVERSE(@b); (@b) SET a=REVERSE(@b);

View File

@@ -2842,6 +2842,62 @@ VALUES ('') UNION VALUES ( _utf16 0x0020 COLLATE utf16_bin);
# End of 10.3 tests # End of 10.3 tests
# #
# #
# Start of 10.4 tests
#
#
# MDEV-22856 Assertion `!str || str != Ptr' and Assertion `!str || str != Ptr || !is_alloced()' failed in String::copy
#
SET NAMES utf8mb3, collation_connection='utf16_general_ci';
SET sql_buffer_result=1;
CREATE TABLE t(c INT);
INSERT INTO t VALUES(NULL);
SELECT PASSWORD(c) FROM t;
PASSWORD(c)
DROP TABLE t;
SET sql_buffer_result=DEFAULT;
SET NAMES utf8mb3, collation_connection='utf16_general_ci';
CREATE TABLE t1(c INT);
INSERT INTO t1 VALUES(NULL);
CREATE TABLE t2 AS SELECT PASSWORD(c) FROM t1;
DROP TABLE t2, t1;
SET NAMES utf8mb3, collation_connection='utf16_general_ci';
CREATE TABLE t1 AS SELECT PASSWORD(CAST(NULL AS SIGNED));
DROP TABLE t1;
SET NAMES utf8mb3, collation_connection='utf16_bin';
SET @@sql_buffer_result=ON;
CREATE TABLE t (c CHAR(1));
INSERT INTO t VALUES (1),(1),(1),(NULL);
INSERT INTO t SELECT * FROM t;
SELECT PASSWORD(c) FROM t;
PASSWORD(c)
*E6CC90B878B948C35E92B003C792C46C58C4AF40
*E6CC90B878B948C35E92B003C792C46C58C4AF40
*E6CC90B878B948C35E92B003C792C46C58C4AF40
*E6CC90B878B948C35E92B003C792C46C58C4AF40
*E6CC90B878B948C35E92B003C792C46C58C4AF40
*E6CC90B878B948C35E92B003C792C46C58C4AF40
DROP TABLE t;
SET @@sql_buffer_result=DEFAULT;
SET sql_mode='';
SET SESSION sql_buffer_result=1;
CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES ();
INSERT IGNORE INTO t1 VALUES (NULL);
SET NAMES utf8mb3, collation_connection='utf16_bin';
SELECT PASSWORD(c1) FROM t1;
PASSWORD(c1)
DROP TABLE t1;
SET SESSION sql_buffer_result=DEFAULT;
SET sql_mode=DEFAULT;
#
# End of 10.4 tests
#
#
# Start of 10.5 tests # Start of 10.5 tests
# #
# #

View File

@@ -961,6 +961,56 @@ VALUES ('') UNION VALUES ( _utf16 0x0020 COLLATE utf16_bin);
--echo # End of 10.3 tests --echo # End of 10.3 tests
--echo # --echo #
--echo #
--echo # Start of 10.4 tests
--echo #
--echo #
--echo # MDEV-22856 Assertion `!str || str != Ptr' and Assertion `!str || str != Ptr || !is_alloced()' failed in String::copy
--echo #
SET NAMES utf8mb3, collation_connection='utf16_general_ci';
SET sql_buffer_result=1;
CREATE TABLE t(c INT);
INSERT INTO t VALUES(NULL);
SELECT PASSWORD(c) FROM t;
DROP TABLE t;
SET sql_buffer_result=DEFAULT;
SET NAMES utf8mb3, collation_connection='utf16_general_ci';
CREATE TABLE t1(c INT);
INSERT INTO t1 VALUES(NULL);
CREATE TABLE t2 AS SELECT PASSWORD(c) FROM t1;
DROP TABLE t2, t1;
SET NAMES utf8mb3, collation_connection='utf16_general_ci';
CREATE TABLE t1 AS SELECT PASSWORD(CAST(NULL AS SIGNED));
DROP TABLE t1;
SET NAMES utf8mb3, collation_connection='utf16_bin';
SET @@sql_buffer_result=ON;
CREATE TABLE t (c CHAR(1));
INSERT INTO t VALUES (1),(1),(1),(NULL);
INSERT INTO t SELECT * FROM t;
SELECT PASSWORD(c) FROM t;
DROP TABLE t;
SET @@sql_buffer_result=DEFAULT;
SET sql_mode='';
SET SESSION sql_buffer_result=1;
CREATE TABLE t1 (c1 INT);
INSERT INTO t1 VALUES ();
INSERT IGNORE INTO t1 VALUES (NULL);
SET NAMES utf8mb3, collation_connection='utf16_bin';
SELECT PASSWORD(c1) FROM t1;
DROP TABLE t1;
SET SESSION sql_buffer_result=DEFAULT;
SET sql_mode=DEFAULT;
--echo #
--echo # End of 10.4 tests
--echo #
--echo # --echo #
--echo # Start of 10.5 tests --echo # Start of 10.5 tests

View File

@@ -2940,3 +2940,23 @@ DROP TABLE t1;
# #
# End of 10.2 tests # End of 10.2 tests
# #
#
# Start of 10.4 tests
#
#
# MDEV-29019 Assertion `(length % 4) == 0' failed in my_lengthsp_utf32 on SELECT
#
CREATE TABLE t (a INT);
SET collation_connection=utf32_unicode_ci;
INSERT INTO t VALUES (0);
SELECT * FROM t ORDER BY (OCT(a));
a
0
SELECT HEX(OCT(a)) FROM t;
HEX(OCT(a))
00000030
DROP TABLE t;
SET NAMES utf8;
#
# End of 10.4 tests
#

View File

@@ -1099,7 +1099,30 @@ CREATE TABLE t1 (
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
--enable_service_connection
--echo # --echo #
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #
--echo #
--echo # Start of 10.4 tests
--echo #
--echo #
--echo # MDEV-29019 Assertion `(length % 4) == 0' failed in my_lengthsp_utf32 on SELECT
--echo #
CREATE TABLE t (a INT);
SET collation_connection=utf32_unicode_ci;
INSERT INTO t VALUES (0);
SELECT * FROM t ORDER BY (OCT(a));
SELECT HEX(OCT(a)) FROM t;
DROP TABLE t;
SET NAMES utf8;
--echo #
--echo # End of 10.4 tests
--echo #
--enable_service_connection

View File

@@ -19,7 +19,9 @@ create table t1 (sal int(10),id int(10));
INSERT INTO t1 (sal,id) VALUES (5000,1); INSERT INTO t1 (sal,id) VALUES (5000,1);
INSERT INTO t1 (sal,id) VALUES (2000,1); INSERT INTO t1 (sal,id) VALUES (2000,1);
INSERT INTO t1 (sal,id) VALUES (1000,1); INSERT INTO t1 (sal,id) VALUES (1000,1);
--disable_ps2_protocol
select f1(sal) from t1 where id>= 1; select f1(sal) from t1 where id>= 1;
--enable_ps2_protocol
select * from t2; select * from t2;
drop table t2; drop table t2;
drop function f1; drop function f1;
@@ -96,9 +98,12 @@ end|
delimiter ;| delimiter ;|
#Check after fix MDEV-31281
--disable_ps2_protocol
select f1(10); select f1(10);
select f1(sal) from t1; select f1(sal) from t1;
select f1(sal) from t1 where 1=0; select f1(sal) from t1 where 1=0;
--enable_ps2_protocol
drop function f1; drop function f1;
delimiter |; delimiter |;

View File

@@ -3,6 +3,8 @@
--source include/default_optimizer_switch.inc --source include/default_optimizer_switch.inc
--disable_ps2_protocol
flush status; flush status;
show status like "%custom_aggregate%"; show status like "%custom_aggregate%";
create table t2 (sal int(10)); create table t2 (sal int(10));
@@ -73,6 +75,8 @@ with agg_sum as (
select * from agg_sum; select * from agg_sum;
show status like "%custom_aggregate%"; show status like "%custom_aggregate%";
--enable_ps2_protocol
drop table t2,t1,t3; drop table t2,t1,t3;
drop function f1; drop function f1;
drop function f2; drop function f2;

View File

@@ -388,6 +388,7 @@ DROP TABLE IF EXISTS t1;
--enable_warnings --enable_warnings
# #
# Test. # Test.
--disable_ps2_protocol
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM; CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
SELECT GET_LOCK('mysqltest_lock', 100); SELECT GET_LOCK('mysqltest_lock', 100);
@@ -424,6 +425,7 @@ disconnect con1;
disconnect con2; disconnect con2;
connection default; connection default;
DROP TABLE t1; DROP TABLE t1;
--enable_ps2_protocol
--echo # --echo #
--echo # Test NO_CLEAR_EVENT flag. The signal should still be visible after --echo # Test NO_CLEAR_EVENT flag. The signal should still be visible after

View File

@@ -611,7 +611,6 @@ disconnect con1;
--source include/wait_until_disconnected.inc --source include/wait_until_disconnected.inc
connection default; connection default;
drop tables tm, t1, t2; drop tables tm, t1, t2;
--enable_view_protocol
--echo # --echo #
--echo # MDEV-9621 INSERT DELAYED fails on insert for tables with many columns --echo # MDEV-9621 INSERT DELAYED fails on insert for tables with many columns
@@ -660,3 +659,4 @@ INSERT DELAYED INTO t1 VALUES (0);
INSERT DELAYED INTO t1 VALUES (0); INSERT DELAYED INTO t1 VALUES (0);
DROP TABLE t1; DROP TABLE t1;
--enable_view_protocol

View File

@@ -452,6 +452,7 @@ DELETE t1 FROM db1.t1, db2.t1;
# Test multiple-table cross database deletes # Test multiple-table cross database deletes
--disable_ps2_protocol
DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a; DELETE t1 FROM db1.t2 AS t1, db2.t2 AS t2 WHERE t2.a = 1 AND t1.a = t2.a;
SELECT ROW_COUNT(); SELECT ROW_COUNT();
CALL count_rows(); CALL count_rows();
@@ -463,6 +464,7 @@ DROP DATABASE db1;
DROP DATABASE db2; DROP DATABASE db2;
DROP PROCEDURE count_rows; DROP PROCEDURE count_rows;
DROP TABLE t1, t2; DROP TABLE t1, t2;
--enable_ps2_protocol
--echo # --echo #
--echo # Bug#46958: Assertion in Diagnostics_area::set_ok_status, trigger, --echo # Bug#46958: Assertion in Diagnostics_area::set_ok_status, trigger,

View File

@@ -904,11 +904,14 @@ select distinct t1.id, tt.id, tt.data
(select t1.id, 'yes' as data from t1) as tt (select t1.id, 'yes' as data from t1) as tt
on t1.id = tt.id; on t1.id = tt.id;
#Check after fix MDEV-31277
--disable_ps2_protocol
select distinct t1.id, tt.id, tt.data select distinct t1.id, tt.id, tt.data
from t1 from t1
left join left join
(select t1.id, 'yes' as data from t1 where id > 1) as tt (select t1.id, 'yes' as data from t1 where id > 1) as tt
on t1.id = tt.id; on t1.id = tt.id;
--enable_ps2_protocol
drop table t1; drop table t1;

View File

@@ -22733,7 +22733,7 @@ from
(select a, sum(b) as s from t2 group by a) as dt, (select a, sum(b) as s from t2 group by a) as dt,
t3 t3
where dt.a=t1.a and t3.a < 3 where dt.a=t1.a and t3.a < 3
) ) as SUBQ
from t1 limit 5; from t1 limit 5;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 1000 1 PRIMARY t1 ALL NULL NULL NULL NULL 1000
@@ -22747,14 +22747,9 @@ from
(select a, sum(b) as s from t2 group by a) as dt, (select a, sum(b) as s from t2 group by a) as dt,
t3 t3
where dt.a=t1.a and t3.a < 3 where dt.a=t1.a and t3.a < 3
) ) as SUBQ
from t1 limit 5; from t1 limit 5;
a ( select concat(t3.a,'=',dt.s) a SUBQ
from
(select a, sum(b) as s from t2 group by a) as dt,
t3
where dt.a=t1.a and t3.a < 3
)
1 1=804 1 1=804
2 1=1056 2 1=1056
3 1=846 3 1=846
@@ -22773,7 +22768,7 @@ from
(select a, sum(b) as s from t2 group by a) as dt, (select a, sum(b) as s from t2 group by a) as dt,
t3 t3
where dt.a=t1.a and t3.a < 3 where dt.a=t1.a and t3.a < 3
) ) as SUBQ
from t1 limit 5; from t1 limit 5;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 1000 1 PRIMARY t1 ALL NULL NULL NULL NULL 1000
@@ -22787,14 +22782,9 @@ from
(select a, sum(b) as s from t2 group by a) as dt, (select a, sum(b) as s from t2 group by a) as dt,
t3 t3
where dt.a=t1.a and t3.a < 3 where dt.a=t1.a and t3.a < 3
) ) as SUBQ
from t1 limit 5; from t1 limit 5;
a ( select concat(t3.a,'=',dt.s) a SUBQ
from
(select a, sum(b) as s from t2 group by a) as dt,
t3
where dt.a=t1.a and t3.a < 3
)
1 1=11858 1 1=11858
2 1=11380 2 1=11380
3 1=11588 3 1=11588

View File

@@ -2017,9 +2017,9 @@ DELIMITER ;$$
CALL p1('a'); CALL p1('a');
DROP PROCEDURE p1; DROP PROCEDURE p1;
--disable_ps2_protocol
SELECT a FROM (SELECT "aa" a) t WHERE REGEXP_INSTR(t.a, (SELECT MAX('aa') FROM DUAL LIMIT 1)); SELECT a FROM (SELECT "aa" a) t WHERE REGEXP_INSTR(t.a, (SELECT MAX('aa') FROM DUAL LIMIT 1));
--enable_ps2_protocol
DELIMITER $$; DELIMITER $$;
CREATE OR REPLACE FUNCTION f1(a VARCHAR(10), b VARCHAR(10)) RETURNS INT CREATE OR REPLACE FUNCTION f1(a VARCHAR(10), b VARCHAR(10)) RETURNS INT
@@ -4198,7 +4198,7 @@ select
(select a, sum(b) as s from t2 group by a) as dt, (select a, sum(b) as s from t2 group by a) as dt,
t3 t3
where dt.a=t1.a and t3.a < 3 where dt.a=t1.a and t3.a < 3
) ) as SUBQ
from t1 limit 5; from t1 limit 5;
eval explain $q; eval explain $q;

View File

@@ -42,6 +42,7 @@ explain extended
select * from (select * from t1 where f1 in (2,3)) tt join select * from (select * from t1 where f1 in (2,3)) tt join
(select * from t1 where f1 in (1,2)) aa on tt.f1=aa.f1; (select * from t1 where f1 in (1,2)) aa on tt.f1=aa.f1;
--disable_ps2_protocol
flush status; flush status;
explain extended explain extended
select * from (select * from t1 where f1 in (2,3)) tt where f11=2; select * from (select * from t1 where f1 in (2,3)) tt where f11=2;
@@ -49,6 +50,7 @@ show status like 'Handler_read%';
flush status; flush status;
select * from (select * from t1 where f1 in (2,3)) tt where f11=2; select * from (select * from t1 where f1 in (2,3)) tt where f11=2;
show status like 'Handler_read%'; show status like 'Handler_read%';
--enable_ps2_protocol
--echo for merged views --echo for merged views
create view v1 as select * from t1; create view v1 as select * from t1;
@@ -69,6 +71,7 @@ explain extended
select * from v3 join v4 on f1=f2; select * from v3 join v4 on f1=f2;
select * from v3 join v4 on f1=f2; select * from v3 join v4 on f1=f2;
--disable_ps2_protocol
flush status; flush status;
explain extended select * from v4 where f2 in (1,3); explain extended select * from v4 where f2 in (1,3);
show status like 'Handler_read%'; show status like 'Handler_read%';
@@ -91,6 +94,7 @@ show status like 'Handler_read%';
flush status; flush status;
select * from t1 join (select * from t2 group by f2) tt on f1=f2; select * from t1 join (select * from t2 group by f2) tt on f1=f2;
show status like 'Handler_read%'; show status like 'Handler_read%';
--enable_ps2_protocol
--echo for materialized views --echo for materialized views
drop view v1,v2,v3; drop view v1,v2,v3;
@@ -106,6 +110,7 @@ explain extended select * from t1 join v2 on f1=f2;
select * from t1 join v2 on f1=f2; select * from t1 join v2 on f1=f2;
explain extended explain extended
select * from t1,v3 as v31,v3 where t1.f1=v31.f1 and t1.f1=v3.f1; select * from t1,v3 as v31,v3 where t1.f1=v31.f1 and t1.f1=v3.f1;
--disable_ps2_protocol
flush status; flush status;
select * from t1,v3 as v31,v3 where t1.f1=v31.f1 and t1.f1=v3.f1; select * from t1,v3 as v31,v3 where t1.f1=v31.f1 and t1.f1=v3.f1;
show status like 'Handler_read%'; show status like 'Handler_read%';
@@ -116,6 +121,7 @@ show status like 'Handler_read%';
flush status; flush status;
select * from t1 join v2 on f1=f2; select * from t1 join v2 on f1=f2;
show status like 'Handler_read%'; show status like 'Handler_read%';
--enable_ps2_protocol
explain extended select * from v1 join v4 on f1=f2; explain extended select * from v1 join v4 on f1=f2;
--source include/explain-no-costs.inc --source include/explain-no-costs.inc
@@ -162,6 +168,7 @@ join
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) z (select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) z
on x.f1 = z.f1; on x.f1 = z.f1;
--disable_ps2_protocol
flush status; flush status;
select * from select * from
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) x (select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) x
@@ -170,6 +177,7 @@ join
on x.f1 = z.f1; on x.f1 = z.f1;
show status like 'Handler_read%'; show status like 'Handler_read%';
flush status; flush status;
--enable_ps2_protocol
--echo merged in merged derived join merged in merged derived --echo merged in merged derived join merged in merged derived
explain extended select * from explain extended select * from

View File

@@ -1183,5 +1183,16 @@ a
1 1
drop table t1,t2; drop table t1,t2;
# #
# MDEV-31743 Server crash in store_length, assertion failure in
# Type_handler_string_result::sort_length
#
create table t1 (a int, b longtext, c varchar(18));
insert into t1 values (1, 'Aa123456', 'abc'), (2, 'Bb7897777', 'def'),
(3, 'Cc01287', 'xyz'), (5, 'd12345', 'efg');
select distinct if(sum(a), b, 0) from t1 group by value(c) with rollup;
if(sum(a), b, 0)
Aa123456
drop table t1;
#
# end of 10.5 tests # end of 10.5 tests
# #

View File

@@ -494,14 +494,18 @@ DROP TABLE IF EXISTS t2;
CREATE TABLE t2 (fruit_id INT NOT NULL, fruit_name varchar(20) CREATE TABLE t2 (fruit_id INT NOT NULL, fruit_name varchar(20)
default NULL); default NULL);
--disable_ps2_protocol
SELECT DISTINCT fruit_id, fruit_name INTO OUTFILE SELECT DISTINCT fruit_id, fruit_name INTO OUTFILE
'../../tmp/data1.tmp' FROM t1 WHERE fruit_name = 'APPLE'; '../../tmp/data1.tmp' FROM t1 WHERE fruit_name = 'APPLE';
--enable_ps2_protocol
LOAD DATA INFILE '../../tmp/data1.tmp' INTO TABLE t2; LOAD DATA INFILE '../../tmp/data1.tmp' INTO TABLE t2;
--error 0,1 --error 0,1
--remove_file $MYSQLTEST_VARDIR/tmp/data1.tmp --remove_file $MYSQLTEST_VARDIR/tmp/data1.tmp
--disable_ps2_protocol
SELECT DISTINCT @v19:= fruit_id, @v20:= fruit_name INTO OUTFILE SELECT DISTINCT @v19:= fruit_id, @v20:= fruit_name INTO OUTFILE
'../../tmp/data2.tmp' FROM t1 WHERE fruit_name = 'APPLE'; '../../tmp/data2.tmp' FROM t1 WHERE fruit_name = 'APPLE';
--enable_ps2_protocol
LOAD DATA INFILE '../../tmp/data2.tmp' INTO TABLE t2; LOAD DATA INFILE '../../tmp/data2.tmp' INTO TABLE t2;
--remove_file $MYSQLTEST_VARDIR/tmp/data2.tmp --remove_file $MYSQLTEST_VARDIR/tmp/data2.tmp
@@ -911,6 +915,18 @@ select distinct a from t1 where t1.a=1 and t1.a in (select a+0 from t2 where t2.
select distinct a from t1 where t1.a=1 and t1.a in (select a+0 from t2 where t2.b in (1,2)) limit 0,1; select distinct a from t1 where t1.a=1 and t1.a in (select a+0 from t2 where t2.b in (1,2)) limit 0,1;
drop table t1,t2; drop table t1,t2;
--echo #
--echo # MDEV-31743 Server crash in store_length, assertion failure in
--echo # Type_handler_string_result::sort_length
--echo #
create table t1 (a int, b longtext, c varchar(18));
insert into t1 values (1, 'Aa123456', 'abc'), (2, 'Bb7897777', 'def'),
(3, 'Cc01287', 'xyz'), (5, 'd12345', 'efg');
select distinct if(sum(a), b, 0) from t1 group by value(c) with rollup;
drop table t1;
--echo # --echo #
--echo # end of 10.5 tests --echo # end of 10.5 tests
--echo # --echo #

View File

@@ -7,9 +7,11 @@ drop table if exists t1;
--enable_warnings --enable_warnings
create table t1 (nr int(5) not null auto_increment,b blob,str char(10), primary key (nr)); create table t1 (nr int(5) not null auto_increment,b blob,str char(10), primary key (nr));
--disable_ps2_protocol
select count(*) from t1; select count(*) from t1;
select * from t1; select * from t1;
select * from t1 limit 0; select * from t1 limit 0;
--enable_ps2_protocol
show status like "Empty_queries"; show status like "Empty_queries";
drop table t1; drop table t1;
@@ -17,8 +19,10 @@ drop table t1;
# Accessing a non existing table should not increase Empty_queries # Accessing a non existing table should not increase Empty_queries
# #
--disable_ps2_protocol
--error 1146 --error 1146
select * from t2; select * from t2;
--enable_ps2_protocol
show status like "Empty_queries"; show status like "Empty_queries";
--echo # End of 4.1 tests --echo # End of 4.1 tests

View File

@@ -80,10 +80,12 @@ SET optimizer_switch='outer_join_with_cache=off';
SET SESSION debug_dbug= '+d,only_one_Unique_may_be_created'; SET SESSION debug_dbug= '+d,only_one_Unique_may_be_created';
--disable_ps2_protocol
--replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x --replace_column 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x
EXPLAIN EXPLAIN
SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 ); SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 );
SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 ); SELECT * FROM t1 LEFT JOIN t2 ON ( t2.a < 10 OR t2.b < 10 );
--enable_ps2_protocol
SET debug_dbug= @saved_dbug; SET debug_dbug= @saved_dbug;

View File

@@ -94,8 +94,10 @@ end|
delimiter ;| delimiter ;|
flush status; flush status;
--disable_ps2_protocol
--error 1062 --error 1062
select f1(), f2(); select f1(), f2();
--enable_ps2_protocol
show status like 'Com_insert'; show status like 'Com_insert';
select * from t1; select * from t1;
select * from t2; select * from t2;

View File

@@ -19,20 +19,5 @@ id select_type table type possible_keys key key_len ref rows Extra
SET GLOBAL slow_query_log = @sql_tmp; SET GLOBAL slow_query_log = @sql_tmp;
drop table t1; drop table t1;
# #
# MDEV-31181: Server crash in subselect_uniquesubquery_engine::print
# upon EXPLAIN EXTENDED DELETE
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2);
CREATE TABLE t2 (pk INT PRIMARY KEY);
INSERT INTO t2 VALUES (1),(2);
EXPLAIN EXTENDED DELETE FROM t1 WHERE a IN (SELECT pk FROM t2);
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 Using where
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 100.00 Using index
Warnings:
Note 1003 delete from `test`.`t1` using `test`.`t2` where `test`.`t2`.`pk` = `test`.`t1`.`a`
drop table t1, t2;
#
# End of 10.4 tests # End of 10.4 tests
# #

View File

@@ -19,21 +19,6 @@ SELECT * FROM (SELECT id FROM t1 GROUP BY id) dt WHERE 1=0;
SET GLOBAL slow_query_log = @sql_tmp; SET GLOBAL slow_query_log = @sql_tmp;
drop table t1; drop table t1;
--echo #
--echo # MDEV-31181: Server crash in subselect_uniquesubquery_engine::print
--echo # upon EXPLAIN EXTENDED DELETE
--echo #
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2);
CREATE TABLE t2 (pk INT PRIMARY KEY);
INSERT INTO t2 VALUES (1),(2);
EXPLAIN EXTENDED DELETE FROM t1 WHERE a IN (SELECT pk FROM t2);
drop table t1, t2;
--echo # --echo #
--echo # End of 10.4 tests --echo # End of 10.4 tests
--echo # --echo #

View File

@@ -278,6 +278,37 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 1 SIMPLE t2 ALL NULL NULL NULL NULL 2
drop table t1,t2; drop table t1,t2;
# #
# MDEV-31181: EXPLAIN EXTENDED for single-table DELETE with IN predicand
#
create table t1 (a int);
insert into t1 values (3), (7), (1), (3), (4);
create table t2 (pk int primary key);
insert into t2 values (3), (5), (1);
create table t3 (a int, key(a));
insert into t3 values (7), (5), (7), (3);
explain extended delete from t1 where a in (select pk from t2);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 100.00 Using where
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 100.00 Using index
Warnings:
Note 1003 delete from `test`.`t1` using `test`.`t2` where `test`.`t2`.`pk` = `test`.`t1`.`a`
delete from t1 where a in (select pk from t2);
select * from t1;
a
7
4
explain extended delete from t1 where a in (select a from t3);
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 Using where
1 PRIMARY t3 ref a a 5 test.t1.a 1 100.00 Using index; FirstMatch(t1)
Warnings:
Note 1003 delete from `test`.`t1` using (`test`.`t3`) where `test`.`t3`.`a` = `test`.`t1`.`a`
delete from t1 where a in (select a from t3);
select * from t1;
a
4
drop table t1,t2,t3;
#
# MDEV-31224: EXPLAIN EXTENDED for multi-table update of system table # MDEV-31224: EXPLAIN EXTENDED for multi-table update of system table
# #
CREATE TABLE t1 (a INT); CREATE TABLE t1 (a INT);

View File

@@ -250,6 +250,33 @@ PREPARE stmt FROM 'EXPLAIN INSERT INTO t1 SELECT * FROM t2';
EXECUTE stmt; EXECUTE stmt;
drop table t1,t2; drop table t1,t2;
--echo #
--echo # MDEV-31181: EXPLAIN EXTENDED for single-table DELETE with IN predicand
--echo #
create table t1 (a int);
insert into t1 values (3), (7), (1), (3), (4);
create table t2 (pk int primary key);
insert into t2 values (3), (5), (1);
create table t3 (a int, key(a));
insert into t3 values (7), (5), (7), (3);
let $q1=
delete from t1 where a in (select pk from t2);
eval explain extended $q1;
eval $q1;
select * from t1;
let $q2=
delete from t1 where a in (select a from t3);
eval explain extended $q2;
eval $q2;
select * from t1;
drop table t1,t2,t3;
--echo # --echo #
--echo # MDEV-31224: EXPLAIN EXTENDED for multi-table update of system table --echo # MDEV-31224: EXPLAIN EXTENDED for multi-table update of system table
--echo # --echo #

Some files were not shown because too many files have changed in this diff Show More