Hello community,

here is the log from the commit of package mariadb-connector-odbc for 
openSUSE:Factory checked in at 2020-09-25 16:31:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mariadb-connector-odbc (Old)
 and      /work/SRC/openSUSE:Factory/.mariadb-connector-odbc.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mariadb-connector-odbc"

Fri Sep 25 16:31:06 2020 rev:10 rq:833852 version:3.1.9

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/mariadb-connector-odbc/mariadb-connector-odbc.changes
    2020-04-14 16:24:14.015740375 +0200
+++ 
/work/SRC/openSUSE:Factory/.mariadb-connector-odbc.new.4249/mariadb-connector-odbc.changes
  2020-09-25 16:31:18.911878713 +0200
@@ -1,0 +2,19 @@
+Fri Sep 11 17:35:40 UTC 2020 - Adam Majer <[email protected]>
+
+** LOCATION CHANGE ** - the ODBC driver location has been changed to
+/usr/lib{,64}/mariadb/libmaodbc.so  Adjust your paths accordingly.
+
+- New upstream version 3.1.9. Fixes since 3.1.7 include,
+  * ODBC-214 - Mediumint(INT24) is always empty
+  * ODBC-284 - properly handle curly bracket escape in connection string
+  * ODBC-283 - Add support for passphrase protected private keys (TlsKeyPwd=)
+  * ODBC-280 - fixes multi-threaded issue when multiple connection are
+    established simultaneously from different threads.
+  * ODBC-279 - SQL_C_TIME binding type not working
+- missing_libs.patch: dropped
+- added patches forwarded upstream: fix_macros.patch, 
implicit_decleration.patch, wrong_types.patch
+- nosoname.patch: refreshed
+- DSN_names.patch: refreshed. Added new option,
+  TlsKeyPwd =
+
+-------------------------------------------------------------------

Old:
----
  mariadb-connector-odbc-3.1.7-ga-src.tar.gz
  mariadb-connector-odbc-3.1.7-ga-src.tar.gz.asc
  missing_libs.patch

New:
----
  fix_macros.patch
  implicit_decleration.patch
  mariadb-connector-odbc-3.1.9-ga-src.tar.gz
  mariadb-connector-odbc-3.1.9-ga-src.tar.gz.asc
  wrong_types.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mariadb-connector-odbc.spec ++++++
--- /var/tmp/diff_new_pack.eNuWqj/_old  2020-09-25 16:31:19.575879302 +0200
+++ /var/tmp/diff_new_pack.eNuWqj/_new  2020-09-25 16:31:19.579879305 +0200
@@ -17,12 +17,12 @@
 
 
 Name:           mariadb-connector-odbc
-Version:        3.1.7
+Version:        3.1.9
 Release:        0
 Summary:        MariaDB ODBC Connector
 License:        LGPL-2.1-or-later
 Group:          Productivity/Databases/Tools
-Url:            https://downloads.mariadb.org/connector-odbc/
+URL:            https://downloads.mariadb.org/connector-odbc/
 Source:         
https://downloads.mariadb.org/interstitial/connector-odbc-%{version}/mariadb-connector-odbc-%{version}-ga-src.tar.gz
 # signature is from copy/pasted stuff found on the download page, not actual 
file
 Source1:        mariadb-connector-odbc-%{version}-ga-src.tar.gz.asc
@@ -31,8 +31,10 @@
 Source4:        mariadb-connector-odbc-rpmlintrc
 Patch1:         mysql_header_path.patch
 Patch6:         DSN_names.patch
-Patch7:         missing_libs.patch
 Patch8:         nosoname.patch
+Patch9:         fix_macros.patch
+Patch10:        implicit_decleration.patch
+Patch11:        wrong_types.patch
 BuildRequires:  cmake > 3.5.0
 BuildRequires:  gcc-c++
 # This is actually MariaDB -devel package(s)
@@ -54,21 +56,25 @@
   -DWITH_OPENSSL=ON \
   -DMARIADB_LINK_DYNAMIC=1 \
   -DINSTALL_DOC_DIR=%{_docdir}/%{name} \
+  -DINSTALL_LAYOUT=RPM \
   -DINSTALL_LICENSE_DIR=%{_licensedir}/%{name}
-%make_jobs
+%cmake_build
 
 %install
 %cmake_install
-install -Dpm 0644 %{SOURCE2} %{SOURCE3} \
-  %{buildroot}%{_docdir}/%{name}
+rm %{buildroot}/usr/docs/COPYING
+rm %{buildroot}/usr/docs/README
+rmdir %{buildroot}/usr/docs
+install -Dpm 0644 -t %{buildroot}%{_docdir}/%{name} %{SOURCE2} %{SOURCE3}
 
 %post   -p /sbin/ldconfig
 %postun -p /sbin/ldconfig
 
 %files
 %dir %{_docdir}/%{name}
+%dir %{_libdir}/mariadb
 %license COPYING
-%{_libdir}/libmaodbc.so
+%{_libdir}/mariadb/libmaodbc.so
 %{_docdir}/%{name}/README
 %{_docdir}/%{name}/sample_odbc.ini
 

++++++ DSN_names.patch ++++++
--- /var/tmp/diff_new_pack.eNuWqj/_old  2020-09-25 16:31:19.607879330 +0200
+++ /var/tmp/diff_new_pack.eNuWqj/_new  2020-09-25 16:31:19.607879330 +0200
@@ -8,23 +8,28 @@
 The sample DSN config file is manually maintained based on
 these options.
 
-Index: mariadb-connector-odbc-3.1.6-ga-src/ma_dsn.c
+Index: mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c
 ===================================================================
---- mariadb-connector-odbc-3.1.6-ga-src.orig/ma_dsn.c
-+++ mariadb-connector-odbc-3.1.6-ga-src/ma_dsn.c
-@@ -33,53 +33,53 @@
+--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_dsn.c
++++ mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c
+@@ -33,54 +33,54 @@
  
  MADB_DsnKey DsnKeys[]=
  {
 -  {"DSN",            offsetof(MADB_Dsn, DSNName),           DSN_TYPE_STRING, 
0, 0}, /* 0 */
 -  {"DESCRIPTION",    offsetof(MADB_Dsn, Description),       DSN_TYPE_STRING, 
0, 0},
 -  {"DRIVER",         offsetof(MADB_Dsn, Driver),            DSN_TYPE_STRING, 
0, 0},
--  /* OPTIONS should go above all DSN_TYPE_OPTION. They are not saved in DSN 
separately, and then DSN is read, corresponding
--     properties are filled from OPTIONS. Also putting its alias here - it 
should not appear on Windows(unless somebody edits
--     registry manually), but on *nix we can expect everything. Array index 
used in some places to decide if the key is OPTIONS */
++    {"DSN",            offsetof(MADB_Dsn, DSNName),           
DSN_TYPE_STRING, 0, 0}, /* 0 */
++    {"DESCRIPTION",    offsetof(MADB_Dsn, Description),       
DSN_TYPE_STRING, 0, 0},
++    {"DRIVER",         offsetof(MADB_Dsn, Driver),            
DSN_TYPE_STRING, 0, 0},
+   /* OPTIONS should go above all DSN_TYPE_OPTION. They are not saved in DSN 
separately, and then DSN is read, corresponding
+      properties are filled from OPTIONS. Also putting its alias here - it 
should not appear on Windows(unless somebody edits
+      registry manually), but on *nix we can expect everything. Array index 
used in some places to decide if the key is OPTIONS */
 -  {"OPTIONS",        offsetof(MADB_Dsn, Options),           DSN_TYPE_INT,    
0, 0}, /* DSNKEY_OPTIONS_INDEX */
 -  {"OPTION",         DSNKEY_OPTIONS_INDEX,                  DSN_TYPE_INT,    
0, 1}, /* DSNKEY_OPTION_INDEX  */
--
++    {"OPTIONS",        offsetof(MADB_Dsn, Options),           DSN_TYPE_INT,   
 0, 0}, /* DSNKEY_OPTIONS_INDEX */
++    {"OPTION",         DSNKEY_OPTIONS_INDEX,                  DSN_TYPE_INT,   
 0, 1}, /* DSNKEY_OPTION_INDEX  */
+ 
 -  {"NamedPipe",      offsetof(MADB_Dsn, IsNamedPipe),       DSN_TYPE_OPTION, 
MADB_OPT_FLAG_NAMED_PIPE, 0}, /* MADB_DSNKEY_NAMEDPIPE_INDEX */
 -  {"TCPIP",          offsetof(MADB_Dsn, IsTcpIp),           DSN_TYPE_BOOL,   
0, 0}, /* DSNKEY_TCPIP_INDEX */
 -  {"SERVER",         offsetof(MADB_Dsn, ServerName),        DSN_TYPE_STRING, 
0, 0}, /* DSNKEY_SERVER_INDEX     */
@@ -55,16 +60,15 @@
 -  {"USE_MYCNF",      offsetof(MADB_Dsn, ReadMycnf),         DSN_TYPE_OPTION, 
MADB_OPT_FLAG_USE_CNF, 0},
 -  {"TLSVERSION",     offsetof(MADB_Dsn, TlsVersion),        
DSN_TYPE_CBOXGROUP, 0, 0},
 -  {"FORCETLS",       offsetof(MADB_Dsn, ForceTls),          DSN_TYPE_BOOL,   
0, 0},
--  {"SERVERKEY",      offsetof(MADB_Dsn, ServerKey),         DSN_TYPE_STRING,  
 0, 0},
-+    {"DSN",            offsetof(MADB_Dsn, DSNName),           
DSN_TYPE_STRING, 0, 0}, /* 0 */
-+    {"DESCRIPTION",    offsetof(MADB_Dsn, Description),       
DSN_TYPE_STRING, 0, 0},
-+    {"DRIVER",         offsetof(MADB_Dsn, Driver),            
DSN_TYPE_STRING, 0, 0},
-+    /* OPTIONS should go above all DSN_TYPE_OPTION. They are not saved in DSN 
separately, and then DSN is read, corresponding
-+       properties are filled from OPTIONS. Also putting its alias here - it 
should not appear on Windows(unless somebody edits
-+       registry manually), but on *nix we can expect everything. Array index 
used in some places to decide if the key is OPTIONS */
-+    {"OPTIONS",        offsetof(MADB_Dsn, Options),           DSN_TYPE_INT,   
 0, 0}, /* DSNKEY_OPTIONS_INDEX */
-+    {"OPTION",         DSNKEY_OPTIONS_INDEX,                  DSN_TYPE_INT,   
 0, 1}, /* DSNKEY_OPTION_INDEX  */
-+  
+-  {"SERVERKEY",      offsetof(MADB_Dsn, ServerKey),         DSN_TYPE_STRING, 
0, 0},
+-  {"TLSKEYPWD",      offsetof(MADB_Dsn, TlsKeyPwd),         DSN_TYPE_STRING, 
0, 0},
+-  /* Aliases. Here offset is index of aliased key */
+-  {"SERVERNAME",     DSNKEY_SERVER_INDEX,                   DSN_TYPE_STRING, 
0, 1},
+-  {"USER",           DSNKEY_UID_INDEX,                      DSN_TYPE_STRING, 
0, 1},
+-  {"PASSWORD",       DSNKEY_PWD_INDEX,                      DSN_TYPE_STRING, 
0, 1},
+-  {"DB",             DSNKEY_DATABASE_INDEX,                 DSN_TYPE_COMBO,  
0, 1},
+-  {"SSLFP",          DSNKEY_FP_INDEX,                       DSN_TYPE_STRING, 
0, 1},
+-  {"SSLFPLIST",      DSNKEY_FPLIST_INDEX,                   DSN_TYPE_STRING, 
0, 1},
 +    {"NamedPipe",      offsetof(MADB_Dsn, IsNamedPipe),       
DSN_TYPE_OPTION, MADB_OPT_FLAG_NAMED_PIPE, 0}, /* MADB_DSNKEY_NAMEDPIPE_INDEX */
 +    {"TCPIP",          offsetof(MADB_Dsn, IsTcpIp),           DSN_TYPE_BOOL,  
 0, 0}, /* DSNKEY_TCPIP_INDEX */
 +    {"SERVER",         offsetof(MADB_Dsn, ServerName),        
DSN_TYPE_STRING, 0, 0}, /* DSNKEY_SERVER_INDEX     */
@@ -86,8 +90,8 @@
 +    {"SSLCAPATH",      offsetof(MADB_Dsn, SslCaPath),         
DSN_TYPE_STRING, 0, 0},
 +    {"SSLCIPHER",      offsetof(MADB_Dsn, SslCipher),         
DSN_TYPE_STRING, 0, 0},
 +    {"SSLVERIFY",      offsetof(MADB_Dsn, SslVerify),         DSN_TYPE_BOOL,  
 0, 0},
-+   {"TLSPEERFP",      offsetof(MADB_Dsn, TlsPeerFp),         DSN_TYPE_STRING, 
0, 0},
-+   {"TLSPEERFPLIST",  offsetof(MADB_Dsn, TlsPeerFpList),     DSN_TYPE_STRING, 
0, 0},
++    {"TLSPEERFP",      offsetof(MADB_Dsn, TlsPeerFp),         
DSN_TYPE_STRING, 0, 0},
++    {"TLSPEERFPLIST",  offsetof(MADB_Dsn, TlsPeerFpList),     
DSN_TYPE_STRING, 0, 0},
 +    {"SSLCRL",         offsetof(MADB_Dsn, SslCrl),            
DSN_TYPE_STRING, 0, 0},
 +    {"SSLCRLPATH",     offsetof(MADB_Dsn, SslCrlPath),        
DSN_TYPE_STRING, 0, 0},
 +    {"SOCKET",         offsetof(MADB_Dsn, Socket),            
DSN_TYPE_STRING, 0, 0},
@@ -95,14 +99,9 @@
 +    {"USE_MYCNF",      offsetof(MADB_Dsn, ReadMycnf),         
DSN_TYPE_OPTION, MADB_OPT_FLAG_USE_CNF, 0},
 +    {"TLSVERSION",     offsetof(MADB_Dsn, TlsVersion),        
DSN_TYPE_CBOXGROUP, 0, 0},
 +    {"FORCETLS",       offsetof(MADB_Dsn, ForceTls),          DSN_TYPE_BOOL,  
 0, 0},
-+   {"SERVERKEY",      offsetof(MADB_Dsn, ServerKey),         DSN_TYPE_STRING, 
  0, 0},
-   /* Aliases. Here offset is index of aliased key */
--  {"SERVERNAME",     DSNKEY_SERVER_INDEX,                   DSN_TYPE_STRING, 
0, 1},
--  {"USER",           DSNKEY_UID_INDEX,                      DSN_TYPE_STRING, 
0, 1},
--  {"PASSWORD",       DSNKEY_PWD_INDEX,                      DSN_TYPE_STRING, 
0, 1},
--  {"DB",             DSNKEY_DATABASE_INDEX,                 DSN_TYPE_COMBO,  
0, 1},
--  {"SSLFP",          DSNKEY_FP_INDEX,                       DSN_TYPE_STRING, 
0, 1},
--  {"SSLFPLIST",      DSNKEY_FPLIST_INDEX,                   DSN_TYPE_STRING, 
0, 1},
++    {"SERVERKEY",      offsetof(MADB_Dsn, ServerKey),         
DSN_TYPE_STRING, 0, 0},
++    {"TLSKEYPWD",      offsetof(MADB_Dsn, TlsKeyPwd),         
DSN_TYPE_STRING, 0, 0},
++    /* Aliases. Here offset is index of aliased key */
 +    {"SERVERNAME",     DSNKEY_SERVER_INDEX,                   
DSN_TYPE_STRING, 0, 1},
 +    {"USER",           DSNKEY_UID_INDEX,                      
DSN_TYPE_STRING, 0, 1},
 +    {"PASSWORD",       DSNKEY_PWD_INDEX,                      
DSN_TYPE_STRING, 0, 1},

++++++ fix_macros.patch ++++++
Fixing macro issues,

/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_helper.h:97:3:
 warning: macro expands to multiple statements [-Wmultistatement-macros]
   97 |   free((a));\
      |   ^~~~
/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c:162:5: 
note: in expansion of macro 'MADB_FREE'
  162 |     MADB_FREE(Dsn);
      |     ^~~~~~~~~
/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c:161:3: 
note: some parts of macro expansion are not guarded by this 'if' clause
  161 |   if (Dsn->FreeMe)
      |   ^~


/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_helper.h:97:3:
 warning: macro expands to multiple statements [-Wmultistatement-macros]
   97 |   free((a));\
      |   ^~~~
/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_string.c:387:5:
 note: in expansion of macro 'MADB_FREE'
  387 |     MADB_FREE(StmtStr);
      |     ^~~~~~~~~
/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_string.c:386:3:
 note: some parts of macro expansion are not guarded by this 'if' clause
  386 |   if (StmtStr)
      |   ^~



/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_error.h:163:3:
 warning: macro expands to multiple statements [-Wmultistatement-macros]
  163 |   strcpy_s((a)->SqlState, SQL_SQLSTATE_SIZE+1, 
MADB_ErrorList[MADB_ERR_00000].SqlState); \
      |   ^~~~~~~~
/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_posix.c:256:5:
 note: in expansion of macro 'MADB_CLEAR_ERROR'
  256 |     MADB_CLEAR_ERROR(Error);
      |     ^~~~~~~~~~~~~~~~
/home/abuild/rpmbuild/BUILD/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_posix.c:255:3:
 note: some parts of macro expansion are not guarded by this 'if' clause
  255 |   if (Error)
      |   ^~





Index: mariadb-connector-odbc-3.1.9-ga-src/ma_error.h
===================================================================
--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_error.h
+++ mariadb-connector-odbc-3.1.9-ga-src/ma_error.h
@@ -159,12 +159,13 @@ SQLRETURN MADB_GetDiagField(SQLSMALLINT
                             DiagInfoPtr, SQLSMALLINT BufferLength,
                             SQLSMALLINT *StringLengthPtr, my_bool isWChar);
 
-#define MADB_CLEAR_ERROR(a) \
+#define MADB_CLEAR_ERROR(a) do { \
   strcpy_s((a)->SqlState, SQL_SQLSTATE_SIZE+1, 
MADB_ErrorList[MADB_ERR_00000].SqlState); \
   (a)->SqlErrorMsg[(a)->PrefixLen]= 0; \
   (a)->NativeError= 0;\
   (a)->ReturnValue= SQL_SUCCESS;\
-  (a)->ErrorNum= 0;
+  (a)->ErrorNum= 0; \
+} while (0)
 
 #define MADB_CLEAR_HANDLE_ERROR(handle_type, handle) \
   switch (handle_type) { \
Index: mariadb-connector-odbc-3.1.9-ga-src/ma_helper.h
===================================================================
--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_helper.h
+++ mariadb-connector-odbc-3.1.9-ga-src/ma_helper.h
@@ -93,9 +93,11 @@ extern my_bool DummyError;
 
 #define BUFFER_CHAR_LEN(blen,wchar) (wchar) ? (blen) / sizeof(SQLWCHAR) : 
(blen)
 
-#define MADB_FREE(a) \
+#define MADB_FREE(a) do { \
   free((a));\
-  (a)= NULL;
+  (a)= NULL; \
+} while(0)
+
 #define MADB_ALLOC(a) malloc((a))
 #define MADB_CALLOC(a) calloc((a) > 0 ? (a) : 1, sizeof(char))
 #define MADB_REALLOC(a,b) realloc((a),(b))
++++++ implicit_decleration.patch ++++++
Index: mariadb-connector-odbc-3.1.9-ga-src/ma_common.c
===================================================================
--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_common.c
+++ mariadb-connector-odbc-3.1.9-ga-src/ma_common.c
@@ -21,6 +21,7 @@
  * Moved to avoid redundant dependencies */
 
 #include <ma_odbc.h>
+#include <wctype.h>
 
 static unsigned int ValidChar(const char *start, const char *end)
 {
Index: mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c
===================================================================
--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_dsn.c
+++ mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c
@@ -16,6 +16,7 @@
    or write to the Free Software Foundation, Inc., 
    51 Franklin St., Fifth Floor, Boston, MA 02110, USA
 
*************************************************************************************/
+#define _GNU_SOURCE
 #include <ma_odbc.h>
 
 
Index: mariadb-connector-odbc-3.1.9-ga-src/ma_debug.c
===================================================================
--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_debug.c
+++ mariadb-connector-odbc-3.1.9-ga-src/ma_debug.c
@@ -17,6 +17,7 @@
    51 Franklin St., Fifth Floor, Boston, MA 02110, USA
 
*************************************************************************************/
 #include <ma_odbc.h>
+#include <wchar.h>
 
 #ifdef MAODBC_DEBUG
 extern char LogFile[];
++++++ mariadb-connector-odbc-3.1.7-ga-src.tar.gz -> 
mariadb-connector-odbc-3.1.9-ga-src.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/CMakeLists.txt 
new/mariadb-connector-odbc-3.1.9-ga-src/CMakeLists.txt
--- old/mariadb-connector-odbc-3.1.7-ga-src/CMakeLists.txt      2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/CMakeLists.txt      2020-06-30 
19:43:44.000000000 +0200
@@ -22,10 +22,10 @@
 
 SET(MARIADB_ODBC_VERSION_MAJOR 3)
 SET(MARIADB_ODBC_VERSION_MINOR 1)
-SET(MARIADB_ODBC_VERSION_PATCH 7)
+SET(MARIADB_ODBC_VERSION_PATCH 9)
 SET(MARIADB_ODBC_VERSION_QUALITY "ga")
 
-SET(MARIADB_ODBC_VERSION "03.01.0007")
+SET(MARIADB_ODBC_VERSION "03.01.0009")
 
 SET(MARIADB_DEFAULT_PLUGINS_SUBDIR "plugin")
 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/ma_odbc_version.h.in
@@ -100,7 +100,7 @@
   ENDIF()
   MESSAGE(STATUS "Libraries installation dir: ${INSTALL_LIB_SUFFIX}")
   SET(INSTALL_PLUGINDIR "${INSTALL_LIB_SUFFIX}/mariadb/plugin")
-  MESSAGE(STATUS "Autentication Plugins installation dir: 
${INSTALL_PLUGINDIR}")
+  MESSAGE(STATUS "Authentication Plugins installation dir: 
${INSTALL_PLUGINDIR}")
 ENDIF()
 
 IF(WIN32 OR WITH_OPENSSL OR "${WITH_SSL}" STREQUAL  "OPENSSL")
@@ -130,6 +130,22 @@
   MESSAGE(STATUS "Configuring to build without SSL support")
 ENDIF()
 
+IF(APPLE)
+  SET(CMAKE_SKIP_BUILD_RPATH  FALSE)
+  SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+  SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
+  OPTION(WITH_IODBC "Build with iOdbc" ON)
+  CMAKE_POLICY(SET CMP0042 NEW)
+  CMAKE_POLICY(SET CMP0068 NEW)
+  set(CMAKE_INSTALL_RPATH "")
+  SET(CMAKE_INSTALL_NAME_DIR "")
+  SET(CMAKE_MACOSX_RPATH ON)
+ELSE()
+  OPTION(WITH_IODBC "Build with iOdbc" OFF)
+ENDIF()
+
+ADD_OPTION(WITH_UNIT_TESTS "build test suite" ON)
+
 IF(EXISTS ${CMAKE_SOURCE_DIR}/libmariadb)
   IF(GIT_BUILD_SRCPKG)
     # We don't want conn/c (wrong) src pkg to be built.
@@ -138,8 +154,14 @@
   ENDIF()
   MESSAGE(STATUS "Running C/C cmake scripts")
   INCLUDE(${CMAKE_SOURCE_DIR}/cmake/connector_c.cmake)
+
+  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} 
${CMAKE_SOURCE_DIR}/libmariadb/include)
+  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} 
${CMAKE_BINARY_DIR}/libmariadb/include)
 ELSE()
   SET(USE_SYSTEM_INSTALLED_LIB TRUE)
+  # Adding mariadb subdirs of standard include locations
+  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} "/usr/local/include/mariadb")
+  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} "/usr/include/mariadb")
   MESSAGE(STATUS "There is no Connector/C sub-project folder, linking against 
libmariadb installed on the system")
 ENDIF()
 
@@ -148,12 +170,6 @@
   ADD_OPTION(WITH_SIGNCODE "Digitally sign files" OFF)
 ENDIF()
 
-IF(APPLE)
-  OPTION(WITH_IODBC "Build with iOdbc" ON)
-ELSE()
-  OPTION(WITH_IODBC "Build with iOdbc" OFF)
-ENDIF()
-#ADD_OPTION(WITH_UNIT_TESTS "build test suite" ON)
 #ADD_OPTION(WITH_SSL "Enables use of TLS/SSL library" ON)
 
 IF(WITH_SIGNCODE)
@@ -171,9 +187,6 @@
 INCLUDE(${CMAKE_SOURCE_DIR}/cmake/SearchLibrary.cmake)
 INCLUDE(${CMAKE_SOURCE_DIR}/cmake/SetValueMacro.cmake)
 
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/libmariadb/include)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}/libmariadb/include)
-
 IF(WIN32)
   INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/dsn)
   SET(ODBC_LIBS odbc32)
@@ -203,7 +216,7 @@
                         #  SET(DSN_DIALOG_FILES ${DSN_DIALOG_FILES}
                         #  ma_platform_win32.c)
 
-  SET(PLATFORM_DEPENDENCIES ws2_32 Shlwapi)
+                       SET(PLATFORM_DEPENDENCIES ws2_32 Shlwapi Pathcch)
   IF (MSVC)
     MESSAGE(STATUS "MSVC_VERSION= ${MSVC_VERSION}") 
     IF (NOT(MSVC_VERSION LESS 1900))
@@ -249,7 +262,6 @@
 
 SET(CPACK_PACKAGE_VERSION 
${MARIADB_ODBC_VERSION_MAJOR}.${MARIADB_ODBC_VERSION_MINOR}.${MARIADB_ODBC_VERSION_PATCH})
 
-SET(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
 SET(CPACK_COMPONENTS_ALL ClientPlugins ODBCLibs Documentation)
 #SET(CPACK_COMPONENTS_ALL ODBCLibs Documentation)
 SET(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)
@@ -272,14 +284,12 @@
   ADD_DEFINITIONS(-DSQLCOLATTRIB_SQLLEN_PTR)
 ENDIF()
 
-# This is interim, we port ascii version to Linux first
 IF(WIN32)
   SET(UNICODE "W")
 ELSE()
   IF (DIRECT_LINK_TESTS)
     ADD_DEFINITIONS(-DHAVE_UNICODE)
   ENDIF()
-
 ENDIF()
 
 SET(LIBRARY_NAME "maodbc")
@@ -305,13 +315,19 @@
   ADD_LIBRARY(${LIBRARY_NAME} SHARED ${MARIADB_ODBC_SOURCES} maodbcu.rc)
   
   IF(APPLE)
-    SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-Wl")
+    SET(MAODBC_INSTALL_RPATH "${ODBC_LIB_DIR}" "@loader_path" 
"/usr/local/opt/libiodbc" "/usr/local/iODBC/lib" 
"/usr/local/opt/[email protected]/lib" "/usr/local/opt/libressl/lib")
+    SET_TARGET_PROPERTIES(${LIBRARY_NAME}
+                          PROPERTIES LINK_FLAGS "-Wl"
+                                     INSTALL_RPATH_USE_LINK_PATH 0
+                                     BUILD_WITH_INSTALL_RPATH 1
+                                     INSTALL_RPATH "${MAODBC_INSTALL_RPATH}")
   ELSE()
     SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES LINK_FLAGS 
"-Wl,--version-script=${CMAKE_SOURCE_DIR}/maodbc.def")
   ENDIF()
 ENDIF()
 
 SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES LANGUAGE C)
+MESSAGE(STATUS "All linked targets/external dependencies: 
${MARIADB_CLIENT_TARGET_NAME} ${ODBC_INSTLIBS} ${PLATFORM_DEPENDENCIES}")
 TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${MARIADB_CLIENT_TARGET_NAME} 
${ODBC_INSTLIBS} ${PLATFORM_DEPENDENCIES})
 
 # Currently on Windows only
@@ -332,8 +348,13 @@
 
   ADD_EXECUTABLE(dsn_test  dsn_test.c)
   TARGET_LINK_LIBRARIES(dsn_test ${MARIADB_LIB})
+ELSEIF(APPLE)
+  ADD_CUSTOM_COMMAND(TARGET maodbc POST_BUILD
+    COMMAND ${CMAKE_SOURCE_DIR}/osxpostbuild.sh ARGS 
$<TARGET_FILE:${LIBRARY_NAME}>
+  )
 ENDIF()
 
+INCLUDE("${CMAKE_SOURCE_DIR}/cmake/install.cmake")
 
 SET(CPACK_PACKAGE_NAME "mariadb-connector-odbc")
 IF(WIN32)
@@ -346,69 +367,71 @@
     ADD_SUBDIRECTORY(osxinstall)
   ENDIF()
   INSTALL(TARGETS
-          maodbc
-          LIBRARY DESTINATION ./${INSTALL_LIB_SUFFIX}
+          ${LIBRARY_NAME}
+          LIBRARY DESTINATION ${INSTALL_LIBDIR}
           COMPONENT ODBCLibs)
 
-  IF(NOT DEFINED INSTALL_DOC_DIR)
-    SET(INSTALL_DOC_DIR "./share/doc/${CPACK_PACKAGE_NAME}/" CACHE STRING 
"Directory, where to install documentation(README)")
-  ENDIF()
-
-  IF(NOT DEFINED INSTALL_LICENSE_DIR)
-    SET(INSTALL_LICENSE_DIR "./share/doc/${CPACK_PACKAGE_NAME}/" CACHE STRING 
"Directory, where to install license file")   
-  ENDIF()
-  MESSAGE(STATUS "Documetnation installed to ${INSTALL_DOC_DIR}")
-  MESSAGE(STATUS "License file installed to ${INSTALL_LICENSE_DIR}")
+  #IF(NOT DEFINED INSTALL_DOC_DIR)
+  #  SET(INSTALL_DOC_DIR 
"${CMAKE_INSTALL_PREFIX}/share/doc/${CPACK_PACKAGE_NAME}/" CACHE STRING 
"Directory, where to install documentation(README)")
+  #ENDIF()
+
+  #IF(NOT DEFINED INSTALL_LICENSE_DIR)
+  #  SET(INSTALL_LICENSE_DIR 
"${CMAKE_INSTALL_PREFIX}/share/doc/${CPACK_PACKAGE_NAME}/" CACHE STRING 
"Directory, where to install license file")   
+  #ENDIF()
+  MESSAGE(STATUS "Documentation and License file are installed to 
${INSTALL_DOCDIR}")
+  #  MESSAGE(STATUS "License file installed to ${INSTALL_LICENSE_DIR}")
 
   INSTALL(FILES
           ${CMAKE_SOURCE_DIR}/README
           DESTINATION
-          ${INSTALL_DOC_DIR}
+          "${INSTALL_DOCDIR}"
           COMPONENT Documentation)
   INSTALL(FILES
           ${CMAKE_SOURCE_DIR}/COPYING
           DESTINATION
-          ${INSTALL_LICENSE_DIR}
+          "${INSTALL_DOCDIR}"
           COMPONENT Documentation)
 ENDIF()
 
 # Tests. Checking if we have them. May be not the case if we are building from 
source package
 IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
-  ADD_SUBDIRECTORY(test)
-  IF(NOT WIN32)
-    # Configuring ini files for testing with UnixODBC
-    SET_VALUE(TEST_DRIVER "maodbc_test")
-    SET_VALUE(TEST_DSN "maodbc_test")
-    SET_VALUE(TEST_PORT "3306")
-    SET_VALUE(TEST_SERVER "localhost")
-    SET_VALUE(TEST_SOCKET "")
-    SET_VALUE(TEST_SCHEMA "test")
-    SET_VALUE(TEST_UID "root")
-    SET_VALUE(TEST_PASSWORD "")
-
-    MESSAGE(STATUS "Configurig Test Driver: ${TEST_DRIVER}, Test DSN: 
${TEST_DSN}, tcp://${TEST_UID}@${TEST_SERVER}:${TEST_PORT}/${TEST_SCHEMA} 
socket: ${TEST_SOCKET}")
-
-    ADD_CUSTOM_COMMAND(TARGET maodbc POST_BUILD
-      COMMAND ${CMAKE_COMMAND} ARGS -DDRIVER_LIB_LOCATION=$<TARGET_FILE:maodbc>
-                                    -DTEST_DRIVER=${TEST_DRIVER}
-                                    
-DFILE_IN=${CMAKE_SOURCE_DIR}/test/odbcinst.ini.in
-                                    
-DFILE_OUT=${CMAKE_BINARY_DIR}/test/odbcinst.ini
-                                    -P 
${CMAKE_SOURCE_DIR}/cmake/ConfigureFile.cmake
-                       )
-
-    ADD_CUSTOM_COMMAND(TARGET maodbc POST_BUILD
-      COMMAND ${CMAKE_COMMAND} ARGS -DTEST_DRIVER=${TEST_DRIVER}
-                                    -DTEST_DSN=${TEST_DSN}
-                                    -DTEST_PORT=${TEST_PORT}
-                                    -DTEST_SERVER=${TEST_SERVER}
-                                    -DTEST_SOCKET=${TEST_SOCKET}
-                                    -DTEST_SCHEMA=${TEST_SCHEMA}
-                                    -DTEST_UID=${TEST_UID}
-                                    -DTEST_PASSWORD=${TEST_PASSWORD}
-                                    
-DFILE_IN=${CMAKE_SOURCE_DIR}/test/odbc.ini.in
-                                    
-DFILE_OUT=${CMAKE_BINARY_DIR}/test/odbc.ini
-                                    -P 
${CMAKE_SOURCE_DIR}/cmake/ConfigureFile.cmake
-                       )
+  IF(WITH_UNIT_TESTS)
+    ADD_SUBDIRECTORY(test)
+    IF(NOT WIN32)
+      # Configuring ini files for testing with UnixODBC
+      SET_VALUE(TEST_DRIVER "maodbc_test")
+      SET_VALUE(TEST_DSN "maodbc_test")
+      SET_VALUE(TEST_PORT "3306")
+      SET_VALUE(TEST_SERVER "localhost")
+      SET_VALUE(TEST_SOCKET "")
+      SET_VALUE(TEST_SCHEMA "test")
+      SET_VALUE(TEST_UID "root")
+      SET_VALUE(TEST_PASSWORD "")
+
+      MESSAGE(STATUS "Configurig Test Driver: ${TEST_DRIVER}, Test DSN: 
${TEST_DSN}, tcp://${TEST_UID}@${TEST_SERVER}:${TEST_PORT}/${TEST_SCHEMA} 
socket: ${TEST_SOCKET}")
+
+      ADD_CUSTOM_COMMAND(TARGET maodbc POST_BUILD
+        COMMAND ${CMAKE_COMMAND} ARGS 
-DDRIVER_LIB_LOCATION=$<TARGET_FILE:maodbc>
+                                      -DTEST_DRIVER=${TEST_DRIVER}
+                                      
-DFILE_IN=${CMAKE_SOURCE_DIR}/test/odbcinst.ini.in
+                                      
-DFILE_OUT=${CMAKE_BINARY_DIR}/test/odbcinst.ini
+                                      -P 
${CMAKE_SOURCE_DIR}/cmake/ConfigureFile.cmake
+                         )
+
+      ADD_CUSTOM_COMMAND(TARGET maodbc POST_BUILD
+        COMMAND ${CMAKE_COMMAND} ARGS -DTEST_DRIVER=${TEST_DRIVER}
+                                      -DTEST_DSN=${TEST_DSN}
+                                      -DTEST_PORT=${TEST_PORT}
+                                      -DTEST_SERVER=${TEST_SERVER}
+                                      -DTEST_SOCKET=${TEST_SOCKET}
+                                      -DTEST_SCHEMA=${TEST_SCHEMA}
+                                      -DTEST_UID=${TEST_UID}
+                                      -DTEST_PASSWORD=${TEST_PASSWORD}
+                                      
-DFILE_IN=${CMAKE_SOURCE_DIR}/test/odbc.ini.in
+                                      
-DFILE_OUT=${CMAKE_BINARY_DIR}/test/odbc.ini
+                                      -P 
${CMAKE_SOURCE_DIR}/cmake/ConfigureFile.cmake
+                         )
+    ENDIF()
   ENDIF()
 ENDIF()
 
@@ -416,10 +439,14 @@
 SET(CPACK_PACKAGE_VENDOR "MariaDB Corporation Ab")
 SET(CPACK_PACKAGE_DESCRIPTION "MariaDB Connector/ODBC. ODBC driver library for 
connecting to MariaDB and MySQL servers")
 IF(NOT SYSTEM_NAME)
-  STRING(TOLOWER ${CMAKE_SYSTEM_NAME} SYSTEM_NAME)
+  STRING(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
+ENDIF()
+IF(PACKAGE_PLATFORM_SUFFIX)
+  SET(CPACK_PACKAGE_FILE_NAME 
"mariadb-connector-odbc-${CPACK_PACKAGE_VERSION}-${PACKAGE_PLATFORM_SUFFIX}")
+ELSE()
+ SET(CPACK_PACKAGE_FILE_NAME 
"mariadb-connector-odbc-${CPACK_PACKAGE_VERSION}-${MARIADB_ODBC_VERSION_QUALITY}-${system_name}-${CMAKE_SYSTEM_PROCESSOR}")
 ENDIF()
-MESSAGE(STATUS "${SYSTEM_NAME}")
-SET(CPACK_PACKAGE_FILE_NAME 
"mariadb-connector-odbc-${CPACK_PACKAGE_VERSION}-${MARIADB_ODBC_VERSION_QUALITY}-${SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
+MESSAGE(STATUS "Package Name: ${CPACK_PACKAGE_FILE_NAME}")
 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
 SET(CPACK_SOURCE_PACKAGE_FILE_NAME 
"mariadb-connector-odbc-${CPACK_PACKAGE_VERSION}-${MARIADB_ODBC_VERSION_QUALITY}-src")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/README.md 
new/mariadb-connector-odbc-3.1.9-ga-src/README.md
--- old/mariadb-connector-odbc-3.1.7-ga-src/README.md   2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/README.md   2020-06-30 
19:43:44.000000000 +0200
@@ -8,7 +8,7 @@
 
 ## Status
 [![License (LGPL version 
2.1)](https://img.shields.io/badge/license-GNU%20LGPL%20version%202.1-green.svg?style=flat-square)](http://opensource.org/licenses/LGPL-2.1)
-[![Linux 
Build](https://secure.travis-ci.org/MariaDB/mariadb-connector-odbc.png?branch=master)](https://travis-ci.org/MariaDB/mariadb-connector-odbc)
+[![Linux 
Build](https://secure.travis-ci.org/MariaDB-Corporation/mariadb-connector-odbc.png?branch=master)](https://travis-ci.org/MariaDB/mariadb-connector-odbc)
 [![Windows 
status](https://ci.appveyor.com/api/projects/status/1fv21j33a6mpkxq5/branch/master?svg=true)](https://ci.appveyor.com/project/LawrinNovitsky/mariadb-connector-odbc)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/cmake/FindDM.cmake 
new/mariadb-connector-odbc-3.1.9-ga-src/cmake/FindDM.cmake
--- old/mariadb-connector-odbc-3.1.7-ga-src/cmake/FindDM.cmake  2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/cmake/FindDM.cmake  2020-06-30 
19:43:44.000000000 +0200
@@ -34,86 +34,90 @@
   SET(ODBC_INSTLIBS odbcinst)
 ENDIF()
 
-FIND_PROGRAM(ODBC_CONFIG ${ODBC_CONFIG_EXEC}
-             PATH
-             /usr/bin
-             ${DM_DIR}
-             )
-
-IF(ODBC_CONFIG)
-  MESSAGE(STATUS "Found ${ODBC_CONFIG_EXEC}: ${ODBC_CONFIG}")
-  EXECUTE_PROCESS(COMMAND ${ODBC_CONFIG} ${ODBC_CONFIG_INCLUDES} 
-                  OUTPUT_VARIABLE result)
-  STRING(REPLACE "\n" "" ODBC_INCLUDE_DIR ${result})
-  EXECUTE_PROCESS(COMMAND ${ODBC_CONFIG} ${ODBC_CONFIG_LIBS} 
-                  OUTPUT_VARIABLE result)
-  STRING(REPLACE "\n" "" ODBC_LIB_DIR ${result})
-
-  IF(WITH_IODBC)
-    STRING(REPLACE "-I" "" ODBC_INCLUDE_DIR ${ODBC_INCLUDE_DIR})
-    STRING(REPLACE "-L" "" ODBC_LIB_DIR ${ODBC_LIB_DIR})
-    STRING(REGEX REPLACE " +-liodbc -liodbcinst" "" ODBC_LIB_DIR 
${ODBC_LIB_DIR})
-  ENDIF()
+IF(ODBC_LIB_DIR AND ODBC_INCLUDE_DIR)
+  MESSAGE(STATUS "Using preset values for DM dirs") 
 ELSE()
-  MESSAGE(STATUS "${ODBC_CONFIG_EXEC} is not found ")
-  # Try to find the include directory, giving precedence to special variables
-  SET(LIB_PATHS /usr/local /usr /usr/local/Cellar/libiodbc/3.52.12)
-
-  IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
-    SET(LIB_PATHS "${LIB_PATHS}" "/usr/lib/x86_64-linux-gnu")
-
-    IF(EXISTS "/usr/lib64/")
-      SET(LIB_SUFFIX "lib64" "x86_64-linux-gnu")
-    ELSE()
-      SET(LIB_SUFFIX "lib" "x86_64-linux-gnu")
+  FIND_PROGRAM(ODBC_CONFIG ${ODBC_CONFIG_EXEC}
+               PATH
+               /usr/bin
+               ${DM_DIR}
+               )
+
+  IF(ODBC_CONFIG)
+    MESSAGE(STATUS "Found ${ODBC_CONFIG_EXEC}: ${ODBC_CONFIG}")
+    EXECUTE_PROCESS(COMMAND ${ODBC_CONFIG} ${ODBC_CONFIG_INCLUDES} 
+                    OUTPUT_VARIABLE result)
+    STRING(REPLACE "\n" "" ODBC_INCLUDE_DIR ${result})
+    EXECUTE_PROCESS(COMMAND ${ODBC_CONFIG} ${ODBC_CONFIG_LIBS} 
+                    OUTPUT_VARIABLE result)
+    STRING(REPLACE "\n" "" ODBC_LIB_DIR ${result})
+
+    IF(WITH_IODBC)
+      STRING(REPLACE "-I" "" ODBC_INCLUDE_DIR ${ODBC_INCLUDE_DIR})
+      STRING(REPLACE "-L" "" ODBC_LIB_DIR ${ODBC_LIB_DIR})
+      STRING(REGEX REPLACE " +-liodbc -liodbcinst" "" ODBC_LIB_DIR 
${ODBC_LIB_DIR})
     ENDIF()
- 
   ELSE()
-    SET(LIB_PATHS "${LIB_PATHS}" "/usr/local/lib/i386-linux-gnu" 
"/usr/lib/i386-linux-gnu" "/usr/local/lib/i686-linux-gnu" 
"/usr/lib/i686-linux-gnu")
-    SET(LIB_SUFFIX "lib" "i386-linux-gnu" "i686-linux-gnu")
-  ENDIF()
+    MESSAGE(STATUS "${ODBC_CONFIG_EXEC} is not found ")
+    # Try to find the include directory, giving precedence to special variables
+    SET(LIB_PATHS /usr/local /usr /usr/local/Cellar/libiodbc/3.52.12)
+
+    IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+      SET(LIB_PATHS "${LIB_PATHS}" "/usr/lib/x86_64-linux-gnu")
+
+      IF(EXISTS "/usr/lib64/")
+        SET(LIB_SUFFIX "lib64" "x86_64-linux-gnu")
+      ELSE()
+        SET(LIB_SUFFIX "lib" "x86_64-linux-gnu")
+      ENDIF()
+   
+    ELSE()
+      SET(LIB_PATHS "${LIB_PATHS}" "/usr/local/lib/i386-linux-gnu" 
"/usr/lib/i386-linux-gnu" "/usr/local/lib/i686-linux-gnu" 
"/usr/lib/i686-linux-gnu")
+      SET(LIB_SUFFIX "lib" "i386-linux-gnu" "i686-linux-gnu")
+    ENDIF()
 
-  FIND_PATH(ODBC_INCLUDE_DIR sql.h
-      HINTS ${DM_INCLUDE_DIR}
-            ${DM_DIR}
-            ENV DM_INCLUDE_DIR
-            ENV DM_DIR
-      PATHS /usr/local
-            /usr
-            /usr/local/Cellar/libiodbc/3.52.12
-      PATH_SUFFIXES include include/iodbc
-      NO_DEFAULT_PATH
-      DOC "Driver Manager Includes")
-  # Giving chance to cmake_(environment)path
-  FIND_PATH(ODBC_INCLUDE_DIR sql.h
-      DOC "Driver Manager Includes")
+    FIND_PATH(ODBC_INCLUDE_DIR sql.h
+        HINTS ${DM_INCLUDE_DIR}
+              ${DM_DIR}
+              ENV DM_INCLUDE_DIR
+              ENV DM_DIR
+        PATHS /usr/local
+              /usr
+              /usr/local/Cellar/libiodbc/3.52.12
+        PATH_SUFFIXES include include/iodbc
+        NO_DEFAULT_PATH
+        DOC "Driver Manager Includes")
+    # Giving chance to cmake_(environment)path
+    FIND_PATH(ODBC_INCLUDE_DIR sql.h
+        DOC "Driver Manager Includes")
 
-  IF(ODBC_INCLUDE_DIR)
-    MESSAGE(STATUS "Found ODBC Driver Manager includes: ${ODBC_INCLUDE_DIR}")
+    IF(ODBC_INCLUDE_DIR)
+      MESSAGE(STATUS "Found ODBC Driver Manager includes: ${ODBC_INCLUDE_DIR}")
+    ENDIF()
+    # Try to find DM libraries, giving precedence to special variables
+    FIND_PATH(ODBC_LIB_DIR "lib${ODBC_LIBS}.so"
+        HINTS ${DM_LIB_DIR}
+              ${DM_DIR}
+              ENV DM_LIB_DIR
+              ENV DM_DIR
+        PATHS ${LIB_PATHS}
+        PATH_SUFFIXES ${LIB_SUFFIX} 
+        NO_DEFAULT_PATH
+        DOC "Driver Manager Libraries")
+    FIND_PATH(ODBC_LIB_DIR "lib${ODBC_LIBS}.so"
+        DOC "Driver Manager Libraries")
+    FIND_PATH(ODBCINST_LIB_DIR "lib${ODBC_INSTLIBS}.so"
+        HINTS ${DM_LIB_DIR}
+              ${DM_DIR}
+              ENV DM_LIB_DIR
+              ENV DM_DIR
+        PATHS ${LIB_PATHS}
+        PATH_SUFFIXES ${LIB_SUFFIX} 
+        NO_DEFAULT_PATH
+        DOC "Driver Manager Libraries")
+    FIND_PATH(ODBCINST_LIB_DIR "lib${ODBC_INSTLIBS}.so"
+        DOC "Driver Manager Libraries")
   ENDIF()
-  # Try to find DM libraries, giving precedence to special variables
-  FIND_PATH(ODBC_LIB_DIR "lib${ODBC_LIBS}.so"
-      HINTS ${DM_LIB_DIR}
-            ${DM_DIR}
-            ENV DM_LIB_DIR
-            ENV DM_DIR
-      PATHS ${LIB_PATHS}
-      PATH_SUFFIXES ${LIB_SUFFIX} 
-      NO_DEFAULT_PATH
-      DOC "Driver Manager Libraries")
-  FIND_PATH(ODBC_LIB_DIR "lib${ODBC_LIBS}.so"
-      DOC "Driver Manager Libraries")
-  FIND_PATH(ODBCINST_LIB_DIR "lib${ODBC_INSTLIBS}.so"
-      HINTS ${DM_LIB_DIR}
-            ${DM_DIR}
-            ENV DM_LIB_DIR
-            ENV DM_DIR
-      PATHS ${LIB_PATHS}
-      PATH_SUFFIXES ${LIB_SUFFIX} 
-      NO_DEFAULT_PATH
-      DOC "Driver Manager Libraries")
-  FIND_PATH(ODBCINST_LIB_DIR "lib${ODBC_INSTLIBS}.so"
-      DOC "Driver Manager Libraries")
 ENDIF()
 
 IF(ODBC_LIB_DIR AND ODBC_INCLUDE_DIR)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/cmake/install.cmake 
new/mariadb-connector-odbc-3.1.9-ga-src/cmake/install.cmake
--- old/mariadb-connector-odbc-3.1.7-ga-src/cmake/install.cmake 1970-01-01 
01:00:00.000000000 +0100
+++ new/mariadb-connector-odbc-3.1.9-ga-src/cmake/install.cmake 2020-06-30 
19:43:44.000000000 +0200
@@ -0,0 +1,148 @@
+#
+#  Copyright (C) 2013-2016 MariaDB Corporation AB
+#
+#  Redistribution and use is allowed according to the terms of the New
+#  BSD license.
+#  For details see the COPYING-CMAKE-SCRIPTS file.
+#
+
+#
+# This file contains settings for the following layouts:
+#
+# - RPM
+# Built with default prefix=/usr
+#
+#
+# The following va+riables are used and can be overwritten
+#
+# INSTALL_LAYOUT     installation layout (DEFAULT = standard for tar.gz and 
zip packages
+#                                         RPM packages
+#
+# INSTALL_BINDIR    location of binaries (mariadb_config)
+# INSTALL_LIBDIR    location of libraries
+# INSTALL_PLUGINDIR location of plugins
+
+IF(NOT INSTALL_LAYOUT)
+  SET(INSTALL_LAYOUT "DEFAULT")
+ENDIF()
+
+SET(INSTALL_LAYOUT ${INSTALL_LAYOUT} CACHE
+  STRING "Installation layout. Currently supported options are DEFAULT (tar.gz 
and zip), RPM and DEB")
+
+# On Windows we only provide zip and .msi. Latter one uses a different 
packager.
+IF(UNIX)
+  IF(INSTALL_LAYOUT MATCHES "RPM")
+    SET(libmariadb_prefix "/usr")
+  ELSEIF(INSTALL_LAYOUT MATCHES "DEFAULT|DEB")
+    SET(libmariadb_prefix ${CMAKE_INSTALL_PREFIX})
+  ENDIF()
+ENDIF()
+
+IF(CMAKE_DEFAULT_PREFIX_INITIALIZED_BY_DEFAULT)
+  SET(CMAKE_DEFAULT_PREFIX ${libmariadb_prefix} CACHE PATH "Installation 
prefix" FORCE)
+ENDIF()
+
+# check if the specified installation layout is valid
+SET(VALID_INSTALL_LAYOUTS "DEFAULT" "RPM" "DEB")
+LIST(FIND VALID_INSTALL_LAYOUTS "${INSTALL_LAYOUT}" layout_no)
+IF(layout_no EQUAL -1)
+  MESSAGE(FATAL_ERROR "Invalid installation layout ${INSTALL_LAYOUT}. Please 
specify one of the following layouts: ${VALID_INSTALL_LAYOUTS}")
+ENDIF()
+
+
+
+#
+# Todo: We don't generate man pages yet, will fix it
+#       later (webhelp to man transformation)
+#
+
+#
+# DEFAULT layout
+#
+
+SET(INSTALL_BINDIR_DEFAULT "bin")
+SET(INSTALL_LIBDIR_DEFAULT "lib/mariadb")
+SET(INSTALL_PCDIR_DEFAULT "lib/pkgconfig")
+SET(INSTALL_INCLUDEDIR_DEFAULT "include/mariadb")
+SET(INSTALL_DOCDIR_DEFAULT "docs")
+IF(NOT IS_SUBPROJECT)
+  SET(INSTALL_PLUGINDIR_DEFAULT "lib/mariadb/plugin")
+ELSE()
+ENDIF()
+SET(LIBMARIADB_STATIC_DEFAULT "mariadbclient")
+#
+# RPM layout
+#
+SET(INSTALL_BINDIR_RPM "bin")
+IF((CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES 
"ppc64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le" OR CMAKE_SYSTEM_PROCESSOR 
MATCHES "aarch64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "s390x") AND 
CMAKE_SIZEOF_VOID_P EQUAL 8)
+  SET(INSTALL_LIBDIR_RPM "lib64/mariadb")
+  SET(INSTALL_PCDIR_RPM "lib64/pkgconfig")
+  SET(INSTALL_PLUGINDIR_RPM "lib64/mariadb/plugin")
+ELSE()
+  SET(INSTALL_LIBDIR_RPM "lib/mariadb")
+  SET(INSTALL_PCDIR_RPM "lib/pkgconfig")
+  SET(INSTALL_PLUGINDIR_RPM "lib/mariadb/plugin")
+ENDIF()
+SET(INSTALL_INCLUDEDIR_RPM "include")
+SET(INSTALL_DOCDIR_RPM "docs")
+SET(LIBMARIADB_STATIC_RPM "mariadbclient")
+
+#
+# DEB layout
+#
+SET(INSTALL_BINDIR_DEB "bin")
+SET(INSTALL_LIBDIR_DEB "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+SET(INSTALL_PCDIR_DEB "lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig")
+SET(INSTALL_PLUGINDIR_DEB 
"${INSTALL_LIBDIR_DEB}/libmariadb${CPACK_PACKAGE_VERSION_MAJOR}/plugin")
+SET(INSTALL_INCLUDEDIR_DEB "include/mariadb")
+SET(LIBMARIADB_STATIC_DEB "mariadb")
+
+IF(INSTALL_LAYOUT MATCHES "DEB")
+  SET(INSTALL_PLUGINDIR_CLIENT ${INSTALL_PLUGINDIR_DEB})
+ENDIF()
+
+
+#
+# Overwrite defaults
+#
+IF(INSTALL_LIBDIR)
+  SET(INSTALL_LIBDIR_${INSTALL_LAYOUT} ${INSTALL_LIBDIR})
+ENDIF()
+
+IF(INSTALL_PCDIR)
+  SET(INSTALL_PCDIR_${INSTALL_LAYOUT} ${INSTALL_PCDIR})
+ENDIF()
+
+IF(INSTALL_PLUGINDIR)
+  SET(INSTALL_PLUGINDIR_${INSTALL_LAYOUT} ${INSTALL_PLUGINDIR})
+ENDIF()
+
+# Extra INSTALL_PLUGINDIR_CLIENT that overrides any INSTALL_PLUGINDIR override
+IF(INSTALL_PLUGINDIR_CLIENT)
+  SET(INSTALL_PLUGINDIR_${INSTALL_LAYOUT} ${INSTALL_PLUGINDIR_CLIENT})
+ENDIF()
+
+IF(INSTALL_INCLUDEDIR)
+  SET(INSTALL_INCLUDEDIR_${INSTALL_LAYOUT} ${INSTALL_INCLUDEDIR})
+ENDIF()
+
+IF(INSTALL_BINDIR)
+  SET(INSTALL_BINDIR_${INSTALL_LAYOUT} ${INSTALL_BINDIR})
+ENDIF()
+
+IF(NOT INSTALL_PREFIXDIR)
+  SET(INSTALL_PREFIXDIR_${INSTALL_LAYOUT} ${libmariadb_prefix})
+ELSE()
+  SET(INSTALL_PREFIXDIR_${INSTALL_LAYOUT} ${INSTALL_PREFIXDIR})
+ENDIF()
+
+IF(DEFINED INSTALL_SUFFIXDIR)
+  SET(INSTALL_SUFFIXDIR_${INSTALL_LAYOUT} ${INSTALL_SUFFIXDIR})
+ENDIF()
+
+FOREACH(dir "BIN" "LIB" "PC" "INCLUDE" "DOC"  "PLUGIN")
+  SET(INSTALL_${dir}DIR ${INSTALL_${dir}DIR_${INSTALL_LAYOUT}})
+  MARK_AS_ADVANCED(INSTALL_${dir}DIR)
+  #MESSAGE1(INSTALL_${dir}DIR "MariaDB Connector ODBC: 
INSTALL_${dir}DIR=${INSTALL_${dir}DIR}")
+ENDFOREACH()
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/dsn/odbc_dsn.c 
new/mariadb-connector-odbc-3.1.9-ga-src/dsn/odbc_dsn.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/dsn/odbc_dsn.c      2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/dsn/odbc_dsn.c      2020-06-30 
19:43:44.000000000 +0200
@@ -16,7 +16,6 @@
    or write to the Free Software Foundation, Inc., 
    51 Franklin St., Fifth Floor, Boston, MA 02110, USA
 
*************************************************************************************/
-#define WIN32_LEAN_AND_MEAN
 
 #include <Windows.h>
 #include <stdlib.h>
@@ -83,6 +82,7 @@
   {&DsnKeys[14], 2, ckReconnect,          0, 0},
   {&DsnKeys[15], 2, ckConnectPrompt,      0, 0},
   {&DsnKeys[16], 2, cbCharset,            0, 0},
+  {&DsnKeys[34], 2, txtServerKey,       260, 0},
   {&DsnKeys[18], 3, txtPluginDir,       260, 0},
   {&DsnKeys[19], 4, txtSslKey,          260, 0},
   {&DsnKeys[20], 4, txtSslCert,         260, 0},
@@ -94,7 +94,7 @@
   {&DsnKeys[32], 4, cbTls12,              2, 0},
   {&DsnKeys[32], 4, cbTls13,              4, 0},
   {&DsnKeys[33], 4, cbForceTls,           0, 0},
-  {&DsnKeys[34], 4, txtServerKey,       260, 0},
+  {&DsnKeys[27], 4, txtCrl,               0, 0},
   {&DsnKeys[25], 4, txtTlsPeerFp,       41, 0},
   {&DsnKeys[26], 4, txtTlsPeerFpList,   260, 0 },
   {NULL, 0, 0, 0, 0}
@@ -729,6 +729,10 @@
       res=   SelectPath(hDlg, txtTlsPeerFpList, L"Select File with SHA1 
fingerprints of server certificates", FALSE, OpenCurSelection);
       OpenCurSelection= OpenCurSelection && !res;
       return res;
+    case pbCrlBrowse:
+      res = SelectPath(hDlg, txtCrl, L"Select PEM File Certificate Revocation 
List(CRL)", FALSE, OpenCurSelection);
+      OpenCurSelection = OpenCurSelection && !res;
+      return res;
     case rbTCP:
          case rbPipe:
                  if (HIWORD(wParam) == BN_CLICKED)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/dsn/odbc_dsn.rc 
new/mariadb-connector-odbc-3.1.9-ga-src/dsn/odbc_dsn.rc
--- old/mariadb-connector-odbc-3.1.7-ga-src/dsn/odbc_dsn.rc     2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/dsn/odbc_dsn.rc     2020-06-30 
19:43:44.000000000 +0200
@@ -129,21 +129,27 @@
 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    LTEXT           "Do you want tio send initial statement(s) after 
establishing connection to MariaDB?",IDC_STATIC,7,7,264,8,0,WS_EX_TRANSPARENT
-    EDITTEXT        txtInitCmd,74,30,197,39,ES_MULTILINE | ES_AUTOHSCROLL | 
WS_VSCROLL
-    LTEXT           "Statement(s):",IDC_STATIC,20,32,46,8,0,WS_EX_TRANSPARENT
-    RTEXT           "Connection timeout in 
sec:",IDC_STATIC,17,77,86,8,0,WS_EX_TRANSPARENT
-    EDITTEXT        txtConnectionTimeOut,111,75,40,14,ES_AUTOHSCROLL
-    CONTROL         "Enable automatic 
&reconnect",ckReconnect,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,16,94,107,10,WS_EX_TRANSPARENT
-    CONTROL         "Don't prompt when 
connecting",ckConnectPrompt,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,16,110,113,10,WS_EX_TRANSPARENT
-    CONTROL         "Use compression",ckCompressed,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,163,94,107,10,WS_EX_TRANSPARENT
-    CONTROL         "Read odbc section from 
my.cnf",ckUseMycnf,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,163,110,198,10,WS_EX_TRANSPARENT
+    LTEXT           "Do you want to send initial statement(s) after 
establishing connection to MariaDB?",IDC_STATIC,7,0,264,8,0,WS_EX_TRANSPARENT
+    EDITTEXT        txtInitCmd,74,15,197,39,ES_MULTILINE | ES_AUTOHSCROLL | 
WS_VSCROLL
+    LTEXT           "Statement(s):",IDC_STATIC,20,17,46,8,0,WS_EX_TRANSPARENT
+    RTEXT           "Connection timeout in 
sec:",IDC_STATIC,17,62,86,8,0,WS_EX_TRANSPARENT
+    EDITTEXT        txtConnectionTimeOut,111,60,40,14,ES_AUTOHSCROLL
+    CONTROL         "Enable automatic 
&reconnect",ckReconnect,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,16,79,107,10,WS_EX_TRANSPARENT
+    CONTROL         "Don't prompt when 
connecting",ckConnectPrompt,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,16,95,113,10,WS_EX_TRANSPARENT
+    CONTROL         "Use compression",ckCompressed,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,163,79,107,10,WS_EX_TRANSPARENT
+    CONTROL         "Read odbc section from 
my.cnf",ckUseMycnf,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,163,95,198,10,WS_EX_TRANSPARENT
+
+    COMBOBOX        cbCharset,113,110,160,80,CBS_DROPDOWN | 
CBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+    RTEXT           "Connection Character 
Set:",IDC_STATIC,7,113,96,8,0,WS_EX_TRANSPARENT
+
+    RTEXT           "Server RSA public 
key:",IDC_STATIC,15,128,88,8,0,WS_EX_TRANSPARENT
+    EDITTEXT        txtServerKey,113,127,110,12,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse",pbServerKeyBrowse,224,126,30,14
+
     PUSHBUTTON      "Cancel",IDCANCEL,178,149,50,14
     PUSHBUTTON      "Next >",PB_NEXT,104,149,50,14
     PUSHBUTTON      "< Previous",PB_PREV,50,149,50,14,WS_DISABLED
     PUSHBUTTON      "Help",IDCANCEL4,236,149,50,14
-    COMBOBOX        cbCharset,113,127,160,80,CBS_DROPDOWN | 
CBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
-    RTEXT           "Connection Character 
Set:",IDC_STATIC,7,130,96,8,0,WS_EX_TRANSPARENT
 END
 
 Page_3 DIALOGEX 0, 0, 299, 182
@@ -165,11 +171,11 @@
     PUSHBUTTON      "Help",IDCANCEL4,236,149,50,14
 END
 
-Page_4 DIALOGEX 0, 0, 299, 182
+Page_4 DIALOGEX -10, -9, 320, 188
 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU
 FONT 8, "MS Shell Dlg", 400, 0, 0x1
 BEGIN
-    GROUPBOX        "SSL Settings",IDC_STATIC,7,-2,278,148,0,WS_EX_TRANSPARENT
+    GROUPBOX        "TLS Settings",IDC_STATIC,1,-2,303,151,0,WS_EX_TRANSPARENT
 
     LTEXT           "Key",IDC_STATIC,15,10,56,8,0,WS_EX_TRANSPARENT
     EDITTEXT        txtSslKey,84,10,110,10,ES_AUTOHSCROLL
@@ -199,11 +205,11 @@
     CONTROL         "v.1.2",cbTls12,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,155,91,30,10,WS_EX_TRANSPARENT
     CONTROL         "v.1.3",cbTls13,"Button",BS_AUTOCHECKBOX | 
WS_TABSTOP,185,91,30,10,WS_EX_TRANSPARENT
 
-    LTEXT           "Server public 
key",IDC_STATIC,15,104,68,8,0,WS_EX_TRANSPARENT
-    EDITTEXT        txtServerKey,84,104,110,10,ES_AUTOHSCROLL
-    PUSHBUTTON      "Browse",pbServerKeyBrowse,195,102,30,14
+    LTEXT           "CRL File",IDC_STATIC,15,104,68,8,0,WS_EX_TRANSPARENT
+    EDITTEXT        txtCrl,84,104,110,10,ES_AUTOHSCROLL
+    PUSHBUTTON      "Browse",pbCrlBrowse,195,102,30,14
 
-    LTEXT           "Tls Peer Fingerprint", IDC_STATIC, 15, 118, 68, 8, 0, 
WS_EX_TRANSPARENT
+    LTEXT           "TLS Peer Fingerprint", IDC_STATIC, 15, 118, 68, 8, 0, 
WS_EX_TRANSPARENT
     EDITTEXT        txtTlsPeerFp, 84, 118, 110, 10, ES_AUTOHSCROLL
 
     LTEXT           "Fingerprints List File", IDC_STATIC, 15, 132, 68, 8, 0, 
WS_EX_TRANSPARENT
Binary files old/mariadb-connector-odbc-3.1.7-ga-src/dsn/resource.h and 
new/mariadb-connector-odbc-3.1.9-ga-src/dsn/resource.h differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_connection.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_connection.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_connection.c     2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_connection.c     2020-06-30 
19:43:44.000000000 +0200
@@ -18,6 +18,8 @@
 
*************************************************************************************/
 #include <ma_odbc.h>
 
+extern const char* DefaultPluginLocation;
+
 struct st_madb_isolation MADB_IsolationLevel[] =
 {
   {SQL_TRANSACTION_REPEATABLE_READ, "REPEATABLE READ"},
@@ -140,7 +142,7 @@
   if (!Dbc)
   {
     /* Todo: check */
-    if (Attribute != SQL_ATTR_TRACE ||
+    if (Attribute != SQL_ATTR_TRACE &&
         Attribute != SQL_ATTR_TRACEFILE)
       return SQL_INVALID_HANDLE;
     return SQL_SUCCESS;
@@ -609,10 +611,9 @@
   }
   else
   {
-    const char *DefaultLocation= MADB_GetDefaultPluginsDir(Connection);
-    if (DefaultLocation != NULL)
+    if (DefaultPluginLocation != NULL)
     {
-      mysql_optionsv(Connection->mariadb, MYSQL_PLUGIN_DIR, DefaultLocation);
+      mysql_optionsv(Connection->mariadb, MYSQL_PLUGIN_DIR, 
DefaultPluginLocation);
     }
   }
 
@@ -776,6 +777,10 @@
     mysql_optionsv(Connection->mariadb, MYSQL_OPT_SSL_ENFORCE, (const 
char*)&ForceTls);
   }
 
+  if (!MADB_IS_EMPTY(Dsn->SslCrl))
+  {
+    mysql_optionsv(Connection->mariadb, MYSQL_OPT_SSL_CRL, Dsn->SslCrl);
+  }
   if (!MADB_IS_EMPTY(Dsn->SslCrlPath))
   {
     mysql_optionsv(Connection->mariadb, MYSQL_OPT_SSL_CRLPATH, 
Dsn->SslCrlPath);
@@ -795,6 +800,11 @@
     mysql_optionsv(Connection->mariadb, MARIADB_OPT_TLS_PEER_FP_LIST, 
(void*)Dsn->TlsPeerFpList);
   }
 
+  if (!MADB_IS_EMPTY(Dsn->TlsKeyPwd))
+  {
+    mysql_optionsv(Connection->mariadb, MARIADB_OPT_TLS_PASSPHRASE, 
(void*)Dsn->TlsKeyPwd);
+  }
+
   if (!mysql_real_connect(Connection->mariadb,
       Dsn->Socket ? "localhost" : Dsn->ServerName, Dsn->UserName, 
Dsn->Password,
         Dsn->Catalog && Dsn->Catalog[0] ? Dsn->Catalog : NULL, Dsn->Port, 
Dsn->Socket, client_flags))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_connection.h 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_connection.h
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_connection.h     2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_connection.h     2020-06-30 
19:43:44.000000000 +0200
@@ -57,7 +57,7 @@
                                 SQLSMALLINT *StringLengthPtr, my_bool isWChar);
 BOOL MADB_SqlMode(MADB_Dbc *Connection, enum enum_madb_sql_mode SqlMode);
 /* Has platform versions */
-const char* MADB_GetDefaultPluginsDir(MADB_Dbc *Dbc);
+char* MADB_GetDefaultPluginsDir(char* Buffer, size_t Size);
 
 #define MADB_SUPPORTED_CONVERSIONS  SQL_CVT_BIGINT | SQL_CVT_BIT | 
SQL_CVT_CHAR | SQL_CVT_DATE |\
                                     SQL_CVT_DECIMAL | SQL_CVT_DOUBLE | 
SQL_CVT_FLOAT |\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_debug.h 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_debug.h
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_debug.h  2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_debug.h  2020-06-30 
19:43:44.000000000 +0200
@@ -50,7 +50,7 @@
     {\
     SYSTEMTIME st;\
     GetSystemTime(&st);\
-    ma_debug_print(0, ">>> %d-%02d-%02d %02d:%02d:%02d --- %s (thread: %d) 
---", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, A, 
((MADB_Dbc*)(C))->mariadb ? mysql_thread_id(((MADB_Dbc*)(C))->mariadb) : 0);\
+    ma_debug_print(0, ">>> %d-%02d-%02d %02d:%02d:%02d --- %s (thread: %lu) 
---", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, A, 
((MADB_Dbc*)(C))->mariadb ? mysql_thread_id(((MADB_Dbc*)(C))->mariadb) : 0);\
     }
 #else
 #define MDBUG_C_ENTER(C,A)\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_dsn.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_dsn.c    2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.c    2020-06-30 
19:43:44.000000000 +0200
@@ -72,7 +72,8 @@
   {"USE_MYCNF",      offsetof(MADB_Dsn, ReadMycnf),         DSN_TYPE_OPTION, 
MADB_OPT_FLAG_USE_CNF, 0},
   {"TLSVERSION",     offsetof(MADB_Dsn, TlsVersion),        
DSN_TYPE_CBOXGROUP, 0, 0},
   {"FORCETLS",       offsetof(MADB_Dsn, ForceTls),          DSN_TYPE_BOOL,   
0, 0},
-  {"SERVERKEY",      offsetof(MADB_Dsn, ServerKey),         DSN_TYPE_STRING,   
0, 0},
+  {"SERVERKEY",      offsetof(MADB_Dsn, ServerKey),         DSN_TYPE_STRING, 
0, 0},
+  {"TLSKEYPWD",      offsetof(MADB_Dsn, TlsKeyPwd),         DSN_TYPE_STRING, 
0, 0},
   /* Aliases. Here offset is index of aliased key */
   {"SERVERNAME",     DSNKEY_SERVER_INDEX,                   DSN_TYPE_STRING, 
0, 1},
   {"USER",           DSNKEY_UID_INDEX,                      DSN_TYPE_STRING, 
0, 1},
@@ -156,7 +157,7 @@
   MADB_FREE(Dsn->TlsPeerFpList);
   MADB_FREE(Dsn->SaveFile);
   MADB_FREE(Dsn->ServerKey);
-
+  MADB_FREE(Dsn->TlsKeyPwd);
   if (Dsn->FreeMe)
     MADB_FREE(Dsn); 
 }
@@ -484,8 +485,8 @@
 /* {{{ MADB_ParseConnString */
 my_bool MADB_ParseConnString(MADB_Dsn *Dsn, const char *String, size_t Length, 
char Delimiter)
 {
-  char    *Buffer, *Key, *Value;
-  my_bool ret;
+  char    *Buffer, *Key, *Value, *ValueBuf;
+  my_bool ret= TRUE;
 
   if (!String)
     return FALSE;
@@ -498,10 +499,19 @@
   Buffer= MADB_ALLOC(Length + 1);
   Buffer= memcpy(Buffer, String, Length + 1);
   Key=    Buffer;
+  ValueBuf= MADB_ALLOC(Length - 4); /*DSN=<value> - DSN or DRIVER must be in */
 
   while (Key && Key < ((char *)Buffer + Length))
   {
     int i= 0;
+
+    /* The case of ;; - "empty key/value pair. Probably that shouldn't be 
allowed. But parser uset to digest this, so leaving this as a feature so far
+       TODO: check and maybe remove for the next version */
+    if (Delimiter != '\0' && *Key == Delimiter)
+    {
+      ++Key;
+      continue;
+    }
     if (!(Value= strchr(Key, '=')))
     {
       ret= FALSE;
@@ -516,34 +526,52 @@
     {
       if (_stricmp(DsnKeys[i].DsnKey, Key) == 0)
       {
-        char    *p;
-        my_bool special= FALSE;
+        char *p= NULL;
 
         if (DsnKeys[i].IsAlias)
         {
           i= DsnKeys[i].DsnOffset; /* For aliases DsnOffset is index of 
aliased "main" key */
         }
 
-        Value= trim(Value);
+        Value= ltrim(Value);
 
         if (Value[0] == '{')
         {
-          ++Value;
-          if ((p = strchr(Value, '}')))
+          char *valueBufPtr= ValueBuf;
+          char *prev= ++Value;
+          *valueBufPtr= '\0';
+          while ((p = strchr(prev, '}')) != NULL )
           {
-            *p= 0;
-            special= TRUE;
+            memcpy(valueBufPtr, prev, p - prev);
+            valueBufPtr+= p - prev;
+            if (*(p + 1) == '}')
+            {
+              *(valueBufPtr++)= '}';
+              *valueBufPtr= '\0';
+              prev= p + 2;
+            }
+            else
+            {
+              *valueBufPtr= '\0';
+              ++p;
+              break;
+            }
           }
+          Value= ValueBuf;
         }
         else if ((p= strchr(Value, Delimiter)))
         {
           *p= 0;
         }
+        /* TODO: 3.2 we should not trim enclosed in braces, I think */
         Value= trim(Value);
 
         /* Overwriting here - if an option repeated more than once in the 
string, its last entrance will determine the value */
         if (!MADB_DsnStoreValue(Dsn, i, Value, TRUE))
-          return FALSE;
+        {
+          ret= FALSE;
+          goto end;
+        }
         if (IS_OPTIONS_BITMAP(i))
         {
           MADB_DsnUpdateOptionsFields(Dsn);
@@ -551,19 +579,33 @@
 
         if (p)
         {
-          *p= (special) ? ' ' : Delimiter;
+          Key= p + 1;
+        }
+        else
+        {
+          Key= NULL;
         }
         break;
       }
       ++i;
     }
-    if ((Key= strchr(Value, Delimiter)))
+    /* Unknown keyword */
+    if (DsnKeys[i].DsnKey == NULL)
     {
-      ++Key;
+      //TODO: shouldn't some error/warning be thrown?
+      Key= strchr(Value, Delimiter);
+      if (Key != NULL)
+      {
+        ++Key;
+      }
     }
   }
+
+end:
   MADB_FREE(Buffer);
-  return TRUE;
+  MADB_FREE(ValueBuf);
+
+  return ret;
 }
 /* }}} */
 
@@ -598,7 +640,7 @@
   SQLULEN TotalLength= 0;
   char    *p=          OutString;
   char    *Value=      NULL;
-  char    TmpStr[1024];
+  char    TmpStr[1024]= { '\0' };
   char    IntVal[12];
   int     CpyLength;
 
@@ -633,6 +675,7 @@
         {
           Value= "1";
         }
+        break;
       case DSN_TYPE_CBOXGROUP:
         if (*GET_FIELD_PTR(Dsn, &DsnKeys[i], char))
         {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_dsn.h 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.h
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_dsn.h    2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_dsn.h    2020-06-30 
19:43:44.000000000 +0200
@@ -129,6 +129,7 @@
   char *SslCrlPath;
   char *TlsPeerFp;
   char *TlsPeerFpList;
+  char *TlsKeyPwd;
   my_bool SslVerify;
   char TlsVersion;
   my_bool ForceTls;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_environment.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_environment.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_environment.c    2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_environment.c    2020-06-30 
19:43:44.000000000 +0200
@@ -22,6 +22,11 @@
 extern MARIADB_CHARSET_INFO* DmUnicodeCs;
 extern MARIADB_CHARSET_INFO  dummyUtf32le;
 Client_Charset SourceAnsiCs= {0, 0}; /* Basically it should be initialized 
with 0 anyway */
+char* DefaultPluginLocation= NULL;
+#ifndef _MAX_PATH
+# define _MAX_PATH 260
+#endif
+static char PluginLocationBuf[_MAX_PATH];
 
 MARIADB_CHARSET_INFO * mysql_find_charset_name(const char *name);
 
@@ -114,7 +119,11 @@
   utf8.cs_info= mariadb_get_charset_by_name("utf8mb4");
   GetDefaultLogDir();
   GetSourceAnsiCs(&SourceAnsiCs);
-
+  /* If we have something in the buffer - then we've already tried to get 
default location w/out much success */
+  if (DefaultPluginLocation == NULL && strlen(PluginLocationBuf) == 0)
+  {
+    DefaultPluginLocation= MADB_GetDefaultPluginsDir(PluginLocationBuf, 
sizeof(PluginLocationBuf));
+  }
 cleanup:
 #ifdef _WIN32  
   if (!Env)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_helper.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_helper.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_helper.c 2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_helper.c 2020-06-30 
19:43:44.000000000 +0200
@@ -80,7 +80,7 @@
   return Length;
 }
 
-
+/* Function assumes that the query is multistatement. And, e.g. 
STMT_COUNT(Stmt->Query) > 1 */
 unsigned int GetMultiStatements(MADB_Stmt *Stmt, BOOL ExecDirect)
 {
   int          i= 0;
@@ -521,7 +521,6 @@
   case MYSQL_TYPE_SHORT:
     return 2;
   case MYSQL_TYPE_INT24:
-    return 3;
   case MYSQL_TYPE_LONG:
     return 4;
   case MYSQL_TYPE_LONGLONG:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/ma_platform_posix.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_posix.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_platform_posix.c 2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_posix.c 2020-06-30 
19:43:44.000000000 +0200
@@ -398,7 +398,7 @@
 
 
 /* Stub - atm it looks like we don't need to do anything here */
-const char* MADB_GetDefaultPluginsDir(MADB_Dbc *Dbc)
+char* MADB_GetDefaultPluginsDir(char* Buffer, size_t Size)
 {
   return NULL;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/ma_platform_win32.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_win32.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_platform_win32.c 2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_win32.c 2020-06-30 
19:43:44.000000000 +0200
@@ -23,8 +23,8 @@
 /* NOTE If you change something in this program, please consider if other 
platform's version 
         of the function you are changing, needs to be changed accordingly */
 
-#include <ma_odbc.h>
-#include "Shlwapi.h"
+#include "ma_odbc.h"
+#include <pathcch.h>
 
 extern Client_Charset utf8;
 char LogFile[256];
@@ -295,22 +295,25 @@
   return (FileAttributes != INVALID_FILE_ATTRIBUTES) && (FileAttributes & 
FILE_ATTRIBUTE_DIRECTORY);
 }
 
-const char* MADB_GetDefaultPluginsDir(MADB_Dbc *Dbc)
+char* MADB_GetDefaultPluginsDir(char* Buffer, size_t Size)
 {
   HMODULE hModule = GetModuleHandle(MADB_DRIVER_NAME);
-  static char OurLocation[_MAX_PATH];
+  wchar_t wOurLocation[_MAX_PATH];
   const char *PluginsSubDirName= "\\"MADB_DEFAULT_PLUGINS_SUBDIR;
+  HRESULT hr;
 
-  GetModuleFileName(hModule, OurLocation, _MAX_PATH);
-  PathRemoveFileSpec(OurLocation);
+  memset(Buffer, 0, Size);
+  GetModuleFileNameW(hModule, wOurLocation, _MAX_PATH);
+  hr= PathCchRemoveFileSpec(wOurLocation, _MAX_PATH);
 
-  if (strlen(OurLocation) < _MAX_PATH - strlen(PluginsSubDirName))
+  WideCharToMultiByte(GetACP(), 0, wOurLocation, -1, Buffer, Size, NULL, NULL);
+  if (strlen(Buffer) < Size - strlen(PluginsSubDirName))
   {
-    strcpy(OurLocation + strlen(OurLocation), PluginsSubDirName);
+    strcpy(Buffer + strlen(Buffer), PluginsSubDirName);
 
-    if (MADB_DirectoryExists(OurLocation) != FALSE)
+    if (MADB_DirectoryExists(Buffer) != FALSE)
     {
-      return OurLocation;
+      return Buffer;
     }
   }
   return NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/ma_platform_win32.h 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_win32.h
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_platform_win32.h 2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_platform_win32.h 2020-06-30 
19:43:44.000000000 +0200
@@ -28,7 +28,10 @@
 
 #define _ma_platform_x_h_
 
-#define WIN32_LEAN_AND_MEAN
+#ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN
+#endif // !WIN32_LEAN_AND_MEAN
+
 #define _WINSOCKAPI_
 #define DONT_DEFINE_VOID
 #define HAVE_UNICODE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_result.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_result.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_result.c 2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_result.c 2020-06-30 
19:43:44.000000000 +0200
@@ -222,8 +222,8 @@
         mysql_stmt_data_seek(Stmt->stmt, 0);
       }
     }
-    UNLOCK_MARIADB(Stmt->Connection);
   }
+  UNLOCK_MARIADB(Stmt->Connection);
 
   return ret;
 }
@@ -232,7 +232,7 @@
 /* {{{ MADB_RecordsToFetch */
 SQLULEN MADB_RowsToFetch(MADB_Cursor *Cursor, SQLULEN ArraySize, unsigned long 
long RowsInResultst)
 {
-  SQLLEN  Position= Cursor->Position >= 0 ? Cursor->Position : 0;
+  SQLULEN  Position= Cursor->Position >= 0 ? Cursor->Position : 0;
   SQLULEN result= ArraySize;
 
   Cursor->RowsetSize= ArraySize;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_statement.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_statement.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_statement.c      2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_statement.c      2020-06-30 
19:43:44.000000000 +0200
@@ -884,7 +884,9 @@
       return Stmt->Error.ReturnValue;
     }
     if (Stmt->Query.QueryType == SQL_DELETE)
+    {
       MADB_STMT_RESET_CURSOR(Stmt->PositionedCursor);
+    }
       
   }
   //MADB_FREE(DataPtr);
@@ -1128,7 +1130,6 @@
       }
 
       memset(Stmt->params, 0, sizeof(MYSQL_BIND) * 
MADB_STMT_PARAM_COUNT(Stmt));
-      
     }
 
     if (MADB_DOING_BULK_OPER(Stmt))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/ma_typeconv.c 
new/mariadb-connector-odbc-3.1.9-ga-src/ma_typeconv.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/ma_typeconv.c       2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/ma_typeconv.c       2020-06-30 
19:43:44.000000000 +0200
@@ -24,7 +24,7 @@
 /* Borrowed from C/C and adapted */
 SQLRETURN MADB_Str2Ts(const char *Str, size_t Length, MYSQL_TIME *Tm, BOOL 
Interval, MADB_Error *Error, BOOL *isTime)
 {
-  char *Start= MADB_ALLOC(Length + 1), *Frac, *End= Start + Length;
+  char *localCopy= MADB_ALLOC(Length + 1), *Start= localCopy, *Frac, *End= 
Start + Length;
   my_bool isDate= 0;
 
   if (Start == NULL)
@@ -36,11 +36,11 @@
   memcpy(Start, Str, Length);
   Start[Length]= '\0';
 
-  while (Length && isspace(*Start)) Start++, Length--;
+  while (Length && isspace(*Start)) ++Start, --Length;
 
   if (Length == 0)
   {
-    return SQL_SUCCESS;//MADB_SetError(Error, MADB_ERR_22008, NULL, 0);
+    goto end;//MADB_SetError(Error, MADB_ERR_22008, NULL, 0);
   }  
 
   /* Determine time type:
@@ -113,7 +113,9 @@
       }
     }
   }
- 
+
+end:
+  MADB_FREE(localCopy);
   return SQL_SUCCESS;
 }
 
@@ -575,14 +577,19 @@
     tm->month= cur_tm->tm_mon + 1;
     tm->day= cur_tm->tm_mday;
     tm->second_part= 0;
+    
+    tm->time_type= MYSQL_TIMESTAMP_DATETIME;
+    MaBind->buffer_type= MYSQL_TYPE_TIMESTAMP;
   }
   else
   {
     tm->year=  0;
     tm->month= 0;
     tm->day=   0;
-  }
 
+    tm->time_type = MYSQL_TIMESTAMP_TIME;
+    MaBind->buffer_type= MYSQL_TYPE_TIME;
+  }
 
   tm->hour=   ts->hour;
   tm->minute= ts->minute;
@@ -590,9 +597,6 @@
 
   tm->second_part= 0;
 
-  tm->time_type= MYSQL_TIMESTAMP_DATETIME;
-
-  MaBind->buffer_type= MYSQL_TYPE_DATETIME;
   *LengthPtr= sizeof(MYSQL_TIME);
 
   return SQL_SUCCESS;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/odbc_3_api.c 
new/mariadb-connector-odbc-3.1.9-ga-src/odbc_3_api.c
--- old/mariadb-connector-odbc-3.1.7-ga-src/odbc_3_api.c        2020-04-07 
22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/odbc_3_api.c        2020-06-30 
19:43:44.000000000 +0200
@@ -697,6 +697,7 @@
   if (ServerName && !ServerName[0])
   {
     MADB_SetError(&Connection->Error, MADB_ERR_HY000, "Invalid DSN", 0);
+    MADB_DSN_Free(Dsn);
     return Connection->Error.ReturnValue;
   }
 
@@ -1441,7 +1442,7 @@
 SQLRETURN SQL_API SQLFreeHandle(SQLSMALLINT HandleType,
                                 SQLHANDLE Handle)
 {
-  SQLRETURN ret;
+  SQLRETURN ret= SQL_INVALID_HANDLE;
   MADB_CHECK_HANDLE_CLEAR_ERROR(HandleType, Handle);
 
   switch (HandleType)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/CMakeLists.txt 
new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/CMakeLists.txt
--- old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/CMakeLists.txt   
2020-04-07 22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/CMakeLists.txt   
2020-06-30 19:43:44.000000000 +0200
@@ -1,3 +1,22 @@
+# 
************************************************************************************
+#   Copyright (C) 2019,2020 MariaDB Corporation AB
+#   
+#   This library is free software; you can redistribute it and/or
+#   modify it under the terms of the GNU Library General Public
+#   License as published by the Free Software Foundation; either
+#   version 2.1 of the License, or (at your option) any later version.
+#   
+#   This library is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#   Library General Public License for more details.
+#   
+#   You should have received a copy of the GNU Library General Public
+#   License along with this library; if not see <http://www.gnu.org/licenses>
+#   or write to the Free Software Foundation, Inc., 
+#   51 Franklin St., Fifth Floor, Boston, MA 02110, USA
+# 
*************************************************************************************/
+
 SET(ODBC_SOURCE_PKG_DIR ${CMAKE_SOURCE_DIR}/osxinstall)
 
 # Get revision number
@@ -22,9 +41,13 @@
 SET(PRODUCT_IDENTIFIER "com.mariadb.connector.odbc")
 
 IF(${revno})
-  SET(PKG_PACKAGE 
"mariadb-connector-odbc-${PRODUCT_VERSION}-r${revno}-osx-${PLATFORM}.pkg")
+  SET(PKG_PACKAGE 
"mariadb-connector-odbc-${PRODUCT_VERSION}-r${revno}-osx-${CMAKE_SYSTEM_PROCESSOR}.pkg")
 ELSE()
-  SET(PKG_PACKAGE 
"mariadb-connector-odbc-${PRODUCT_VERSION}-osx-${PLATFORM}.pkg")
+  IF(PACKAGE_PLATFORM_SUFFIX)
+    SET(PKG_PACKAGE 
"mariadb-connector-odbc-${PRODUCT_VERSION}-osx-${CMAKE_SYSTEM_PROCESSOR}-${PACKAGE_PLATFORM_SUFFIX}.pkg")
+  ELSE()
+    SET(PKG_PACKAGE 
"mariadb-connector-odbc-${PRODUCT_VERSION}-osx-${CMAKE_SYSTEM_PROCESSOR}.pkg")
+  ENDIF()
 ENDIF()
 
 MESSAGE(STATUS "PKG package file name ${PKG_PACKAGE}")
@@ -53,17 +76,23 @@
   ADD_CUSTOM_TARGET(copypkgfiles
                   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/copy_package_files.sh 
$<TARGET_FILE_DIR:maodbc>
                   DEPENDS maodbc install_driver
-                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+                  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 ELSE()
+  SET(GNUTLS_LIB "")
+  IF("${WITH_SSL}" STREQUAL "GNUTLS")
+    SET(GNUTLS_LIB "${GNUTLS_LIBRARY}")
+    MESSAGE(STATUS "Configuring to include gnutls library(${GNUTLS_LIB}) into 
the package")
+  ENDIF()
   ADD_CUSTOM_TARGET(copypkgfiles
-                  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/copy_package_files.sh 
$<TARGET_FILE_DIR:maodbc> $<TARGET_FILE_DIR:dialog>
-                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+                  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/copy_package_files.sh 
$<TARGET_FILE_DIR:maodbc> $<TARGET_FILE_DIR:dialog> ${GNUTLS_LIB}
+                  DEPENDS maodbc install_driver
+                  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 ENDIF()
 
 ADD_CUSTOM_TARGET(maodbcpkg
                   COMMAND ${CMAKE_CURRENT_BINARY_DIR}/build_package.sh 
${PRODUCT_IDENTIFIER} ${PRODUCT_VERSION} ${PKG_PACKAGE}
                   DEPENDS copypkgfiles 
${CMAKE_CURRENT_BINARY_DIR}/scripts/postinstall 
${CMAKE_CURRENT_BINARY_DIR}/distribution.plist README.html 
${CMAKE_CURRENT_BINARY_DIR}/WELCOME.html LICENSE.html
-                  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+                  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 
 SET_TARGET_PROPERTIES(maodbcpkg PROPERTIES EXCLUDE_FROM_ALL OFF)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/README.html 
new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/README.html
--- old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/README.html      
2020-04-07 22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/README.html      
2020-06-30 19:43:44.000000000 +0200
@@ -9,10 +9,12 @@
 </head>
 <body>
 <p>MariaDB Connector/ODBC files will be installed in 
/Library/MariaDB/MariaDB-Connector-ODBC.</p>
-<p>The connector requires the libraries for OpenSSL and iODBC to be installed. 
With homebrew they are easy to install:</p>
+<p><strong><font color="red">Warning:</font>The driver library requires latest 
versions of <a href="https://www.openssl.org/";>openssl</a> libraries</strong>, 
that are not available natively, and can be obtained with <a 
href="https://brew.sh/";>Homebrew</a></p>
+<p>Homebrew installation instructions can be found <a 
href="https://docs.brew.sh/Installation";>here</a>. The short version at the 
moment is to run the following command in the terminal:
+<div><strong>/bin/bash -c "$(curl -fsSL 
https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"</strong></div></p>
+<p>The command to install openssl is: <div><strong>brew install 
[email protected]</strong></div></p>
 <ul>
 <li>brew install openssl</li>
-<li>brew install libiodbc</li>
 </ul>
 </body>
 </html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/WELCOME.html.in 
new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/WELCOME.html.in
--- old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/WELCOME.html.in  
2020-04-07 22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/WELCOME.html.in  
2020-06-30 19:43:44.000000000 +0200
@@ -9,5 +9,9 @@
 </head>
 <body>
 <p>This is going to install MariaDB Connector/ODBC(Unicode) 
@PRODUCT_ARCH_BITS@bit version @PRODUCT_VERSION@ - a database driver that uses 
the industry standard Open Database Connectivity (ODBC) API.</p>
+<p><strong><font color="red">Warning: </font>The driver library requires the 
latest version of the <a href="https://www.openssl.org/";>openssl</a> 
libraries.</strong>These are not natively available in macOS, but can be 
obtained using <a href="https://brew.sh/";>Homebrew</a></p>
+<p>Homebrew installation instructions can be found <a 
href="https://docs.brew.sh/Installation";>here</a>. The short version at the 
moment is to run the following command in the terminal:
+<div><strong>/bin/bash -c "$(curl -fsSL 
https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"</strong></div></p>
+<p>The command to install openssl is: <div><strong>brew install 
[email protected]</strong></div></p>
 </body>
 </html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/copy_package_files.sh 
new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/copy_package_files.sh
--- old/mariadb-connector-odbc-3.1.7-ga-src/osxinstall/copy_package_files.sh    
2020-04-07 22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/osxinstall/copy_package_files.sh    
2020-06-30 19:43:44.000000000 +0200
@@ -20,6 +20,7 @@
 
 LibPath="Library/MariaDB/MariaDB-Connector-ODBC"
 
+set -e
 rm -rf ./ROOT
 
 mkdir -p ./ROOT/${LibPath}/bin
@@ -32,7 +33,16 @@
   cp $2/auth_gssapi_client.so ./ROOT/${LibPath}/plugin/
   cp $2/caching_sha2_password.so ./ROOT/${LibPath}/plugin/
   cp $2/mysql_clear_password.so ./ROOT/${LibPath}/plugin/
-  cp $2/sha256_password.so ./ROOT/${LibPath}/plugin/
   cp $2/client_ed25519.so ./ROOT/${LibPath}/plugin/
+  cp $2/sha256_password.so ./ROOT/${LibPath}/plugin/
 fi
 
+if [ $3 ]; then
+  if [ -L $3 ]; then
+    LibRealName=`readlink $3`
+    cp $3 ./ROOT/${LibPath}/${LibRealName}
+    cp -a $3 ./ROOT/${LibPath}/
+  else
+    cp $3 ./ROOT/${LibPath}/
+  fi
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mariadb-connector-odbc-3.1.7-ga-src/osxpostbuild.sh 
new/mariadb-connector-odbc-3.1.9-ga-src/osxpostbuild.sh
--- old/mariadb-connector-odbc-3.1.7-ga-src/osxpostbuild.sh     1970-01-01 
01:00:00.000000000 +0100
+++ new/mariadb-connector-odbc-3.1.9-ga-src/osxpostbuild.sh     2020-06-30 
19:43:44.000000000 +0200
@@ -0,0 +1,33 @@
+#!/bin/bash
+# 
************************************************************************************
+#   Copyright (C) 2020 MariaDB Corporation AB
+#   
+#   This library is free software; you can redistribute it and/or
+#   modify it under the terms of the GNU Library General Public
+#   License as published by the Free Software Foundation; either
+#   version 2.1 of the License, or (at your option) any later version.
+#   
+#   This library is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#   Library General Public License for more details.
+#   
+#   You should have received a copy of the GNU Library General Public
+#   License along with this library; if not see <http://www.gnu.org/licenses>
+#   or write to the Free Software Foundation, Inc., 
+#   51 Franklin St., Fifth Floor, Boston, MA 02110, USA
+# 
*************************************************************************************/
+
+set -x
+echo $1
+LinkedLibName=`otool -L $1 | grep -i iodbcinst | sed 's/       //' | sed 's/ 
[(].*$//'`
+install_name_tool -change $LinkedLibName @rpath/libiodbcinst.dylib $1
+LinkedLibName=`otool -L $1 | grep -i libgnutls | sed 's/       //' | sed 's/ 
[(].*$//'`
+if [ $LinkedLibName ] ; then
+  LinkedLibFileName=`echo $LinkedLibName | sed 's/.*[/]//'`
+  install_name_tool -change $LinkedLibName @rpath/$LinkedLibFileName $1
+fi
+
+#LinkedLibName=`otool -L $1 | grep -i libcrypto | sed 's/      //' | sed 's/ 
[(].*$//'`
+#install_name_tool -change $LinkedLibName @rpath/libcrypto.1.1.dylib $1
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/mariadb-connector-odbc-3.1.7-ga-src/wininstall/CMakeLists.txt 
new/mariadb-connector-odbc-3.1.9-ga-src/wininstall/CMakeLists.txt
--- old/mariadb-connector-odbc-3.1.7-ga-src/wininstall/CMakeLists.txt   
2020-04-07 22:32:37.000000000 +0200
+++ new/mariadb-connector-odbc-3.1.9-ga-src/wininstall/CMakeLists.txt   
2020-06-30 19:43:44.000000000 +0200
@@ -56,7 +56,7 @@
 ENDIF()
 
 ADD_EXECUTABLE(change_dsns_driver change_dsns_driver.c 
${CMAKE_SOURCE_DIR}/ma_dsn.c ${CMAKE_SOURCE_DIR}/ma_platform_win32.c 
${CMAKE_SOURCE_DIR}/ma_common.c)
-TARGET_LINK_LIBRARIES(change_dsns_driver ${ODBC_LIBS} ${ODBC_INSTLIBS} 
legacy_stdio_definitions Shlwapi)
+TARGET_LINK_LIBRARIES(change_dsns_driver ${ODBC_LIBS} ${ODBC_INSTLIBS} 
legacy_stdio_definitions Shlwapi Pathcch)
 
 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/wininstall/mariadb_odbc.xml.in
                ${CMAKE_BINARY_DIR}/wininstall/mariadb_odbc.xml)

++++++ nosoname.patch ++++++
--- /var/tmp/diff_new_pack.eNuWqj/_old  2020-09-25 16:31:19.799879501 +0200
+++ /var/tmp/diff_new_pack.eNuWqj/_new  2020-09-25 16:31:19.803879504 +0200
@@ -1,8 +1,8 @@
-Index: mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
+Index: mariadb-connector-odbc-3.1.9-ga-src/CMakeLists.txt
 ===================================================================
---- mariadb-connector-odbc-3.1.1-ga-src.orig/CMakeLists.txt
-+++ mariadb-connector-odbc-3.1.1-ga-src/CMakeLists.txt
-@@ -281,7 +281,7 @@ IF(WIN32)
+--- mariadb-connector-odbc-3.1.9-ga-src.orig/CMakeLists.txt
++++ mariadb-connector-odbc-3.1.9-ga-src/CMakeLists.txt
+@@ -312,7 +312,7 @@ IF(WIN32)
    ADD_LIBRARY(${LIBRARY_NAME} SHARED ${MARIADB_ODBC_SOURCES} 
${CMAKE_SOURCE_DIR}/mariadb-odbc-driver-uni.def maodbcu.rc)
  ELSE()
    MESSAGE(STATUS "Version script: ${CMAKE_SOURCE_DIR}/maodbc.def")
@@ -10,4 +10,4 @@
 +  ADD_LIBRARY(${LIBRARY_NAME} MODULE ${MARIADB_ODBC_SOURCES} maodbcu.rc)
    
    IF(APPLE)
-     SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-Wl")
+     SET(MAODBC_INSTALL_RPATH "${ODBC_LIB_DIR}" "@loader_path" 
"/usr/local/opt/libiodbc" "/usr/local/iODBC/lib" 
"/usr/local/opt/[email protected]/lib" "/usr/local/opt/libressl/lib")

++++++ wrong_types.patch ++++++
Index: mariadb-connector-odbc-3.1.9-ga-src/ma_error.c
===================================================================
--- mariadb-connector-odbc-3.1.9-ga-src.orig/ma_error.c
+++ mariadb-connector-odbc-3.1.9-ga-src/ma_error.c
@@ -144,7 +144,7 @@ MADB_ERROR MADB_ErrorList[] =
   { "S1000", "", "General error", SQL_ERROR},
   { "S1107", "", "Row value out of range", SQL_ERROR},
   { "S1C00", "", "Optional feature not implemented", SQL_ERROR},
-  { 0,0,0, -1}
+  { "", "", "", -1}
 };
 /* }}} */
 

Reply via email to