mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge branch '10.0' into bb-10.1-merge
Conflicts: .bzrignore VERSION cmake/plugin.cmake debian/dist/Debian/control debian/dist/Ubuntu/control mysql-test/r/join_outer.result mysql-test/r/join_outer_jcl6.result mysql-test/r/null.result mysql-test/r/old-mode.result mysql-test/r/union.result mysql-test/t/join_outer.test mysql-test/t/null.test mysql-test/t/old-mode.test mysql-test/t/union.test packaging/rpm-oel/mysql.spec.in scripts/mysql_config.sh sql/ha_ndbcluster.cc sql/ha_ndbcluster_binlog.cc sql/ha_ndbcluster_cond.cc sql/item_cmpfunc.h sql/lock.cc sql/sql_select.cc sql/sql_show.cc sql/sql_update.cc sql/sql_yacc.yy storage/innobase/buf/buf0flu.cc storage/innobase/fil/fil0fil.cc storage/innobase/include/srv0srv.h storage/innobase/lock/lock0lock.cc storage/tokudb/CMakeLists.txt storage/xtradb/buf/buf0flu.cc storage/xtradb/fil/fil0fil.cc storage/xtradb/include/srv0srv.h storage/xtradb/lock/lock0lock.cc support-files/mysql.spec.sh
This commit is contained in:
commit
853077ad7e
2354 changed files with 594871 additions and 12560 deletions
10
.gitignore
vendored
10
.gitignore
vendored
|
@ -211,3 +211,13 @@ tags
|
|||
tests/async_queries
|
||||
tests/bug25714
|
||||
tests/mysql_client_test
|
||||
storage/mroonga/config.sh
|
||||
storage/mroonga/mrn_version.h
|
||||
storage/mroonga/data/install.sql
|
||||
storage/mroonga/vendor/groonga/config.h
|
||||
storage/mroonga/vendor/groonga/config.sh
|
||||
storage/mroonga/vendor/groonga/groonga.pc
|
||||
storage/mroonga/vendor/groonga/src/grnslap
|
||||
storage/mroonga/vendor/groonga/src/groonga
|
||||
storage/mroonga/vendor/groonga/src/groonga-benchmark
|
||||
storage/mroonga/vendor/groonga/src/suggest/groonga-suggest-create-dataset
|
||||
|
|
|
@ -1290,6 +1290,16 @@ int main(int argc,char *argv[])
|
|||
|
||||
sig_handler mysql_end(int sig)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
/*
|
||||
Ingnoring SIGQUIT and SIGINT signals when cleanup process starts.
|
||||
This will help in resolving the double free issues, which occures in case
|
||||
the signal handler function is started in between the clean up function.
|
||||
*/
|
||||
signal(SIGQUIT, SIG_IGN);
|
||||
signal(SIGINT, SIG_IGN);
|
||||
#endif
|
||||
|
||||
mysql_close(&mysql);
|
||||
#ifdef HAVE_READLINE
|
||||
if (!status.batch && !quick && !opt_html && !opt_xml &&
|
||||
|
|
|
@ -15,14 +15,11 @@
|
|||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <my_global.h>
|
||||
#include <m_string.h>
|
||||
#include <mysql.h>
|
||||
#include <my_getopt.h>
|
||||
#include <my_dir.h>
|
||||
#include <my_global.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#define SHOW_VERSION "1.0.0"
|
||||
#define PRINT_VERSION do { printf("%s Ver %s Distrib %s\n", \
|
||||
|
|
|
@ -776,7 +776,7 @@ static int run_mysqlcheck_upgrade(const char *arg1, const char *arg2)
|
|||
|
||||
static int run_mysqlcheck_fixnames(void)
|
||||
{
|
||||
verbose("Phase 3/4: Fixing table and database names");
|
||||
verbose("Phase 3/5: Fixing table and database names");
|
||||
print_conn_args("mysqlcheck");
|
||||
return run_tool(mysqlcheck_path,
|
||||
NULL, /* Send output from mysqlcheck directly to screen */
|
||||
|
@ -874,6 +874,7 @@ static int run_sql_fix_privilege_tables(void)
|
|||
query_ptr++
|
||||
)
|
||||
{
|
||||
if (strcasecmp(*query_ptr, "flush privileges;\n"))
|
||||
dynstr_append(&ds_script, *query_ptr);
|
||||
}
|
||||
|
||||
|
@ -1035,19 +1036,23 @@ int main(int argc, char **argv)
|
|||
/*
|
||||
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
|
||||
*/
|
||||
verbose("Phase 1/4: Checking mysql database");
|
||||
verbose("Phase 1/5: Checking mysql database");
|
||||
if (run_mysqlcheck_upgrade("--databases", "mysql"))
|
||||
die("Upgrade failed" );
|
||||
verbose("Phase 2/4: Running 'mysql_fix_privilege_tables'...");
|
||||
verbose("Phase 2/5: Running 'mysql_fix_privilege_tables'...");
|
||||
if (run_sql_fix_privilege_tables())
|
||||
die("Upgrade failed" );
|
||||
|
||||
if (!opt_systables_only &&
|
||||
(run_mysqlcheck_fixnames() ||
|
||||
verbose("Phase 4/4: Checking and upgrading tables") ||
|
||||
verbose("Phase 4/5: Checking and upgrading tables") ||
|
||||
run_mysqlcheck_upgrade("--all-databases","--skip-database=mysql")))
|
||||
die("Upgrade failed" );
|
||||
|
||||
verbose("Phase 5/5: Running 'FLUSH PRIVILEGES'...");
|
||||
if (run_query("FLUSH PRIVILEGES", NULL, TRUE))
|
||||
die("Upgrade failed" );
|
||||
|
||||
verbose("OK");
|
||||
|
||||
/* Create a file indicating upgrade has been performed */
|
||||
|
|
|
@ -30,19 +30,15 @@
|
|||
|
||||
#include "client_priv.h"
|
||||
#include "mysql_version.h"
|
||||
#ifdef HAVE_LIBPTHREAD
|
||||
#include <my_pthread.h>
|
||||
#endif
|
||||
|
||||
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
||||
|
||||
|
||||
/* Global Thread counter */
|
||||
uint counter;
|
||||
#ifdef HAVE_LIBPTHREAD
|
||||
pthread_mutex_t counter_mutex;
|
||||
pthread_cond_t count_threshhold;
|
||||
#endif
|
||||
|
||||
static void db_error_with_table(MYSQL *mysql, char *table);
|
||||
static void db_error(MYSQL *mysql);
|
||||
|
@ -502,7 +498,10 @@ static void safe_exit(int error, MYSQL *mysql)
|
|||
free_defaults(argv_to_free);
|
||||
mysql_library_end();
|
||||
my_free(opt_password);
|
||||
my_end(my_end_arg);
|
||||
if (error)
|
||||
sf_leaking_memory= 1; /* dirty exit, some threads are still running */
|
||||
else
|
||||
my_end(my_end_arg); /* clean exit */
|
||||
exit(error);
|
||||
}
|
||||
|
||||
|
@ -575,7 +574,6 @@ static char *field_escape(char *to,const char *from,uint length)
|
|||
|
||||
int exitcode= 0;
|
||||
|
||||
#ifdef HAVE_LIBPTHREAD
|
||||
pthread_handler_t worker_thread(void *arg)
|
||||
{
|
||||
int error;
|
||||
|
@ -615,7 +613,6 @@ error:
|
|||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
@ -635,7 +632,6 @@ int main(int argc, char **argv)
|
|||
}
|
||||
sf_leaking_memory=0; /* from now on we cleanup properly */
|
||||
|
||||
#ifdef HAVE_LIBPTHREAD
|
||||
if (opt_use_threads && !lock_tables)
|
||||
{
|
||||
pthread_t mainthread; /* Thread descriptor */
|
||||
|
@ -689,7 +685,6 @@ int main(int argc, char **argv)
|
|||
pthread_attr_destroy(&attr);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
MYSQL *mysql= 0;
|
||||
if (!(mysql= db_connect(current_host,current_db,current_user,opt_password)))
|
||||
|
|
|
@ -84,9 +84,7 @@ TODO:
|
|||
#include <mysqld_error.h>
|
||||
#include <my_dir.h>
|
||||
#include <signal.h>
|
||||
#include <stdarg.h>
|
||||
#include <sslopt-vars.h>
|
||||
#include <sys/types.h>
|
||||
#ifndef __WIN__
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
|
|
@ -5766,6 +5766,7 @@ void do_connect(struct st_command *command)
|
|||
{
|
||||
int con_port= opt_port;
|
||||
char *con_options;
|
||||
char *ssl_cipher= 0;
|
||||
my_bool con_ssl= 0, con_compress= 0;
|
||||
my_bool con_pipe= 0;
|
||||
my_bool con_shm __attribute__ ((unused))= 0;
|
||||
|
@ -5854,6 +5855,11 @@ void do_connect(struct st_command *command)
|
|||
length= (size_t) (end - con_options);
|
||||
if (length == 3 && !strncmp(con_options, "SSL", 3))
|
||||
con_ssl= 1;
|
||||
else if (!strncmp(con_options, "SSL-CIPHER=", 11))
|
||||
{
|
||||
con_ssl= 1;
|
||||
ssl_cipher=con_options + 11;
|
||||
}
|
||||
else if (length == 8 && !strncmp(con_options, "COMPRESS", 8))
|
||||
con_compress= 1;
|
||||
else if (length == 4 && !strncmp(con_options, "PIPE", 4))
|
||||
|
@ -5910,7 +5916,7 @@ void do_connect(struct st_command *command)
|
|||
{
|
||||
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
|
||||
mysql_ssl_set(con_slot->mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
opt_ssl_capath, ssl_cipher ? ssl_cipher : opt_ssl_cipher);
|
||||
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
#if MYSQL_VERSION_ID >= 50000
|
||||
|
|
|
@ -188,7 +188,7 @@ IF(RPM MATCHES "(rhel|centos)5")
|
|||
ELSEIF(RPM MATCHES "(rhel|centos)6")
|
||||
ALTERNATIVE_NAME("client" "mysql")
|
||||
ALTERNATIVE_NAME("shared" "mysql-libs")
|
||||
ELSEIF(RPM MATCHES "fedora")
|
||||
ELSEIF(RPM MATCHES "fedora" OR RPM MATCHES "(rhel|centos)7")
|
||||
SET(epoch 1) # this is fedora
|
||||
ALTERNATIVE_NAME("client" "mariadb")
|
||||
ALTERNATIVE_NAME("client" "mysql")
|
||||
|
|
|
@ -69,7 +69,7 @@ REPLACE_FOR_CLIENTS(CFLAGS "[DU]DBUG_OFF" "[DU]SAFE_MUTEX" "[DU]NDEBUG"
|
|||
"[DU]UNIV_MUST_NOT_INLINE" "[DU]FORCE_INIT_OF_VARS" "[DU]EXTRA_DEBUG" "[DU]HAVE_valgrind"
|
||||
"O" "O[0-9]" "xO[0-9]" "W[-A-Za-z]*" "mtune=[-A-Za-z0-9]*" "g" "fPIC"
|
||||
"mcpu=[-A-Za-z0-9]*" "unroll2" "ip" "mp" "march=[-A-Za-z0-9]*" "Xa"
|
||||
"xstrconst" "xc99=none" "AC99" "restrict")
|
||||
"xstrconst" "xc99=none" "AC99" "restrict" "W[-A-Za-z]*=[-A-Za-z0-9]*")
|
||||
|
||||
# Same for --libs
|
||||
REPLACE_FOR_CLIENTS(LIBS lmtmalloc static-libcxa i-static static-intel)
|
||||
|
|
|
@ -102,16 +102,6 @@ IF(UNIX)
|
|||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# plugin_tests's value should not be used by imported plugins,
|
||||
# just use if(INSTALL_PLUGINTESTDIR).
|
||||
# The plugin must set its own install path for tests
|
||||
#
|
||||
FILE(GLOB plugin_tests
|
||||
${CMAKE_SOURCE_DIR}/plugin/*/tests
|
||||
${CMAKE_SOURCE_DIR}/internal/plugin/*/tests
|
||||
)
|
||||
|
||||
#
|
||||
# STANDALONE layout
|
||||
#
|
||||
|
@ -136,7 +126,6 @@ SET(INSTALL_SQLBENCHDIR_STANDALONE ".")
|
|||
SET(INSTALL_SUPPORTFILESDIR_STANDALONE "support-files")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_STANDALONE "data")
|
||||
SET(INSTALL_PLUGINTESTDIR_STANDALONE ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_STANDALONE "/tmp/mysql.sock")
|
||||
#
|
||||
|
@ -170,7 +159,6 @@ SET(INSTALL_SQLBENCHDIR_RPM "")
|
|||
SET(INSTALL_SUPPORTFILESDIR_RPM "share/mysql")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_RPM "/var/lib/mysql")
|
||||
SET(INSTALL_PLUGINTESTDIR_RPM ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_RPM "${INSTALL_MYSQLDATADIR_RPM}/mysql.sock")
|
||||
|
||||
|
@ -199,7 +187,6 @@ SET(INSTALL_SQLBENCHDIR_DEB ".")
|
|||
SET(INSTALL_SUPPORTFILESDIR_DEB "share/mysql")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_DEB "/var/lib/mysql")
|
||||
SET(INSTALL_PLUGINTESTDIR_DEB ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_DEB "/var/run/mysqld/mysqld.sock")
|
||||
#
|
||||
|
@ -226,7 +213,6 @@ SET(INSTALL_SQLBENCHDIR_SVR4 ".")
|
|||
SET(INSTALL_SUPPORTFILESDIR_SVR4 "support-files")
|
||||
#
|
||||
SET(INSTALL_MYSQLDATADIR_SVR4 "/var/lib/mysql")
|
||||
SET(INSTALL_PLUGINTESTDIR_SVR4 ${plugin_tests})
|
||||
|
||||
SET(INSTALL_UNIX_ADDRDIR_SVR "/tmp/mysql.sock")
|
||||
|
||||
|
@ -242,7 +228,7 @@ SET(OLD_INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE INTERNAL "")
|
|||
# will be defined as ${INSTALL_BINDIR_STANDALONE} by default if STANDALONE
|
||||
# layout is chosen)
|
||||
FOREACH(var BIN SBIN LIB MYSQLSHARE SHARE PLUGIN INCLUDE SCRIPT DOC MAN SYSCONF SYSCONF2
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA PLUGINTEST UNIX_ADDR)
|
||||
INFO MYSQLTEST SQLBENCH DOCREADME SUPPORTFILES MYSQLDATA UNIX_ADDR)
|
||||
SET(INSTALL_${var}DIR ${INSTALL_${var}DIR_${INSTALL_LAYOUT}}
|
||||
CACHE STRING "${var} installation directory" ${FORCE})
|
||||
MARK_AS_ADVANCED(INSTALL_${var}DIR)
|
||||
|
|
|
@ -659,4 +659,21 @@
|
|||
#define __STDC_FORMAT_MACROS
|
||||
#endif
|
||||
|
||||
/*
|
||||
stat structure (from <sys/stat.h>) is conditionally defined
|
||||
to have different layout and size depending on the defined macros.
|
||||
The correct macro is defined in my_config.h, which means it MUST be
|
||||
included first (or at least before <features.h> - so, practically,
|
||||
before including any system headers).
|
||||
|
||||
Check the include order by looking at __GLIBC__ (defined in <features.h>)
|
||||
|
||||
But we cannot force all third-party clients/connectors to include
|
||||
my_config.h first. So, their crashes are their responsibility,
|
||||
we enable this check only for MariaDB sources (SAFE_MUTEX check).
|
||||
*/
|
||||
#if defined(__GLIBC__) && defined(SAFE_MUTEX)
|
||||
#error <my_config.h> MUST be included first!
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
2
debian/dist/Debian/control
vendored
2
debian/dist/Debian/control
vendored
|
@ -196,7 +196,7 @@ Depends: mariadb-client-10.1 (>= ${source:Version}), libdbi-perl,
|
|||
perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd,
|
||||
lsb-base (>= 3.0-10), mariadb-server-core-10.1 (>= ${binary:Version}),
|
||||
galera (>=25.2), rsync, lsof, socat | netcat, grep, gawk, iproute,
|
||||
coreutils, findutils
|
||||
coreutils, bsdutils, findutils
|
||||
Provides: mariadb-server, mysql-server, virtual-mysql-server
|
||||
Conflicts: mariadb-server (<< ${source:Version}), mysql-server (<< ${source:Version}),
|
||||
mysql-server-4.1, mysql-server-5.0, mysql-server-5.1, mysql-server-5.5,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
usr/lib/mysql/plugin/auth_pam.so
|
||||
usr/lib/mysql/plugin/auth_socket.so
|
||||
usr/lib/mysql/plugin/ha_mroonga.so
|
||||
usr/lib/mysql/plugin/ha_sequence.so
|
||||
usr/lib/mysql/plugin/ha_sphinx.so
|
||||
usr/lib/mysql/plugin/ha_innodb.so
|
||||
|
|
2
debian/dist/Ubuntu/control
vendored
2
debian/dist/Ubuntu/control
vendored
|
@ -190,7 +190,7 @@ Depends: mariadb-client-10.1 (>= ${source:Version}), libdbi-perl,
|
|||
perl (>= 5.6), ${shlibs:Depends}, ${misc:Depends}, psmisc, passwd,
|
||||
lsb-base (>= 3.0-10), mariadb-server-core-10.1 (>= ${binary:Version}),
|
||||
galera (>=25.2), rsync, lsof, socat | netcat, grep, gawk, iproute,
|
||||
coreutils, findutils
|
||||
coreutils, bsdutils, findutils
|
||||
Provides: mariadb-server, mysql-server, virtual-mysql-server
|
||||
Conflicts: mariadb-server (<< ${source:Version}), mysql-server (<< ${source:Version}),
|
||||
mysql-server-4.1, mysql-server-5.0, mysql-server-5.1, mysql-server-5.5,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
usr/lib/mysql/plugin/auth_pam.so
|
||||
usr/lib/mysql/plugin/auth_socket.so
|
||||
usr/lib/mysql/plugin/ha_mroonga.so
|
||||
usr/lib/mysql/plugin/ha_sequence.so
|
||||
usr/lib/mysql/plugin/ha_sphinx.so
|
||||
usr/lib/mysql/plugin/ha_innodb.so
|
||||
|
|
1
debian/mariadb-test-10.1.files
vendored
1
debian/mariadb-test-10.1.files
vendored
|
@ -6,6 +6,7 @@ usr/lib/mysql/plugin/qa_auth_client.so
|
|||
usr/lib/mysql/plugin/auth_0x0100.so
|
||||
usr/lib/mysql/plugin/mypluglib.so
|
||||
usr/lib/mysql/plugin/ha_test_sql_discovery.so
|
||||
usr/lib/mysql/plugin/ha_example.so
|
||||
usr/lib/mysql/plugin/daemon_example.ini
|
||||
usr/lib/mysql/plugin/libdaemon_example.so
|
||||
usr/lib/mysql/plugin/adt_null.so
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#include <my_sys.h>
|
||||
#include <m_string.h>
|
||||
#include <my_getopt.h>
|
||||
#include <assert.h>
|
||||
#include <my_dir.h>
|
||||
|
||||
#define MAX_ROWS 2000
|
||||
|
|
|
@ -12,7 +12,23 @@ before calling SSL_new();
|
|||
|
||||
*** end Note ***
|
||||
|
||||
yaSSL Release notes, version 2.3.0 (12/5/2013)
|
||||
yaSSL Release notes, version 2.3.4 (8/15/2014)
|
||||
|
||||
This release of yaSSL adds checking to the input_buffer class itself.
|
||||
|
||||
See normal build instructions below under 1.0.6.
|
||||
See libcurl build instructions below under 1.3.0 and note in 1.5.8.
|
||||
|
||||
|
||||
yaSSL Release notes, version 2.3.2 (7/25/2014)
|
||||
|
||||
This release of yaSSL updates test certs.
|
||||
|
||||
See normal build instructions below under 1.0.6.
|
||||
See libcurl build instructions below under 1.3.0 and note in 1.5.8.
|
||||
|
||||
|
||||
*****************yaSSL Release notes, version 2.3.0 (12/5/2013)
|
||||
|
||||
This release of yaSSL updates asm for newer GCC versions.
|
||||
|
||||
|
@ -20,7 +36,7 @@ See normal build instructions below under 1.0.6.
|
|||
See libcurl build instructions below under 1.3.0 and note in 1.5.8.
|
||||
|
||||
|
||||
*****************yaSSL Release notes, version 2.2.3b (4/23/2013)
|
||||
*****************yaSSL Release notes, version 2.2.3 (4/23/2013)
|
||||
|
||||
This release of yaSSL updates the test certificates as they were expired
|
||||
|
||||
|
|
|
@ -1,45 +1,45 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIEnjCCA4agAwIBAgIJAOnQp195JfQ8MA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
|
||||
VQQGEwJVUzEQMA4GA1UECBMHTW9udGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8G
|
||||
A1UEChMIU2F3dG9vdGgxEzARBgNVBAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3
|
||||
dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTEx
|
||||
MTAyNDE4MTgxNVoXDTE0MDcyMDE4MTgxNVowgZAxCzAJBgNVBAYTAlVTMRAwDgYD
|
||||
VQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhTYXd0b290
|
||||
aDETMBEGA1UECxMKQ29uc3VsdGluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEd
|
||||
MBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20wggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQC/DMotFLIehEJbzTgfSvJNdRDxtjWf38p9A5jTrN4DZu4q
|
||||
8diwfW4HVAsQmCFNgMsSIOfMT95FfclydzLqypC7aVIQAy+o85XF8YtiVhvvZ2+k
|
||||
EEGVrQqb46XAsNJwdlAwW6joCCx87aeieo04KRysx+3yfJWwlYJ9SVw4zXcl772A
|
||||
dVOUPD3KY1ufFbXTHRMvGdE823Y6zLh9yeXC19pAb9gh3HMbQi1TnP4a/H2rejY/
|
||||
mN6EfAVnzmoUOIep8Yy1aMtof3EgK/WgY/VWL6Mm0rdvsVoX1ziZCP6TWG/+wxNJ
|
||||
CBYLp01nAFIxZyNOmO1RRR25BNkL7Ngos0u97TZ5AgMBAAGjgfgwgfUwHQYDVR0O
|
||||
BBYEFCeOZxF0wyYdP+0zY7Ok2B0w5ejVMIHFBgNVHSMEgb0wgbqAFCeOZxF0wyYd
|
||||
P+0zY7Ok2B0w5ejVoYGWpIGTMIGQMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHTW9u
|
||||
dGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8GA1UEChMIU2F3dG9vdGgxEzARBgNV
|
||||
BAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG
|
||||
9w0BCQEWDmluZm9AeWFzc2wuY29tggkA6dCnX3kl9DwwDAYDVR0TBAUwAwEB/zAN
|
||||
BgkqhkiG9w0BAQUFAAOCAQEAX4YU9FGLvKVOMNperJr4bNkmS5P54xyJb57us513
|
||||
PokgdqPm6IYVIdviM7I01dCf88Gkh5Jc+dH/MC+OA7yzPAwyo5BfGpAer53zntcH
|
||||
Aql9J2ZjL68Y16wYmIyDjzjzC6w2EHX7ynYTUFsCj3O/46Dug1IlVM4mzpy9L3mr
|
||||
G2C4kvEDwPw7CNnArdVyCCWAYS3cn6eDYgdH4AdMSwcwBKmHHFV/BxLQy0Jdy89m
|
||||
ARoX7vkPYLfbb2jlTkFibtNvYE9LJ97PGAfxE13LP6klRNpSXMgE4VYS9SqQTtHi
|
||||
rwG1I6HsMdp7Y2nEuPPnzqE9wNtt87LZRsifw7hwWh9/yg==
|
||||
MIIEqjCCA5KgAwIBAgIJAJpBR82hFGKMMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
|
||||
VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8G
|
||||
A1UECgwIU2F3dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3
|
||||
dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe
|
||||
Fw0xNDA3MTEwMzIwMDhaFw0xNzA0MDYwMzIwMDhaMIGUMQswCQYDVQQGEwJVUzEQ
|
||||
MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8GA1UECgwIU2F3
|
||||
dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns
|
||||
LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAL8Myi0Ush6EQlvNOB9K8k11EPG2NZ/fyn0D
|
||||
mNOs3gNm7irx2LB9bgdUCxCYIU2AyxIg58xP3kV9yXJ3MurKkLtpUhADL6jzlcXx
|
||||
i2JWG+9nb6QQQZWtCpvjpcCw0nB2UDBbqOgILHztp6J6jTgpHKzH7fJ8lbCVgn1J
|
||||
XDjNdyXvvYB1U5Q8PcpjW58VtdMdEy8Z0TzbdjrMuH3J5cLX2kBv2CHccxtCLVOc
|
||||
/hr8fat6Nj+Y3oR8BWfOahQ4h6nxjLVoy2h/cSAr9aBj9VYvoybSt2+xWhfXOJkI
|
||||
/pNYb/7DE0kIFgunTWcAUjFnI06Y7VFFHbkE2Qvs2CizS73tNnkCAwEAAaOB/DCB
|
||||
+TAdBgNVHQ4EFgQUJ45nEXTDJh0/7TNjs6TYHTDl6NUwgckGA1UdIwSBwTCBvoAU
|
||||
J45nEXTDJh0/7TNjs6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD
|
||||
VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290
|
||||
aDETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t
|
||||
MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAmkFHzaEUYowwDAYD
|
||||
VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAeXgMbXmIkfw6FZz5J2IW8CEf
|
||||
+n0/oqgyHvfyEal0FnRe3BjK8AAq1QMGJjDxR4P9Mm787apPfQxjYDEvfAy/mWaH
|
||||
7ScIhi3EM+iYIxz+o9uaSU78WkLvccM/rdxKqNKjHQmsMwR7hvNtAFmjyNvRPHP2
|
||||
DpDWXkngvzZjCHulsI81O1aMETVJBBzQ57pWxQ0KkY3Wt2IZNBJSTNJtfMU9DxiB
|
||||
VMv2POWE0tZxFewaNAvwoCF0Q8ijsN/ZZ9rirZNI+KCHvXkU4GIK3/cxLjF70TIq
|
||||
Cv5dFO/ZZFDkg5G8cA3XiI3ZvIQOxRqzv2QCTlGRpKKFFYOv8FubKElfsrMD2A==
|
||||
-----END CERTIFICATE-----
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
e9:d0:a7:5f:79:25:f4:3c
|
||||
9a:41:47:cd:a1:14:62:8c
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 24 18:18:15 2011 GMT
|
||||
Not After : Jul 20 18:18:15 2014 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Not Before: Jul 11 03:20:08 2014 GMT
|
||||
Not After : Apr 6 03:20:08 2017 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (2048 bit)
|
||||
Modulus (2048 bit):
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:bf:0c:ca:2d:14:b2:1e:84:42:5b:cd:38:1f:4a:
|
||||
f2:4d:75:10:f1:b6:35:9f:df:ca:7d:03:98:d3:ac:
|
||||
de:03:66:ee:2a:f1:d8:b0:7d:6e:07:54:0b:10:98:
|
||||
|
@ -64,24 +64,24 @@ Certificate:
|
|||
27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5
|
||||
DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
serial:E9:D0:A7:5F:79:25:F4:3C
|
||||
DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
serial:9A:41:47:CD:A1:14:62:8C
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
5f:86:14:f4:51:8b:bc:a5:4e:30:da:5e:ac:9a:f8:6c:d9:26:
|
||||
4b:93:f9:e3:1c:89:6f:9e:ee:b3:9d:77:3e:89:20:76:a3:e6:
|
||||
e8:86:15:21:db:e2:33:b2:34:d5:d0:9f:f3:c1:a4:87:92:5c:
|
||||
f9:d1:ff:30:2f:8e:03:bc:b3:3c:0c:32:a3:90:5f:1a:90:1e:
|
||||
af:9d:f3:9e:d7:07:02:a9:7d:27:66:63:2f:af:18:d7:ac:18:
|
||||
98:8c:83:8f:38:f3:0b:ac:36:10:75:fb:ca:76:13:50:5b:02:
|
||||
8f:73:bf:e3:a0:ee:83:52:25:54:ce:26:ce:9c:bd:2f:79:ab:
|
||||
1b:60:b8:92:f1:03:c0:fc:3b:08:d9:c0:ad:d5:72:08:25:80:
|
||||
61:2d:dc:9f:a7:83:62:07:47:e0:07:4c:4b:07:30:04:a9:87:
|
||||
1c:55:7f:07:12:d0:cb:42:5d:cb:cf:66:01:1a:17:ee:f9:0f:
|
||||
60:b7:db:6f:68:e5:4e:41:62:6e:d3:6f:60:4f:4b:27:de:cf:
|
||||
18:07:f1:13:5d:cb:3f:a9:25:44:da:52:5c:c8:04:e1:56:12:
|
||||
f5:2a:90:4e:d1:e2:af:01:b5:23:a1:ec:31:da:7b:63:69:c4:
|
||||
b8:f3:e7:ce:a1:3d:c0:db:6d:f3:b2:d9:46:c8:9f:c3:b8:70:
|
||||
5a:1f:7f:ca
|
||||
79:78:0c:6d:79:88:91:fc:3a:15:9c:f9:27:62:16:f0:21:1f:
|
||||
fa:7d:3f:a2:a8:32:1e:f7:f2:11:a9:74:16:74:5e:dc:18:ca:
|
||||
f0:00:2a:d5:03:06:26:30:f1:47:83:fd:32:6e:fc:ed:aa:4f:
|
||||
7d:0c:63:60:31:2f:7c:0c:bf:99:66:87:ed:27:08:86:2d:c4:
|
||||
33:e8:98:23:1c:fe:a3:db:9a:49:4e:fc:5a:42:ef:71:c3:3f:
|
||||
ad:dc:4a:a8:d2:a3:1d:09:ac:33:04:7b:86:f3:6d:00:59:a3:
|
||||
c8:db:d1:3c:73:f6:0e:90:d6:5e:49:e0:bf:36:63:08:7b:a5:
|
||||
b0:8f:35:3b:56:8c:11:35:49:04:1c:d0:e7:ba:56:c5:0d:0a:
|
||||
91:8d:d6:b7:62:19:34:12:52:4c:d2:6d:7c:c5:3d:0f:18:81:
|
||||
54:cb:f6:3c:e5:84:d2:d6:71:15:ec:1a:34:0b:f0:a0:21:74:
|
||||
43:c8:a3:b0:df:d9:67:da:e2:ad:93:48:f8:a0:87:bd:79:14:
|
||||
e0:62:0a:df:f7:31:2e:31:7b:d1:32:2a:0a:fe:5d:14:ef:d9:
|
||||
64:50:e4:83:91:bc:70:0d:d7:88:8d:d9:bc:84:0e:c5:1a:b3:
|
||||
bf:64:02:4e:51:91:a4:a2:85:15:83:af:f0:5b:9b:28:49:5f:
|
||||
b2:b3:03:d8
|
||||
|
|
Binary file not shown.
|
@ -2,17 +2,17 @@ Certificate:
|
|||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
87:4a:75:be:91:66:d8:3d
|
||||
b6:63:af:8f:5d:62:57:a0
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=US, ST=Oregon, L=Portland, O=yaSSL, OU=Programming, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Programming, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 24 18:21:55 2011 GMT
|
||||
Not After : Jul 20 18:21:55 2014 GMT
|
||||
Subject: C=US, ST=Oregon, L=Portland, O=yaSSL, OU=Programming, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Not Before: Jul 11 17:39:44 2014 GMT
|
||||
Not After : Apr 6 17:39:44 2017 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Programming, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (2048 bit)
|
||||
Modulus (2048 bit):
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:c3:03:d1:2b:fe:39:a4:32:45:3b:53:c8:84:2b:
|
||||
2a:7c:74:9a:bd:aa:2a:52:07:47:d6:a6:36:b2:07:
|
||||
32:8e:d0:ba:69:7b:c6:c3:44:9e:d4:81:48:fd:2d:
|
||||
|
@ -37,51 +37,51 @@ Certificate:
|
|||
33:D8:45:66:D7:68:87:18:7E:54:0D:70:27:91:C7:26:D7:85:65:C0
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:33:D8:45:66:D7:68:87:18:7E:54:0D:70:27:91:C7:26:D7:85:65:C0
|
||||
DirName:/C=US/ST=Oregon/L=Portland/O=yaSSL/OU=Programming/CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
serial:87:4A:75:BE:91:66:D8:3D
|
||||
DirName:/C=US/ST=Montana/L=Bozeman/O=wolfSSL/OU=Programming/CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
serial:B6:63:AF:8F:5D:62:57:A0
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
1c:7c:42:81:29:9e:21:cf:d0:d8:c1:54:6f:cc:ae:14:09:38:
|
||||
ff:68:98:9a:95:53:76:18:7b:e6:30:76:ec:28:0d:75:a7:de:
|
||||
e0:cd:8e:d5:55:23:6a:47:2b:4e:8d:fc:7d:06:a3:d8:0f:ad:
|
||||
5e:d6:04:c9:00:33:fb:77:27:d3:b5:03:b3:7b:21:74:31:0b:
|
||||
4a:af:2d:1a:b3:93:8e:cc:f3:5f:3d:90:3f:cc:e3:55:19:91:
|
||||
7b:78:24:2e:4a:09:bb:18:4e:61:2d:9c:c6:0a:a0:34:91:88:
|
||||
70:6b:3b:48:47:bc:79:94:a2:a0:4d:32:47:54:c2:a3:dc:2e:
|
||||
d2:51:4c:29:39:11:ff:e2:15:5e:58:97:36:f6:e9:06:06:86:
|
||||
0e:8d:9d:95:03:72:b2:8b:19:7c:e9:14:6e:a1:88:73:68:58:
|
||||
6d:71:5e:c2:d5:d3:13:d2:5f:de:ea:03:be:e2:00:40:e5:ce:
|
||||
fd:e6:92:31:57:c3:eb:bb:66:ac:cb:2f:1a:fa:e0:62:a2:47:
|
||||
f4:93:43:2a:4b:6c:5e:0a:2f:f9:e7:e6:4a:63:86:b0:ac:2a:
|
||||
a1:eb:b4:5b:67:cd:32:e4:b6:11:4b:9a:72:66:0d:a2:4a:76:
|
||||
8f:fe:22:bc:83:fd:db:b7:d5:a9:ee:05:c9:b1:71:7e:1b:2b:
|
||||
e1:e3:af:c0
|
||||
85:10:90:c5:5d:de:25:8c:f2:57:7b:2d:14:1c:05:f9:71:63:
|
||||
40:b0:e3:c1:c1:2e:13:2a:7a:b7:d6:24:58:87:eb:03:fb:0d:
|
||||
af:e0:f4:d0:c8:bc:51:36:10:4f:79:cc:4f:66:7d:af:99:cb:
|
||||
7b:ce:68:94:c6:36:aa:42:6e:8c:78:5b:b2:85:ca:d1:e1:a8:
|
||||
31:d1:81:d9:f9:c1:a3:9e:34:43:ef:0a:79:7d:3e:83:61:fc:
|
||||
14:5c:d1:dd:bc:0e:d7:51:b7:71:6e:41:7e:8b:2c:5a:9a:cb:
|
||||
77:4b:6a:f5:06:ff:02:af:1e:e6:63:4f:bc:44:d9:3f:56:9e:
|
||||
09:9c:43:f9:55:21:32:46:82:09:86:a9:7b:74:1c:9e:5a:2a:
|
||||
bf:03:79:91:cb:f2:29:7f:c9:15:82:89:b9:53:cd:7e:07:90:
|
||||
a9:5d:76:e1:19:5e:0d:58:b8:59:d5:0d:df:23:ab:6b:63:76:
|
||||
19:9e:9c:df:b0:57:49:6c:d0:86:97:c3:6c:3c:fa:e0:56:c2:
|
||||
1b:e3:a1:42:1a:58:62:85:9d:74:19:83:08:af:59:90:f8:99:
|
||||
bd:67:d3:4a:ea:0e:c9:ca:61:8a:0d:8a:42:cc:90:e9:2e:c2:
|
||||
54:73:7f:5e:af:8d:e2:32:cb:45:20:d6:19:4d:5b:77:31:cc:
|
||||
0f:2d:c0:7e
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEmDCCA4CgAwIBAgIJAIdKdb6RZtg9MA0GCSqGSIb3DQEBBQUAMIGOMQswCQYD
|
||||
VQQGEwJVUzEPMA0GA1UECBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDEOMAwG
|
||||
A1UEChMFeWFTU0wxFDASBgNVBAsTC1Byb2dyYW1taW5nMRYwFAYDVQQDEw13d3cu
|
||||
eWFzc2wuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTAeFw0xMTEw
|
||||
MjQxODIxNTVaFw0xNDA3MjAxODIxNTVaMIGOMQswCQYDVQQGEwJVUzEPMA0GA1UE
|
||||
CBMGT3JlZ29uMREwDwYDVQQHEwhQb3J0bGFuZDEOMAwGA1UEChMFeWFTU0wxFDAS
|
||||
BgNVBAsTC1Byb2dyYW1taW5nMRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJ
|
||||
KoZIhvcNAQkBFg5pbmZvQHlhc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||
ADCCAQoCggEBAMMD0Sv+OaQyRTtTyIQrKnx0mr2qKlIHR9amNrIHMo7Quml7xsNE
|
||||
ntSBSP0taKKLZ7uhdcg2LErSG/eLus8N+e/s8YEee5sDR5q/Zcx/ZSRppugUiVvk
|
||||
NPfFsBST9Wd7Onp44QFWVpGmE0KN0jxAnEzv0YbfN1EbDKE79fGjSjXk4c6W3xt+
|
||||
v06X0BDoqAgwga8gC0MUxXRntDKCb42GwohAmTaDuh5AciIX11JlJHOwzu8Zza7/
|
||||
eGx7wBID1E5yDVBtO6M7o5lencjZDIWz2YrZVCbbbfqsu/8lTMTRefRx04ZAGBOw
|
||||
Y7VyTjDEl4SGLVYv1xX3f8Cu9fxb5fuhutMCAwEAAaOB9jCB8zAdBgNVHQ4EFgQU
|
||||
M9hFZtdohxh+VA1wJ5HHJteFZcAwgcMGA1UdIwSBuzCBuIAUM9hFZtdohxh+VA1w
|
||||
J5HHJteFZcChgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24x
|
||||
ETAPBgNVBAcTCFBvcnRsYW5kMQ4wDAYDVQQKEwV5YVNTTDEUMBIGA1UECxMLUHJv
|
||||
Z3JhbW1pbmcxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEW
|
||||
DmluZm9AeWFzc2wuY29tggkAh0p1vpFm2D0wDAYDVR0TBAUwAwEB/zANBgkqhkiG
|
||||
9w0BAQUFAAOCAQEAHHxCgSmeIc/Q2MFUb8yuFAk4/2iYmpVTdhh75jB27CgNdafe
|
||||
4M2O1VUjakcrTo38fQaj2A+tXtYEyQAz+3cn07UDs3shdDELSq8tGrOTjszzXz2Q
|
||||
P8zjVRmRe3gkLkoJuxhOYS2cxgqgNJGIcGs7SEe8eZSioE0yR1TCo9wu0lFMKTkR
|
||||
/+IVXliXNvbpBgaGDo2dlQNysosZfOkUbqGIc2hYbXFewtXTE9Jf3uoDvuIAQOXO
|
||||
/eaSMVfD67tmrMsvGvrgYqJH9JNDKktsXgov+efmSmOGsKwqoeu0W2fNMuS2EUua
|
||||
cmYNokp2j/4ivIP927fVqe4FybFxfhsr4eOvwA==
|
||||
MIIEqjCCA5KgAwIBAgIJALZjr49dYlegMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
|
||||
VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEQMA4G
|
||||
A1UECgwHd29sZlNTTDEUMBIGA1UECwwLUHJvZ3JhbW1pbmcxGDAWBgNVBAMMD3d3
|
||||
dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe
|
||||
Fw0xNDA3MTExNzM5NDRaFw0xNzA0MDYxNzM5NDRaMIGUMQswCQYDVQQGEwJVUzEQ
|
||||
MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEQMA4GA1UECgwHd29s
|
||||
ZlNTTDEUMBIGA1UECwwLUHJvZ3JhbW1pbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns
|
||||
LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAMMD0Sv+OaQyRTtTyIQrKnx0mr2qKlIHR9am
|
||||
NrIHMo7Quml7xsNEntSBSP0taKKLZ7uhdcg2LErSG/eLus8N+e/s8YEee5sDR5q/
|
||||
Zcx/ZSRppugUiVvkNPfFsBST9Wd7Onp44QFWVpGmE0KN0jxAnEzv0YbfN1EbDKE7
|
||||
9fGjSjXk4c6W3xt+v06X0BDoqAgwga8gC0MUxXRntDKCb42GwohAmTaDuh5AciIX
|
||||
11JlJHOwzu8Zza7/eGx7wBID1E5yDVBtO6M7o5lencjZDIWz2YrZVCbbbfqsu/8l
|
||||
TMTRefRx04ZAGBOwY7VyTjDEl4SGLVYv1xX3f8Cu9fxb5fuhutMCAwEAAaOB/DCB
|
||||
+TAdBgNVHQ4EFgQUM9hFZtdohxh+VA1wJ5HHJteFZcAwgckGA1UdIwSBwTCBvoAU
|
||||
M9hFZtdohxh+VA1wJ5HHJteFZcChgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD
|
||||
VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMRAwDgYDVQQKDAd3b2xmU1NM
|
||||
MRQwEgYDVQQLDAtQcm9ncmFtbWluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t
|
||||
MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAtmOvj11iV6AwDAYD
|
||||
VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAhRCQxV3eJYzyV3stFBwF+XFj
|
||||
QLDjwcEuEyp6t9YkWIfrA/sNr+D00Mi8UTYQT3nMT2Z9r5nLe85olMY2qkJujHhb
|
||||
soXK0eGoMdGB2fnBo540Q+8KeX0+g2H8FFzR3bwO11G3cW5BfossWprLd0tq9Qb/
|
||||
Aq8e5mNPvETZP1aeCZxD+VUhMkaCCYape3QcnloqvwN5kcvyKX/JFYKJuVPNfgeQ
|
||||
qV124RleDVi4WdUN3yOra2N2GZ6c37BXSWzQhpfDbDz64FbCG+OhQhpYYoWddBmD
|
||||
CK9ZkPiZvWfTSuoOycphig2KQsyQ6S7CVHN/Xq+N4jLLRSDWGU1bdzHMDy3Afg==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
Binary file not shown.
|
@ -1,30 +1,12 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
DEK-Info: DES-CBC,B9D8FB94E38635AB
|
||||
DEK-Info: DES-EDE3-CBC,BDE979D13CCC0ABD
|
||||
|
||||
3OTcffWLy2Ddlu2oUwnMWkvIb3e9wLL1jrKOpC0aeb//uiawgw50+KuU4pewB5fN
|
||||
lfEJwpX4NjfPL+Nk+B1VAVrv5gwk5/SY9SwIJluutzmGS4TfVOhqi2SVd0mc9kOD
|
||||
cSWQ9ltAohFu67jdx36j2u+eghDTOjls1lM8EpzL5cu3Bp4G+ST0nXAdnGtSZdV6
|
||||
eToLWjIHiC/JqeRSsKAlG0M5verw14sbb5MO4ZQF4Tdu0fCFgFvDSUM2V4ZLtS1N
|
||||
VysLEkHoF56YKZ5H2FYLxOVDpn5lSiLnOgRbteEzsysyJ1zLxXWFFwJPCpLVNL0e
|
||||
P7OoEoCR+oAdzGkkPF+EdMoULtQP+n6U7jGx3oFVS17NORIFvyxyP0hD4pGTGLnl
|
||||
qAEk30lhKGAE5GgvA2itxZIno/sxPKr5T5Sc2yWh9RdQuLWYNrOb8Kz8J1iXV5l6
|
||||
/5TLGu5XVWIlBnUtjMFUe5M54tqGQ6SuDUlL2ud5YeLVN0T+RU/bqV2fXGoBUqKb
|
||||
Oe8PECm62Ls0wjv27BIOXXV32WSXwsywSzBqq2YXZ5zc9Q0+Mf1Zl6jKwcr8rXhv
|
||||
rA2kcpicONryggsPZnn/us1bVuWKndsCbm7A5om6HowpamNMPuxhISigzzE59L6X
|
||||
X6Sl2F0N0zhrfUVlAAlfYTrwcQVtyBDj1xp2nzJFocurJt9EylLaT0Sw3nxWtuOg
|
||||
yQuF05UPCzxqow/7dMVqtQKng0ptpsn/E+Kr/Egk1YaTpUUxref6mD3R1S+qWML8
|
||||
uqTa3y1CWd4u+aJZH2oZU3gmEd8GvuWnmhsw8iTyq1bzYIga1rQZqh4W5Ok9V+jR
|
||||
GioT/x3mTIhtuEZ1Cmhne5qM3gWYgM3rC3D4+RnUFeThOC5lHtOYHtIEpg66cs7g
|
||||
QYAn75ghEkyfG7ZvdxAU9Ngn6hckux9tFu3GmeEtdqhVOHaOMaYi60uGSk6uBnTv
|
||||
P1sUqi70kMrIBWU7TgldKlTqVdReM87Nkb2O5v1xqtoswLWIi65hFWTqt/H65c1H
|
||||
aEBG1cBqnqBMYuFk8b4TzZbuU9o1UKj0/6N5mpm//BmW65B0htEDP7IYpGF0mt0H
|
||||
LkU+4ISmuLfPfQeviYio6/yASaFkHpxfK7N8CQvmyAG9U8FHRio2QCGSb2EO+BnT
|
||||
Bti6L9oMiQbAsCLWTbvBhCVxdncFw1ncq8gkPMXjEEVUsqAo5Kg+903pRHUyHLzS
|
||||
R6R3C6tTJnNtucJ0zqQMF3K1FHS1m8GrOm+hskJLTHgZLdz6tFTYkXfZBSCwIl7s
|
||||
plg0wq9CrNC2B8MczWn/j3/h7qSI3wBNqADHMdoiOHECffCeyGEYjW3+0iMoj1m1
|
||||
wY0DIym4DDRzk6wsEesxVi8iiCVpYwWnjJAvWYECEO+hWuwCez+eGVkhCT/5g3xW
|
||||
hPSRhivNuJT05tdR5o+yqONHn1eAQH7Ar3cj+neY5WC0iS5FK9axTqbHXotofD1e
|
||||
pJX17ZVWsmIIpRvAWGD+LOcfTMZsaB9DJbkrPSWlMW3lC2S5JOq8OgfMNWIDDUN1
|
||||
guwpK5Z/lWV1qMMnaWeDVgPH/G0FssECXlCU5+/Ol654h8tm2bRXYAYHPM+OoW67
|
||||
N7yz2JV13EmQ7MZPL5wamid5+G1V1gp8FKqMemAC5JDxonS/W9oViMLUcxbfPTDx
|
||||
FznKdYSVTIQ7vv3ofmDG4MEyV/2C568N2kdtAw+jTfrZFN+IU9CI+W+In/nacirF
|
||||
02sAcvDMofustnooKNOO7/iyb5+3vRvEt5vSSRQn5WuSQ9sUKjuzoLs/lbf7fyAt
|
||||
4NeqfI3rYBZXxiUOLITOGXzGNRuFoY+o2uDCfelLAJ8uhiVG6ME3LeJEo1dT5lZ8
|
||||
CSJOLPasKg0iG4V7olM4j9FvAfZr48RRsSfUen756Jo2HpI4bad8LKhFYIdNs2Au
|
||||
WwKLmjpo6QB9hBmRshR04rEXPdrgTqLBExCE08PyaGYnWU8ggWritCeBzDQFj/n4
|
||||
sI+NO0Mymuvg98e5RpO52lg3Xnqv9RIK3guLFOmI6aEHC0PS4WwOEQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
|
BIN
extra/yassl/certs/dsa1024.der
Normal file
BIN
extra/yassl/certs/dsa1024.der
Normal file
Binary file not shown.
12
extra/yassl/certs/dsa1024.pem
Normal file
12
extra/yassl/certs/dsa1024.pem
Normal file
|
@ -0,0 +1,12 @@
|
|||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIIBvAIBAAKBgQC9Ue5KMuCKx+rG4epwxFFDzyoH4ccSwlglXsRdvqswDRK/oQvT
|
||||
NNNoWiVxTn3kvQ8qDlhWy9KjGTrqr/ttgmh56FFpe6tz4yTgCNyR9D+eGclD7lNf
|
||||
dPUc4E3SA6efopG6+ymI55bS+9xUFTG402UCrYSKT59zI2HBfuI6dltsxQIVAJHJ
|
||||
7WDQ+jBn/nmMyCQzdi+0qJx1AoGBAJJacRK36s5yGY1b6qhxWqvpoAC+SfEKylZn
|
||||
YWGYf2PM+Iwo6AgPKEw6BSsX+7Nmc4Gjyr4JWhComKi6onPamO/A2CbMM0DCxb47
|
||||
BeLBWfqWAgXVj0CODT4MQos5yugnviR/YpEgbzLxvrXr469lKWsAyB19/gFmGmQW
|
||||
cCgAwGm6AoGBAJ3LY89yHyvQ/TsQ6zlYbovjbk/ogndsMqPdNUvL4RuPTgJP/caa
|
||||
DDa0XJ7ak6A7TJ+QheLNwOXoZPYJC4EGFSDAXpYniGhbWIrVTCGe6lmZDfnx40WX
|
||||
S0kk3m/DHaC03ElLAiybxVGxyqoUfbT3Zv1JwftWMuiqHH5uADhdXuXVAhQ01VXa
|
||||
Rr8IPem35lKghVKnq/kGQw==
|
||||
-----END DSA PRIVATE KEY-----
|
Binary file not shown.
|
@ -1,8 +0,0 @@
|
|||
-----BEGIN DSA PRIVATE KEY-----
|
||||
MIH3AgEAAkEAmSlpgMk8mGhFqYL+Z+uViMW0DNYmRZUZLKAgW37faencww/zYQol
|
||||
m/IhAWrNqow358pm21b0D3160Ri5Qv0bEQIVAK0lKasKnwkcwa0DIHZ/prfdTQMJ
|
||||
AkASiJna59ALk5vm7jwhf5yztI2ljOI3gD8X0YFPvfBxtjIIVN2/AeKzdwZkdYoE
|
||||
1nk5sQIDA8YGdOWQBQoQRhkxAkAEhKAmMXIM6E9dUxdisYDKwBZfwx7qxdmYOPm+
|
||||
VlNHaM4IIlccuw13kc9bNu3zJIKQis2QfNt3+Rctc3Pvu7mCAhQjg+e+aqykxwwc
|
||||
E2V27tjDFY02uA==
|
||||
-----END DSA PRIVATE KEY-----
|
|
@ -1,17 +1,17 @@
|
|||
Certificate:
|
||||
Data:
|
||||
Version: 1 (0x0)
|
||||
Serial Number: 2 (0x2)
|
||||
Version: 3 (0x2)
|
||||
Serial Number: 1 (0x1)
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 24 18:27:13 2011 GMT
|
||||
Not After : Jul 20 18:27:13 2014 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=yaSSL, OU=Support, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Not Before: Jul 11 17:20:14 2014 GMT
|
||||
Not After : Apr 6 17:20:14 2017 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL, OU=Support, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (2048 bit)
|
||||
Modulus (2048 bit):
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:c0:95:08:e1:57:41:f2:71:6d:b7:d2:45:41:27:
|
||||
01:65:c6:45:ae:f2:bc:24:30:b8:95:ce:2f:4e:d6:
|
||||
f6:1c:88:bc:7c:9f:fb:a8:67:7f:fe:5c:9c:51:75:
|
||||
|
@ -31,59 +31,74 @@ Certificate:
|
|||
a7:aa:eb:c4:e1:e6:61:83:c5:d2:96:df:d9:d0:4f:
|
||||
ad:d7
|
||||
Exponent: 65537 (0x10001)
|
||||
X509v3 extensions:
|
||||
X509v3 Subject Key Identifier:
|
||||
B3:11:32:C9:92:98:84:E2:C9:F8:D0:3B:6E:03:42:CA:1F:0E:8E:3C
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5
|
||||
DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
serial:9A:41:47:CD:A1:14:62:8C
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
71:4e:d3:62:df:cc:4c:f7:cd:b7:6e:52:0b:6c:6e:e0:bd:c2:
|
||||
2d:07:d7:c0:b0:6e:43:1e:35:bc:30:01:50:f0:ff:99:23:6c:
|
||||
18:1a:41:b6:11:d6:d4:19:61:fd:e4:77:97:1c:39:e1:57:ab:
|
||||
c5:15:63:77:11:36:5e:74:e2:24:0b:1f:41:78:ad:b7:81:e7:
|
||||
b4:40:66:80:f0:4b:91:a0:6d:a8:6e:3d:53:d9:8b:ce:2a:e1:
|
||||
0b:45:65:87:a1:96:ae:ee:3e:88:d5:12:1f:78:17:ae:2c:c5:
|
||||
73:44:d8:dc:f4:af:d8:cc:ae:4c:e1:0c:be:55:a4:99:f7:6e:
|
||||
96:c0:c8:45:87:bf:dc:51:57:ff:9e:73:37:6a:18:9c:c3:f9:
|
||||
22:7a:f4:b0:52:bd:fc:21:30:f8:c5:ff:1e:87:7d:ad:a2:5a:
|
||||
35:f5:22:a8:b4:0a:76:38:e6:76:b0:98:af:1b:ec:8a:0a:43:
|
||||
74:d2:85:34:37:84:07:e1:f6:23:b2:29:de:a6:b6:b7:4c:57:
|
||||
7e:96:06:cb:a9:16:25:29:3a:03:2d:55:7d:a6:8c:a4:f7:9e:
|
||||
81:c9:95:b6:7c:c1:4a:ce:94:66:0c:ca:88:eb:d2:09:f5:5b:
|
||||
19:58:82:df:27:fd:67:95:78:b7:02:06:d5:a7:61:bd:ef:3a:
|
||||
fc:b2:61:cd
|
||||
3d:8c:70:05:5b:62:4b:bf:6c:b6:48:61:01:10:1d:5e:05:ba:
|
||||
55:94:2c:ae:59:6f:97:80:5d:6c:86:ec:9a:eb:15:45:44:e4:
|
||||
56:f8:75:ca:8a:45:32:f4:c7:e1:fa:f2:98:1c:91:d3:3f:e8:
|
||||
0e:c9:1b:fa:e1:79:99:67:0e:0d:6b:8a:ec:1a:2c:59:c4:34:
|
||||
04:8d:39:77:cd:b5:e9:60:5b:82:bf:34:ce:ed:c6:4f:3f:b4:
|
||||
5c:4d:8a:b4:f4:0a:04:12:a0:56:c1:e1:33:37:a1:54:87:48:
|
||||
e9:81:c2:0f:8f:6f:d3:52:4c:4c:32:4c:6b:9f:3a:04:8f:77:
|
||||
5d:ad:dc:3d:2b:f2:c9:df:3c:60:5d:d8:fc:86:72:7c:3d:d0:
|
||||
84:4b:8c:df:26:43:fe:c0:cc:5b:e1:36:b3:3d:32:28:a3:ef:
|
||||
0c:20:d6:b1:50:39:d6:67:a9:8b:84:bc:92:34:eb:19:23:e8:
|
||||
10:8f:ea:bd:18:8c:93:27:3c:74:75:8e:58:04:fa:2a:74:44:
|
||||
7d:fc:4d:39:df:54:17:ba:78:e1:5d:6a:70:d3:7c:a2:80:81:
|
||||
e6:19:51:91:c3:44:51:ec:bb:88:a9:53:e1:d7:a9:8c:28:f4:
|
||||
21:1c:42:51:09:b4:12:6d:a0:d6:25:09:85:c6:2a:0c:af:a7:
|
||||
58:e6:52:8b
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDkDCCAngCAQIwDQYJKoZIhvcNAQEFBQAwgZAxCzAJBgNVBAYTAlVTMRAwDgYD
|
||||
VQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhTYXd0b290
|
||||
aDETMBEGA1UECxMKQ29uc3VsdGluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEd
|
||||
MBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20wHhcNMTExMDI0MTgyNzEzWhcN
|
||||
MTQwNzIwMTgyNzEzWjCBijELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB01vbnRhbmEx
|
||||
EDAOBgNVBAcTB0JvemVtYW4xDjAMBgNVBAoTBXlhU1NMMRAwDgYDVQQLEwdTdXBw
|
||||
b3J0MRYwFAYDVQQDEw13d3cueWFzc2wuY29tMR0wGwYJKoZIhvcNAQkBFg5pbmZv
|
||||
QHlhc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMCVCOFX
|
||||
QfJxbbfSRUEnAWXGRa7yvCQwuJXOL07W9hyIvHyf+6hnf/5cnFF194rKB+c1L4/h
|
||||
vXvAL3yrZKgX/Mpde7rgIeVyLm8uhtiVc9qsG1O5Xz/XGQ0lT+FjY1GLC2Q/rUO4
|
||||
pRxcNLOuAKBjxfZ/C1loeHOmjBipAm2vwxkBLrgQ48bMQLRpo0YzaYduxLsXpvPo
|
||||
3a1zvHsvIbX9ZlEMvVSz4W1fHLwjc9EJA4kU0hC5ZMMq0KGWSrzh1Bpbx6DAwWN4
|
||||
D0Q3MDKWgDIjlaF3uhPSl3PiXSXJag3DOWCktLBpQkIJ6dgIvDMgs1gip6rrxOHm
|
||||
YYPF0pbf2dBPrdcCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAcU7TYt/MTPfNt25S
|
||||
C2xu4L3CLQfXwLBuQx41vDABUPD/mSNsGBpBthHW1Blh/eR3lxw54VerxRVjdxE2
|
||||
XnTiJAsfQXitt4HntEBmgPBLkaBtqG49U9mLzirhC0Vlh6GWru4+iNUSH3gXrizF
|
||||
c0TY3PSv2MyuTOEMvlWkmfdulsDIRYe/3FFX/55zN2oYnMP5Inr0sFK9/CEw+MX/
|
||||
Hod9raJaNfUiqLQKdjjmdrCYrxvsigpDdNKFNDeEB+H2I7Ip3qa2t0xXfpYGy6kW
|
||||
JSk6Ay1VfaaMpPeegcmVtnzBSs6UZgzKiOvSCfVbGViC3yf9Z5V4twIG1adhve86
|
||||
/LJhzQ==
|
||||
MIIEnjCCA4agAwIBAgIBATANBgkqhkiG9w0BAQUFADCBlDELMAkGA1UEBhMCVVMx
|
||||
EDAOBgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xETAPBgNVBAoMCFNh
|
||||
d3Rvb3RoMRMwEQYDVQQLDApDb25zdWx0aW5nMRgwFgYDVQQDDA93d3cud29sZnNz
|
||||
bC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wHhcNMTQwNzEx
|
||||
MTcyMDE0WhcNMTcwNDA2MTcyMDE0WjCBkDELMAkGA1UEBhMCVVMxEDAOBgNVBAgM
|
||||
B01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xEDAOBgNVBAoMB3dvbGZTU0wxEDAO
|
||||
BgNVBAsMB1N1cHBvcnQxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
|
||||
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||
ADCCAQoCggEBAMCVCOFXQfJxbbfSRUEnAWXGRa7yvCQwuJXOL07W9hyIvHyf+6hn
|
||||
f/5cnFF194rKB+c1L4/hvXvAL3yrZKgX/Mpde7rgIeVyLm8uhtiVc9qsG1O5Xz/X
|
||||
GQ0lT+FjY1GLC2Q/rUO4pRxcNLOuAKBjxfZ/C1loeHOmjBipAm2vwxkBLrgQ48bM
|
||||
QLRpo0YzaYduxLsXpvPo3a1zvHsvIbX9ZlEMvVSz4W1fHLwjc9EJA4kU0hC5ZMMq
|
||||
0KGWSrzh1Bpbx6DAwWN4D0Q3MDKWgDIjlaF3uhPSl3PiXSXJag3DOWCktLBpQkIJ
|
||||
6dgIvDMgs1gip6rrxOHmYYPF0pbf2dBPrdcCAwEAAaOB/DCB+TAdBgNVHQ4EFgQU
|
||||
sxEyyZKYhOLJ+NA7bgNCyh8OjjwwgckGA1UdIwSBwTCBvoAUJ45nEXTDJh0/7TNj
|
||||
s6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdNb250YW5h
|
||||
MRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290aDETMBEGA1UECwwK
|
||||
Q29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcN
|
||||
AQkBFhBpbmZvQHdvbGZzc2wuY29tggkAmkFHzaEUYowwDAYDVR0TBAUwAwEB/zAN
|
||||
BgkqhkiG9w0BAQUFAAOCAQEAPYxwBVtiS79stkhhARAdXgW6VZQsrllvl4BdbIbs
|
||||
musVRUTkVvh1yopFMvTH4frymByR0z/oDskb+uF5mWcODWuK7BosWcQ0BI05d821
|
||||
6WBbgr80zu3GTz+0XE2KtPQKBBKgVsHhMzehVIdI6YHCD49v01JMTDJMa586BI93
|
||||
Xa3cPSvyyd88YF3Y/IZyfD3QhEuM3yZD/sDMW+E2sz0yKKPvDCDWsVA51mepi4S8
|
||||
kjTrGSPoEI/qvRiMkyc8dHWOWAT6KnREffxNOd9UF7p44V1qcNN8ooCB5hlRkcNE
|
||||
Uey7iKlT4depjCj0IRxCUQm0Em2g1iUJhcYqDK+nWOZSiw==
|
||||
-----END CERTIFICATE-----
|
||||
Certificate:
|
||||
Data:
|
||||
Version: 3 (0x2)
|
||||
Serial Number:
|
||||
e9:d0:a7:5f:79:25:f4:3c
|
||||
9a:41:47:cd:a1:14:62:8c
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Issuer: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Validity
|
||||
Not Before: Oct 24 18:18:15 2011 GMT
|
||||
Not After : Jul 20 18:18:15 2014 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
Not Before: Jul 11 03:20:08 2014 GMT
|
||||
Not After : Apr 6 03:20:08 2017 GMT
|
||||
Subject: C=US, ST=Montana, L=Bozeman, O=Sawtooth, OU=Consulting, CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
Subject Public Key Info:
|
||||
Public Key Algorithm: rsaEncryption
|
||||
RSA Public Key: (2048 bit)
|
||||
Modulus (2048 bit):
|
||||
Public-Key: (2048 bit)
|
||||
Modulus:
|
||||
00:bf:0c:ca:2d:14:b2:1e:84:42:5b:cd:38:1f:4a:
|
||||
f2:4d:75:10:f1:b6:35:9f:df:ca:7d:03:98:d3:ac:
|
||||
de:03:66:ee:2a:f1:d8:b0:7d:6e:07:54:0b:10:98:
|
||||
|
@ -108,50 +123,51 @@ Certificate:
|
|||
27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5
|
||||
X509v3 Authority Key Identifier:
|
||||
keyid:27:8E:67:11:74:C3:26:1D:3F:ED:33:63:B3:A4:D8:1D:30:E5:E8:D5
|
||||
DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.yassl.com/emailAddress=info@yassl.com
|
||||
serial:E9:D0:A7:5F:79:25:F4:3C
|
||||
DirName:/C=US/ST=Montana/L=Bozeman/O=Sawtooth/OU=Consulting/CN=www.wolfssl.com/emailAddress=info@wolfssl.com
|
||||
serial:9A:41:47:CD:A1:14:62:8C
|
||||
|
||||
X509v3 Basic Constraints:
|
||||
CA:TRUE
|
||||
Signature Algorithm: sha1WithRSAEncryption
|
||||
5f:86:14:f4:51:8b:bc:a5:4e:30:da:5e:ac:9a:f8:6c:d9:26:
|
||||
4b:93:f9:e3:1c:89:6f:9e:ee:b3:9d:77:3e:89:20:76:a3:e6:
|
||||
e8:86:15:21:db:e2:33:b2:34:d5:d0:9f:f3:c1:a4:87:92:5c:
|
||||
f9:d1:ff:30:2f:8e:03:bc:b3:3c:0c:32:a3:90:5f:1a:90:1e:
|
||||
af:9d:f3:9e:d7:07:02:a9:7d:27:66:63:2f:af:18:d7:ac:18:
|
||||
98:8c:83:8f:38:f3:0b:ac:36:10:75:fb:ca:76:13:50:5b:02:
|
||||
8f:73:bf:e3:a0:ee:83:52:25:54:ce:26:ce:9c:bd:2f:79:ab:
|
||||
1b:60:b8:92:f1:03:c0:fc:3b:08:d9:c0:ad:d5:72:08:25:80:
|
||||
61:2d:dc:9f:a7:83:62:07:47:e0:07:4c:4b:07:30:04:a9:87:
|
||||
1c:55:7f:07:12:d0:cb:42:5d:cb:cf:66:01:1a:17:ee:f9:0f:
|
||||
60:b7:db:6f:68:e5:4e:41:62:6e:d3:6f:60:4f:4b:27:de:cf:
|
||||
18:07:f1:13:5d:cb:3f:a9:25:44:da:52:5c:c8:04:e1:56:12:
|
||||
f5:2a:90:4e:d1:e2:af:01:b5:23:a1:ec:31:da:7b:63:69:c4:
|
||||
b8:f3:e7:ce:a1:3d:c0:db:6d:f3:b2:d9:46:c8:9f:c3:b8:70:
|
||||
5a:1f:7f:ca
|
||||
79:78:0c:6d:79:88:91:fc:3a:15:9c:f9:27:62:16:f0:21:1f:
|
||||
fa:7d:3f:a2:a8:32:1e:f7:f2:11:a9:74:16:74:5e:dc:18:ca:
|
||||
f0:00:2a:d5:03:06:26:30:f1:47:83:fd:32:6e:fc:ed:aa:4f:
|
||||
7d:0c:63:60:31:2f:7c:0c:bf:99:66:87:ed:27:08:86:2d:c4:
|
||||
33:e8:98:23:1c:fe:a3:db:9a:49:4e:fc:5a:42:ef:71:c3:3f:
|
||||
ad:dc:4a:a8:d2:a3:1d:09:ac:33:04:7b:86:f3:6d:00:59:a3:
|
||||
c8:db:d1:3c:73:f6:0e:90:d6:5e:49:e0:bf:36:63:08:7b:a5:
|
||||
b0:8f:35:3b:56:8c:11:35:49:04:1c:d0:e7:ba:56:c5:0d:0a:
|
||||
91:8d:d6:b7:62:19:34:12:52:4c:d2:6d:7c:c5:3d:0f:18:81:
|
||||
54:cb:f6:3c:e5:84:d2:d6:71:15:ec:1a:34:0b:f0:a0:21:74:
|
||||
43:c8:a3:b0:df:d9:67:da:e2:ad:93:48:f8:a0:87:bd:79:14:
|
||||
e0:62:0a:df:f7:31:2e:31:7b:d1:32:2a:0a:fe:5d:14:ef:d9:
|
||||
64:50:e4:83:91:bc:70:0d:d7:88:8d:d9:bc:84:0e:c5:1a:b3:
|
||||
bf:64:02:4e:51:91:a4:a2:85:15:83:af:f0:5b:9b:28:49:5f:
|
||||
b2:b3:03:d8
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEnjCCA4agAwIBAgIJAOnQp195JfQ8MA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD
|
||||
VQQGEwJVUzEQMA4GA1UECBMHTW9udGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8G
|
||||
A1UEChMIU2F3dG9vdGgxEzARBgNVBAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3
|
||||
dy55YXNzbC5jb20xHTAbBgkqhkiG9w0BCQEWDmluZm9AeWFzc2wuY29tMB4XDTEx
|
||||
MTAyNDE4MTgxNVoXDTE0MDcyMDE4MTgxNVowgZAxCzAJBgNVBAYTAlVTMRAwDgYD
|
||||
VQQIEwdNb250YW5hMRAwDgYDVQQHEwdCb3plbWFuMREwDwYDVQQKEwhTYXd0b290
|
||||
aDETMBEGA1UECxMKQ29uc3VsdGluZzEWMBQGA1UEAxMNd3d3Lnlhc3NsLmNvbTEd
|
||||
MBsGCSqGSIb3DQEJARYOaW5mb0B5YXNzbC5jb20wggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQC/DMotFLIehEJbzTgfSvJNdRDxtjWf38p9A5jTrN4DZu4q
|
||||
8diwfW4HVAsQmCFNgMsSIOfMT95FfclydzLqypC7aVIQAy+o85XF8YtiVhvvZ2+k
|
||||
EEGVrQqb46XAsNJwdlAwW6joCCx87aeieo04KRysx+3yfJWwlYJ9SVw4zXcl772A
|
||||
dVOUPD3KY1ufFbXTHRMvGdE823Y6zLh9yeXC19pAb9gh3HMbQi1TnP4a/H2rejY/
|
||||
mN6EfAVnzmoUOIep8Yy1aMtof3EgK/WgY/VWL6Mm0rdvsVoX1ziZCP6TWG/+wxNJ
|
||||
CBYLp01nAFIxZyNOmO1RRR25BNkL7Ngos0u97TZ5AgMBAAGjgfgwgfUwHQYDVR0O
|
||||
BBYEFCeOZxF0wyYdP+0zY7Ok2B0w5ejVMIHFBgNVHSMEgb0wgbqAFCeOZxF0wyYd
|
||||
P+0zY7Ok2B0w5ejVoYGWpIGTMIGQMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHTW9u
|
||||
dGFuYTEQMA4GA1UEBxMHQm96ZW1hbjERMA8GA1UEChMIU2F3dG9vdGgxEzARBgNV
|
||||
BAsTCkNvbnN1bHRpbmcxFjAUBgNVBAMTDXd3dy55YXNzbC5jb20xHTAbBgkqhkiG
|
||||
9w0BCQEWDmluZm9AeWFzc2wuY29tggkA6dCnX3kl9DwwDAYDVR0TBAUwAwEB/zAN
|
||||
BgkqhkiG9w0BAQUFAAOCAQEAX4YU9FGLvKVOMNperJr4bNkmS5P54xyJb57us513
|
||||
PokgdqPm6IYVIdviM7I01dCf88Gkh5Jc+dH/MC+OA7yzPAwyo5BfGpAer53zntcH
|
||||
Aql9J2ZjL68Y16wYmIyDjzjzC6w2EHX7ynYTUFsCj3O/46Dug1IlVM4mzpy9L3mr
|
||||
G2C4kvEDwPw7CNnArdVyCCWAYS3cn6eDYgdH4AdMSwcwBKmHHFV/BxLQy0Jdy89m
|
||||
ARoX7vkPYLfbb2jlTkFibtNvYE9LJ97PGAfxE13LP6klRNpSXMgE4VYS9SqQTtHi
|
||||
rwG1I6HsMdp7Y2nEuPPnzqE9wNtt87LZRsifw7hwWh9/yg==
|
||||
MIIEqjCCA5KgAwIBAgIJAJpBR82hFGKMMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD
|
||||
VQQGEwJVUzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8G
|
||||
A1UECgwIU2F3dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3
|
||||
dy53b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTAe
|
||||
Fw0xNDA3MTEwMzIwMDhaFw0xNzA0MDYwMzIwMDhaMIGUMQswCQYDVQQGEwJVUzEQ
|
||||
MA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjERMA8GA1UECgwIU2F3
|
||||
dG9vdGgxEzARBgNVBAsMCkNvbnN1bHRpbmcxGDAWBgNVBAMMD3d3dy53b2xmc3Ns
|
||||
LmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZI
|
||||
hvcNAQEBBQADggEPADCCAQoCggEBAL8Myi0Ush6EQlvNOB9K8k11EPG2NZ/fyn0D
|
||||
mNOs3gNm7irx2LB9bgdUCxCYIU2AyxIg58xP3kV9yXJ3MurKkLtpUhADL6jzlcXx
|
||||
i2JWG+9nb6QQQZWtCpvjpcCw0nB2UDBbqOgILHztp6J6jTgpHKzH7fJ8lbCVgn1J
|
||||
XDjNdyXvvYB1U5Q8PcpjW58VtdMdEy8Z0TzbdjrMuH3J5cLX2kBv2CHccxtCLVOc
|
||||
/hr8fat6Nj+Y3oR8BWfOahQ4h6nxjLVoy2h/cSAr9aBj9VYvoybSt2+xWhfXOJkI
|
||||
/pNYb/7DE0kIFgunTWcAUjFnI06Y7VFFHbkE2Qvs2CizS73tNnkCAwEAAaOB/DCB
|
||||
+TAdBgNVHQ4EFgQUJ45nEXTDJh0/7TNjs6TYHTDl6NUwgckGA1UdIwSBwTCBvoAU
|
||||
J45nEXTDJh0/7TNjs6TYHTDl6NWhgZqkgZcwgZQxCzAJBgNVBAYTAlVTMRAwDgYD
|
||||
VQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3plbWFuMREwDwYDVQQKDAhTYXd0b290
|
||||
aDETMBEGA1UECwwKQ29uc3VsdGluZzEYMBYGA1UEAwwPd3d3LndvbGZzc2wuY29t
|
||||
MR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tggkAmkFHzaEUYowwDAYD
|
||||
VR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAeXgMbXmIkfw6FZz5J2IW8CEf
|
||||
+n0/oqgyHvfyEal0FnRe3BjK8AAq1QMGJjDxR4P9Mm787apPfQxjYDEvfAy/mWaH
|
||||
7ScIhi3EM+iYIxz+o9uaSU78WkLvccM/rdxKqNKjHQmsMwR7hvNtAFmjyNvRPHP2
|
||||
DpDWXkngvzZjCHulsI81O1aMETVJBBzQ57pWxQ0KkY3Wt2IZNBJSTNJtfMU9DxiB
|
||||
VMv2POWE0tZxFewaNAvwoCF0Q8ijsN/ZZ9rirZNI+KCHvXkU4GIK3/cxLjF70TIq
|
||||
Cv5dFO/ZZFDkg5G8cA3XiI3ZvIQOxRqzv2QCTlGRpKKFFYOv8FubKElfsrMD2A==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
|
@ -1,30 +1,30 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
Proc-Type: 4,ENCRYPTED
|
||||
DEK-Info: DES-CBC,08132C1FFF5BC8CC
|
||||
DEK-Info: DES-CBC,136C7D8A69656668
|
||||
|
||||
W+krChiFlNU+koE0Bep+U45OG4V4IFZv67ex6yJHgcsPd+HQ692A/h+5dYc8rdlW
|
||||
2LDgSODHHIMTt6RVJDxXxXs3qFmJQbnVXeXxV209X8EfaRarh+yiMKeUP6K8hIvj
|
||||
+IYRma6iKOs+d4KlcZZudGs2f/x8nhxXbmQtrLhGd4h91mnJk2sKmiz7UkUy6Qng
|
||||
gOHnT2dfF4Qk2ZYsjisRHjpWZiqh40GO1LuTgUjZoH+LGhMwMwOAE6+ss5xa+yE+
|
||||
Xd9Yljm0/QW68JILkCJQjLDRvPGxDJyvYq6TT/kSElsRlI/AuRrZH1YVD3hn/xjx
|
||||
tDoEB+JEbH6iu9ne2srxnGSKLzoUbb4XPaCjLIW9BJf7oANmmFQpZZQiRTyIUVWi
|
||||
IE5hJciqF7ra7IwfZAW/PeWGXpzNOVN9QAvyAMsmvUCzJdxd1ySUatjhZ+mSFYGk
|
||||
rDVtyrgt4ZQgV0EdJV0Yn1ZWMOk1qEKXT0JAnI+9S6Y+QEdwXmdz3xlVuq61Jvub
|
||||
iJUVepnD/1QeFfWy8JwlscWpWFrkr569f3SNG+FGb6fufnUP7K6sX3urj+pj1QET
|
||||
f9NmmvLBsVsbj1Egg3wnxbVHIUPky64LY04wtNJaAwhuG6mKCvaClKYMTmTCyrzP
|
||||
aRwghhMQ3yHUbo2A1ZppYsXXg8lX30eW+5O77N9Q3xfP0phODHXsnXhBH09ml1JQ
|
||||
MmiCaL5n6sIVcjtFmN/kyaEuz/1VrBSaDCPeW88n61UXUidXrGOZN/2c/2xFir8B
|
||||
2rdE82lQLl07SJxzQQ6aJVvrc5tnbV/ENDySS5dG6Yl/w89/nuu0RFHmAweKqfGC
|
||||
8m0XOkmonIk6h3YT7XrkE0b/2jkf1mMaMKrGGfRmxqNt1nGxMCJHAO/Sn9v+I9rU
|
||||
W7HCZ04RTnRp1BXcqDxdwlveDKJRVfiKOSSEOpEXXlexS5R1vikmxrCwK5YVUTkT
|
||||
3tgahVtHJkFHnBHBzXyHUDwWahxZaU9TO43z0JFxs0zINWUWppldf0oyWjP1FSrI
|
||||
a9tXBs7aoykUY9Av9K0p4UJJU005qzD/tuegZFX34wRETJO0BJnlZHTTZSqLSVX+
|
||||
KZg4nPq8Xii1VHta3tgw7up2z1tpepsBerTsRQ1+IDpxLaIxgt9am0hXVTiMLex/
|
||||
DD9UvQC/eBUmpmWraK/Mqeq/UrPl+lmeoXsG6LWIvEp9d19rJ/3OhIJf2pDh9dC8
|
||||
NzJoNP9qOrDajAwzeeF5dbQxCaG+X8am9s4wryC0p+NrQ0tzv8efey0zBodDIOgo
|
||||
F1G7+ADgHy+V565q8sdL52xx0xB9Ty5p9IOfOUbxa3K65TJf/I/QAQjl4LyTbkfr
|
||||
kzpYAG2uF55EB3Eq3aMrj47pzZy0ELXXN2qYJ9Oelgl+h6MzYbmd+Wm+A2Cofv3u
|
||||
7ANAyjAYN7/Lo3lTFAt7sXAXGKnqw62JNSSMkIqZVrG5dn7Jxj5AJCVyYxTrm6Y+
|
||||
DDcblX47XrWxVoVJN/dLJZ8FzWs4o/8w9Yn8U54Ci7F0g+j2f+OpDy9PGFYT9pKw
|
||||
xWG8chkYE6QPilEYvdi26ZnZ3u236q9PMtyRP87NmBN2sLkj/rbBTzBxWIaGS+Mt
|
||||
jvNTyPaztxPIoAzbdmZnD0Zw2+60tMxNc0GMHNmeOyG25aHP/dT+TWiKFpFVkkkY
|
||||
uoCIhYUyw7gmpw+CnRJwWd+ans4nrvAjwy5oWJvarvsyUpjqvnPoIlAqd+d4TDKN
|
||||
eESzcI76+gHdisAtCrQD+fGqgTZhli5TgDbnpasL/QnY2qDlutvakkVw7gPXe156
|
||||
2Phy8WN+efr65J6wt3K/dj7Datl9u4JeHQK81gYyWBVX+EagEjPGDzkFQCj9Z0q7
|
||||
8K3iB5GW1JAqJS0IfZPB40AnSTF/n1TL1SN3qfU3l7hTGNrx9o7580bgDEoAR7pI
|
||||
F8eZlS15KHtZmh11AnU1KTKZ6kmgnNqeMTGMN6N0ct2wMKW1dV87eTDlF0oiR2ol
|
||||
XwtFgKmrIjfpmzkdWjbJmWnGMjD56KdiFZga/ZyKMsPrVoYLgfJEpn36iQspfygx
|
||||
HCGNTf0PjIsjEWU0WyQiF86t+c45W3wNFsv/AxVyfMl+su02yrd6u2ecuQDir3Cs
|
||||
b2k8IKtQgVe/NIpEWLKuiHG5oedIPPQyDYK5uq+gHxCGeOoKnWlsWFEHZRiza4X5
|
||||
tbgTrJB8Sw0ENWrvVGGmQZN4pSImlsMwzQ2qik5CQ00N1b3+56/obn0z75I3bUSb
|
||||
tC5g8DRjl6oclAenNgh/MYMT287y5W2dD4npxHcekX4O3J2CDXNfg4vV2j5GRxtg
|
||||
LVJdYE2p7bpYePCDHrYng8b9ubBprx0CrEnkIvvtUjzNPf6VDL0+MBKl+XgR2/nz
|
||||
iRqTuZnlGGOyM+KYDwXpgwfs/HfvFGksxTAlO/40GkGh+WGPaIoNyCK0SgQKhyb4
|
||||
JIkR0vd2/yLg3lWMJrGwh7A0Gm07Z/781oURP3uWd+PaCOgGcd5ipcAjcEyuxNly
|
||||
AthipWqmQWUcbf6Z2N9j3OA22Hv2Uzk8HSfi9VOZtL9svdEEZ0NnOekJgnc6stQp
|
||||
bXiknlK/T5WdrWxSyCfgUq68Vf6DFfIRAVuFdJ3WHT2wVXHrDfft6D+Ne/XCxPoE
|
||||
8zGmkyusaph33UHQ1oNyUbLbwcDCDSmOo8gYoedD3IwxtMA3wJRugomqosItwV8X
|
||||
vkgmcy8eSE/+gZUxJEN2gnLcfKFhCkC80J6oFhmoDD6vuUnPHcFdKZgVPw2rzPk5
|
||||
Vb1kX+gpORplYmKpq1vz/ujscL4T0TmYLz02hkIS4edpW55ncTTv7JWefpRiTB1J
|
||||
RB3td3me4htqR+YIDWJ+emrOmqsCG2WvpAS+MTw2mj1jYk9LL/ZYobTjSCEWmuwT
|
||||
yVK6m303irR7HQDauxhslRFgoK21w63viOyj5NKIU1gQtaAANGDxcgORC1XLjjgt
|
||||
oNutSQA+7P42vfHSHK4cnTBXl6V32H/GyVpdHQOZqSrqIjgLmUZodSmRPROxosZF
|
||||
a46B1O7m/rJFxkiKW4vod+/WqjoE0Hhfrb8rRrkRjzGeCqqSSnQ3vrunVkvF8hlA
|
||||
b6FOv4ZBJL4piC1GKH+rscqke9NEiDqXN8C3iYz86jbck/Ha21yUS8T3X7N52sg+
|
||||
B3AmOGnLK6BebYeto9vZxQjacChJZSixSxLV+l9/nVQ0+mW42azHdzk0ru59TGAj
|
||||
-----END RSA PRIVATE KEY-----
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -48,7 +48,11 @@ const uint AUTO = 0xFEEDBEEF;
|
|||
|
||||
|
||||
struct NoCheck {
|
||||
void check(uint, uint);
|
||||
int check(uint, uint);
|
||||
};
|
||||
|
||||
struct Check {
|
||||
int check(uint, uint);
|
||||
};
|
||||
|
||||
/* input_buffer operates like a smart c style array with a checking option,
|
||||
|
@ -60,11 +64,13 @@ struct NoCheck {
|
|||
* write to the buffer bulk wise and have the correct size
|
||||
*/
|
||||
|
||||
class input_buffer : public NoCheck {
|
||||
class input_buffer : public Check {
|
||||
uint size_; // number of elements in buffer
|
||||
uint current_; // current offset position in buffer
|
||||
byte* buffer_; // storage for buffer
|
||||
byte* end_; // end of storage marker
|
||||
int error_; // error number
|
||||
byte zero_; // for returning const reference to zero byte
|
||||
public:
|
||||
input_buffer();
|
||||
|
||||
|
@ -93,6 +99,10 @@ public:
|
|||
|
||||
uint get_remaining() const;
|
||||
|
||||
int get_error() const;
|
||||
|
||||
void set_error();
|
||||
|
||||
void set_current(uint i);
|
||||
|
||||
// read only access through [], advance current
|
||||
|
@ -103,7 +113,7 @@ public:
|
|||
bool eof();
|
||||
|
||||
// peek ahead
|
||||
byte peek() const;
|
||||
byte peek();
|
||||
|
||||
// write function, should use at/near construction
|
||||
void assign(const byte* t, uint s);
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#include "rsa.h"
|
||||
|
||||
|
||||
#define YASSL_VERSION "2.3.0"
|
||||
#define YASSL_VERSION "2.3.4"
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -35,8 +35,19 @@ namespace yaSSL {
|
|||
|
||||
|
||||
|
||||
void NoCheck::check(uint, uint)
|
||||
/* return 0 on check success, always true for NoCheck policy */
|
||||
int NoCheck::check(uint, uint)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* return 0 on check success */
|
||||
int Check::check(uint i, uint max)
|
||||
{
|
||||
if (i < max)
|
||||
return 0;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -51,18 +62,20 @@ void NoCheck::check(uint, uint)
|
|||
|
||||
|
||||
input_buffer::input_buffer()
|
||||
: size_(0), current_(0), buffer_(0), end_(0)
|
||||
: size_(0), current_(0), buffer_(0), end_(0), error_(0), zero_(0)
|
||||
{}
|
||||
|
||||
|
||||
input_buffer::input_buffer(uint s)
|
||||
: size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s)
|
||||
: size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s),
|
||||
error_(0), zero_(0)
|
||||
{}
|
||||
|
||||
|
||||
// with assign
|
||||
input_buffer::input_buffer(uint s, const byte* t, uint len)
|
||||
: size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s)
|
||||
: size_(0), current_(0), buffer_(NEW_YS byte[s]), end_(buffer_ + s),
|
||||
error_(0), zero_(0)
|
||||
{
|
||||
assign(t, len);
|
||||
}
|
||||
|
@ -77,8 +90,10 @@ input_buffer::~input_buffer()
|
|||
// users can pass defualt zero length buffer and then allocate
|
||||
void input_buffer::allocate(uint s)
|
||||
{
|
||||
if (error_ == 0) {
|
||||
buffer_ = NEW_YS byte[s];
|
||||
end_ = buffer_ + s;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -93,40 +108,67 @@ byte* input_buffer::get_buffer() const
|
|||
// if you know the size before the write use assign()
|
||||
void input_buffer::add_size(uint i)
|
||||
{
|
||||
check(size_ + i-1, get_capacity());
|
||||
if (error_ == 0 && check(size_ + i-1, get_capacity()) == 0)
|
||||
size_ += i;
|
||||
else
|
||||
error_ = -1;
|
||||
}
|
||||
|
||||
|
||||
uint input_buffer::get_capacity() const
|
||||
{
|
||||
return (uint) (end_ - buffer_);
|
||||
if (error_ == 0)
|
||||
return end_ - buffer_;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
uint input_buffer::get_current() const
|
||||
{
|
||||
if (error_ == 0)
|
||||
return current_;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
uint input_buffer::get_size() const
|
||||
{
|
||||
if (error_ == 0)
|
||||
return size_;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
uint input_buffer::get_remaining() const
|
||||
{
|
||||
if (error_ == 0)
|
||||
return size_ - current_;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int input_buffer::get_error() const
|
||||
{
|
||||
return error_;
|
||||
}
|
||||
|
||||
|
||||
void input_buffer::set_error()
|
||||
{
|
||||
error_ = -1;
|
||||
}
|
||||
|
||||
|
||||
void input_buffer::set_current(uint i)
|
||||
{
|
||||
if (i)
|
||||
check(i - 1, size_);
|
||||
if (error_ == 0 && (i == 0 || check(i - 1, size_) == 0))
|
||||
current_ = i;
|
||||
else
|
||||
error_ = -1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -134,40 +176,59 @@ void input_buffer::set_current(uint i)
|
|||
// user passes in AUTO index for ease of use
|
||||
const byte& input_buffer::operator[](uint i)
|
||||
{
|
||||
check(current_, size_);
|
||||
if (error_ == 0 && check(current_, size_) == 0)
|
||||
return buffer_[current_++];
|
||||
|
||||
error_ = -1;
|
||||
return zero_;
|
||||
}
|
||||
|
||||
|
||||
// end of input test
|
||||
bool input_buffer::eof()
|
||||
{
|
||||
if (error_ != 0)
|
||||
return true;
|
||||
|
||||
return current_ >= size_;
|
||||
}
|
||||
|
||||
|
||||
// peek ahead
|
||||
byte input_buffer::peek() const
|
||||
byte input_buffer::peek()
|
||||
{
|
||||
if (error_ == 0 && check(current_, size_) == 0)
|
||||
return buffer_[current_];
|
||||
|
||||
error_ = -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// write function, should use at/near construction
|
||||
void input_buffer::assign(const byte* t, uint s)
|
||||
{
|
||||
check(current_, get_capacity());
|
||||
if (t && error_ == 0 && check(current_, get_capacity()) == 0) {
|
||||
add_size(s);
|
||||
if (error_ == 0) {
|
||||
memcpy(&buffer_[current_], t, s);
|
||||
return; // success
|
||||
}
|
||||
}
|
||||
|
||||
error_ = -1;
|
||||
}
|
||||
|
||||
|
||||
// use read to query input, adjusts current
|
||||
void input_buffer::read(byte* dst, uint length)
|
||||
{
|
||||
check(current_ + length - 1, size_);
|
||||
if (dst && error_ == 0 && check(current_ + length - 1, size_) == 0) {
|
||||
memcpy(dst, &buffer_[current_], length);
|
||||
current_ += length;
|
||||
} else {
|
||||
error_ = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -522,7 +522,7 @@ void buildSHA_CertVerify(SSL& ssl, byte* digest)
|
|||
// some clients still send sslv2 client hello
|
||||
void ProcessOldClientHello(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_remaining() < 2) {
|
||||
if (input.get_error() || input.get_remaining() < 2) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
@ -549,20 +549,24 @@ void ProcessOldClientHello(input_buffer& input, SSL& ssl)
|
|||
|
||||
byte len[2];
|
||||
|
||||
input.read(len, sizeof(len));
|
||||
len[0] = input[AUTO];
|
||||
len[1] = input[AUTO];
|
||||
ato16(len, ch.suite_len_);
|
||||
|
||||
input.read(len, sizeof(len));
|
||||
len[0] = input[AUTO];
|
||||
len[1] = input[AUTO];
|
||||
uint16 sessionLen;
|
||||
ato16(len, sessionLen);
|
||||
ch.id_len_ = sessionLen;
|
||||
|
||||
input.read(len, sizeof(len));
|
||||
len[0] = input[AUTO];
|
||||
len[1] = input[AUTO];
|
||||
uint16 randomLen;
|
||||
ato16(len, randomLen);
|
||||
|
||||
if (ch.suite_len_ > MAX_SUITE_SZ || sessionLen > ID_LEN ||
|
||||
randomLen > RAN_LEN) {
|
||||
if (input.get_error() || ch.suite_len_ > MAX_SUITE_SZ ||
|
||||
ch.suite_len_ > input.get_remaining() ||
|
||||
sessionLen > ID_LEN || randomLen > RAN_LEN) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
@ -580,13 +584,12 @@ void ProcessOldClientHello(input_buffer& input, SSL& ssl)
|
|||
ch.suite_len_ = j;
|
||||
|
||||
if (ch.id_len_)
|
||||
input.read(ch.session_id_, ch.id_len_);
|
||||
input.read(ch.session_id_, ch.id_len_); // id_len_ from sessionLen
|
||||
|
||||
if (randomLen < RAN_LEN)
|
||||
memset(ch.random_, 0, RAN_LEN - randomLen);
|
||||
input.read(&ch.random_[RAN_LEN - randomLen], randomLen);
|
||||
|
||||
|
||||
ch.Process(input, ssl);
|
||||
}
|
||||
|
||||
|
@ -788,6 +791,9 @@ int DoProcessReply(SSL& ssl)
|
|||
ssl.verifyState(hdr);
|
||||
}
|
||||
|
||||
if (ssl.GetError())
|
||||
return 0;
|
||||
|
||||
// make sure we have enough input in buffer to process this record
|
||||
if (needHdr || hdr.length_ > buffer.get_remaining()) {
|
||||
// put header in front for next time processing
|
||||
|
@ -800,6 +806,9 @@ int DoProcessReply(SSL& ssl)
|
|||
|
||||
while (buffer.get_current() < hdr.length_ + RECORD_HEADER + offset) {
|
||||
// each message in record, can be more than 1 if not encrypted
|
||||
if (ssl.GetError())
|
||||
return 0;
|
||||
|
||||
if (ssl.getSecurity().get_parms().pending_ == false) { // cipher on
|
||||
// sanity check for malicious/corrupted/illegal input
|
||||
if (buffer.get_remaining() < hdr.length_) {
|
||||
|
|
|
@ -220,16 +220,26 @@ void DH_Server::build(SSL& ssl)
|
|||
// read PreMaster secret and decrypt, server side
|
||||
void EncryptedPreMasterSecret::read(SSL& ssl, input_buffer& input)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
const CertManager& cert = ssl.getCrypto().get_certManager();
|
||||
RSA rsa(cert.get_privateKey(), cert.get_privateKeyLength(), false);
|
||||
uint16 cipherLen = rsa.get_cipherLength();
|
||||
if (ssl.isTLS()) {
|
||||
byte len[2];
|
||||
input.read(len, sizeof(len));
|
||||
len[0] = input[AUTO];
|
||||
len[1] = input[AUTO];
|
||||
ato16(len, cipherLen);
|
||||
}
|
||||
alloc(cipherLen);
|
||||
input.read(secret_, length_);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
opaque preMasterSecret[SECRET_LEN];
|
||||
rsa.decrypt(preMasterSecret, secret_, length_,
|
||||
|
@ -277,6 +287,11 @@ void EncryptedPreMasterSecret::alloc(int sz)
|
|||
// read client's public key, server side
|
||||
void ClientDiffieHellmanPublic::read(SSL& ssl, input_buffer& input)
|
||||
{
|
||||
if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
DiffieHellman& dh = ssl.useCrypto().use_dh();
|
||||
|
||||
uint16 keyLength;
|
||||
|
@ -287,6 +302,10 @@ void ClientDiffieHellmanPublic::read(SSL& ssl, input_buffer& input)
|
|||
|
||||
alloc(keyLength);
|
||||
input.read(Yc_, keyLength);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
dh.makeAgreement(Yc_, keyLength);
|
||||
|
||||
// because of encoding, first byte might be 0, don't use for preMaster
|
||||
|
@ -331,6 +350,10 @@ void ClientDiffieHellmanPublic::alloc(int sz, bool offset)
|
|||
// read server's p, g, public key and sig, client side
|
||||
void DH_Server::read(SSL& ssl, input_buffer& input)
|
||||
{
|
||||
if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
uint16 length, messageTotal = 6; // pSz + gSz + pubSz
|
||||
byte tmp[2];
|
||||
|
||||
|
@ -341,6 +364,10 @@ void DH_Server::read(SSL& ssl, input_buffer& input)
|
|||
messageTotal += length;
|
||||
|
||||
input.read(parms_.alloc_p(length), length);
|
||||
if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// g
|
||||
tmp[0] = input[AUTO];
|
||||
|
@ -349,6 +376,10 @@ void DH_Server::read(SSL& ssl, input_buffer& input)
|
|||
messageTotal += length;
|
||||
|
||||
input.read(parms_.alloc_g(length), length);
|
||||
if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// pub
|
||||
tmp[0] = input[AUTO];
|
||||
|
@ -357,12 +388,20 @@ void DH_Server::read(SSL& ssl, input_buffer& input)
|
|||
messageTotal += length;
|
||||
|
||||
input.read(parms_.alloc_pub(length), length);
|
||||
if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// save message for hash verify
|
||||
input_buffer message(messageTotal);
|
||||
input.set_current(input.get_current() - messageTotal);
|
||||
input.read(message.get_buffer(), messageTotal);
|
||||
message.add_size(messageTotal);
|
||||
if (input.get_error() || input.get_remaining() < (uint)LENGTH_SZ) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// signature
|
||||
tmp[0] = input[AUTO];
|
||||
|
@ -371,6 +410,10 @@ void DH_Server::read(SSL& ssl, input_buffer& input)
|
|||
|
||||
signature_ = NEW_YS byte[length];
|
||||
input.read(signature_, length);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// verify signature
|
||||
byte hash[FINISHED_SZ];
|
||||
|
@ -645,6 +688,10 @@ void HandShakeHeader::Process(input_buffer& input, SSL& ssl)
|
|||
{
|
||||
ssl.verifyState(*this);
|
||||
if (ssl.GetError()) return;
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
const HandShakeFactory& hsf = ssl.getFactory().getHandShake();
|
||||
mySTL::auto_ptr<HandShakeBase> hs(hsf.CreateObject(type_));
|
||||
if (!hs.get()) {
|
||||
|
@ -810,8 +857,13 @@ uint16 ChangeCipherSpec::get_length() const
|
|||
|
||||
|
||||
// CipherSpec processing handler
|
||||
void ChangeCipherSpec::Process(input_buffer&, SSL& ssl)
|
||||
void ChangeCipherSpec::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
ssl.useSecurity().use_parms().pending_ = false;
|
||||
if (ssl.getSecurity().get_resuming()) {
|
||||
if (ssl.getSecurity().get_parms().entity_ == client_end)
|
||||
|
@ -873,6 +925,11 @@ output_buffer& operator<<(output_buffer& output, const Alert& a)
|
|||
// Alert processing handler
|
||||
void Alert::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ssl.getSecurity().get_parms().pending_ == false) { // encrypted alert
|
||||
int aSz = get_length(); // alert size already read on input
|
||||
opaque verify[SHA_LEN];
|
||||
|
@ -890,12 +947,19 @@ void Alert::Process(input_buffer& input, SSL& ssl)
|
|||
|
||||
if (ssl.getSecurity().get_parms().cipher_type_ == block) {
|
||||
int ivExtra = 0;
|
||||
opaque fill;
|
||||
|
||||
if (ssl.isTLSv1_1())
|
||||
ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
|
||||
int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra -
|
||||
aSz - digestSz;
|
||||
input.set_current(input.get_current() + padSz);
|
||||
for (int i = 0; i < padSz; i++)
|
||||
fill = input[AUTO];
|
||||
}
|
||||
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// verify
|
||||
|
@ -1112,6 +1176,11 @@ static int timing_verify(SSL& ssl, const byte* input, int padLen, int t,
|
|||
// Process handler for Data
|
||||
void Data::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
|
||||
int pad = 0, padSz = 0;
|
||||
int ivExtra = 0;
|
||||
|
@ -1154,7 +1223,7 @@ void Data::Process(input_buffer& input, SSL& ssl)
|
|||
|
||||
int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
|
||||
|
||||
if (dataSz < 0) {
|
||||
if (dataSz < 0 || dataSz > (MAX_RECORD_SIZE + COMPRESS_EXTRA)) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
@ -1180,6 +1249,10 @@ void Data::Process(input_buffer& input, SSL& ssl)
|
|||
|
||||
// advance past mac and fill
|
||||
input.set_current(input.get_current() + digestSz + pad + padSz);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -1244,6 +1317,11 @@ output_buffer& operator<<(output_buffer& output, const Certificate& cert)
|
|||
// certificate processing handler
|
||||
void Certificate::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
CertManager& cm = ssl.useCrypto().use_certManager();
|
||||
|
||||
uint32 list_sz;
|
||||
|
@ -1412,6 +1490,10 @@ input_buffer& operator>>(input_buffer& input, ServerHello& hello)
|
|||
|
||||
// Session
|
||||
hello.id_len_ = input[AUTO];
|
||||
if (hello.id_len_ > ID_LEN) {
|
||||
input.set_error();
|
||||
return input;
|
||||
}
|
||||
if (hello.id_len_)
|
||||
input.read(hello.session_id_, hello.id_len_);
|
||||
|
||||
|
@ -1452,8 +1534,13 @@ output_buffer& operator<<(output_buffer& output, const ServerHello& hello)
|
|||
|
||||
|
||||
// Server Hello processing handler
|
||||
void ServerHello::Process(input_buffer&, SSL& ssl)
|
||||
void ServerHello::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ssl.GetMultiProtocol()) { // SSLv23 support
|
||||
if (ssl.isTLS() && server_version_.minor_ < 1)
|
||||
// downgrade to SSLv3
|
||||
|
@ -1547,8 +1634,12 @@ const opaque* ServerHello::get_random() const
|
|||
|
||||
|
||||
// Server Hello Done processing handler
|
||||
void ServerHelloDone::Process(input_buffer&, SSL& ssl)
|
||||
void ServerHelloDone::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
ssl.useStates().useClient() = serverHelloDoneComplete;
|
||||
}
|
||||
|
||||
|
@ -1667,8 +1758,13 @@ output_buffer& operator<<(output_buffer& output, const ClientHello& hello)
|
|||
|
||||
|
||||
// Client Hello processing handler
|
||||
void ClientHello::Process(input_buffer&, SSL& ssl)
|
||||
void ClientHello::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
// store version for pre master secret
|
||||
ssl.useSecurity().use_connection().chVersion_ = client_version_;
|
||||
|
||||
|
@ -1800,9 +1896,17 @@ output_buffer& operator<<(output_buffer& output, const ServerKeyExchange& sk)
|
|||
// Server Key Exchange processing handler
|
||||
void ServerKeyExchange::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
createKey(ssl);
|
||||
if (ssl.GetError()) return;
|
||||
server_key_->read(ssl, input);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
ssl.useStates().useClient() = serverKeyExchangeComplete;
|
||||
}
|
||||
|
@ -1924,18 +2028,24 @@ input_buffer& operator>>(input_buffer& input, CertificateRequest& request)
|
|||
{
|
||||
// types
|
||||
request.typeTotal_ = input[AUTO];
|
||||
if (request.typeTotal_ > CERT_TYPES) {
|
||||
input.set_error();
|
||||
return input;
|
||||
}
|
||||
for (int i = 0; i < request.typeTotal_; i++)
|
||||
request.certificate_types_[i] = ClientCertificateType(input[AUTO]);
|
||||
|
||||
byte tmp[REQUEST_HEADER];
|
||||
input.read(tmp, sizeof(tmp));
|
||||
byte tmp[2];
|
||||
tmp[0] = input[AUTO];
|
||||
tmp[1] = input[AUTO];
|
||||
uint16 sz;
|
||||
ato16(tmp, sz);
|
||||
|
||||
// authorities
|
||||
while (sz) {
|
||||
uint16 dnSz;
|
||||
input.read(tmp, sizeof(tmp));
|
||||
tmp[0] = input[AUTO];
|
||||
tmp[1] = input[AUTO];
|
||||
ato16(tmp, dnSz);
|
||||
|
||||
DistinguishedName dn;
|
||||
|
@ -1945,6 +2055,9 @@ input_buffer& operator>>(input_buffer& input, CertificateRequest& request)
|
|||
input.read(&dn[REQUEST_HEADER], dnSz);
|
||||
|
||||
sz -= dnSz + REQUEST_HEADER;
|
||||
|
||||
if (input.get_error())
|
||||
break;
|
||||
}
|
||||
|
||||
return input;
|
||||
|
@ -1983,8 +2096,12 @@ output_buffer& operator<<(output_buffer& output,
|
|||
|
||||
|
||||
// CertificateRequest processing handler
|
||||
void CertificateRequest::Process(input_buffer&, SSL& ssl)
|
||||
void CertificateRequest::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
CertManager& cm = ssl.useCrypto().use_certManager();
|
||||
|
||||
cm.setSendVerify();
|
||||
|
@ -2067,7 +2184,8 @@ output_buffer& CertificateVerify::get(output_buffer& out) const
|
|||
input_buffer& operator>>(input_buffer& input, CertificateVerify& request)
|
||||
{
|
||||
byte tmp[VERIFY_HEADER];
|
||||
input.read(tmp, sizeof(tmp));
|
||||
tmp[0] = input[AUTO];
|
||||
tmp[1] = input[AUTO];
|
||||
|
||||
uint16 sz = 0;
|
||||
ato16(tmp, sz);
|
||||
|
@ -2091,8 +2209,13 @@ output_buffer& operator<<(output_buffer& output,
|
|||
|
||||
|
||||
// CertificateVerify processing handler
|
||||
void CertificateVerify::Process(input_buffer&, SSL& ssl)
|
||||
void CertificateVerify::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
const Hashes& hashVerify = ssl.getHashes().get_certVerify();
|
||||
const CertManager& cert = ssl.getCrypto().get_certManager();
|
||||
|
||||
|
@ -2131,9 +2254,17 @@ output_buffer& operator<<(output_buffer& output, const ClientKeyExchange& ck)
|
|||
// Client Key Exchange processing handler
|
||||
void ClientKeyExchange::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
createKey(ssl);
|
||||
if (ssl.GetError()) return;
|
||||
client_key_->read(ssl, input);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ssl.getCrypto().get_certManager().verifyPeer())
|
||||
build_certHashes(ssl, ssl.useHashes().use_certVerify());
|
||||
|
@ -2220,11 +2351,19 @@ output_buffer& operator<<(output_buffer& output, const Finished& fin)
|
|||
// Finished processing handler
|
||||
void Finished::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
// verify hashes
|
||||
const Finished& verify = ssl.getHashes().get_verify();
|
||||
uint finishedSz = ssl.isTLS() ? TLS_FINISHED_SZ : FINISHED_SZ;
|
||||
|
||||
input.read(hashes_.md5_, finishedSz);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
if (memcmp(&hashes_, &verify.hashes_, finishedSz)) {
|
||||
ssl.SetError(verify_error);
|
||||
|
@ -2246,19 +2385,23 @@ void Finished::Process(input_buffer& input, SSL& ssl)
|
|||
opaque mac[SHA_LEN]; // max size
|
||||
int digestSz = ssl.getCrypto().get_digest().get_digestSize();
|
||||
input.read(mac, digestSz);
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
uint ivExtra = 0;
|
||||
if (ssl.getSecurity().get_parms().cipher_type_ == block)
|
||||
if (ssl.isTLSv1_1())
|
||||
ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
|
||||
|
||||
opaque fill;
|
||||
int padSz = ssl.getSecurity().get_parms().encrypt_size_ - ivExtra -
|
||||
HANDSHAKE_HEADER - finishedSz - digestSz;
|
||||
input.set_current(input.get_current() + padSz);
|
||||
|
||||
// verify mac
|
||||
if (memcmp(mac, verifyMAC, digestSz)) {
|
||||
ssl.SetError(verify_error);
|
||||
for (int i = 0; i < padSz; i++)
|
||||
fill = input[AUTO];
|
||||
if (input.get_error()) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2014, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -2536,7 +2536,8 @@ ASN1_STRING* StringHolder::GetString()
|
|||
{
|
||||
byte tmp[LENGTH_SZ];
|
||||
|
||||
in.read(tmp, sizeof(tmp));
|
||||
tmp[0] = in[AUTO];
|
||||
tmp[1] = in[AUTO];
|
||||
|
||||
uint16 len;
|
||||
ato16(tmp, len);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -111,7 +111,7 @@ enum Constants
|
|||
MAX_LENGTH_SZ = 5,
|
||||
MAX_SEQ_SZ = 5, // enum(seq|con) + length(4)
|
||||
MAX_ALGO_SIZE = 9,
|
||||
MAX_DIGEST_SZ = 25, // SHA + enum(Bit or Octet) + length(4)
|
||||
MAX_DIGEST_SZ = 69, // SHA512 + enum(Bit or Octet) + length(4)
|
||||
DSA_SIG_SZ = 40,
|
||||
ASN_NAME_MAX = 512 // max total of all included names
|
||||
};
|
||||
|
@ -257,8 +257,11 @@ typedef STL::list<Signer*> SignerList;
|
|||
|
||||
|
||||
enum ContentType { HUH = 651 };
|
||||
enum SigType { SHAwDSA = 517, MD2wRSA = 646, MD5wRSA = 648, SHAwRSA =649};
|
||||
enum HashType { MD2h = 646, MD5h = 649, SHAh = 88 };
|
||||
enum SigType { SHAwDSA = 517, MD2wRSA = 646, MD5wRSA = 648, SHAwRSA = 649,
|
||||
SHA256wRSA = 655, SHA384wRSA = 656, SHA512wRSA = 657,
|
||||
SHA256wDSA = 416 };
|
||||
enum HashType { MD2h = 646, MD5h = 649, SHAh = 88, SHA256h = 414, SHA384h = 415,
|
||||
SHA512h = 416 };
|
||||
enum KeyType { DSAk = 515, RSAk = 645 }; // sums of algo OID
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -74,7 +74,7 @@ typename A::pointer StdReallocate(A& a, T* p, typename A::size_type oldSize,
|
|||
if (preserve) {
|
||||
A b = A();
|
||||
typename A::pointer newPointer = b.allocate(newSize, 0);
|
||||
memcpy(newPointer, p, sizeof(T) * min((word32) oldSize, (word32) newSize));
|
||||
memcpy(newPointer, p, sizeof(T) * min(oldSize, newSize));
|
||||
a.deallocate(p, oldSize);
|
||||
STL::swap(a, b);
|
||||
return newPointer;
|
||||
|
@ -187,9 +187,9 @@ public:
|
|||
|
||||
~Block() { allocator_.deallocate(buffer_, sz_); }
|
||||
private:
|
||||
A allocator_;
|
||||
word32 sz_; // size in Ts
|
||||
T* buffer_;
|
||||
A allocator_;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -16,6 +16,7 @@
|
|||
MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
|
||||
/* pwdbased.hpp defines PBKDF2 from PKCS #5
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2014, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -34,7 +34,10 @@
|
|||
|
||||
// Handler for pure virtual functions
|
||||
namespace __Crun {
|
||||
void pure_error(void);
|
||||
static void pure_error(void)
|
||||
{
|
||||
// "Pure virtual method called, Aborted", GCC 4.2 str cmp fix
|
||||
}
|
||||
} // namespace __Crun
|
||||
|
||||
#endif // __sun
|
||||
|
@ -48,7 +51,15 @@ extern "C" {
|
|||
#if defined(DO_TAOCRYPT_KERNEL_MODE)
|
||||
#include "kernelc.hpp"
|
||||
#endif
|
||||
int __cxa_pure_virtual () __attribute__ ((weak));
|
||||
|
||||
/* Disallow inline __cxa_pure_virtual() */
|
||||
static int __cxa_pure_virtual() __attribute__((noinline, used));
|
||||
static int __cxa_pure_virtual()
|
||||
{
|
||||
// oops, pure virtual called!
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
#endif // __GNUC__ > 2
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Use is subject to license terms
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -159,6 +158,12 @@ private:
|
|||
void Transform();
|
||||
};
|
||||
|
||||
enum { MAX_SHA2_DIGEST_SIZE = 64 }; // SHA512
|
||||
|
||||
#else
|
||||
|
||||
enum { MAX_SHA2_DIGEST_SIZE = 32 }; // SHA256
|
||||
|
||||
#endif // WORD64_AVAILABLE
|
||||
|
||||
|
||||
|
|
|
@ -467,7 +467,6 @@ void AES::decrypt(const byte* inBlock, const byte* xorBlock,
|
|||
"movd mm4, eax;" \
|
||||
"mov ebp, edx;" \
|
||||
"sub esp, 4;"
|
||||
|
||||
#define EPILOG() \
|
||||
"add esp, 4;" \
|
||||
"pop ebp;" \
|
||||
|
|
|
@ -185,10 +185,10 @@ Integer AbstractGroup::CascadeScalarMultiply(const Element &x,
|
|||
|
||||
struct WindowSlider
|
||||
{
|
||||
WindowSlider(const Integer &expIn, bool fastNegateIn,
|
||||
WindowSlider(const Integer &exp, bool fastNegate,
|
||||
unsigned int windowSizeIn=0)
|
||||
: exp(expIn), windowModulus(Integer::One()), windowSize(windowSizeIn),
|
||||
windowBegin(0), fastNegate(fastNegateIn), firstTime(true),
|
||||
: exp(exp), windowModulus(Integer::One()), windowSize(windowSizeIn),
|
||||
windowBegin(0), fastNegate(fastNegate), firstTime(true),
|
||||
finished(false)
|
||||
{
|
||||
if (windowSize == 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -121,7 +121,6 @@ void ARC4::AsmProcess(byte* out, const byte* in, word32 length)
|
|||
"push ebx;" \
|
||||
"push ebp;" \
|
||||
"mov ebp, eax;"
|
||||
|
||||
#define EPILOG() \
|
||||
"pop ebp;" \
|
||||
"pop ebx;" \
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -840,11 +839,9 @@ void CertDecoder::GetName(NameType nt)
|
|||
if (source_.IsLeft(length) == false) return;
|
||||
|
||||
if (email) {
|
||||
if (!(ptr = AddTag(ptr, buf_end, "/emailAddress=", 14, length))) {
|
||||
source_.SetError(CONTENT_E);
|
||||
if (!(ptr = AddTag(ptr, buf_end, "/emailAddress=", 14, length)))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
source_.advance(length);
|
||||
}
|
||||
|
@ -982,12 +979,26 @@ bool CertDecoder::ConfirmSignature(Source& pub)
|
|||
hasher.reset(NEW_TC SHA);
|
||||
ht = SHAh;
|
||||
}
|
||||
else if (signatureOID_ == SHA256wRSA || signatureOID_ == SHA256wDSA) {
|
||||
hasher.reset(NEW_TC SHA256);
|
||||
ht = SHA256h;
|
||||
}
|
||||
#ifdef WORD64_AVAILABLE
|
||||
else if (signatureOID_ == SHA384wRSA) {
|
||||
hasher.reset(NEW_TC SHA384);
|
||||
ht = SHA384h;
|
||||
}
|
||||
else if (signatureOID_ == SHA512wRSA) {
|
||||
hasher.reset(NEW_TC SHA512);
|
||||
ht = SHA512h;
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
source_.SetError(UNKOWN_SIG_E);
|
||||
return false;
|
||||
}
|
||||
|
||||
byte digest[SHA::DIGEST_SIZE]; // largest size
|
||||
byte digest[MAX_SHA2_DIGEST_SIZE]; // largest size
|
||||
|
||||
hasher->Update(source_.get_buffer() + certBegin_, sigIndex_ - certBegin_);
|
||||
hasher->Final(digest);
|
||||
|
@ -1060,6 +1071,12 @@ word32 DER_Encoder::SetAlgoID(HashType aOID, byte* output)
|
|||
0x02, 0x05, 0x05, 0x00 };
|
||||
static const byte md2AlgoID[] = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
|
||||
0x02, 0x02, 0x05, 0x00};
|
||||
static const byte sha256AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
|
||||
0x04, 0x02, 0x01, 0x05, 0x00 };
|
||||
static const byte sha384AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
|
||||
0x04, 0x02, 0x02, 0x05, 0x00 };
|
||||
static const byte sha512AlgoID[] = { 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
|
||||
0x04, 0x02, 0x03, 0x05, 0x00 };
|
||||
|
||||
int algoSz = 0;
|
||||
const byte* algoName = 0;
|
||||
|
@ -1070,6 +1087,21 @@ word32 DER_Encoder::SetAlgoID(HashType aOID, byte* output)
|
|||
algoName = shaAlgoID;
|
||||
break;
|
||||
|
||||
case SHA256h:
|
||||
algoSz = sizeof(sha256AlgoID);
|
||||
algoName = sha256AlgoID;
|
||||
break;
|
||||
|
||||
case SHA384h:
|
||||
algoSz = sizeof(sha384AlgoID);
|
||||
algoName = sha384AlgoID;
|
||||
break;
|
||||
|
||||
case SHA512h:
|
||||
algoSz = sizeof(sha512AlgoID);
|
||||
algoName = sha512AlgoID;
|
||||
break;
|
||||
|
||||
case MD2h:
|
||||
algoSz = sizeof(md2AlgoID);
|
||||
algoName = md2AlgoID;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Use is subject to license terms
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -58,7 +58,6 @@
|
|||
/* #pragma message("You do not seem to have the Visual C++ Processor Pack ")
|
||||
#pragma message("installed, so use of SSE2 intrinsics will be disabled.")
|
||||
*/
|
||||
#pragma message("installed, so use of SSE2 intrinsics will be disabled.")
|
||||
#elif defined(__GNUC__) && defined(__i386__)
|
||||
/* #warning You do not have GCC 3.3 or later, or did not specify the -msse2 \
|
||||
compiler option. Use of SSE2 intrinsics will be disabled.
|
||||
|
@ -194,7 +193,7 @@ DWord() {}
|
|||
"a" (a), "rm" (b) : "cc");
|
||||
|
||||
#elif defined(__mips64)
|
||||
__asm__("dmultu %2,%3" : "=h" (r.halfs_.high), "=l" (r.halfs_.low)
|
||||
__asm__("dmultu %2,%3" : "=d" (r.halfs_.high), "=l" (r.halfs_.low)
|
||||
: "r" (a), "r" (b));
|
||||
|
||||
#elif defined(_M_IX86)
|
||||
|
@ -282,7 +281,12 @@ DWord() {}
|
|||
word GetHighHalfAsBorrow() const {return 0-halfs_.high;}
|
||||
|
||||
private:
|
||||
struct dword_struct
|
||||
union
|
||||
{
|
||||
#ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
|
||||
dword whole_;
|
||||
#endif
|
||||
struct
|
||||
{
|
||||
#ifdef LITTLE_ENDIAN_ORDER
|
||||
word low;
|
||||
|
@ -291,14 +295,7 @@ private:
|
|||
word high;
|
||||
word low;
|
||||
#endif
|
||||
};
|
||||
|
||||
union
|
||||
{
|
||||
#ifdef TAOCRYPT_NATIVE_DWORD_AVAILABLE
|
||||
dword whole_;
|
||||
#endif
|
||||
struct dword_struct halfs_;
|
||||
} halfs_;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1201,24 +1198,20 @@ public:
|
|||
#define AS1(x) #x ";"
|
||||
#define AS2(x, y) #x ", " #y ";"
|
||||
#define AddPrologue \
|
||||
word res; \
|
||||
__asm__ __volatile__ \
|
||||
( \
|
||||
"push %%ebx;" /* save this manually, in case of -fPIC */ \
|
||||
"mov %3, %%ebx;" \
|
||||
"mov %2, %%ebx;" \
|
||||
".intel_syntax noprefix;" \
|
||||
"push ebp;"
|
||||
#define AddEpilogue \
|
||||
"pop ebp;" \
|
||||
".att_syntax prefix;" \
|
||||
"pop %%ebx;" \
|
||||
"mov %%eax, %0;" \
|
||||
: "=g" (res) \
|
||||
: \
|
||||
: "c" (C), "d" (A), "m" (B), "S" (N) \
|
||||
: "%edi", "memory", "cc" \
|
||||
); \
|
||||
return res;
|
||||
|
||||
);
|
||||
#define MulPrologue \
|
||||
__asm__ __volatile__ \
|
||||
( \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -84,17 +84,7 @@ namespace STL = STL_NAMESPACE;
|
|||
|
||||
}
|
||||
|
||||
#ifdef __sun
|
||||
|
||||
// Handler for pure virtual functions
|
||||
namespace __Crun {
|
||||
void pure_error() {
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__ICC) || defined(__INTEL_COMPILER) || (__GNUC__ > 2)
|
||||
#if defined(__ICC) || defined(__INTEL_COMPILER)
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -27,6 +27,7 @@
|
|||
#include <time.h>
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define _WIN32_WINNT 0x0400
|
||||
#include <windows.h>
|
||||
#include <wincrypt.h>
|
||||
#else
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -507,6 +507,8 @@ void RIPEMD160::Transform()
|
|||
|
||||
#ifdef _MSC_VER
|
||||
__declspec(naked)
|
||||
#else
|
||||
__attribute__ ((noinline))
|
||||
#endif
|
||||
void RIPEMD160::AsmTransform(const byte* data, word32 times)
|
||||
{
|
||||
|
@ -520,7 +522,6 @@ void RIPEMD160::AsmTransform(const byte* data, word32 times)
|
|||
".intel_syntax noprefix;" \
|
||||
"push ebx;" \
|
||||
"push ebp;"
|
||||
|
||||
#define EPILOG() \
|
||||
"pop ebp;" \
|
||||
"pop ebx;" \
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -776,7 +776,6 @@ void SHA::AsmTransform(const byte* data, word32 times)
|
|||
".intel_syntax noprefix;" \
|
||||
"push ebx;" \
|
||||
"push ebp;"
|
||||
|
||||
#define EPILOG() \
|
||||
"pop ebp;" \
|
||||
"pop ebx;" \
|
||||
|
|
|
@ -285,7 +285,6 @@ void Twofish::decrypt(const byte* inBlock, const byte* xorBlock,
|
|||
"push ebp;" \
|
||||
"movd mm3, eax;" \
|
||||
"movd mm6, ebp;"
|
||||
|
||||
#define EPILOG() \
|
||||
"pop ebp;" \
|
||||
"pop ebx;" \
|
||||
|
|
|
@ -34,14 +34,6 @@
|
|||
#include <string.h>
|
||||
#endif
|
||||
|
||||
/* need by my_vsnprintf */
|
||||
#include <stdarg.h>
|
||||
|
||||
/* This is needed for the definitions of bzero... on solaris */
|
||||
#if defined(HAVE_STRINGS_H)
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
/* This is needed for the definitions of memcpy... on solaris */
|
||||
#if defined(HAVE_MEMORY_H) && !defined(__cplusplus)
|
||||
#include <memory.h>
|
||||
|
|
|
@ -20,12 +20,10 @@
|
|||
#ifndef _maria_h
|
||||
#define _maria_h
|
||||
#include <my_base.h>
|
||||
#include <my_sys.h>
|
||||
#include <m_ctype.h>
|
||||
#include "my_compare.h"
|
||||
#include "ft_global.h"
|
||||
#include <myisamchk.h>
|
||||
#include <mysql/plugin.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#include "sql_priv.h"
|
||||
#include "my_global.h" // HAVE_*
|
||||
#include "sql_priv.h"
|
||||
|
||||
#ifdef HAVE_QUERY_CACHE
|
||||
#include <mysql.h>
|
||||
|
|
|
@ -32,7 +32,7 @@ INSERT INTO tt_2(ddl_case) VALUES(0);
|
|||
--echo # CHECK IMPLICT COMMIT
|
||||
--echo #########################################################################
|
||||
SET AUTOCOMMIT= 0;
|
||||
let $ddl_cases= 41;
|
||||
let $ddl_cases= 43;
|
||||
while ($ddl_cases >= 1)
|
||||
{
|
||||
--echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
|
||||
|
@ -68,6 +68,15 @@ while ($ddl_cases >= 1)
|
|||
let $first_binlog_position= query_get_value("SHOW MASTER STATUS", Position, 1);
|
||||
--enable_query_log
|
||||
eval INSERT INTO tt_1(ddl_case) VALUES ($ddl_cases);
|
||||
|
||||
if ($ddl_cases == 43)
|
||||
{
|
||||
let $cmd= CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO";
|
||||
}
|
||||
if ($ddl_cases == 42)
|
||||
{
|
||||
let $cmd= DROP FUNCTION myfunc_int;
|
||||
}
|
||||
if ($ddl_cases == 41)
|
||||
{
|
||||
let $cmd= LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
|
||||
|
@ -329,6 +338,7 @@ while ($ddl_cases >= 1)
|
|||
{
|
||||
let $cmd= DROP DATABASE IF EXISTS db;
|
||||
}
|
||||
--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB
|
||||
--eval $cmd
|
||||
--disable_query_log
|
||||
#
|
||||
|
@ -352,6 +362,7 @@ while ($ddl_cases >= 1)
|
|||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
--echo -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
|
||||
let $binlog_start= $first_binlog_position;
|
||||
--echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
|
||||
|
|
|
@ -113,6 +113,19 @@ if ($commands == 'configure')
|
|||
RETURN "fc_i_nt_5_suc";
|
||||
END|
|
||||
|
||||
CREATE FUNCTION fc_i_nt_3_tt_3_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
|
||||
BEGIN
|
||||
DECLARE in_stmt_id INTEGER;
|
||||
SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= p_trans_id;
|
||||
SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
|
||||
INSERT INTO nt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
|
||||
|
||||
SELECT max(stmt_id) INTO in_stmt_id FROM tt_3 WHERE trans_id= p_trans_id;
|
||||
SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
|
||||
INSERT INTO tt_3(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
|
||||
RETURN "fc_i_nt_3_tt_3_suc";
|
||||
END|
|
||||
|
||||
CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE in_stmt_id INTEGER;
|
||||
|
@ -186,6 +199,7 @@ if ($commands == 'clean')
|
|||
DROP PROCEDURE pc_i_nt_5_suc;
|
||||
DROP FUNCTION fc_i_tt_5_suc;
|
||||
DROP FUNCTION fc_i_nt_5_suc;
|
||||
DROP FUNCTION fc_i_nt_3_tt_3_suc;
|
||||
|
||||
--disable_query_log
|
||||
if ($database_name != 'test')
|
||||
|
@ -439,6 +453,21 @@ while ($commands != '')
|
|||
eval INSERT INTO tt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''), ($old_trans_id, $old_stmt_id, fc_i_nt_5_suc ($trans_id, $stmt_id));
|
||||
inc $stmt_id;
|
||||
}
|
||||
if ($command == 'set-T')
|
||||
{
|
||||
--eval SET @var= fc_i_tt_5_suc($trans_id, $stmt_id)
|
||||
inc $stmt_id;
|
||||
}
|
||||
if ($command == 'set-N')
|
||||
{
|
||||
--eval SET @var= fc_i_nt_5_suc($trans_id, $stmt_id)
|
||||
inc $stmt_id;
|
||||
}
|
||||
if ($command == 'set-NT')
|
||||
{
|
||||
--eval SET @var= fc_i_nt_3_tt_3_suc($trans_id, $stmt_id)
|
||||
inc $stmt_id;
|
||||
}
|
||||
if ($command == 'CS-T->T')
|
||||
{
|
||||
--eval CREATE TABLE tt_xx_$tb_id (PRIMARY KEY(trans_id, stmt_id)) engine=$engine_type SELECT * FROM tt_1;
|
||||
|
|
|
@ -1759,6 +1759,43 @@ connection master;
|
|||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # 5 - SET WITH ROW CHANGES
|
||||
--echo ###################################################################################
|
||||
--let $commands= set-T
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= set-N
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= set-NT
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-N set-T C
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-T set-N C
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-N set-T R
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-T set-N R
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-NT set-T C
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-T set-NT C
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-NT set-T R
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
--let $commands= B set-T set-NT R
|
||||
--source extra/rpl_tests/rpl_mixing_engines.inc
|
||||
|
||||
|
||||
--echo ###################################################################################
|
||||
--echo # CHECK CONSISTENCY
|
||||
--echo ###################################################################################
|
||||
|
|
39
mysql-test/include/ctype_like_cond_propagation.inc
Normal file
39
mysql-test/include/ctype_like_cond_propagation.inc
Normal file
|
@ -0,0 +1,39 @@
|
|||
--echo #
|
||||
--echo # MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
DROP TABLE t1;
|
|
@ -0,0 +1,16 @@
|
|||
--echo #
|
||||
--echo # MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a',10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('ae'),('ä');
|
||||
SELECT * FROM t1 WHERE c1='ä';
|
||||
SELECT * FROM t1 WHERE c1 LIKE 'ae';
|
||||
SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'ae';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
DROP TABLE IF EXISTS t1;
|
|
@ -407,16 +407,29 @@ SELECT * FROM t1;
|
|||
UPDATE t1 SET c = 2;
|
||||
SELECT * FROM t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test that ON UPDATE CURRENT_TIMESTAMP works after non-changing UPDATE.
|
||||
--echo #
|
||||
|
||||
--echo # 2011-04-20 09:54:13 UTC
|
||||
SET TIMESTAMP = 1303293253.794613;
|
||||
|
||||
UPDATE t1 SET c = 2, b = '2011-04-20 09:53:41.794613';
|
||||
SELECT * FROM t1;
|
||||
|
||||
UPDATE t1 SET c = 3;
|
||||
SELECT * FROM t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test of multiple-table UPDATE for ON UPDATE CURRENT_TIMESTAMP
|
||||
--echo #
|
||||
--echo # 2011-04-20 15:06:13 UTC
|
||||
SET TIMESTAMP = 1303311973.534231;
|
||||
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 2;
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 3;
|
||||
SELECT * FROM t1;
|
||||
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 3;
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 2;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@ -1037,7 +1050,7 @@ SET TIME_ZONE = "+03:00";
|
|||
--echo # 1970-01-01 03:16:40
|
||||
SET TIMESTAMP = 1000.123456;
|
||||
|
||||
eval CREATE TABLE t1 ( a INT, b $timestamp NOT NULL DEFAULT $current_timestamp ON UPDATE $current_timestamp) ENGINE = INNODB;
|
||||
eval CREATE TABLE t1 ( a INT, b $timestamp NOT NULL DEFAULT $current_timestamp ON UPDATE $current_timestamp);
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
|
@ -1094,10 +1107,10 @@ eval CREATE TABLE t1 (
|
|||
b INT,
|
||||
ts $timestamp NOT NULL DEFAULT $current_timestamp ON UPDATE $current_timestamp,
|
||||
PRIMARY KEY ( a, ts )
|
||||
) ENGINE = INNODB;
|
||||
);
|
||||
INSERT INTO t1( a, b, ts ) VALUES ( 1, 0, '2000-09-28 17:44:34' );
|
||||
|
||||
eval CREATE TABLE t2 ( a INT ) ENGINE = INNODB;
|
||||
eval CREATE TABLE t2 ( a INT );
|
||||
INSERT INTO t2 VALUES ( 1 );
|
||||
|
||||
UPDATE t1 STRAIGHT_JOIN t2
|
||||
|
@ -1133,8 +1146,7 @@ eval ALTER TABLE t1 ADD COLUMN c4 $datetime ON UPDATE $now AFTER c3;
|
|||
eval ALTER TABLE t1 ADD COLUMN c5 $datetime DEFAULT $now AFTER c4;
|
||||
eval ALTER TABLE t1 ADD COLUMN c6 $datetime DEFAULT $now ON UPDATE $now AFTER c5;
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
query_vertical SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
|
|
|
@ -4,8 +4,7 @@
|
|||
#
|
||||
# The test below is redundant
|
||||
|
||||
-- require r/not_embedded.require
|
||||
disable_query_log;
|
||||
select version() like '%embedded%' as 'have_embedded';
|
||||
enable_query_log;
|
||||
if (`select version() like '%embedded%'`) {
|
||||
This should never happen;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
--source include/not_embedded.inc
|
||||
|
||||
if ($rpl_inited)
|
||||
{
|
||||
|
|
|
@ -42,7 +42,7 @@ if (!$rpl_connection_name)
|
|||
--let $_rpl_port= \$SERVER_MYPORT_$rpl_server_number
|
||||
if (!$_rpl_port)
|
||||
{
|
||||
--echo Bug in test case: '\$SERVER_MYPORT_$rpl_server_number' not initialized. Check the test's .cfg file.
|
||||
--echo Bug in test case: '\$SERVER_MYPORT_$rpl_server_number' not initialized. Check the test's .cnf file.
|
||||
--die Not all SERVER_MYPORT_* environment variables are setup correctly.
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,7 @@ let $script=
|
|||
s{SQL_LOAD-[a-z,0-9,-]*.[a-z]*}{SQL_LOAD-<SERVER UUID>-<MASTER server-id>-<file-id>.<extension>};
|
||||
s{rand_seed1=[0-9]*,rand_seed2=[0-9]*}{rand_seed1=<seed 1>,rand_seed2=<seed 2>};
|
||||
s{((?:master|slave|slave-relay)-bin\.[0-9]{6};pos=)[0-9]+DOLLAR}{DOLLAR1POS};
|
||||
s{SONAME ".*"}{SONAME "LIB"};
|
||||
s{DOLLARmysqltest_vardir}{MYSQLTEST_VARDIR}g;
|
||||
||
|
||||
--let $pre_script= my DOLLARmysqltest_vardir = DOLLARENV{'MYSQLTEST_VARDIR'};
|
||||
|
|
59
mysql-test/include/wait_innodb_all_purged.inc
Normal file
59
mysql-test/include/wait_innodb_all_purged.inc
Normal file
|
@ -0,0 +1,59 @@
|
|||
# include/wait_innodb_all_purged.inc
|
||||
#
|
||||
# SUMMARY
|
||||
#
|
||||
# Waits until purged all undo records of innodb, or operation times out.
|
||||
#
|
||||
# USAGE
|
||||
#
|
||||
# --source include/wait_innodb_all_purged.inc
|
||||
#
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
--disable_query_log
|
||||
|
||||
let $wait_counter_init= 300;
|
||||
if ($wait_timeout)
|
||||
{
|
||||
let $wait_counter_init= `SELECT $wait_timeout * 10`;
|
||||
}
|
||||
# Reset $wait_timeout so that its value won't be used on subsequent
|
||||
# calls, and default will be used instead.
|
||||
let $wait_timeout= 0;
|
||||
|
||||
let $wait_counter= $wait_counter_init;
|
||||
|
||||
# Keep track of how many times the wait condition is tested
|
||||
let $wait_condition_reps= 0;
|
||||
let $prev_trx_age= 0;
|
||||
while ($wait_counter)
|
||||
{
|
||||
let $trx_age = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS
|
||||
WHERE VARIABLE_NAME = 'INNODB_PURGE_TRX_ID_AGE';`;
|
||||
|
||||
if ($trx_age != $prev_trx_age)
|
||||
{
|
||||
let $wait_counter= $wait_counter_init;
|
||||
let $prev_trx_age= $trx_age;
|
||||
}
|
||||
|
||||
let $success= `SELECT $trx_age < 1`;
|
||||
inc $wait_condition_reps;
|
||||
if ($success)
|
||||
{
|
||||
let $wait_counter= 0;
|
||||
}
|
||||
if (!$success)
|
||||
{
|
||||
set global innodb_purge_run_now=ON;
|
||||
real_sleep 0.1;
|
||||
dec $wait_counter;
|
||||
}
|
||||
}
|
||||
if (!$success)
|
||||
{
|
||||
echo Timeout in wait_innodb_all_purged.inc for INNODB_PURGE_TRX_ID_AGE = $trx_age;
|
||||
}
|
||||
|
||||
--enable_query_log
|
|
@ -110,6 +110,8 @@ sub check_socket_path_length {
|
|||
# This may not be true, but we can't test for it on AIX due to Perl bug
|
||||
# See Bug #45771
|
||||
return 0 if ($^O eq 'aix');
|
||||
# See Debian bug #670722 - failing on kFreeBSD even after setting short path
|
||||
return 0 if $^O eq 'gnukfreebsd' and length $path < 40;
|
||||
|
||||
require IO::Socket::UNIX;
|
||||
|
||||
|
|
|
@ -337,7 +337,7 @@ sub testcase_timeout ($) {
|
|||
return $opt_testcase_timeout * 60;
|
||||
}
|
||||
|
||||
sub check_timeout ($) { return testcase_timeout($_[0]) / 10; }
|
||||
sub check_timeout ($) { return testcase_timeout($_[0]); }
|
||||
|
||||
our $opt_warnings= 1;
|
||||
|
||||
|
@ -4402,6 +4402,8 @@ sub extract_warning_lines ($$) {
|
|||
qr|Plugin 'FEEDBACK' registration as a INFORMATION SCHEMA failed|,
|
||||
qr|'log-bin-use-v1-row-events' is MySQL 5.6 compatible option|,
|
||||
qr|InnoDB: Setting thread \d+ nice to \d+ failed, current nice \d+, errno 13|, # setpriority() fails under valgrind
|
||||
qr|Failed to setup SSL|,
|
||||
qr|SSL error: Failed to set ciphers to use|,
|
||||
);
|
||||
|
||||
my $matched_lines= [];
|
||||
|
|
|
@ -3,3 +3,4 @@ ERROR 28000: Access denied for user 'foo'@'localhost' (using password: NO)
|
|||
ERROR 28000: Access denied for user 'foo'@'localhost' (using password: YES)
|
||||
ERROR 08S01: Unknown command
|
||||
ERROR 08S01: Unknown command
|
||||
that's all
|
||||
|
|
|
@ -2609,5 +2609,52 @@ a b
|
|||
1 1
|
||||
unlock tables;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-6179: dynamic columns functions/cast()/convert() doesn't
|
||||
# play nice with CREATE/ALTER TABLE
|
||||
#
|
||||
create table t1 (
|
||||
color char(32) as (COLUMN_GET(dynamic_cols, 1 as char)) persistent,
|
||||
cl char(32) as (COLUMN_GET(COLUMN_ADD(COLUMN_CREATE(1 , 'blue' as char), 2, 'ttt'), i as char)) persistent,
|
||||
item_name varchar(32) primary key, -- A common attribute for all items
|
||||
i int,
|
||||
dynamic_cols blob -- Dynamic columns will be stored here
|
||||
);
|
||||
INSERT INTO t1(item_name, dynamic_cols, i) VALUES
|
||||
('MariaDB T-shirt', COLUMN_CREATE(1, 'blue', 2, 'XL'), 1);
|
||||
INSERT INTO t1(item_name, dynamic_cols, i) VALUES
|
||||
('Thinkpad Laptop', COLUMN_CREATE(1, 'black', 3, 500), 2);
|
||||
select item_name, color, cl from t1;
|
||||
item_name color cl
|
||||
MariaDB T-shirt blue blue
|
||||
Thinkpad Laptop black ttt
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`color` char(32) AS (COLUMN_GET(dynamic_cols, 1 as char)) PERSISTENT,
|
||||
`cl` char(32) AS (COLUMN_GET(COLUMN_ADD(COLUMN_CREATE(1 , 'blue' as char), 2, 'ttt'), i as char)) PERSISTENT,
|
||||
`item_name` varchar(32) NOT NULL,
|
||||
`i` int(11) DEFAULT NULL,
|
||||
`dynamic_cols` blob,
|
||||
PRIMARY KEY (`item_name`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
n int,
|
||||
c char(32) as (convert(cast(n as char), char)) persistent
|
||||
);
|
||||
insert into t1(n) values (1),(2),(3);
|
||||
select * from t1;
|
||||
n c
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`n` int(11) DEFAULT NULL,
|
||||
`c` char(32) AS (convert(cast(n as char), char)) PERSISTENT
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1;
|
||||
ERROR 42000: A table must have at least 1 column
|
||||
|
|
|
@ -2915,3 +2915,98 @@ SET sql_mode=default;
|
|||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
SET NAMES binary;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varbinary(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varbinary(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varbinary(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varbinary(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ('%' = concat(`test`.`t1`.`c1`))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
|
|
35
mysql-test/r/ctype_cp932.result
Normal file
35
mysql-test/r/ctype_cp932.result
Normal file
|
@ -0,0 +1,35 @@
|
|||
#
|
||||
# Bug #11755818 LIKE DOESN'T MATCH WHEN CP932_BIN/SJIS_BIN COLLATIONS ARE
|
||||
# USED.
|
||||
#
|
||||
SET @old_character_set_client= @@character_set_client;
|
||||
SET @old_character_set_connection= @@character_set_connection;
|
||||
SET @old_character_set_results= @@character_set_results;
|
||||
SET character_set_client= 'utf8';
|
||||
SET character_set_connection= 'utf8';
|
||||
SET character_set_results= 'utf8';
|
||||
CREATE TABLE t1 (a VARCHAR(10) COLLATE cp932_bin);
|
||||
INSERT INTO t1 VALUES('カカ');
|
||||
SELECT * FROM t1 WHERE a LIKE '%カ';
|
||||
a
|
||||
カカ
|
||||
SELECT * FROM t1 WHERE a LIKE '_カ';
|
||||
a
|
||||
カカ
|
||||
SELECT * FROM t1 WHERE a LIKE '%_カ';
|
||||
a
|
||||
カカ
|
||||
ALTER TABLE t1 MODIFY a VARCHAR(100) COLLATE sjis_bin;
|
||||
SELECT * FROM t1 WHERE a LIKE '%カ';
|
||||
a
|
||||
カカ
|
||||
SELECT * FROM t1 WHERE a LIKE '_カ';
|
||||
a
|
||||
カカ
|
||||
SELECT * FROM t1 WHERE a LIKE '%_カ';
|
||||
a
|
||||
カカ
|
||||
DROP TABLE t1;
|
||||
SET @@character_set_client= @old_character_set_client;
|
||||
SET @@character_set_connection= @old_character_set_connection;
|
||||
SET @@character_set_results= @old_character_set_results;
|
|
@ -7659,6 +7659,198 @@ DROP FUNCTION mysql_real_escape_string_generated;
|
|||
DROP FUNCTION iswellformed;
|
||||
DROP TABLE allbytes;
|
||||
# End of ctype_backslash.inc
|
||||
SET NAMES latin1;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1 COLLATE latin1_bin;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-6752 Trailing incomplete characters are not replaced to question marks on conversion
|
||||
#
|
||||
|
|
|
@ -7700,6 +7700,276 @@ DROP TABLE t1;
|
|||
# Start of MariaDB-10.0 tests
|
||||
#
|
||||
|
||||
SET NAMES utf8 COLLATE utf8_unicode_ci;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a',10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('ae'),('ä');
|
||||
SELECT * FROM t1 WHERE c1='ä';
|
||||
c1
|
||||
ä
|
||||
SELECT * FROM t1 WHERE c1 LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((`test`.`t1`.`c1` = 'ä') and (`test`.`t1`.`c1` like 'ae'))
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä';
|
||||
c1
|
||||
ä
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'ä') and (concat(`test`.`t1`.`c1`) like 'ae'))
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SET NAMES utf8 COLLATE utf8_german2_ci;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a',10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('ae'),('ä');
|
||||
SELECT * FROM t1 WHERE c1='ä';
|
||||
c1
|
||||
ae
|
||||
ä
|
||||
SELECT * FROM t1 WHERE c1 LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((`test`.`t1`.`c1` = 'ä') and (`test`.`t1`.`c1` like 'ae'))
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä';
|
||||
c1
|
||||
ae
|
||||
ä
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'ä') and (concat(`test`.`t1`.`c1`) like 'ae'))
|
||||
DROP TABLE IF EXISTS t1;
|
||||
#
|
||||
# MDEV-4929 Myanmar collation
|
||||
#
|
||||
|
|
|
@ -5326,6 +5326,199 @@ DROP TABLE t1;
|
|||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
SET NAMES latin1, collation_connection=ucs2_bin;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1, collation_connection=ucs2_general_ci;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1;
|
||||
#
|
||||
# MDEV-6661 PI() does not work well in UCS2/UTF16/UTF32 context
|
||||
#
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
call mtr.add_suppression("Cannot use ucs2 as character_set_client");
|
||||
show variables like 'collation_server';
|
||||
Variable_name Value
|
||||
collation_server ucs2_unicode_ci
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
call mtr.add_suppression("Cannot use ucs2 as character_set_client");
|
||||
#
|
||||
# Start of 5.5 tests
|
||||
#
|
||||
|
|
|
@ -227,7 +227,7 @@ DROP TABLE mysql050614_xxx_croatian_ci;
|
|||
# Checking mysql_upgrade
|
||||
#
|
||||
# Running mysql_upgrade
|
||||
Phase 1/4: Checking mysql database
|
||||
Phase 1/5: Checking mysql database
|
||||
Processing databases
|
||||
mysql
|
||||
mysql.column_stats OK
|
||||
|
@ -258,9 +258,9 @@ mysql.time_zone_name OK
|
|||
mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.user OK
|
||||
Phase 2/4: Running 'mysql_fix_privilege_tables'...
|
||||
Phase 3/4: Fixing table and database names
|
||||
Phase 4/4: Checking and upgrading tables
|
||||
Phase 2/5: Running 'mysql_fix_privilege_tables'...
|
||||
Phase 3/5: Fixing table and database names
|
||||
Phase 4/5: Checking and upgrading tables
|
||||
Processing databases
|
||||
information_schema
|
||||
mtr
|
||||
|
@ -279,10 +279,11 @@ test.maria050313_ucs2_croatian_ci_def OK
|
|||
test.maria050313_utf8_croatian_ci OK
|
||||
test.maria050533_xxx_croatian_ci OK
|
||||
test.maria100004_xxx_croatian_ci OK
|
||||
Phase 5/5: Running 'FLUSH PRIVILEGES'...
|
||||
OK
|
||||
# Running mysql_upgrade for the second time
|
||||
# This should report OK for all tables
|
||||
Phase 1/4: Checking mysql database
|
||||
Phase 1/5: Checking mysql database
|
||||
Processing databases
|
||||
mysql
|
||||
mysql.column_stats OK
|
||||
|
@ -313,9 +314,9 @@ mysql.time_zone_name OK
|
|||
mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.user OK
|
||||
Phase 2/4: Running 'mysql_fix_privilege_tables'...
|
||||
Phase 3/4: Fixing table and database names
|
||||
Phase 4/4: Checking and upgrading tables
|
||||
Phase 2/5: Running 'mysql_fix_privilege_tables'...
|
||||
Phase 3/5: Fixing table and database names
|
||||
Phase 4/5: Checking and upgrading tables
|
||||
Processing databases
|
||||
information_schema
|
||||
mtr
|
||||
|
@ -328,6 +329,7 @@ test.maria050313_utf8_croatian_ci OK
|
|||
test.maria050533_xxx_croatian_ci OK
|
||||
test.maria100004_xxx_croatian_ci OK
|
||||
test.mysql050614_xxx_croatian_ci OK
|
||||
Phase 5/5: Running 'FLUSH PRIVILEGES'...
|
||||
OK
|
||||
SHOW CREATE TABLE maria050313_ucs2_croatian_ci_def;
|
||||
Table Create Table
|
||||
|
|
|
@ -1573,6 +1573,13 @@ a 512
|
|||
Warnings:
|
||||
Warning 1260 Row 1 was cut by GROUP_CONCAT()
|
||||
#
|
||||
# MDEV-6865 Merge Bug#18935421 RPAD DIES WITH CERTAIN PADSTR INTPUTS..
|
||||
#
|
||||
DO RPAD(_utf16 0x0061 COLLATE utf16_unicode_ci, 10000, 0x0061DE989999);
|
||||
ERROR HY000: Invalid utf16 character string: 'DE9899'
|
||||
DO LPAD(_utf16 0x0061 COLLATE utf16_unicode_ci, 10000, 0x0061DE989999);
|
||||
ERROR HY000: Invalid utf16 character string: 'DE9899'
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
#
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
call mtr.add_suppression("Cannot use utf16 as character_set_client");
|
||||
SHOW VARIABLES LIKE 'collation_server';
|
||||
Variable_name Value
|
||||
collation_server utf16_general_ci
|
||||
|
|
|
@ -5936,6 +5936,235 @@ set max_sort_length=default;
|
|||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
SET NAMES utf8 COLLATE utf8_bin;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
SET NAMES utf8;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'a') and (concat(`test`.`t1`.`c1`) like 'a '))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
c1
|
||||
a
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('a' = concat(`test`.`t1`.`c1`)) and ('a ' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('% ' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
%
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
c1
|
||||
%
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where (('%' = concat(`test`.`t1`.`c1`)) and ('a' like concat(`test`.`t1`.`c1`)))
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a',10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES ('ae'),('ä');
|
||||
SELECT * FROM t1 WHERE c1='ä';
|
||||
c1
|
||||
ä
|
||||
SELECT * FROM t1 WHERE c1 LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((`test`.`t1`.`c1` = 'ä') and (`test`.`t1`.`c1` like 'ae'))
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä';
|
||||
c1
|
||||
ä
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'ae';
|
||||
c1
|
||||
ae
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
c1
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` where ((concat(`test`.`t1`.`c1`) = 'ä') and (concat(`test`.`t1`.`c1`) like 'ae'))
|
||||
DROP TABLE IF EXISTS t1;
|
||||
#
|
||||
# MDEV-6666 Malformed result for CONCAT(utf8_column, binary_string)
|
||||
#
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
drop table if exists t1,t2,t3;
|
||||
drop table if exists t0,t1,t2,t3;
|
||||
drop database if exists test1;
|
||||
set @exit_optimizer_switch=@@optimizer_switch;
|
||||
set optimizer_switch='derived_merge=on,derived_with_keys=on';
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
|
@ -352,4 +353,155 @@ pk pk
|
|||
72 72
|
||||
80 80
|
||||
drop table t1, t2, t3, t4;
|
||||
#
|
||||
# MDEV-6888: Query spends a long time in best_extension_by_limited_search with mrr enabled
|
||||
#
|
||||
create database test1;
|
||||
use test1;
|
||||
set @tmp_jcl= @@join_cache_level;
|
||||
set @tmp_os= @@optimizer_switch;
|
||||
set join_cache_level=8;
|
||||
set optimizer_switch='mrr=on,mrr_sort_keys=on';
|
||||
CREATE TABLE t0 (
|
||||
f1 bigint(20) DEFAULT NULL,
|
||||
f2 char(50) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t0 VALUES (NULL,'numeric column is NULL'),(0,NULL),(5,'five'),(1,'one'),(2,'two');
|
||||
CREATE TABLE t1 (
|
||||
f1 decimal(64,30) DEFAULT NULL,
|
||||
f2 varchar(50) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'numeric column is NULL'),
|
||||
(0.000000000000000000000000000000,NULL),
|
||||
(5.000000000000000000000000000000,'five'),
|
||||
(1.000000000000000000000000000000,'one'),
|
||||
(3.000000000000000000000000000000,'three');
|
||||
CREATE TABLE t2 (
|
||||
f1 double DEFAULT NULL,
|
||||
f2 varbinary(50) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t2 VALUES (NULL,'numeric column is NULL'),(0,NULL),(5,'five'),(2,'two'),(3,'three');
|
||||
create VIEW v0 AS select f1,f2 from t1 ;
|
||||
create VIEW v1 AS select tab1_v1.f1,tab1_v1.f2 from t1 tab1_v1 join v0 tab2 on tab1_v1.f1 = tab2.f1 and tab1_v1.f2 = tab2.f2;
|
||||
create VIEW v2 AS select tab1_v2.f1,tab1_v2.f2 from t2 tab1_v2 join v1 tab2 on tab1_v2.f1 = tab2.f1 and tab1_v2.f2 = tab2.f2;
|
||||
create VIEW v3 AS select tab1_v3.f1,tab1_v3.f2 from t0 tab1_v3 join v2 tab2 on tab1_v3.f1 = tab2.f1 and tab1_v3.f2 = tab2.f2;
|
||||
create VIEW v4 AS select tab1_v4.f1,tab1_v4.f2 from t1 tab1_v4 join v3 tab2 on tab1_v4.f1 = tab2.f1 and tab1_v4.f2 = tab2.f2;
|
||||
create VIEW v5 AS select tab1_v5.f1,tab1_v5.f2 from t2 tab1_v5 join v4 tab2 on tab1_v5.f1 = tab2.f1 and tab1_v5.f2 = tab2.f2;
|
||||
create VIEW v6 AS select tab1_v6.f1,tab1_v6.f2 from t0 tab1_v6 join v5 tab2 on tab1_v6.f1 = tab2.f1 and tab1_v6.f2 = tab2.f2;
|
||||
create VIEW v7 AS select tab1_v7.f1,tab1_v7.f2 from t1 tab1_v7 join v6 tab2 on tab1_v7.f1 = tab2.f1 and tab1_v7.f2 = tab2.f2;
|
||||
create VIEW v8 AS select tab1_v8.f1,tab1_v8.f2 from t2 tab1_v8 join v7 tab2 on tab1_v8.f1 = tab2.f1 and tab1_v8.f2 = tab2.f2;
|
||||
create VIEW v9 AS select tab1_v9.f1,tab1_v9.f2 from t0 tab1_v9 join v8 tab2 on tab1_v9.f1 = tab2.f1 and tab1_v9.f2 = tab2.f2;
|
||||
create VIEW v10 AS select tab1_v10.f1,tab1_v10.f2 from t1 tab1_v10 join v9 tab2 on tab1_v10.f1 = tab2.f1 and tab1_v10.f2 = tab2.f2;
|
||||
create VIEW v11 AS select tab1_v11.f1,tab1_v11.f2 from t2 tab1_v11 join v10 tab2 on tab1_v11.f1 = tab2.f1 and tab1_v11.f2 = tab2.f2;
|
||||
create VIEW v12 AS select tab1_v12.f1,tab1_v12.f2 from t0 tab1_v12 join v11 tab2 on tab1_v12.f1 = tab2.f1 and tab1_v12.f2 = tab2.f2;
|
||||
create VIEW v13 AS select tab1_v13.f1,tab1_v13.f2 from t1 tab1_v13 join v12 tab2 on tab1_v13.f1 = tab2.f1 and tab1_v13.f2 = tab2.f2;
|
||||
create VIEW v14 AS select tab1_v14.f1,tab1_v14.f2 from t2 tab1_v14 join v13 tab2 on tab1_v14.f1 = tab2.f1 and tab1_v14.f2 = tab2.f2;
|
||||
create VIEW v15 AS select tab1_v15.f1,tab1_v15.f2 from t0 tab1_v15 join v14 tab2 on tab1_v15.f1 = tab2.f1 and tab1_v15.f2 = tab2.f2;
|
||||
create VIEW v16 AS select tab1_v16.f1,tab1_v16.f2 from t1 tab1_v16 join v15 tab2 on tab1_v16.f1 = tab2.f1 and tab1_v16.f2 = tab2.f2;
|
||||
create VIEW v17 AS select tab1_v17.f1,tab1_v17.f2 from t2 tab1_v17 join v16 tab2 on tab1_v17.f1 = tab2.f1 and tab1_v17.f2 = tab2.f2;
|
||||
create VIEW v18 AS select tab1_v18.f1,tab1_v18.f2 from t0 tab1_v18 join v17 tab2 on tab1_v18.f1 = tab2.f1 and tab1_v18.f2 = tab2.f2;
|
||||
create VIEW v19 AS select tab1_v19.f1,tab1_v19.f2 from t1 tab1_v19 join v18 tab2 on tab1_v19.f1 = tab2.f1 and tab1_v19.f2 = tab2.f2;
|
||||
create VIEW v20 AS select tab1_v20.f1,tab1_v20.f2 from t2 tab1_v20 join v19 tab2 on tab1_v20.f1 = tab2.f1 and tab1_v20.f2 = tab2.f2;
|
||||
create VIEW v21 AS select tab1_v21.f1,tab1_v21.f2 from t0 tab1_v21 join v20 tab2 on tab1_v21.f1 = tab2.f1 and tab1_v21.f2 = tab2.f2;
|
||||
create VIEW v22 AS select tab1_v22.f1,tab1_v22.f2 from t1 tab1_v22 join v21 tab2 on tab1_v22.f1 = tab2.f1 and tab1_v22.f2 = tab2.f2;
|
||||
create VIEW v23 AS select tab1_v23.f1,tab1_v23.f2 from t2 tab1_v23 join v22 tab2 on tab1_v23.f1 = tab2.f1 and tab1_v23.f2 = tab2.f2;
|
||||
create VIEW v24 AS select tab1_v24.f1,tab1_v24.f2 from t0 tab1_v24 join v23 tab2 on tab1_v24.f1 = tab2.f1 and tab1_v24.f2 = tab2.f2;
|
||||
create VIEW v25 AS select tab1_v25.f1,tab1_v25.f2 from t1 tab1_v25 join v24 tab2 on tab1_v25.f1 = tab2.f1 and tab1_v25.f2 = tab2.f2;
|
||||
create VIEW v26 AS select tab1_v26.f1,tab1_v26.f2 from t2 tab1_v26 join v25 tab2 on tab1_v26.f1 = tab2.f1 and tab1_v26.f2 = tab2.f2;
|
||||
create VIEW v27 AS select tab1_v27.f1,tab1_v27.f2 from t0 tab1_v27 join v26 tab2 on tab1_v27.f1 = tab2.f1 and tab1_v27.f2 = tab2.f2;
|
||||
EXPLAIN SELECT CAST(f1 AS SIGNED INTEGER) AS f1, CAST(f2 AS CHAR) AS f2 FROM v27;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab1_v27 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 SIMPLE tab1_v26 hash_ALL NULL #hash#$hj 63 test1.tab1_v27.f1,test1.tab1_v27.f2 5 Using where; Using join buffer (flat, BNLH join)
|
||||
1 SIMPLE tab1_v25 hash_ALL NULL #hash#$hj 31 test1.tab1_v26.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v24 hash_ALL NULL #hash#$hj 60 test1.tab1_v25.f1,test1.tab1_v25.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v23 hash_ALL NULL #hash#$hj 63 test1.tab1_v24.f1,test1.tab1_v24.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v22 hash_ALL NULL #hash#$hj 31 test1.tab1_v23.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v21 hash_ALL NULL #hash#$hj 60 test1.tab1_v22.f1,test1.tab1_v22.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v20 hash_ALL NULL #hash#$hj 63 test1.tab1_v21.f1,test1.tab1_v21.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v19 hash_ALL NULL #hash#$hj 31 test1.tab1_v20.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v18 hash_ALL NULL #hash#$hj 60 test1.tab1_v19.f1,test1.tab1_v19.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v17 hash_ALL NULL #hash#$hj 63 test1.tab1_v18.f1,test1.tab1_v18.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v16 hash_ALL NULL #hash#$hj 31 test1.tab1_v17.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v15 hash_ALL NULL #hash#$hj 60 test1.tab1_v16.f1,test1.tab1_v16.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v14 hash_ALL NULL #hash#$hj 63 test1.tab1_v15.f1,test1.tab1_v15.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v13 hash_ALL NULL #hash#$hj 31 test1.tab1_v14.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v12 hash_ALL NULL #hash#$hj 60 test1.tab1_v13.f1,test1.tab1_v13.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v11 hash_ALL NULL #hash#$hj 63 test1.tab1_v12.f1,test1.tab1_v12.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v10 hash_ALL NULL #hash#$hj 31 test1.tab1_v11.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v9 hash_ALL NULL #hash#$hj 60 test1.tab1_v10.f1,test1.tab1_v10.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v8 hash_ALL NULL #hash#$hj 63 test1.tab1_v9.f1,test1.tab1_v9.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v7 hash_ALL NULL #hash#$hj 31 test1.tab1_v8.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v6 hash_ALL NULL #hash#$hj 60 test1.tab1_v7.f1,test1.tab1_v7.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v5 hash_ALL NULL #hash#$hj 63 test1.tab1_v6.f1,test1.tab1_v6.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v4 hash_ALL NULL #hash#$hj 31 test1.tab1_v5.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v3 hash_ALL NULL #hash#$hj 60 test1.tab1_v4.f1,test1.tab1_v4.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v2 hash_ALL NULL #hash#$hj 63 test1.tab1_v3.f1,test1.tab1_v3.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v1 hash_ALL NULL #hash#$hj 31 test1.tab1_v2.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE t1 hash_ALL NULL #hash#$hj 85 test1.tab1_v1.f1,test1.tab1_v1.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
# This used to hang forever:
|
||||
EXPLAIN SELECT CAST(f1 AS SIGNED INTEGER) AS f1, CAST(f2 AS CHAR) AS f2 FROM v27;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tab1_v27 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 SIMPLE tab1_v26 hash_ALL NULL #hash#$hj 63 test1.tab1_v27.f1,test1.tab1_v27.f2 5 Using where; Using join buffer (flat, BNLH join)
|
||||
1 SIMPLE tab1_v25 hash_ALL NULL #hash#$hj 31 test1.tab1_v26.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v24 hash_ALL NULL #hash#$hj 60 test1.tab1_v25.f1,test1.tab1_v25.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v23 hash_ALL NULL #hash#$hj 63 test1.tab1_v24.f1,test1.tab1_v24.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v22 hash_ALL NULL #hash#$hj 31 test1.tab1_v23.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v21 hash_ALL NULL #hash#$hj 60 test1.tab1_v22.f1,test1.tab1_v22.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v20 hash_ALL NULL #hash#$hj 63 test1.tab1_v21.f1,test1.tab1_v21.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v19 hash_ALL NULL #hash#$hj 31 test1.tab1_v20.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v18 hash_ALL NULL #hash#$hj 60 test1.tab1_v19.f1,test1.tab1_v19.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v17 hash_ALL NULL #hash#$hj 63 test1.tab1_v18.f1,test1.tab1_v18.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v16 hash_ALL NULL #hash#$hj 31 test1.tab1_v17.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v15 hash_ALL NULL #hash#$hj 60 test1.tab1_v16.f1,test1.tab1_v16.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v14 hash_ALL NULL #hash#$hj 63 test1.tab1_v15.f1,test1.tab1_v15.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v13 hash_ALL NULL #hash#$hj 31 test1.tab1_v14.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v12 hash_ALL NULL #hash#$hj 60 test1.tab1_v13.f1,test1.tab1_v13.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v11 hash_ALL NULL #hash#$hj 63 test1.tab1_v12.f1,test1.tab1_v12.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v10 hash_ALL NULL #hash#$hj 31 test1.tab1_v11.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v9 hash_ALL NULL #hash#$hj 60 test1.tab1_v10.f1,test1.tab1_v10.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v8 hash_ALL NULL #hash#$hj 63 test1.tab1_v9.f1,test1.tab1_v9.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v7 hash_ALL NULL #hash#$hj 31 test1.tab1_v8.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v6 hash_ALL NULL #hash#$hj 60 test1.tab1_v7.f1,test1.tab1_v7.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v5 hash_ALL NULL #hash#$hj 63 test1.tab1_v6.f1,test1.tab1_v6.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v4 hash_ALL NULL #hash#$hj 31 test1.tab1_v5.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v3 hash_ALL NULL #hash#$hj 60 test1.tab1_v4.f1,test1.tab1_v4.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v2 hash_ALL NULL #hash#$hj 63 test1.tab1_v3.f1,test1.tab1_v3.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE tab1_v1 hash_ALL NULL #hash#$hj 31 test1.tab1_v2.f1 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE t1 hash_ALL NULL #hash#$hj 85 test1.tab1_v1.f1,test1.tab1_v1.f2 5 Using where; Using join buffer (incremental, BNLH join)
|
||||
use test;
|
||||
drop database test1;
|
||||
set join_cache_level=@tmp_jcl;
|
||||
set optimizer_switch=@tmp_os;
|
||||
#
|
||||
# MDEV-6879: Dereference of NULL primary_file->table in DsMrr_impl::get_disk_sweep_mrr_cost()
|
||||
#
|
||||
create table t1(a int);
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t2 (a int, b int, c text);
|
||||
insert into t2
|
||||
select
|
||||
A.a + B.a* 10,
|
||||
A.a + B.a* 10,
|
||||
'blob-data'
|
||||
from t1 A, t1 B;
|
||||
set @tmp_jcl= @@join_cache_level;
|
||||
set @tmp_os= @@optimizer_switch;
|
||||
set join_cache_level=6;
|
||||
set @@optimizer_switch='derived_merge=on,derived_with_keys=on,mrr=on';
|
||||
explain
|
||||
select * from
|
||||
t1 join
|
||||
(select * from t2 order by a limit 1000) as D1
|
||||
where
|
||||
D1.a= t1.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using where
|
||||
1 PRIMARY <derived2> hash_ALL key0 #hash#key0 5 test.t1.a 100 Using join buffer (flat, BNLH join)
|
||||
2 DERIVED t2 ALL NULL NULL NULL NULL 100 Using filesort
|
||||
set join_cache_level=@tmp_jcl;
|
||||
set optimizer_switch=@tmp_os;
|
||||
drop table t1, t2;
|
||||
set optimizer_switch=@exit_optimizer_switch;
|
||||
|
|
|
@ -1777,5 +1777,27 @@ group_concat(cast(column_json(dyn) as char))
|
|||
{"name1":"value1","name2":"value2"}
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-7116: Dynamic column hangs/segfaults
|
||||
#
|
||||
create table t1 (
|
||||
impressions mediumblob
|
||||
);
|
||||
insert into t1 values ("");
|
||||
update t1
|
||||
set impressions = column_add(impressions,
|
||||
'total', 12,
|
||||
'2014-10-28 16:00:00', 3,
|
||||
'2014-10-30 15:00:00', 3,
|
||||
'2014-11-04 09:00:00', 6
|
||||
);
|
||||
update t1
|
||||
set impressions = column_add(impressions,
|
||||
'total', "a12",
|
||||
'2014-10-28 16:00:00', "a3",
|
||||
'2014-10-30 15:00:00', "a3",
|
||||
'2014-11-04 09:00:00', "a6"
|
||||
);
|
||||
drop table t1;
|
||||
#
|
||||
# end of 10.0 tests
|
||||
#
|
||||
|
|
20
mysql-test/r/ext_key_noPK_6794.result
Normal file
20
mysql-test/r/ext_key_noPK_6794.result
Normal file
|
@ -0,0 +1,20 @@
|
|||
create table t1 (c1 int not null, c2 int, unique index(c1), index (c2)) engine=innodb;
|
||||
insert into t1 (c1, c2) select 1, round(rand()*100);
|
||||
insert into t1 (c1, c2) select (select max(c1) from t1) + c1, c1*93563%100 from t1;
|
||||
insert into t1 (c1, c2) select (select max(c1) from t1) + c1, c1*93563%100 from t1;
|
||||
insert into t1 (c1, c2) select (select max(c1) from t1) + c1, c1*93563%100 from t1;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
8
|
||||
explain select * from t1 where c2 = 1 order by c1;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type ref
|
||||
possible_keys c2
|
||||
key c2
|
||||
key_len 5
|
||||
ref const
|
||||
rows 1
|
||||
Extra Using where; Using index
|
||||
drop table t1;
|
|
@ -147,3 +147,11 @@ DROP TABLE t1;
|
|||
#
|
||||
# End of 5.3 tests
|
||||
#
|
||||
SELECT UNCOMPRESS(CAST(0 AS BINARY(5)));
|
||||
UNCOMPRESS(CAST(0 AS BINARY(5)))
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1259 ZLIB: Input data corrupted
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
|
|
@ -839,3 +839,9 @@ SELECT REGEXP_REPLACE('abc','^(.*)(.*)$','\\1/\\2');
|
|||
REGEXP_REPLACE('abc','^(.*)(.*)$','\\1/\\2')
|
||||
/abc
|
||||
SET default_regex_flags=DEFAULT;
|
||||
#
|
||||
# MDEV-6965 non-captured group \2 in regexp_replace
|
||||
#
|
||||
SELECT REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that');
|
||||
REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that')
|
||||
1 this and that
|
||||
|
|
|
@ -320,3 +320,20 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (not((`test`.`t1`.`a` + 0)))
|
||||
drop table t1;
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
#
|
||||
# MDEV-7001 Bad result for NOT NOT STRCMP('a','b') and NOT NOT NULLIF(2,3)
|
||||
#
|
||||
SELECT NOT NOT strcmp('a','b');
|
||||
NOT NOT strcmp('a','b')
|
||||
1
|
||||
EXPLAIN EXTENDED SELECT NOT NOT strcmp('a','b');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select (strcmp('a','b') <> 0) AS `NOT NOT strcmp('a','b')`
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
|
|
|
@ -435,18 +435,31 @@ SELECT * FROM t1;
|
|||
a b c
|
||||
2011-04-20 09:53:41 2011-04-20 09:53:41 2
|
||||
#
|
||||
# Test that ON UPDATE CURRENT_TIMESTAMP works after non-changing UPDATE.
|
||||
#
|
||||
# 2011-04-20 09:54:13 UTC
|
||||
SET TIMESTAMP = 1303293253.794613;
|
||||
UPDATE t1 SET c = 2, b = '2011-04-20 09:53:41.794613';
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 09:53:41 2011-04-20 09:53:41 2
|
||||
UPDATE t1 SET c = 3;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 09:54:13 2011-04-20 09:54:13 3
|
||||
#
|
||||
# Test of multiple-table UPDATE for ON UPDATE CURRENT_TIMESTAMP
|
||||
#
|
||||
# 2011-04-20 15:06:13 UTC
|
||||
SET TIMESTAMP = 1303311973.534231;
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 2;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 09:53:41 2011-04-20 09:53:41 2
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 3;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 15:06:13 2011-04-20 15:06:13 3
|
||||
2011-04-20 09:54:13 2011-04-20 09:54:13 3
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 2;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 15:06:13 2011-04-20 15:06:13 2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of a multiple-table update where only one table is updated and
|
||||
|
@ -1421,13 +1434,13 @@ drop table t1;
|
|||
SET TIME_ZONE = "+03:00";
|
||||
# 1970-01-01 03:16:40
|
||||
SET TIMESTAMP = 1000.123456;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP) ENGINE = INNODB;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 ( a ) VALUES ( 1 );
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
|
@ -1477,9 +1490,9 @@ a INT,
|
|||
b INT,
|
||||
ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY ( a, ts )
|
||||
) ENGINE = INNODB;
|
||||
);
|
||||
INSERT INTO t1( a, b, ts ) VALUES ( 1, 0, '2000-09-28 17:44:34' );
|
||||
CREATE TABLE t2 ( a INT ) ENGINE = INNODB;
|
||||
CREATE TABLE t2 ( a INT );
|
||||
INSERT INTO t2 VALUES ( 1 );
|
||||
UPDATE t1 STRAIGHT_JOIN t2
|
||||
SET t1.b = t1.b + 1
|
||||
|
@ -1508,8 +1521,19 @@ ALTER TABLE t1 ADD COLUMN c4 DATETIME ON UPDATE NOW() AFTER c3;
|
|||
ALTER TABLE t1 ADD COLUMN c5 DATETIME DEFAULT NOW() AFTER c4;
|
||||
ALTER TABLE t1 ADD COLUMN c6 DATETIME DEFAULT NOW() ON UPDATE NOW() AFTER c5;
|
||||
SELECT * FROM t1;
|
||||
a1 a2 a3 a4 a5 a6 b c1 c2 c3 c4 c5 c6
|
||||
0000-00-00 00:00:00 1970-01-01 03:16:40 1970-01-01 03:16:40 NULL 1970-01-01 03:16:40 1970-01-01 03:16:40 1 0000-00-00 00:00:00 1970-01-01 03:16:40 1970-01-01 03:16:40 NULL 1970-01-01 03:16:40 1970-01-01 03:16:40
|
||||
a1 0000-00-00 00:00:00
|
||||
a2 1970-01-01 03:16:40
|
||||
a3 1970-01-01 03:16:40
|
||||
a4 NULL
|
||||
a5 1970-01-01 03:16:40
|
||||
a6 1970-01-01 03:16:40
|
||||
b 1
|
||||
c1 0000-00-00 00:00:00
|
||||
c2 1970-01-01 03:16:40
|
||||
c3 1970-01-01 03:16:40
|
||||
c4 NULL
|
||||
c5 1970-01-01 03:16:40
|
||||
c6 1970-01-01 03:16:40
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 ( a TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE CURRENT_TIMESTAMP, b DATETIME DEFAULT NOW() );
|
||||
INSERT INTO t1 VALUES ();
|
||||
|
@ -1967,18 +1991,31 @@ SELECT * FROM t1;
|
|||
a b c
|
||||
2011-04-20 09:53:41.794613 2011-04-20 09:53:41.794613 2
|
||||
#
|
||||
# Test that ON UPDATE CURRENT_TIMESTAMP works after non-changing UPDATE.
|
||||
#
|
||||
# 2011-04-20 09:54:13 UTC
|
||||
SET TIMESTAMP = 1303293253.794613;
|
||||
UPDATE t1 SET c = 2, b = '2011-04-20 09:53:41.794613';
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 09:53:41.794613 2011-04-20 09:53:41.794613 2
|
||||
UPDATE t1 SET c = 3;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 09:54:13.794613 2011-04-20 09:54:13.794613 3
|
||||
#
|
||||
# Test of multiple-table UPDATE for ON UPDATE CURRENT_TIMESTAMP
|
||||
#
|
||||
# 2011-04-20 15:06:13 UTC
|
||||
SET TIMESTAMP = 1303311973.534231;
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 2;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 09:53:41.794613 2011-04-20 09:53:41.794613 2
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 3;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 15:06:13.534231 2011-04-20 15:06:13.534231 3
|
||||
2011-04-20 09:54:13.794613 2011-04-20 09:54:13.794613 3
|
||||
UPDATE t1 t11, t1 t12 SET t11.c = 2;
|
||||
SELECT * FROM t1;
|
||||
a b c
|
||||
2011-04-20 15:06:13.534231 2011-04-20 15:06:13.534231 2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of a multiple-table update where only one table is updated and
|
||||
|
@ -2953,13 +2990,13 @@ drop table t1;
|
|||
SET TIME_ZONE = "+03:00";
|
||||
# 1970-01-01 03:16:40
|
||||
SET TIMESTAMP = 1000.123456;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)) ENGINE = INNODB;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6));
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 ( a ) VALUES ( 1 );
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
|
@ -3009,9 +3046,9 @@ a INT,
|
|||
b INT,
|
||||
ts TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
PRIMARY KEY ( a, ts )
|
||||
) ENGINE = INNODB;
|
||||
);
|
||||
INSERT INTO t1( a, b, ts ) VALUES ( 1, 0, '2000-09-28 17:44:34' );
|
||||
CREATE TABLE t2 ( a INT ) ENGINE = INNODB;
|
||||
CREATE TABLE t2 ( a INT );
|
||||
INSERT INTO t2 VALUES ( 1 );
|
||||
UPDATE t1 STRAIGHT_JOIN t2
|
||||
SET t1.b = t1.b + 1
|
||||
|
@ -3040,8 +3077,19 @@ ALTER TABLE t1 ADD COLUMN c4 DATETIME(6) ON UPDATE NOW(6) AFTER c3;
|
|||
ALTER TABLE t1 ADD COLUMN c5 DATETIME(6) DEFAULT NOW(6) AFTER c4;
|
||||
ALTER TABLE t1 ADD COLUMN c6 DATETIME(6) DEFAULT NOW(6) ON UPDATE NOW(6) AFTER c5;
|
||||
SELECT * FROM t1;
|
||||
a1 a2 a3 a4 a5 a6 b c1 c2 c3 c4 c5 c6
|
||||
0000-00-00 00:00:00.000000 1970-01-01 03:16:40.000000 1970-01-01 03:16:40.000000 NULL 1970-01-01 03:16:40.000000 1970-01-01 03:16:40.000000 1 0000-00-00 00:00:00.000000 1970-01-01 03:16:40.000000 1970-01-01 03:16:40.000000 NULL 1970-01-01 03:16:40.000000 1970-01-01 03:16:40.000000
|
||||
a1 0000-00-00 00:00:00.000000
|
||||
a2 1970-01-01 03:16:40.000000
|
||||
a3 1970-01-01 03:16:40.000000
|
||||
a4 NULL
|
||||
a5 1970-01-01 03:16:40.000000
|
||||
a6 1970-01-01 03:16:40.000000
|
||||
b 1
|
||||
c1 0000-00-00 00:00:00.000000
|
||||
c2 1970-01-01 03:16:40.000000
|
||||
c3 1970-01-01 03:16:40.000000
|
||||
c4 NULL
|
||||
c5 1970-01-01 03:16:40.000000
|
||||
c6 1970-01-01 03:16:40.000000
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 ( a TIMESTAMP(6) NOT NULL DEFAULT NOW(6) ON UPDATE CURRENT_TIMESTAMP(6), b DATETIME(6) DEFAULT NOW(6) );
|
||||
INSERT INTO t1 VALUES ();
|
||||
|
|
3116
mysql-test/r/function_defaults_innodb.result
Normal file
3116
mysql-test/r/function_defaults_innodb.result
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1625,6 +1625,12 @@ Warnings:
|
|||
Warning 1300 Invalid utf8 character string: 'E043'
|
||||
Warning 1300 Invalid utf8 character string: 'E043'
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-6883 ST_WITHIN crashes server if (0,0) is matched to POLYGON((0 0))
|
||||
#
|
||||
select st_within(GeomFromText('Polygon((0 0))'), Point(0,0));
|
||||
st_within(GeomFromText('Polygon((0 0))'), Point(0,0))
|
||||
1
|
||||
End of 5.3 tests
|
||||
#
|
||||
# Bug#11908153: CRASH AND/OR VALGRIND ERRORS IN FIELD_BLOB::GET_KEY_IMAGE
|
||||
|
|
|
@ -2483,6 +2483,17 @@ test
|
|||
2
|
||||
SET sql_mode='';
|
||||
#
|
||||
# MDEV-6484: Assertion `tab->ref.use_count' failed on query with joins, constant table, multi-part key
|
||||
#
|
||||
CREATE TABLE t1 (i1 INT, c1 VARCHAR(1)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (6,'b');
|
||||
CREATE TABLE t2 (pk2 INT, i2 INT, c2 VARCHAR(1), PRIMARY KEY(pk2), KEY(pk2,i2)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,2,'s'),(2,4,'r'),(3,8,'m'),(4,4,'b'),(5,4,'x'),(6,7,'g'),(7,4,'p');
|
||||
SELECT i2 FROM t1 AS t1a STRAIGHT_JOIN ( t2 INNER JOIN t1 AS t1b ON (t1b.c1 = c2) ) ON (t1b.i1 = pk2 )
|
||||
WHERE t1a.c1 = c2 GROUP BY i2;
|
||||
i2
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug #58782
|
||||
# Missing rows with SELECT .. WHERE .. IN subquery
|
||||
# with full GROUP BY and no aggr
|
||||
|
|
|
@ -2129,10 +2129,11 @@ Warnings:
|
|||
Note 1003 select sum(ord(`test`.`t1`.`a1`)) AS `sum(ord(a1))` from `test`.`t1` where (`test`.`t1`.`a1` > 'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b`
|
||||
create table t4 as select distinct a1, a2, b, c from t1;
|
||||
alter table t4 add unique index idxt4 (a1, a2, b, c);
|
||||
# This is "superceded" by MDEV-7118, and Loose Index Scan is again an option:
|
||||
explain
|
||||
select a1, a2, b, min(c) from t4 group by a1, a2, b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 index NULL idxt4 163 NULL 64 Using index
|
||||
1 SIMPLE t4 range NULL idxt4 147 NULL 10 Using index for group-by
|
||||
select a1, a2, b, min(c) from t4 group by a1, a2, b;
|
||||
a1 a2 b min(c)
|
||||
a a a a111
|
||||
|
@ -2355,7 +2356,7 @@ CREATE TABLE t2 (a int, b int, c int, PRIMARY KEY (a,b,c));
|
|||
INSERT INTO t2 SELECT a,b,b FROM t1;
|
||||
explain SELECT MIN(c) FROM t2 WHERE b = 2 and a = 1 and c > 1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref PRIMARY PRIMARY 8 const,const 1 Using where; Using index
|
||||
1 SIMPLE t2 range PRIMARY PRIMARY 12 NULL 1 Using where; Using index for group-by
|
||||
SELECT MIN(c) FROM t2 WHERE b = 2 and a = 1 and c > 1 GROUP BY a;
|
||||
MIN(c)
|
||||
2
|
||||
|
@ -3686,3 +3687,43 @@ a b
|
|||
3 2
|
||||
3 3
|
||||
drop table t1;
|
||||
#
|
||||
# Start of 10.0 tests
|
||||
#
|
||||
#
|
||||
# MDEV-6991 GROUP_MIN_MAX optimization is erroneously applied in some cases
|
||||
#
|
||||
CREATE TABLE t1 (id INT NOT NULL, a VARCHAR(20)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1,'2001-01-01');
|
||||
INSERT INTO t1 VALUES (1,'2001-01-02');
|
||||
INSERT INTO t1 VALUES (1,'2001-01-03');
|
||||
INSERT INTO t1 VALUES (1,' 2001-01-04');
|
||||
INSERT INTO t1 VALUES (2,'2001-01-01');
|
||||
INSERT INTO t1 VALUES (2,'2001-01-02');
|
||||
INSERT INTO t1 VALUES (2,'2001-01-03');
|
||||
INSERT INTO t1 VALUES (2,' 2001-01-04');
|
||||
INSERT INTO t1 VALUES (3,'2001-01-01');
|
||||
INSERT INTO t1 VALUES (3,'2001-01-02');
|
||||
INSERT INTO t1 VALUES (3,'2001-01-03');
|
||||
INSERT INTO t1 VALUES (3,' 2001-01-04');
|
||||
INSERT INTO t1 VALUES (4,'2001-01-01');
|
||||
INSERT INTO t1 VALUES (4,'2001-01-02');
|
||||
INSERT INTO t1 VALUES (4,'2001-01-03');
|
||||
INSERT INTO t1 VALUES (4,' 2001-01-04');
|
||||
SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=DATE'2001-01-04' GROUP BY id;
|
||||
id MIN(a) MAX(a)
|
||||
1 2001-01-04 2001-01-04
|
||||
2 2001-01-04 2001-01-04
|
||||
3 2001-01-04 2001-01-04
|
||||
4 2001-01-04 2001-01-04
|
||||
ALTER TABLE t1 ADD KEY(id,a);
|
||||
SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=DATE'2001-01-04' GROUP BY id;
|
||||
id MIN(a) MAX(a)
|
||||
1 2001-01-04 2001-01-04
|
||||
2 2001-01-04 2001-01-04
|
||||
3 2001-01-04 2001-01-04
|
||||
4 2001-01-04 2001-01-04
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.0 tests
|
||||
#
|
||||
|
|
|
@ -174,7 +174,7 @@ F 17
|
|||
EXPLAIN SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 )
|
||||
GROUP BY c1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range k1 k1 5 NULL 2 Using where; Using index
|
||||
1 SIMPLE t1 range k1 k1 5 NULL 1 Using where; Using index for group-by
|
||||
SELECT c1, max(i2) FROM t1 WHERE (c1 = 'C' OR c1 = 'F' ) AND ( i2 = 17 )
|
||||
GROUP BY c1;
|
||||
c1 max(i2)
|
||||
|
|
|
@ -807,7 +807,7 @@ drop view a2, a1;
|
|||
drop table t_crashme;
|
||||
select table_schema,table_name, column_name from
|
||||
information_schema.columns
|
||||
where data_type = 'longtext';
|
||||
where data_type = 'longtext' and table_schema != 'performance_schema';
|
||||
table_schema table_name column_name
|
||||
information_schema ALL_PLUGINS PLUGIN_DESCRIPTION
|
||||
information_schema COLUMNS COLUMN_DEFAULT
|
||||
|
@ -826,14 +826,6 @@ information_schema SYSTEM_VARIABLES ENUM_VALUE_LIST
|
|||
information_schema TRIGGERS ACTION_CONDITION
|
||||
information_schema TRIGGERS ACTION_STATEMENT
|
||||
information_schema VIEWS VIEW_DEFINITION
|
||||
performance_schema events_statements_current SQL_TEXT
|
||||
performance_schema events_statements_current DIGEST_TEXT
|
||||
performance_schema events_statements_history SQL_TEXT
|
||||
performance_schema events_statements_history DIGEST_TEXT
|
||||
performance_schema events_statements_history_long SQL_TEXT
|
||||
performance_schema events_statements_history_long DIGEST_TEXT
|
||||
performance_schema events_statements_summary_by_digest DIGEST_TEXT
|
||||
performance_schema threads PROCESSLIST_INFO
|
||||
select table_name, column_name, data_type from information_schema.columns
|
||||
where data_type = 'datetime' and table_name not like 'innodb_%';
|
||||
table_name column_name data_type
|
||||
|
@ -1585,7 +1577,9 @@ show open tables where f1()=0;
|
|||
drop table t1;
|
||||
drop function f1;
|
||||
select * from information_schema.tables where 1=sleep(100000);
|
||||
Got one of the listed errors
|
||||
select * from information_schema.columns where 1=sleep(100000);
|
||||
Got one of the listed errors
|
||||
explain select count(*) from information_schema.tables;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE tables ALL NULL NULL NULL NULL NULL Skip_open_table; Scanned all databases
|
||||
|
|
|
@ -145,11 +145,47 @@ select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
|||
a b c filler a b
|
||||
set optimizer_switch='index_condition_pushdown=on';
|
||||
drop table t1,t2;
|
||||
set @@join_cache_level= @save_join_cache_level;
|
||||
set storage_engine=@save_storage_engine;
|
||||
set optimizer_switch=@innodb_mrr_cpk_tmp;
|
||||
drop table t0;
|
||||
#
|
||||
# MDEV-6878: Use of uninitialized saved_primary_key in Mrr_ordered_index_reader::resume_read()
|
||||
#
|
||||
create table t0(a int);
|
||||
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
create table t1 (
|
||||
pk varchar(32) character set utf8 primary key,
|
||||
kp1 char(32) not null,
|
||||
col1 varchar(32),
|
||||
key (kp1)
|
||||
) engine=innodb;
|
||||
insert into t1
|
||||
select
|
||||
concat('pk-', 1000 +A.a),
|
||||
concat('kp1-', 1000 +A.a),
|
||||
concat('val-', 1000 +A.a)
|
||||
from test.t0 A ;
|
||||
create table t2 as select kp1 as a from t1;
|
||||
set join_cache_level=8;
|
||||
set optimizer_switch='mrr=on,mrr_sort_keys=on';
|
||||
explain
|
||||
select * from t2 straight_join t1 force index(kp1) where t1.kp1=t2.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 10
|
||||
1 SIMPLE t1 ref kp1 kp1 32 test.t2.a 1 Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan
|
||||
select * from t2 straight_join t1 force index(kp1) where t1.kp1=t2.a;
|
||||
a pk kp1 col1
|
||||
kp1-1000 pk-1000 kp1-1000 val-1000
|
||||
kp1-1001 pk-1001 kp1-1001 val-1001
|
||||
kp1-1002 pk-1002 kp1-1002 val-1002
|
||||
kp1-1003 pk-1003 kp1-1003 val-1003
|
||||
kp1-1004 pk-1004 kp1-1004 val-1004
|
||||
kp1-1005 pk-1005 kp1-1005 val-1005
|
||||
kp1-1006 pk-1006 kp1-1006 val-1006
|
||||
kp1-1007 pk-1007 kp1-1007 val-1007
|
||||
kp1-1008 pk-1008 kp1-1008 val-1008
|
||||
kp1-1009 pk-1009 kp1-1009 val-1009
|
||||
drop table t0,t1,t2;
|
||||
#
|
||||
#
|
||||
# MDEV-3817: Wrong result with index_merge+index_merge_intersection, InnoDB table, join, AND and OR conditions
|
||||
#
|
||||
set @tmp_mdev3817=@@optimizer_switch;
|
||||
|
@ -194,3 +230,9 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
2 DERIVED t2 ALL NULL NULL NULL NULL #
|
||||
set join_cache_level= @tmp_mdev5037;
|
||||
drop table t0,t1,t2;
|
||||
#
|
||||
# This must be at the end:
|
||||
#
|
||||
set @@join_cache_level= @save_join_cache_level;
|
||||
set storage_engine=@save_storage_engine;
|
||||
set optimizer_switch=@innodb_mrr_cpk_tmp;
|
||||
|
|
|
@ -498,8 +498,8 @@ CountryLanguage.Percentage > 50 AND
|
|||
LENGTH(Language) < LENGTH(City.Name) - 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where
|
||||
1 SIMPLE City ALL NULL NULL NULL NULL 4079 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE CountryLanguage ALL NULL NULL NULL NULL 984 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE City ALL NULL NULL NULL NULL 4079 Using where; Using join buffer (flat, BNL join)
|
||||
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||
FROM City,Country,CountryLanguage
|
||||
WHERE City.Country=Country.Code AND
|
||||
|
@ -576,8 +576,8 @@ CountryLanguage.Percentage > 50 AND
|
|||
LENGTH(Language) < LENGTH(City.Name) - 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where
|
||||
1 SIMPLE City ALL NULL NULL NULL NULL 4079 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE CountryLanguage ALL NULL NULL NULL NULL 984 Using where; Using join buffer (incremental, BNL join)
|
||||
1 SIMPLE CountryLanguage ALL NULL NULL NULL NULL 984 Using where; Using join buffer (flat, BNL join)
|
||||
1 SIMPLE City ALL NULL NULL NULL NULL 4079 Using where; Using join buffer (incremental, BNL join)
|
||||
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||
FROM City,Country,CountryLanguage
|
||||
WHERE City.Country=Country.Code AND
|
||||
|
@ -654,8 +654,8 @@ CountryLanguage.Percentage > 50 AND
|
|||
LENGTH(Language) < LENGTH(City.Name) - 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where
|
||||
1 SIMPLE City hash_ALL NULL #hash#$hj 3 world.Country.Code 4079 Using where; Using join buffer (flat, BNLH join)
|
||||
1 SIMPLE CountryLanguage hash_ALL NULL #hash#$hj 3 world.Country.Code 984 Using where; Using join buffer (flat, BNLH join)
|
||||
1 SIMPLE City hash_ALL NULL #hash#$hj 3 world.Country.Code 4079 Using where; Using join buffer (flat, BNLH join)
|
||||
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||
FROM City,Country,CountryLanguage
|
||||
WHERE City.Country=Country.Code AND
|
||||
|
@ -732,8 +732,8 @@ CountryLanguage.Percentage > 50 AND
|
|||
LENGTH(Language) < LENGTH(City.Name) - 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where
|
||||
1 SIMPLE City hash_ALL NULL #hash#$hj 3 world.Country.Code 4079 Using where; Using join buffer (flat, BNLH join)
|
||||
1 SIMPLE CountryLanguage hash_ALL NULL #hash#$hj 3 world.Country.Code 984 Using where; Using join buffer (incremental, BNLH join)
|
||||
1 SIMPLE CountryLanguage hash_ALL NULL #hash#$hj 3 world.Country.Code 984 Using where; Using join buffer (flat, BNLH join)
|
||||
1 SIMPLE City hash_ALL NULL #hash#$hj 3 world.Country.Code 4079 Using where; Using join buffer (incremental, BNLH join)
|
||||
SELECT City.Name, Country.Name, CountryLanguage.Language
|
||||
FROM City,Country,CountryLanguage
|
||||
WHERE City.Country=Country.Code AND
|
||||
|
|
|
@ -2223,6 +2223,29 @@ Warnings:
|
|||
Note 1003 select `test`.`t1`.`i1` AS `i1`,`test`.`t2`.`i2` AS `i2`,`test`.`t3`.`i3` AS `i3`,`test`.`t3`.`d3` AS `d3` from `test`.`t1` left join (`test`.`t2` join `test`.`t3`) on(((`test`.`t2`.`i2` = `test`.`t1`.`i1`) and (`test`.`t3`.`i3` = `test`.`t1`.`i1`))) where ((`test`.`t3`.`d3` = 0) or isnull(`test`.`t3`.`d3`))
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# Bug mdev-6705: wrong on expression after constant row substitution
|
||||
# that triggers a simplification of WHERE condition
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (10,8);
|
||||
CREATE TABLE t2 (c int) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (8),(9);
|
||||
CREATE TABLE t3 (d int) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (3),(8);
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t1 INNER JOIN t2 ON c = b LEFT JOIN t3 ON d = a
|
||||
WHERE b IN (1,2,3) OR b = d;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select 10 AS `a`,8 AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t3`.`d` AS `d` from `test`.`t2` left join `test`.`t3` on((`test`.`t3`.`d` = 10)) where ((`test`.`t2`.`c` = 8) and (`test`.`t3`.`d` = 8))
|
||||
SELECT * FROM t1 INNER JOIN t2 ON c = b LEFT JOIN t3 ON d = a
|
||||
WHERE b IN (1,2,3) OR b = d;
|
||||
a b c d
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-6634: Wrong estimates for ref(const) and key IS NULL predicate
|
||||
#
|
||||
create table t1(a int);
|
||||
|
|
|
@ -2234,6 +2234,29 @@ Warnings:
|
|||
Note 1003 select `test`.`t1`.`i1` AS `i1`,`test`.`t2`.`i2` AS `i2`,`test`.`t3`.`i3` AS `i3`,`test`.`t3`.`d3` AS `d3` from `test`.`t1` left join (`test`.`t2` join `test`.`t3`) on(((`test`.`t2`.`i2` = `test`.`t1`.`i1`) and (`test`.`t3`.`i3` = `test`.`t1`.`i1`))) where ((`test`.`t3`.`d3` = 0) or isnull(`test`.`t3`.`d3`))
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# Bug mdev-6705: wrong on expression after constant row substitution
|
||||
# that triggers a simplification of WHERE condition
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (10,8);
|
||||
CREATE TABLE t2 (c int) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (8),(9);
|
||||
CREATE TABLE t3 (d int) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (3),(8);
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t1 INNER JOIN t2 ON c = b LEFT JOIN t3 ON d = a
|
||||
WHERE b IN (1,2,3) OR b = d;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
Warnings:
|
||||
Note 1003 select 10 AS `a`,8 AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t3`.`d` AS `d` from `test`.`t2` left join `test`.`t3` on((`test`.`t3`.`d` = 10)) where ((`test`.`t2`.`c` = 8) and (`test`.`t3`.`d` = 8))
|
||||
SELECT * FROM t1 INNER JOIN t2 ON c = b LEFT JOIN t3 ON d = a
|
||||
WHERE b IN (1,2,3) OR b = d;
|
||||
a b c d
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-6634: Wrong estimates for ref(const) and key IS NULL predicate
|
||||
#
|
||||
create table t1(a int);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue