Skip to content

Commit 3f15af6

Browse files
committed
Bug #32882344: FIX MYSQLCLIENT_STATIC_BINDING=0 BUILD
1 parent 9d0be0b commit 3f15af6

File tree

4 files changed

+86
-64
lines changed

4 files changed

+86
-64
lines changed

driver/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@ if (MYSQLCLIENT_STATIC_BINDING)
199199
target_link_libraries(jdbc PRIVATE MySQL::client)
200200
else()
201201
target_include_directories(jdbc PRIVATE ${MYSQL_INCLUDE_DIR})
202+
if(NOT WIN32)
203+
target_link_libraries(jdbc PRIVATE dl)
204+
ENDIF(NOT WIN32)
202205
endif()
203206

204207
if(NOT BUILD_SHARED_LIBS)

driver/nativeapi/libmysql_dynamic_proxy.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,19 @@ LibmysqlDynamicProxy::real_connect_dns_srv(MYSQL * mysql,
512512
/* }}} */
513513

514514

515+
/* {{{ LibmysqlDynamicProxy::bind_param() */
516+
bool
517+
LibmysqlDynamicProxy::bind_param(MYSQL *mysql, unsigned n_params,
518+
MYSQL_BIND *binds, const char **names)
519+
{
520+
ptr2mysql_bind_param ptr2_bind_param=
521+
symbol_safe_cast<ptr2mysql_bind_param>(GetProcAddr("mysql_bind_param"));
522+
523+
return (*ptr2_bind_param)(mysql, n_params, binds, names);
524+
}
525+
/* }}} */
526+
527+
515528
/* {{{ LibmysqlDynamicProxy::real_escape_string() */
516529
unsigned long
517530
LibmysqlDynamicProxy::real_escape_string(MYSQL * mysql, char * to, const char * from, unsigned long length)

driver/nativeapi/libmysql_dynamic_proxy.h

Lines changed: 68 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -65,150 +65,154 @@ class LibmysqlDynamicProxy : public sql::mysql::util::LibraryLoader, public IMyS
6565

6666
// MySQL C-API calls wrappers
6767

68-
my_ulonglong affected_rows(MYSQL *);
68+
my_ulonglong affected_rows(MYSQL *) override;
6969

70-
my_bool autocommit(MYSQL * , my_bool);
70+
my_bool autocommit(MYSQL * , my_bool) override;
7171

72-
void close (MYSQL *mysql);
72+
void close (MYSQL *mysql) override;
7373

74-
my_bool commit(MYSQL *mysql);
74+
my_bool commit(MYSQL *mysql) override;
7575

76-
void data_seek(MYSQL_RES *, my_ulonglong);
76+
void data_seek(MYSQL_RES *, my_ulonglong) override;
7777

78-
void debug(const char *);
78+
void debug(const char *) override;
7979

80-
unsigned int mysql_errno(MYSQL *);
80+
unsigned int mysql_errno(MYSQL *) override;
8181

82-
const char * error(MYSQL *);
82+
const char * error(MYSQL *) override;
8383

84-
MYSQL_FIELD * fetch_field(MYSQL_RES *);
84+
MYSQL_FIELD * fetch_field(MYSQL_RES *) override;
8585

86-
MYSQL_FIELD * fetch_field_direct(MYSQL_RES *, unsigned int);
86+
MYSQL_FIELD * fetch_field_direct(MYSQL_RES *, unsigned int) override;
8787

88-
unsigned long * fetch_lengths(MYSQL_RES *);
88+
unsigned long * fetch_lengths(MYSQL_RES *) override;
8989

90-
MYSQL_ROW fetch_row(MYSQL_RES *);
90+
MYSQL_ROW fetch_row(MYSQL_RES *) override;
9191

92-
unsigned int field_count(MYSQL *);
92+
unsigned int field_count(MYSQL *) override;
9393

94-
void free_result(MYSQL_RES *);
94+
void free_result(MYSQL_RES *) override;
9595

96-
unsigned long get_client_version();
96+
unsigned long get_client_version() override;
9797

98-
const char * get_server_info(MYSQL *);
98+
const char * get_server_info(MYSQL *) override;
9999

100-
unsigned long get_server_version(MYSQL *);
100+
unsigned long get_server_version(MYSQL *) override;
101101

102-
void get_character_set_info(MYSQL *, void *);
102+
void get_character_set_info(MYSQL *, void *) override;
103103

104-
const char * info(MYSQL *);
104+
const char * info(MYSQL *) override;
105105

106-
MYSQL * init(MYSQL *mysql);
106+
MYSQL * init(MYSQL *mysql) override;
107107

108-
int library_init(int, char **, char **);
108+
int library_init(int, char **, char **) override;
109109

110-
void library_end();
110+
void library_end() override;
111111

112-
my_bool more_results(MYSQL *);
112+
my_bool more_results(MYSQL *) override;
113113

114-
int next_result(MYSQL *);
114+
int next_result(MYSQL *) override;
115115

116-
unsigned int num_fields(MYSQL_RES *);
116+
unsigned int num_fields(MYSQL_RES *) override;
117117

118-
my_ulonglong num_rows(MYSQL_RES *);
118+
my_ulonglong num_rows(MYSQL_RES *) override;
119119

120-
int options (MYSQL *, enum mysql_option, const void *);
120+
int options (MYSQL *, enum mysql_option, const void *) override;
121121

122-
int options (MYSQL *, enum mysql_option, const void *, const void *);
122+
int options (MYSQL *, enum mysql_option, const void *, const void *) override;
123123

124-
int get_option (MYSQL *, enum mysql_option, const void *);
124+
int get_option (MYSQL *, enum mysql_option, const void *) override;
125125

126-
int ping(MYSQL *);
126+
int ping(MYSQL *) override;
127127

128-
int query(MYSQL *, const char *);
128+
int query(MYSQL *, const char *) override;
129129

130130
MYSQL * real_connect(MYSQL * mysql, const char * host,
131131
const char * user,
132132
const char * passwd,
133133
const char * db,
134134
unsigned int port,
135135
const char * unix_socket,
136-
unsigned long client_flag);
136+
unsigned long client_flag) override;
137137

138138
MYSQL * real_connect_dns_srv(MYSQL * mysql,
139139
const char * host,
140140
const char * user,
141141
const char * passwd,
142142
const char * db,
143-
unsigned long client_flag);
143+
unsigned long client_flag) override;
144144

145-
unsigned long real_escape_string(MYSQL * mysql, char * to, const char * from, unsigned long length);
145+
bool bind_param(MYSQL *mysql, unsigned n_params,
146+
MYSQL_BIND *binds, const char **names) override;
146147

147-
int real_query(MYSQL *, const char *, unsigned long);
148148

149-
my_bool rollback(MYSQL *);
149+
unsigned long real_escape_string(MYSQL * mysql, char * to, const char * from, unsigned long length) override;
150150

151-
const char * sqlstate(MYSQL *);
151+
int real_query(MYSQL *, const char *, unsigned long) override;
152+
153+
my_bool rollback(MYSQL *) override;
154+
155+
const char * sqlstate(MYSQL *) override;
152156

153157
my_bool ssl_set(MYSQL * mysql,
154158
const char * key,
155159
const char * cert,
156160
const char * ca,
157161
const char * capath,
158-
const char * cipher);
162+
const char * cipher) override;
159163

160-
MYSQL_RES * store_result(MYSQL *);
164+
MYSQL_RES * store_result(MYSQL *) override;
161165

162-
MYSQL_RES * use_result(MYSQL *);
166+
MYSQL_RES * use_result(MYSQL *) override;
163167

164-
unsigned int warning_count(MYSQL *);
168+
unsigned int warning_count(MYSQL *) override;
165169

166170
/* Prepared Statement stmt_* functions */
167-
my_ulonglong stmt_affected_rows (MYSQL_STMT *);
171+
my_ulonglong stmt_affected_rows (MYSQL_STMT *) override;
168172

169-
my_bool stmt_attr_set(MYSQL_STMT *, enum enum_stmt_attr_type, const void *);
173+
my_bool stmt_attr_set(MYSQL_STMT *, enum enum_stmt_attr_type, const void *) override;
170174

171-
my_bool stmt_bind_param(MYSQL_STMT *, MYSQL_BIND *);
175+
my_bool stmt_bind_param(MYSQL_STMT *, MYSQL_BIND *) override;
172176

173-
my_bool stmt_bind_result(MYSQL_STMT *, MYSQL_BIND *);
177+
my_bool stmt_bind_result(MYSQL_STMT *, MYSQL_BIND *) override;
174178

175-
my_bool stmt_close(MYSQL_STMT *);
179+
my_bool stmt_close(MYSQL_STMT *) override;
176180

177-
void stmt_data_seek(MYSQL_STMT *, my_ulonglong);
181+
void stmt_data_seek(MYSQL_STMT *, my_ulonglong) override;
178182

179-
unsigned int stmt_errno(MYSQL_STMT *);
183+
unsigned int stmt_errno(MYSQL_STMT *) override;
180184

181-
const char * stmt_error(MYSQL_STMT *);
185+
const char * stmt_error(MYSQL_STMT *) override;
182186

183-
int stmt_execute(MYSQL_STMT *);
187+
int stmt_execute(MYSQL_STMT *) override;
184188

185-
int stmt_fetch(MYSQL_STMT *);
189+
int stmt_fetch(MYSQL_STMT *) override;
186190

187-
unsigned int stmt_field_count(MYSQL_STMT *);
191+
unsigned int stmt_field_count(MYSQL_STMT *) override;
188192

189-
MYSQL_STMT * stmt_init(MYSQL *);
193+
MYSQL_STMT * stmt_init(MYSQL *) override;
190194

191-
my_ulonglong stmt_num_rows(MYSQL_STMT *);
195+
my_ulonglong stmt_num_rows(MYSQL_STMT *) override;
192196

193-
unsigned long stmt_param_count(MYSQL_STMT *);
197+
unsigned long stmt_param_count(MYSQL_STMT *) override;
194198

195-
int stmt_prepare(MYSQL_STMT *, const char *, unsigned long);
199+
int stmt_prepare(MYSQL_STMT *, const char *, unsigned long) override;
196200

197-
MYSQL_RES * stmt_result_metadata(MYSQL_STMT *);
201+
MYSQL_RES * stmt_result_metadata(MYSQL_STMT *) override;
198202

199-
my_bool stmt_send_long_data (MYSQL_STMT * , unsigned int, const char *, unsigned long);
203+
my_bool stmt_send_long_data (MYSQL_STMT * , unsigned int, const char *, unsigned long) override;
200204

201-
const char * stmt_sqlstate(MYSQL_STMT *);
205+
const char * stmt_sqlstate(MYSQL_STMT *) override;
202206

203-
int stmt_store_result(MYSQL_STMT *);
207+
int stmt_store_result(MYSQL_STMT *) override;
204208

205-
int stmt_next_result(MYSQL_STMT *);
209+
int stmt_next_result(MYSQL_STMT *) override;
206210

207-
bool stmt_free_result(MYSQL_STMT *);
211+
bool stmt_free_result(MYSQL_STMT *) override;
208212

209-
void thread_init();
213+
void thread_init() override;
210214

211-
void thread_end();
215+
void thread_end() override;
212216
};
213217

214218
} /* namespace NativeAPI */

driver/nativeapi/mysql_client_api.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ typedef MYSQL * (STDCALL *ptr2mysql_real_connect)(MYSQL *, const char *, const c
111111

112112
typedef MYSQL * (STDCALL *ptr2mysql_real_connect_dns_srv)(MYSQL *, const char *, const char *, const char * , const char *, unsigned long);
113113

114+
typedef bool (STDCALL *ptr2mysql_bind_param)(MYSQL *mysql, unsigned n_params, MYSQL_BIND *binds, const char **names);
115+
114116
typedef unsigned long (STDCALL *ptr2mysql_real_escape_string)(MYSQL * mysql, char *, const char *, unsigned long);
115117

116118
typedef int (STDCALL *ptr2mysql_real_query)(MYSQL *, const char *, unsigned long);

0 commit comments

Comments
 (0)