summaryrefslogtreecommitdiff
path: root/dev-db/myodbc/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-db/myodbc/files
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-db/myodbc/files')
-rw-r--r--dev-db/myodbc/files/5.2.7-mariadb-dynamic-array.patch79
-rw-r--r--dev-db/myodbc/files/5.2.7-my_malloc.patch18
-rw-r--r--dev-db/myodbc/files/5.2.7-r1-cxxlinkage.patch40
-rw-r--r--dev-db/myodbc/files/5.3-cmake-doc-path.patch43
-rw-r--r--dev-db/myodbc/files/5.3-cxxlinkage.patch43
-rw-r--r--dev-db/myodbc/files/5.3-mariadb-buffer_length.patch93
-rw-r--r--dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch96
-rw-r--r--dev-db/myodbc/files/cmake-doc-path.patch43
-rw-r--r--dev-db/myodbc/files/odbc.ini.m417
-rw-r--r--dev-db/myodbc/files/odbcinst.ini.m45
10 files changed, 477 insertions, 0 deletions
diff --git a/dev-db/myodbc/files/5.2.7-mariadb-dynamic-array.patch b/dev-db/myodbc/files/5.2.7-mariadb-dynamic-array.patch
new file mode 100644
index 000000000000..6cfe7cd274b3
--- /dev/null
+++ b/dev-db/myodbc/files/5.2.7-mariadb-dynamic-array.patch
@@ -0,0 +1,79 @@
+diff -aurN a/driver/catalog_no_i_s.c b/driver/catalog_no_i_s.c
+--- a/driver/catalog_no_i_s.c 2014-06-18 18:50:16.000000000 -0400
++++ b/driver/catalog_no_i_s.c 2014-08-20 14:08:33.997339096 -0400
+@@ -1093,7 +1093,11 @@
+ unsigned long *lengths;
+ SQLRETURN rc= SQL_SUCCESS;
+
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ my_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0, MYF(0));
++#else
+ my_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0);
++#endif
+
+ /* Get the list of tables that match szCatalog and szTable */
+ pthread_mutex_lock(&stmt->dbc->lock);
+diff -aurN a/driver/desc.c b/driver/desc.c
+--- a/driver/desc.c 2014-06-18 18:50:16.000000000 -0400
++++ b/driver/desc.c 2014-08-20 14:07:37.409169269 -0400
+@@ -63,8 +63,12 @@
+ but in desc_get_rec we manually get a pointer to it. This avoids
+ having to call set_dynamic after modifying the DESCREC.
+ */
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ if (my_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0, MYF(0)))
++#else
+ if (my_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0))
++#endif
+ {
+ x_free((char *)desc);
+ return NULL;
+ }
+@@ -995,9 +1003,15 @@
+
+ /* copy the records */
+ delete_dynamic(&dest->records);
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ if (my_init_dynamic_array(&dest->records, sizeof(DESCREC),
++ src->records.max_element,
++ src->records.alloc_increment, MYF(0)))
++#else
+ if (my_init_dynamic_array(&dest->records, sizeof(DESCREC),
+ src->records.max_element,
+ src->records.alloc_increment))
++#endif
+ {
+ return set_desc_error(dest, "HY001",
+ "Memory allocation error",
+diff -aurN a/driver/handle.c b/driver/handle.c
+--- a/driver/handle.c 2014-06-18 18:50:16.000000000 -0400
++++ b/driver/handle.c 2014-08-20 14:05:00.364248403 -0400
+@@ -403,7 +403,11 @@
+ }
+ }
+
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ my_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10, MYF(0));
++#else
+ my_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10);
++#endif
+ memset((*param_bind)->buffer, 0, sizeof(MYSQL_BIND) *
+ (*param_bind)->max_element);
+
+diff -aurN a/driver/parse.c b/driver/parse.c
+--- a/driver/parse.c 2014-06-18 18:50:16.000000000 -0400
++++ b/driver/parse.c 2014-08-20 14:03:54.336383876 -0400
+@@ -129,8 +129,13 @@
+
+ /* TODO: Store offsets rather than ptrs. In this case we will be fine
+ if work with copy of the originally parsed string */
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ my_init_dynamic_array(&pq->token, sizeof(uint), 20, 10, MYF(0));
++ my_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10, MYF(0));
++#else
+ my_init_dynamic_array(&pq->token, sizeof(uint), 20, 10);
+ my_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10);
++#endif
+ }
+
+ return pq;
diff --git a/dev-db/myodbc/files/5.2.7-my_malloc.patch b/dev-db/myodbc/files/5.2.7-my_malloc.patch
new file mode 100644
index 000000000000..bc6c65ef3011
--- /dev/null
+++ b/dev-db/myodbc/files/5.2.7-my_malloc.patch
@@ -0,0 +1,18 @@
+diff -Brau a/util/odbcinstw.c b/util/odbcinstw.c
+--- a/util/odbcinstw.c 2014-04-23 21:54:40.000000000 +0200
++++ b/util/odbcinstw.c 2015-05-08 15:29:09.400568356 +0200
+@@ -68,13 +68,7 @@
+
+ if (lpszRetBuffer && cbRetBuffer)
+ {
+- ret= malloc(cbRetBuffer + 1);
+- /*
+- We cannot rely on getting correct results from the next call of
+- SQLGetPrivateProfileString. So, taking precautions against unititialized
+- values in the allocated buffer.
+- */
+- memset(ret, 0, cbRetBuffer + 1);
++ ret= my_malloc(cbRetBuffer + 1, MYF(MY_ZEROFILL));
+ }
+ else
+ ret= NULL;
diff --git a/dev-db/myodbc/files/5.2.7-r1-cxxlinkage.patch b/dev-db/myodbc/files/5.2.7-r1-cxxlinkage.patch
new file mode 100644
index 000000000000..2bdb4a581c89
--- /dev/null
+++ b/dev-db/myodbc/files/5.2.7-r1-cxxlinkage.patch
@@ -0,0 +1,40 @@
+diff -uarN a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake
+--- a/cmake/FindMySQL.cmake 2014-06-18 18:50:16.000000000 -0400
++++ b/cmake/FindMySQL.cmake 2014-08-20 10:05:00.191485304 -0400
+@@ -105,16 +105,16 @@
+ # Finally remove the dot
+ STRING(REGEX REPLACE "[.]" "" MYSQL_NUM_VERSION "${MYSQL_NUM_VERSION}")
+
+- IF(MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION GREATER 50603)
++ IF(MYSQL_CXX_LINKAGE)
+ EXECUTE_PROCESS(COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--cxxflags"
+ OUTPUT_VARIABLE _mysql_config_output
+ )
+ SET(MYSQL_CXX_LINKAGE 1)
+- ELSE (MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION GREATER 50603)
++ ELSE (MYSQL_CXX_LINKAGE)
+ EXECUTE_PROCESS(COMMAND ${MYSQL_CONFIG_EXECUTABLE} "--cflags"
+ OUTPUT_VARIABLE _mysql_config_output
+ )
+- ENDIF(MYSQL_CXX_LINKAGE OR MYSQL_NUM_VERSION GREATER 50603)
++ ENDIF(MYSQL_CXX_LINKAGE)
+
+ # Remove the stl4port dependency
+ STRING(REGEX REPLACE "-library=stlport4" "" _mysql_config_output "${_mysql_config_output}")
+diff -aurN mysql-connector-odbc-5.2.7-src.orig/CMakeLists.txt mysql-connector-odbc-5.2.7-src/CMakeLists.txt
+--- a/CMakeLists.txt 2014-08-27 13:51:27.050553560 -0400
++++ b/CMakeLists.txt 2014-08-27 13:55:41.702359680 -0400
+@@ -256,10 +256,9 @@
+ SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin")
+ SET(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib")
+
+-SET(LIB_SUBDIR "lib")
+-IF(RPM_BUILD AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|ppc64|ppc64p7|s390x|sparc64)")
+- SET(LIB_SUBDIR "lib64")
+-ENDIF()
++IF(NOT LIB_SUBDIR)
++ MESSAGE(ERROR "LIB_SUBDIR is not set")
++ENDIF(NOT LIB_SUBDIR)
+ MESSAGE(STATUS "Installation library subdir: ${LIB_SUBDIR}")
+
+ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
diff --git a/dev-db/myodbc/files/5.3-cmake-doc-path.patch b/dev-db/myodbc/files/5.3-cmake-doc-path.patch
new file mode 100644
index 000000000000..54f35d41d96a
--- /dev/null
+++ b/dev-db/myodbc/files/5.3-cmake-doc-path.patch
@@ -0,0 +1,43 @@
+=== modified file 'CMakeLists.txt'
+--- a/CMakeLists.txt 2013-03-09 09:51:06 +0000
++++ b/CMakeLists.txt 2013-03-09 11:05:27 +0000
+@@ -33,6 +33,12 @@
+
+ INCLUDE(version.cmake)
+
++IF(WITH_DOCUMENTATION_INSTALL_PATH)
++ set(DOCUMENTATION_INSTALL_PATH ${WITH_DOCUMENTATION_INSTALL_PATH})
++ELSE(WITH_DOCUMENTATION_INSTALL_PATH)
++ set(DOCUMENTATION_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/share/doc/myodbc-${CONNECTOR_MAJOR}.${CONNECTOR_MINOR})
++ENDIF(WITH_DOCUMENTATION_INSTALL_PATH)
++
+ #Default is to build both drivers
+ IF(UNICODE OR NOT ANSI)
+ MESSAGE(STATUS "Configuring to build Unicode driver")
+@@ -329,19 +335,17 @@
+
+ ELSE(WIN32)
+
+- INSTALL(FILES ChangeLog DESTINATION .)
+- INSTALL(FILES README DESTINATION .)
+- INSTALL(FILES README.debug DESTINATION .)
+- INSTALL(FILES INSTALL DESTINATION .)
++ INSTALL(FILES ChangeLog DESTINATION ${DOCUMENTATION_INSTALL_PATH})
++ INSTALL(FILES README DESTINATION ${DOCUMENTATION_INSTALL_PATH})
++ INSTALL(FILES README.debug DESTINATION ${DOCUMENTATION_INSTALL_PATH})
++ INSTALL(FILES INSTALL DESTINATION ${DOCUMENTATION_INSTALL_PATH})
+ IF(EXISTS "${CMAKE_SOURCE_DIR}/COPYING")
+- INSTALL(FILES COPYING DESTINATION .)
+ ELSE()
+- INSTALL(FILES LICENSE.mysql DESTINATION .)
+ ENDIF()
+
+ ENDIF(WIN32)
+
+-INSTALL(FILES Licenses_for_Third-Party_Components.txt DESTINATION .)
++INSTALL(FILES Licenses_for_Third-Party_Components.txt DESTINATION ${DOCUMENTATION_INSTALL_PATH})
+
+ INCLUDE(CPack)
+
+
+
diff --git a/dev-db/myodbc/files/5.3-cxxlinkage.patch b/dev-db/myodbc/files/5.3-cxxlinkage.patch
new file mode 100644
index 000000000000..319262c81ca3
--- /dev/null
+++ b/dev-db/myodbc/files/5.3-cxxlinkage.patch
@@ -0,0 +1,43 @@
+diff -aurN a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake
+--- a/cmake/FindMySQL.cmake 2016-11-29 07:40:13.000000000 -0500
++++ b/cmake/FindMySQL.cmake 2017-02-17 13:59:18.115389096 -0500
+@@ -747,7 +747,7 @@
+ endif()
+
+ if(NOT MYSQL_CXXFLAGS)
+- if(MYSQL_CXX_LINKAGE OR MYSQL_VERSION_ID GREATER 50603)
++ if(MYSQL_CXX_LINKAGE)
+ _mysql_conf(MYSQL_CXXFLAGS "--cxxflags")
+ set(MYSQL_CXX_LINKAGE 1)
+ else()
+diff -aurN a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2017-02-17 13:50:43.556006202 -0500
++++ b/CMakeLists.txt 2017-02-17 13:57:15.745676184 -0500
+@@ -242,10 +242,9 @@
+ SET(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin")
+ SET(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib")
+
+-SET(LIB_SUBDIR "lib")
+-IF(RPM_BUILD AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|ppc64|ppc64p7|s390x|sparc64)")
+- SET(LIB_SUBDIR "lib64")
+-ENDIF()
++IF(NOT LIB_SUBDIR)
++ MESSAGE(ERROR "LIB_SUBDIR is not set")
++ENDIF(NOT LIB_SUBDIR)
+
+ MESSAGE(STATUS "Installation library subdir: ${LIB_SUBDIR}")
+
+diff -aurN a/cmake/FindMySQL.cmake b/cmake/FindMySQL.cmake
+--- a/cmake/FindMySQL.cmake 2017-02-17 14:44:29.532733308 -0500
++++ b/cmake/FindMySQL.cmake 2017-02-17 14:48:56.756740330 -0500
+@@ -270,8 +270,8 @@
+ set(_static_lib_ext ".lib") # Careful, can be import library for DLL
+ elseif(MYSQLCLIENT_NO_THREADS)
+ # In 5.1 and below there is a single threaded library
+- set(_dynamic_libs "mysqlclient")
+- set(_static_libs "libmysqlclient.a")
++ set(_dynamic_libs "${MYSQLCLIENT_LIB_NAME}")
++ set(_static_libs "lib${MYSQLCLIENT_LIB_NAME}.a")
+ set(_static_lib_ext ".a")
+ else()
+ # We try the multithreaded "libmysqlclient_r" first and if not
diff --git a/dev-db/myodbc/files/5.3-mariadb-buffer_length.patch b/dev-db/myodbc/files/5.3-mariadb-buffer_length.patch
new file mode 100644
index 000000000000..1be9cc466b65
--- /dev/null
+++ b/dev-db/myodbc/files/5.3-mariadb-buffer_length.patch
@@ -0,0 +1,93 @@
+diff -aurN a/driver/connect.c b/driver/connect.c
+--- a/driver/connect.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/connect.c 2017-02-17 16:14:48.116640371 -0500
+@@ -510,11 +510,11 @@
+ }
+ }
+
+-#if MYSQL_VERSION_ID >= 50709
+- mysql_get_option(mysql, MYSQL_OPT_NET_BUFFER_LENGTH, &dbc->net_buffer_length);
++#if MYSQL_VERSION_ID >= 50709 && !defined(MARIADB_BASE_VERSION)
++ mysql_get_option(mysql, MYSQL_OPT_NET_BUFFER_LENGTH, &dbc->net_buffer_length_value);
+ #else
+ // for older versions just use net_buffer_length() macro
+- dbc->net_buffer_length = net_buffer_length;
++ dbc->net_buffer_length_value = net_buffer_length;
+ #endif
+ return rc;
+
+diff -aurN a/driver/cursor.c b/driver/cursor.c
+--- a/driver/cursor.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/cursor.c 2017-02-17 16:13:19.163299885 -0500
+@@ -1485,7 +1485,7 @@
+ We have a limited capacity to shove data across the wire, but
+ we handle this by sending in multiple calls to exec_stmt_query()
+ */
+- if (ext_query->length + length >= (SQLULEN) stmt->dbc->net_buffer_length)
++ if (ext_query->length + length >= (SQLULEN) stmt->dbc->net_buffer_length_value)
+ {
+ break_insert= TRUE;
+ break;
+diff -aurN a/driver/driver.h b/driver/driver.h
+--- a/driver/driver.h 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/driver.h 2017-02-17 16:10:57.072950723 -0500
+@@ -378,7 +378,7 @@
+ int txn_isolation;
+ uint port;
+ uint cursor_count;
+- ulong net_buffer_length;
++ ulong net_buffer_length_value;
+ uint commit_flag;
+ #ifdef THREAD
+ myodbc_mutex_t lock;
+diff -aurN a/driver/info.c b/driver/info.c
+--- a/driver/info.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/info.c 2017-02-17 16:12:54.315763441 -0500
+@@ -587,7 +587,7 @@
+ MYINFO_SET_USHORT(0);
+
+ case SQL_MAX_STATEMENT_LEN:
+- MYINFO_SET_ULONG(dbc->net_buffer_length);
++ MYINFO_SET_ULONG(dbc->net_buffer_length_value);
+
+ case SQL_MAX_TABLE_NAME_LEN:
+ MYINFO_SET_USHORT(NAME_LEN);
+diff -aurN a/driver/connect.c b/driver/connect.c
+--- a/driver/connect.c 2017-02-17 16:16:14.609026769 -0500
++++ b/driver/connect.c 2017-02-17 16:34:29.637592664 -0500
+@@ -179,7 +179,7 @@
+ /* Set other connection options */
+
+ if (ds->allow_big_results || ds->safe)
+-#if MYSQL_VERSION_ID >= 50709
++#if MYSQL_VERSION_ID >= 50709 && !defined(MARIADB_BASE_VERSION)
+ mysql_options(mysql, MYSQL_OPT_MAX_ALLOWED_PACKET, &max_long);
+ #else
+ /* max_allowed_packet is a magical mysql macro. */
+@@ -252,7 +252,7 @@
+ ds_get_utf8attr(ds->rsakey, &ds->rsakey8));
+ }
+
+-#if MYSQL_VERSION_ID >= 50710
++#if MYSQL_VERSION_ID >= 50710 && !defined(MARIADB_BASE_VERSION)
+ {
+ char tls_options[128] = { 0 };
+ if (!ds->no_tls_1)
+@@ -323,7 +323,7 @@
+ #endif
+
+ mysql->options.use_ssl = !ds->disable_ssl_default;
+-#if MYSQL_VERSION_ID >= 50703
++#if MYSQL_VERSION_ID >= 50703 && !defined(MARIADB_BASE_VERSION)
+ {
+ if (ds->ssl_enforce)
+ {
+@@ -332,7 +332,7 @@
+ }
+ #endif
+
+-#if MYSQL_VERSION_ID >= 50711
++#if MYSQL_VERSION_ID >= 50711 && !defined(MARIADB_BASE_VERSION)
+ if (ds->sslmode)
+ {
+ unsigned int mode = 0;
diff --git a/dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch b/dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch
new file mode 100644
index 000000000000..96720618a586
--- /dev/null
+++ b/dev-db/myodbc/files/5.3-mariadb-dynamic-array.patch
@@ -0,0 +1,96 @@
+diff -aurN a/driver/catalog_no_i_s.c b/driver/catalog_no_i_s.c
+--- a/driver/catalog_no_i_s.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/catalog_no_i_s.c 2017-02-17 14:07:03.979683613 -0500
+@@ -1093,7 +1093,11 @@
+ unsigned long *lengths;
+ SQLRETURN rc= SQL_SUCCESS;
+
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ myodbc_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0, MYF(0));
++#else
+ myodbc_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0);
++#endif
+
+ /* Get the list of tables that match szCatalog and szTable */
+ myodbc_mutex_lock(&stmt->dbc->lock);
+diff -aurN a/driver/desc.c b/driver/desc.c
+--- a/driver/desc.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/desc.c 2017-02-17 14:09:30.139954232 -0500
+@@ -63,13 +63,21 @@
+ but in desc_get_rec we manually get a pointer to it. This avoids
+ having to call set_dynamic after modifying the DESCREC.
+ */
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ if (myodbc_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0, MYF(0)))
++#else
+ if (myodbc_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0))
++#endif
+ {
+ x_free((char *)desc);
+ return NULL;
+ }
+
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ if (myodbc_init_dynamic_array(&desc->bookmark, sizeof(DESCREC), 0, 0, MYF(0)))
++#else
+ if (myodbc_init_dynamic_array(&desc->bookmark, sizeof(DESCREC), 0, 0))
++#endif
+ {
+ delete_dynamic(&desc->records);
+ x_free((char *)desc);
+@@ -997,7 +1005,11 @@
+ delete_dynamic(&dest->records);
+ if (myodbc_init_dynamic_array(&dest->records, sizeof(DESCREC),
+ src->records.max_element,
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ src->records.alloc_increment, MYF(0)))
++#else
+ src->records.alloc_increment))
++#endif
+ {
+ return set_desc_error(dest, "HY001",
+ "Memory allocation error",
+diff -aurN a/driver/handle.c b/driver/handle.c
+--- a/driver/handle.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/handle.c 2017-02-17 14:10:32.078797593 -0500
+@@ -409,7 +409,11 @@
+ }
+ }
+
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ myodbc_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10, MYF(0));
++#else
+ myodbc_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10);
++#endif
+ memset((*param_bind)->buffer, 0, sizeof(MYSQL_BIND) *
+ (*param_bind)->max_element);
+
+diff -aurN a/driver/parse.c b/driver/parse.c
+--- a/driver/parse.c 2016-11-29 07:40:13.000000000 -0500
++++ b/driver/parse.c 2017-02-17 14:12:00.638143846 -0500
+@@ -139,8 +139,13 @@
+
+ /* TODO: Store offsets rather than ptrs. In this case we will be fine
+ if work with copy of the originally parsed string */
++#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID > 100001
++ myodbc_init_dynamic_array(&pq->token, sizeof(uint), 20, 10, MYF(0));
++ myodbc_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10, MYF(0));
++#else
+ myodbc_init_dynamic_array(&pq->token, sizeof(uint), 20, 10);
+ myodbc_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10);
++#endif
+ }
+
+ return pq;
+diff -aurN a/MYODBC_MYSQL.h b/MYODBC_MYSQL.h
+--- a/MYODBC_MYSQL.h 2016-11-29 07:40:13.000000000 -0500
++++ b/MYODBC_MYSQL.h 2017-02-17 15:04:47.153994839 -0500
+@@ -44,7 +44,7 @@
+ #endif
+
+ #ifdef THREAD
+-#if MYSQL_VERSION_ID < 50703
++#if MYSQL_VERSION_ID < 50703 || defined(MARIADB_BASE_VERSION)
+ #include <my_pthread.h>
+ #define myodbc_mutex_t pthread_mutex_t
+ #define myodbc_key_t pthread_key_t
diff --git a/dev-db/myodbc/files/cmake-doc-path.patch b/dev-db/myodbc/files/cmake-doc-path.patch
new file mode 100644
index 000000000000..c7f7d9d37ce7
--- /dev/null
+++ b/dev-db/myodbc/files/cmake-doc-path.patch
@@ -0,0 +1,43 @@
+=== modified file 'CMakeLists.txt'
+--- CMakeLists.txt 2013-03-09 09:51:06 +0000
++++ CMakeLists.txt 2013-03-09 11:05:27 +0000
+@@ -33,6 +33,12 @@
+ SET(CONNECTOR_MAJOR "5")
+ SET(CONNECTOR_MINOR "2")
+
++IF(WITH_DOCUMENTATION_INSTALL_PATH)
++ set(DOCUMENTATION_INSTALL_PATH ${WITH_DOCUMENTATION_INSTALL_PATH})
++ELSE(WITH_DOCUMENTATION_INSTALL_PATH)
++ set(DOCUMENTATION_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/share/doc/myodbc-${CONNECTOR_MAJOR}.${CONNECTOR_MINOR})
++ENDIF(WITH_DOCUMENTATION_INSTALL_PATH)
++
+ IF(CONNECTOR_MINOR LESS 10)
+ SET(CONNECTOR_MINOR_PADDED "0${CONNECTOR_MINOR}")
+ ELSE(CONNECTOR_MINOR LESS 10)
+@@ -329,19 +335,17 @@
+
+ ELSE(WIN32)
+
+- INSTALL(FILES ChangeLog DESTINATION .)
+- INSTALL(FILES README DESTINATION .)
+- INSTALL(FILES README.debug DESTINATION .)
+- INSTALL(FILES INSTALL DESTINATION .)
++ INSTALL(FILES ChangeLog DESTINATION ${DOCUMENTATION_INSTALL_PATH})
++ INSTALL(FILES README DESTINATION ${DOCUMENTATION_INSTALL_PATH})
++ INSTALL(FILES README.debug DESTINATION ${DOCUMENTATION_INSTALL_PATH})
++ INSTALL(FILES INSTALL DESTINATION ${DOCUMENTATION_INSTALL_PATH})
+ IF(EXISTS "${CMAKE_SOURCE_DIR}/COPYING")
+- INSTALL(FILES COPYING DESTINATION .)
+ ELSE()
+- INSTALL(FILES LICENSE.mysql DESTINATION .)
+ ENDIF()
+
+ ENDIF(WIN32)
+
+-INSTALL(FILES Licenses_for_Third-Party_Components.txt DESTINATION .)
++INSTALL(FILES Licenses_for_Third-Party_Components.txt DESTINATION ${DOCUMENTATION_INSTALL_PATH})
+
+ INCLUDE(CPack)
+
+
+
diff --git a/dev-db/myodbc/files/odbc.ini.m4 b/dev-db/myodbc/files/odbc.ini.m4
new file mode 100644
index 000000000000..4255730a3e21
--- /dev/null
+++ b/dev-db/myodbc/files/odbc.ini.m4
@@ -0,0 +1,17 @@
+# vim:ts=4 noexpandtab ft=dosini:
+#
+[ODBC Data Sources]
+__PN__-test = MySQL ODBC __PF__ Driver Testing DSN
+
+# see http://www.mysql.com/products/myodbc/faq_toc.html
+# for details about the following entry
+[__PN__-test]
+Description = MySQL ODBC __PF__ Driver Testing DSN
+Driver = __PN__
+Socket = /var/run/mysqld/mysqld.sock
+Server = localhost
+User = root
+Database = test
+Option = 3
+#Port =
+#Password =
diff --git a/dev-db/myodbc/files/odbcinst.ini.m4 b/dev-db/myodbc/files/odbcinst.ini.m4
new file mode 100644
index 000000000000..744503c5ac05
--- /dev/null
+++ b/dev-db/myodbc/files/odbcinst.ini.m4
@@ -0,0 +1,5 @@
+# vim:ts=4 noexpandtab ft=dosini:
+#
+[__PN__]
+Description = MySQL ODBC __PF__ Driver
+Driver = /usr/lib/libmyodbc3.so