@@ -33,7 +33,8 @@ WHERE 1 < 0
33
33
return ret;
34
34
}
35
35
36
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
36
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
37
+ static_cast <SQLINTEGER>(query.size ()));
37
38
}
38
39
39
40
SQLRETURN SQL_API SQLPrimaryKeys (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
@@ -87,7 +88,8 @@ WHERE 1 < 0
87
88
return ret;
88
89
}
89
90
90
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
91
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
92
+ static_cast <SQLINTEGER>(query.size ()));
91
93
}
92
94
93
95
SQLRETURN SQL_API SQLForeignKeys (SQLHSTMT statement_handle, SQLCHAR *pk_catalog_name, SQLSMALLINT name_length1,
@@ -155,7 +157,8 @@ WHERE 1 < 0
155
157
return ret;
156
158
}
157
159
158
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
160
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
161
+ static_cast <SQLINTEGER>(query.size ()));
159
162
}
160
163
161
164
SQLRETURN SQL_API SQLProcedureColumns (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
@@ -171,7 +174,7 @@ SQLRETURN SQL_API SQLProcedureColumnsW(SQLHSTMT statement_handle, SQLWCHAR *cata
171
174
auto catalog_name_conv = duckdb::widechar::utf16_conv (catalog_name, name_length1);
172
175
auto schema_name_conv = duckdb::widechar::utf16_conv (schema_name, name_length2);
173
176
auto proc_name_conv = duckdb::widechar::utf16_conv (proc_name, name_length3);
174
- auto column_name_conv = duckdb::widechar::utf16_conv (column_name, name_length3 );
177
+ auto column_name_conv = duckdb::widechar::utf16_conv (column_name, name_length4 );
175
178
return ProcedureColumnsInternal (statement_handle, catalog_name_conv.utf8_str , catalog_name_conv.utf8_len_smallint (),
176
179
schema_name_conv.utf8_str , schema_name_conv.utf8_len_smallint (),
177
180
proc_name_conv.utf8_str , proc_name_conv.utf8_len_smallint (),
@@ -203,7 +206,8 @@ WHERE 1 < 0
203
206
return ret;
204
207
}
205
208
206
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
209
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
210
+ static_cast <SQLINTEGER>(query.size ()));
207
211
}
208
212
209
213
SQLRETURN SQL_API SQLProcedures (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
@@ -216,11 +220,12 @@ SQLRETURN SQL_API SQLProcedures(SQLHSTMT statement_handle, SQLCHAR *catalog_name
216
220
SQLRETURN SQL_API SQLProceduresW (SQLHSTMT statement_handle, SQLWCHAR *catalog_name, SQLSMALLINT name_length1,
217
221
SQLWCHAR *schema_name, SQLSMALLINT name_length2, SQLWCHAR *proc_name,
218
222
SQLSMALLINT name_length3) {
219
- const auto catalog_name_conv = duckdb::widechar::utf16_conv (catalog_name, name_length1);
220
- const auto schema_name_conv = duckdb::widechar::utf16_conv (schema_name, name_length2);
221
- const auto proc_name_conv = duckdb::widechar::utf16_conv (proc_name, name_length3);
222
- return ProceduresInternal (statement_handle, catalog_name_conv.utf8_str , name_length1, schema_name_conv.utf8_str ,
223
- name_length2, proc_name_conv.utf8_str , name_length3);
223
+ auto catalog_name_conv = duckdb::widechar::utf16_conv (catalog_name, name_length1);
224
+ auto schema_name_conv = duckdb::widechar::utf16_conv (schema_name, name_length2);
225
+ auto proc_name_conv = duckdb::widechar::utf16_conv (proc_name, name_length3);
226
+ return ProceduresInternal (statement_handle, catalog_name_conv.utf8_str , catalog_name_conv.utf8_len_smallint (),
227
+ schema_name_conv.utf8_str , schema_name_conv.utf8_len_smallint (), proc_name_conv.utf8_str ,
228
+ proc_name_conv.utf8_len_smallint ());
224
229
}
225
230
226
231
// -----------------------------------------------------------------------------
@@ -248,7 +253,8 @@ WHERE 1 < 0
248
253
return ret;
249
254
}
250
255
251
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
256
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
257
+ static_cast <SQLINTEGER>(query.size ()));
252
258
}
253
259
254
260
SQLRETURN SQL_API SQLColumnPrivileges (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
@@ -295,7 +301,8 @@ WHERE 1 < 0
295
301
return ret;
296
302
}
297
303
298
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
304
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
305
+ static_cast <SQLINTEGER>(query.size ()));
299
306
}
300
307
301
308
SQLRETURN SQL_API SQLTablePrivileges (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
@@ -342,7 +349,8 @@ WHERE 1 < 0
342
349
return ret;
343
350
}
344
351
345
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
352
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
353
+ static_cast <SQLINTEGER>(query.size ()));
346
354
}
347
355
348
356
SQLRETURN SQL_API SQLSpecialColumns (SQLHSTMT statement_handle, SQLUSMALLINT identifier_type, SQLCHAR *catalog_name,
@@ -396,7 +404,8 @@ WHERE 1 < 0
396
404
return ret;
397
405
}
398
406
399
- return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query), query.size ());
407
+ return duckdb::ExecDirectStmt (stmt, duckdb::OdbcUtils::ConvertStringToSQLCHAR (query),
408
+ static_cast <SQLINTEGER>(query.size ()));
400
409
}
401
410
402
411
SQLRETURN SQL_API SQLStatistics (SQLHSTMT statement_handle, SQLCHAR *catalog_name, SQLSMALLINT name_length1,
@@ -421,7 +430,7 @@ SQLRETURN SQL_API SQLStatisticsW(SQLHSTMT statement_handle, SQLWCHAR *catalog_na
421
430
// Functions explicitly marked as not implemented (SetNotImplemented)
422
431
// ============================================================================
423
432
424
- SQLRETURN SetNotImplemented (duckdb::OdbcHandle *handle, const std::string &func_name) {
433
+ static SQLRETURN SetNotImplemented (duckdb::OdbcHandle *handle, const std::string &func_name) {
425
434
return SetDiagnosticRecord (handle, SQL_ERROR, func_name, func_name + " is not implemented" ,
426
435
duckdb::SQLStateType::ST_HYC00, " " );
427
436
}
@@ -452,17 +461,18 @@ SQLRETURN SQL_API SQLNativeSqlW(SQLHDBC connection_handle, SQLWCHAR *in_statemen
452
461
SQLWCHAR *out_statement_text, SQLINTEGER buffer_length, SQLINTEGER *text_length2_ptr) {
453
462
auto in_statement_text_conv = duckdb::widechar::utf16_conv (in_statement_text, text_length1);
454
463
auto out_statement_text_conv = duckdb::widechar::utf16_conv (out_statement_text, buffer_length);
455
- return NativeSQLInternal (connection_handle, in_statement_text_conv.utf8_str , in_statement_text_conv.utf8_len (),
456
- out_statement_text_conv.utf8_str , buffer_length, text_length2_ptr);
464
+ return NativeSQLInternal (connection_handle, in_statement_text_conv.utf8_str ,
465
+ in_statement_text_conv.utf8_len_smallint (), out_statement_text_conv.utf8_str ,
466
+ out_statement_text_conv.utf8_len_smallint (), text_length2_ptr);
457
467
}
458
468
459
469
// --------------------------------------------------------------
460
470
// SQLBrowseConnect
461
471
// --------------------------------------------------------------
462
472
463
- SQLRETURN SQL_API SQLBrowseConnect (SQLHDBC connection_handle, SQLCHAR *in_connection_string, SQLSMALLINT string_length1 ,
464
- SQLCHAR *out_connection_string, SQLSMALLINT buffer_length ,
465
- SQLSMALLINT *string_length2_ptr) {
473
+ static SQLRETURN BrowseConnectInternal (SQLHDBC connection_handle, SQLCHAR *in_connection_string,
474
+ SQLSMALLINT string_length1, SQLCHAR *out_connection_string ,
475
+ SQLSMALLINT buffer_length, SQLSMALLINT *string_length2_ptr) {
466
476
duckdb::OdbcHandle *hdl;
467
477
const auto ret = ConvertHandle (connection_handle, hdl);
468
478
if (ret != SQL_SUCCESS) {
@@ -472,6 +482,23 @@ SQLRETURN SQL_API SQLBrowseConnect(SQLHDBC connection_handle, SQLCHAR *in_connec
472
482
return SetNotImplemented (hdl, " SQLBrowseConnect" );
473
483
}
474
484
485
+ SQLRETURN SQL_API SQLBrowseConnect (SQLHDBC connection_handle, SQLCHAR *in_connection_string, SQLSMALLINT string_length1,
486
+ SQLCHAR *out_connection_string, SQLSMALLINT buffer_length,
487
+ SQLSMALLINT *string_length2_ptr) {
488
+ return BrowseConnectInternal (connection_handle, in_connection_string, string_length1, out_connection_string,
489
+ buffer_length, string_length2_ptr);
490
+ }
491
+
492
+ SQLRETURN SQL_API SQLBrowseConnectW (SQLHDBC connection_handle, SQLWCHAR *in_connection_string,
493
+ SQLSMALLINT string_length1, SQLWCHAR *out_connection_string,
494
+ SQLSMALLINT buffer_length, SQLSMALLINT *string_length2_ptr) {
495
+ auto in_connection_string_conv = duckdb::widechar::utf16_conv (in_connection_string, string_length1);
496
+ auto out_connection_string_conv = duckdb::widechar::utf16_conv (out_connection_string, buffer_length);
497
+ return BrowseConnectInternal (connection_handle, in_connection_string_conv.utf8_str ,
498
+ in_connection_string_conv.utf8_len_smallint (), out_connection_string_conv.utf8_str ,
499
+ out_connection_string_conv.utf8_len_smallint (), string_length2_ptr);
500
+ }
501
+
475
502
// --------------------------------------------------------------
476
503
// SQLBulkOperations
477
504
// --------------------------------------------------------------
0 commit comments