databases/mysql-connector-odbc: build and interoperate with mariadb-10

PR:		198925
Submitted by:	Pavel Timofeev <timp87@gmail.com>
Approved by:	sergey@network-asp.biz (maintainer timeout)
This commit is contained in:
Kurt Jaeger 2015-08-31 10:43:30 +00:00
parent 39297aa2d9
commit 3a4b2353ed
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=395662
7 changed files with 95 additions and 23 deletions

View file

@ -3,6 +3,7 @@
PORTNAME= mysql-connector-odbc
PORTVERSION= 5.3.4
PORTREVISION= 1
CATEGORIES= databases
MASTER_SITES= MYSQL/Connector-ODBC/5.3
PKGNAMESUFFIX= -${DRIVER_MANAGER}-mysql${MYSQL_VER}
@ -18,7 +19,7 @@ USE_LDCONFIG= yes
USE_MYSQL= yes
USES= cmake
IGNORE_WITH_MYSQL= 55 51
IGNORE_WITH_MYSQL= 55 55m 55p 51 51m 51p
CMAKE_ARGS= -DWITH_UNIXODBC=1
LDFLAGS+= -L${LOCALBASE}/lib

View file

@ -1,22 +0,0 @@
--- driver/execute.c.orig 2014-11-05 14:41:16.000000000 +0300
+++ driver/execute.c 2014-11-05 14:44:10.000000000 +0300
@@ -563,11 +563,19 @@
*res= buff;
break;
case SQL_C_SBIGINT:
+#ifdef MARIADB_BASE_VERSION
+ *length= longlong2str(*((longlong*) *res), buff, -10, 1) - buff;
+#else
*length= longlong2str(*((longlong*) *res), buff, -10) - buff;
+#endif
*res= buff;
break;
case SQL_C_UBIGINT:
+#ifdef MARIADB_BASE_VERSION
+ *length= longlong2str(*((ulonglong*) *res), buff, 10, 1) - buff;
+#else
*length= longlong2str(*((ulonglong*) *res), buff, 10) - buff;
+#endif
*res= buff;
break;
case SQL_C_FLOAT:

View file

@ -0,0 +1,14 @@
--- driver/catalog_no_i_s.c.orig 2014-06-19 02:50:16.000000000 +0400
+++ driver/catalog_no_i_s.c 2015-03-26 12:31:13.356945009 +0300
@@ -1093,7 +1093,11 @@
unsigned long *lengths;
SQLRETURN rc= SQL_SUCCESS;
+#ifdef MARIADB_BASE_VERSION
+ my_init_dynamic_array(&records, sizeof(MY_FOREIGN_KEY_FIELD), 0, 0, 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);

View file

@ -0,0 +1,37 @@
--- driver/desc.c.orig 2014-06-19 02:50:16.000000000 +0400
+++ driver/desc.c 2015-03-26 12:34:50.610931661 +0300
@@ -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.
*/
+#ifdef MARIADB_BASE_VERSION
+ if (my_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0, 0))
+#else
if (my_init_dynamic_array(&desc->records, sizeof(DESCREC), 0, 0))
+#endif
{
x_free((char *)desc);
return NULL;
}
+#ifdef MARIADB_BASE_VERSION
+ if (my_init_dynamic_array(&desc->bookmark, sizeof(DESCREC), 0, 0, 0))
+#else
if (my_init_dynamic_array(&desc->bookmark, sizeof(DESCREC), 0, 0))
+#endif
{
delete_dynamic(&desc->records);
x_free((char *)desc);
@@ -997,7 +1005,12 @@
delete_dynamic(&dest->records);
if (my_init_dynamic_array(&dest->records, sizeof(DESCREC),
src->records.max_element,
+#ifdef MARIADB_BASE_VERSION
+ src->records.alloc_increment,
+ 0))
+#else
src->records.alloc_increment))
+#endif
{
return set_desc_error(dest, "HY001",
"Memory allocation error",

View file

@ -0,0 +1,14 @@
--- driver/handle.c.orig 2014-06-19 02:50:16.000000000 +0400
+++ driver/handle.c 2015-03-26 12:36:14.548929818 +0300
@@ -403,7 +403,11 @@
}
}
+#ifdef MARIADB_BASE_VERSION
+ my_init_dynamic_array(*param_bind, sizeof(MYSQL_BIND), elements, 10, 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);

View file

@ -0,0 +1,16 @@
--- driver/parse.c.orig 2014-06-19 02:50:16.000000000 +0400
+++ driver/parse.c 2015-03-26 12:37:12.112907082 +0300
@@ -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 */
+#ifdef MARIADB_BASE_VERSION
+ my_init_dynamic_array(&pq->token, sizeof(uint), 20, 10, 0);
+ my_init_dynamic_array(&pq->param_pos, sizeof(uint), 10, 10, 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;

View file

@ -0,0 +1,12 @@
--- util/odbcinstw.c.orig 2015-03-26 15:10:03.189270855 +0300
+++ util/odbcinstw.c 2015-03-26 15:10:43.503271192 +0300
@@ -105,7 +105,8 @@
x_free(section);
x_free(entry);
x_free(def);
- x_free(ret);
+ if (ret)
+ free(ret);
x_free(filename);
return rc;