Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2:Update
MyODBC-unixODBC
MyODBC-unixODBC-is_minimum_version.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File MyODBC-unixODBC-is_minimum_version.patch of Package MyODBC-unixODBC
Index: mysql-connector-odbc-5.1.8/driver/catalog.c =================================================================== --- mysql-connector-odbc-5.1.8.orig/driver/catalog.c +++ mysql-connector-odbc-5.1.8/driver/catalog.c @@ -42,7 +42,7 @@ my_bool server_has_i_s(DBC FAR *dbc) According to the server ChangeLog INFORMATION_SCHEMA was introduced in the 5.0.2 */ - return is_minimum_version(dbc->mysql.server_version, "5.0.2", 5); + return is_minimum_version(dbc->mysql.server_version, "5.0.2"); } /* @type : internal @@ -861,7 +861,7 @@ SQLRETURN i_s_foreign_keys(SQLHSTMT hstm /* With 5.1, we can use REFERENTIAL_CONSTRAINTS to get even more info. */ - if (is_minimum_version(stmt->dbc->mysql.server_version, "5.1", 3)) + if (is_minimum_version(stmt->dbc->mysql.server_version, "5.1")) { update_rule= "CASE" " WHEN R.UPDATE_RULE = 'CASCADE' THEN 0" Index: mysql-connector-odbc-5.1.8/driver/connect.c =================================================================== --- mysql-connector-odbc-5.1.8.orig/driver/connect.c +++ mysql-connector-odbc-5.1.8/driver/connect.c @@ -243,7 +243,7 @@ SQLRETURN myodbc_do_connect(DBC *dbc, Da return SQL_ERROR; } - if (!is_minimum_version(dbc->mysql.server_version, "4.1.1", 5)) + if (!is_minimum_version(dbc->mysql.server_version, "4.1.1")) { mysql_close(mysql); set_dbc_error(dbc, "08001", "Driver does not support server versions under 4.1.1", 0); Index: mysql-connector-odbc-5.1.8/driver/execute.c =================================================================== --- mysql-connector-odbc-5.1.8.orig/driver/execute.c +++ mysql-connector-odbc-5.1.8/driver/execute.c @@ -378,7 +378,7 @@ SQLRETURN insert_param(STMT *stmt, char /* TODO need to check if it was merged to other versions already */ if (has_utf8_maxlen4 && - !is_minimum_version(dbc->mysql.server_version, "6.0.4", 5)) + !is_minimum_version(dbc->mysql.server_version, "6.0.4")) return set_stmt_error(stmt, "HY000", "Server does not support 4-byte encoded " "UTF8 characters.", 0); Index: mysql-connector-odbc-5.1.8/driver/info.c =================================================================== --- mysql-connector-odbc-5.1.8.orig/driver/info.c +++ mysql-connector-odbc-5.1.8/driver/info.c @@ -190,7 +190,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT case SQL_CREATE_VIEW: /** @todo SQL_CV_LOCAL ? */ - if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_ULONG(SQL_CV_CREATE_VIEW | SQL_CV_CHECK_OPTION | SQL_CV_CASCADED); else @@ -268,7 +268,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT MYINFO_SET_ULONG(SQL_DT_DROP_TABLE | SQL_DT_CASCADE | SQL_DT_RESTRICT); case SQL_DROP_VIEW: - if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_ULONG(SQL_DV_DROP_VIEW | SQL_DV_CASCADE | SQL_DV_RESTRICT); else MYINFO_SET_ULONG(0); @@ -338,7 +338,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT We have INFORMATION_SCHEMA.SCHEMATA, but we don't report it because the driver exposes databases (schema) as catalogs. */ - if (is_minimum_version(dbc->mysql.server_version, "5.1", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.1")) MYINFO_SET_ULONG(SQL_ISV_CHARACTER_SETS | SQL_ISV_COLLATIONS | SQL_ISV_COLUMN_PRIVILEGES | SQL_ISV_COLUMNS | SQL_ISV_KEY_COLUMN_USAGE | @@ -346,7 +346,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT /* SQL_ISV_SCHEMATA | */ SQL_ISV_TABLE_CONSTRAINTS | SQL_ISV_TABLE_PRIVILEGES | SQL_ISV_TABLES | SQL_ISV_VIEWS); - else if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + else if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_ULONG(SQL_ISV_CHARACTER_SETS | SQL_ISV_COLLATIONS | SQL_ISV_COLUMN_PRIVILEGES | SQL_ISV_COLUMNS | SQL_ISV_KEY_COLUMN_USAGE | /* SQL_ISV_SCHEMATA | */ @@ -372,7 +372,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT the MySQL Reference Manual (which is, in turn, generated from the source) with the pre-reserved ODBC keywords removed. */ - if (is_minimum_version(dbc->mysql.server_version, "5.1", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.1")) MYINFO_SET_STR("ACCESSIBLE,ANALYZE,ASENSITIVE,BEFORE,BIGINT,BINARY,BLOB," "CALL,CHANGE,CONDITION,DATABASE,DATABASES,DAY_HOUR," "DAY_MICROSECOND,DAY_MINUTE,DAY_SECOND,DELAYED," @@ -394,7 +394,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT "TINYTEXT,TRIGGER,UNDO,UNLOCK,UNSIGNED,USE,UTC_DATE," "UTC_TIME,UTC_TIMESTAMP,VARBINARY,VARCHARACTER,WHILE,X509," "XOR,YEAR_MONTH,ZEROFILL"); - else if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + else if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_STR("ANALYZE,ASENSITIVE,BEFORE,BIGINT,BINARY,BLOB,CALL,CHANGE," "CONDITION,DATABASE,DATABASES,DAY_HOUR,DAY_MICROSECOND," "DAY_MINUTE,DAY_SECOND,DELAYED,DETERMINISTIC,DISTINCTROW," @@ -479,7 +479,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT MYINFO_SET_USHORT(NAME_LEN); case SQL_MAX_INDEX_SIZE: - if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_USHORT(3072); else MYINFO_SET_USHORT(1024); @@ -503,7 +503,7 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT MYINFO_SET_USHORT(NAME_LEN); case SQL_MAX_TABLES_IN_SELECT: - if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_USHORT(63); else MYINFO_SET_USHORT(31); @@ -561,13 +561,13 @@ MySQLGetInfo(SQLHDBC hdbc, SQLUSMALLINT MYINFO_SET_ULONG(SQL_PAS_NO_BATCH); case SQL_PROCEDURE_TERM: - if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_STR("stored procedure"); else MYINFO_SET_STR(""); case SQL_PROCEDURES: - if (is_minimum_version(dbc->mysql.server_version, "5.0", 3)) + if (is_minimum_version(dbc->mysql.server_version, "5.0")) MYINFO_SET_STR("Y"); else MYINFO_SET_STR("N"); Index: mysql-connector-odbc-5.1.8/driver/myutil.h =================================================================== --- mysql-connector-odbc-5.1.8.orig/driver/myutil.h +++ mysql-connector-odbc-5.1.8/driver/myutil.h @@ -255,8 +255,7 @@ char *extend_buffer(NET *net,char *to,ul void myodbc_end(); my_bool set_dynamic_result(STMT FAR *stmt); void set_current_cursor_data(STMT FAR *stmt,SQLUINTEGER irow); -my_bool is_minimum_version(const char *server_version,const char *version, - uint length); +my_bool is_minimum_version(const char *server_version,const char *version); int myodbc_strcasecmp(const char *s, const char *t); int myodbc_casecmp(const char *s, const char *t, uint len); my_bool reget_current_catalog(DBC FAR *dbc); Index: mysql-connector-odbc-5.1.8/driver/utility.c =================================================================== --- mysql-connector-odbc-5.1.8.orig/driver/utility.c +++ mysql-connector-odbc-5.1.8/driver/utility.c @@ -2263,11 +2263,23 @@ void end_query_log(FILE *query_log) } -my_bool is_minimum_version(const char *server_version,const char *version, - uint length) +my_bool is_minimum_version(const char *server_version,const char *version) { - if ( strncmp(server_version,version,length) >= 0 ) + /* + Variables have to be initialized if we don't want to get random + values after sscanf + */ + uint major1= 0, major2= 0, minor1= 0, minor2= 0, build1= 0, build2= 0; + + sscanf(server_version, "%u.%u.%u", &major1, &minor1, &build1); + sscanf(version, "%u.%u.%u", &major2, &minor2, &build2); + + if ( major1 > major2 || + major1 == major2 && (minor1 > minor2 || + minor1 == minor2 && build1 >= build2)) + { return TRUE; + } return FALSE; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor