From ed4ead3a980be1526f4bea58950b0127291cd598 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 18 Apr 2012 20:04:50 +0200 Subject: [PATCH 1/3] lp:982664 there are few broken clients that lie about their capabilities (for example, one of them sets client capabilities by copying server capabilities) We cannot fix them - let's tolerate them --- sql/sql_acl.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index f51de84d819..3eb7daab610 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -7654,14 +7654,16 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio, return packet_error; } - if (thd->client_capabilities & CLIENT_PLUGIN_AUTH) + if ((thd->client_capabilities & CLIENT_PLUGIN_AUTH) && + (client_plugin < (char *)net->read_pos + pkt_len)) { - if (client_plugin >= (char *)net->read_pos + pkt_len) - return packet_error; client_plugin= fix_plugin_ptr(client_plugin); } else { + /* Some clients lie. Sad, but true */ + thd->client_capabilities &= ~CLIENT_PLUGIN_AUTH; + if (thd->client_capabilities & CLIENT_SECURE_CONNECTION) client_plugin= native_password_plugin_name.str; else From feb4776ecf75c34059789a1d642bd778babec98c Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 25 Apr 2012 15:30:19 +0200 Subject: [PATCH 2/3] MDEV233 - Support Wix3.6 for MSI --- win/packaging/CMakeLists.txt | 1 + win/packaging/ca/CMakeLists.txt | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/win/packaging/CMakeLists.txt b/win/packaging/CMakeLists.txt index 795732e946b..0b5e2f98f16 100644 --- a/win/packaging/CMakeLists.txt +++ b/win/packaging/CMakeLists.txt @@ -24,6 +24,7 @@ FIND_PATH(WIX_DIR heat.exe "$ENV{ProgramFiles}/Windows Installer XML v3/bin" "$ENV{ProgramFiles}/Windows Installer XML v3.5/bin" "$ENV{ProgramFiles}/Windows Installer XML v3.6/bin" + "$ENV{WIX}/bin" ) SET(CPACK_WIX_PACKAGE_BASE_NAME "MariaDB") diff --git a/win/packaging/ca/CMakeLists.txt b/win/packaging/ca/CMakeLists.txt index 7dd30123587..940e9e3a7d1 100644 --- a/win/packaging/ca/CMakeLists.txt +++ b/win/packaging/ca/CMakeLists.txt @@ -22,28 +22,40 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) IF(CMAKE_SIZEOF_VOID_P EQUAL 8) SET(WIX_ARCH_SUFFIX "_x64") + SET(WIX36_ARCH_SUFFIX "x64") ELSE() SET(WIX_ARCH_SUFFIX) + SET(WIX36_ARCH_SUFFIX "x86") ENDIF() IF(MSVC_VERSION EQUAL 1400) SET(WIX35_MSVC_SUFFIX "_2005") ELSEIF(MSVC_VERSION EQUAL 1500) SET(WIX35_MSVC_SUFFIX "_2008") + SET(WIX36_MSVC_SUFFIX "VS2008") ELSEIF(MSVC_VERSION EQUAL 1600) SET(WIX35_MSVC_SUFFIX "_2010") + SET(WIX36_MSVC_SUFFIX "VS2010") ELSE() # When next VS is out, add the correct version here MESSAGE(FATAL_ERROR "Unknown VS version") ENDIF() +INCLUDE_DIRECTORIES(${WIX_DIR}/../SDK/${WIX36_MSVC_SUFFIX}/inc) FIND_LIBRARY(WIX_WCAUTIL_LIBRARY NAMES wcautil${WIX_ARCH_SUFFIX} wcautil${WIX35_MSVC_SUFFIX}${WIX_ARCH_SUFFIX} - HINTS ${WIX_DIR}/../SDK/lib) + wcautil + PATHS + ${WIX_DIR}/../SDK/lib + ${WIX_DIR}/../SDK/${WIX36_MSVC_SUFFIX}/lib/${WIX36_ARCH_SUFFIX}) FIND_LIBRARY(WIX_DUTIL_LIBRARY NAMES dutil${WIX_ARCH_SUFFIX} dutil${WIX35_MSVC_SUFFIX}${WIX_ARCH_SUFFIX} - PATHS ${WIX_DIR}/../SDK/lib) + dutil + PATHS + ${WIX_DIR}/../SDK/lib + ${WIX_DIR}/../SDK/${WIX36_MSVC_SUFFIX}/lib/${WIX36_ARCH_SUFFIX} + ) ADD_VERSION_INFO(wixca SHARED WIXCA_SOURCES) ADD_LIBRARY(wixca SHARED EXCLUDE_FROM_ALL ${WIXCA_SOURCES}) From 26fcc55017d0f199c06688e09b21b7b00027171d Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Wed, 2 May 2012 16:53:02 +0200 Subject: [PATCH 3/3] LP993103: Wrong result with LAST_DAY('0000-00-00 00:00:00')IS NULL in WHERE condition Fix is to set maybe_null flag for Item_func_last_day. --- mysql-test/r/type_date.result | 6 ++++++ mysql-test/t/type_date.test | 7 +++++++ sql/item_timefunc.h | 5 +++++ 3 files changed, 18 insertions(+) diff --git a/mysql-test/r/type_date.result b/mysql-test/r/type_date.result index dab1d78ba27..e0a75174f71 100644 --- a/mysql-test/r/type_date.result +++ b/mysql-test/r/type_date.result @@ -21,6 +21,12 @@ name cdate note name1 1998-01-01 note01 name2 1998-01-01 note01 drop table t1,t2; +CREATE TABLE t1(a INT); +INSERT INTO t1 VALUES(1); +SELECT * FROM t1 WHERE LAST_DAY('0000-00-00 00:00:00') IS NULL; +a +1 +DROP TABLE t1; CREATE TABLE t1 ( datum DATE ); INSERT INTO t1 VALUES ( "2000-1-1" ); INSERT INTO t1 VALUES ( "2000-1-2" ); diff --git a/mysql-test/t/type_date.test b/mysql-test/t/type_date.test index 899f912a5a5..a3fe1eaf73c 100644 --- a/mysql-test/t/type_date.test +++ b/mysql-test/t/type_date.test @@ -26,6 +26,13 @@ INSERT INTO t2 VALUES ('1998-01-02','note02'); select name,t1.cdate,note from t1,t2 where t1.cdate=t2.cdate and t1.cdate='1998-01-01'; drop table t1,t2; +# MariaDB lp:993103. WHERE LAST_DAY(zero_date) IS NULL does not evaluate to TRUE. + +CREATE TABLE t1(a INT); +INSERT INTO t1 VALUES(1); +SELECT * FROM t1 WHERE LAST_DAY('0000-00-00 00:00:00') IS NULL; +DROP TABLE t1; + # # Date and BETWEEN # diff --git a/sql/item_timefunc.h b/sql/item_timefunc.h index 963e28b80e8..9eff2deba48 100644 --- a/sql/item_timefunc.h +++ b/sql/item_timefunc.h @@ -1169,6 +1169,11 @@ class Item_func_last_day :public Item_date { public: Item_func_last_day(Item *a) :Item_date(a) {} + void fix_length_and_dec() + { + Item_date::fix_length_and_dec(); + maybe_null= 1; + } const char *func_name() const { return "last_day"; } bool get_date(MYSQL_TIME *res, uint fuzzy_date); };