Changeset: bdeb1a56c020 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/bdeb1a56c020 Modified Files: clients/mapilib/msettings.h clients/odbc/driver/SQLConnect.c Branch: odbc-tls Log Message:
Merge upstream changes into ODBC refactoring diffs (220 lines): diff --git a/clients/mapilib/msettings.h b/clients/mapilib/msettings.h --- a/clients/mapilib/msettings.h +++ b/clients/mapilib/msettings.h @@ -93,9 +93,9 @@ mparm_classify(mparm parm) /* returns NULL if not found, pointer to mparm if found */ mapi_export mparm mparm_parse(const char *name); -const char *mparm_name(mparm parm); -mparm mparm_enumerate(int i); -bool mparm_is_core(mparm parm); +mapi_export const char *mparm_name(mparm parm); +mapi_export mparm mparm_enumerate(int i); +mapi_export bool mparm_is_core(mparm parm); ///////////////////////////////////////////////////////////////////// @@ -114,8 +114,8 @@ mapi_export bool msettings_malloc_failed /* returns NULL if could not allocate */ mapi_export msettings *msettings_create(void); -msettings *msettings_clone(const msettings *mp); -extern const msettings *msettings_default; +mapi_export msettings *msettings_clone(const msettings *mp); +mapi_export const msettings *msettings_default; /* always returns NULL */ mapi_export msettings *msettings_destroy(msettings *mp); @@ -123,21 +123,21 @@ mapi_export msettings *msettings_destroy /* retrieve and set; call abort() on type error */ mapi_export const char* msetting_string(const msettings *mp, mparm parm); -msettings_error msetting_set_string(msettings *mp, mparm parm, const char* value) +mapi_export msettings_error msetting_set_string(msettings *mp, mparm parm, const char* value) __attribute__((__nonnull__(3))); mapi_export long msetting_long(const msettings *mp, mparm parm); -msettings_error msetting_set_long(msettings *mp, mparm parm, long value); +mapi_export msettings_error msetting_set_long(msettings *mp, mparm parm, long value); mapi_export bool msetting_bool(const msettings *mp, mparm parm); -msettings_error msetting_set_bool(msettings *mp, mparm parm, bool value); +mapi_export msettings_error msetting_set_bool(msettings *mp, mparm parm, bool value); /* parse into the appropriate type, or format into newly malloc'ed string (NULL means malloc failed) */ -msettings_error msetting_parse(msettings *mp, mparm parm, const char *text); -char *msetting_as_string(const msettings *mp, mparm parm); +mapi_export msettings_error msetting_parse(msettings *mp, mparm parm, const char *text); +mapi_export char *msetting_as_string(const msettings *mp, mparm parm); /* store ignored parameter */ -msettings_error msetting_set_ignored(msettings *mp, const char *key, const char *value); +mapi_export msettings_error msetting_set_ignored(msettings *mp, const char *key, const char *value); /* store named parameter */ mapi_export msettings_error msetting_set_named(msettings *mp, bool allow_core, const char *key, const char *value); diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c --- a/clients/odbc/driver/SQLConnect.c +++ b/clients/odbc/driver/SQLConnect.c @@ -182,7 +182,7 @@ buildConnectionString(const char *dsn, c const struct attr_setting *entry = &attr_settings[i]; mparm parm = entry->parm; - if (parm == MP_TABLE || parm == MP_TABLESCHEMA) + if (parm == MP_IGNORE || parm == MP_TABLE || parm == MP_TABLESCHEMA) continue; free(value); diff --git a/clients/odbc/driver/SQLDisconnect.c b/clients/odbc/driver/SQLDisconnect.c --- a/clients/odbc/driver/SQLDisconnect.c +++ b/clients/odbc/driver/SQLDisconnect.c @@ -63,11 +63,31 @@ SQLDisconnect(SQLHDBC ConnectionHandle) mapi_destroy(dbc->mid); dbc->mid = NULL; + dbc->Connected = false; dbc->cachelimit = 0; dbc->Mdebug = 0; - dbc->Connected = false; dbc->has_comment = false; dbc->raw_strings = false; + if (dbc->dsn) { + free(dbc->dsn); + dbc->dsn = NULL; + } + if (dbc->uid) { + free(dbc->uid); + dbc->uid = NULL; + } + if (dbc->pwd) { + free(dbc->pwd); + dbc->pwd = NULL; + } + if (dbc->host) { + free(dbc->host); + dbc->host = NULL; + } + if (dbc->dbname) { + free(dbc->dbname); + dbc->dbname = NULL; + } return SQL_SUCCESS; } diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -23,6 +23,18 @@ #define IDC_EDIT_PORT 2005 #define IDC_EDIT_DATABASE 2006 #define IDC_EDIT_LOGFILE 2007 +// new from Jun2024 +#define IDC_EDIT_AUTOCOMMIT 2011 +#define IDC_EDIT_REPLYSIZE 2012 +#define IDC_EDIT_SCHEMA 2013 +#define IDC_EDIT_TIMEZONE 2014 +// Secure connections using TLS +#define IDC_EDIT_TLS 2021 +#define IDC_EDIT_SERVERCERT 2022 +#define IDC_EDIT_SERVERCERTHASH 2023 +#define IDC_EDIT_CLIENTKEY 2024 +#define IDC_EDIT_CLIENTCERT 2025 + #define IDC_BUTTON_CANCEL 2008 // Next default values for new objects diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -96,7 +96,17 @@ struct data { char *host; char *port; char *database; + char *schema; + bool autocommit; + long replysize; + long timezone; char *logfile; + // TLS settings + bool use_tls; + char *servercert; + char *servercerthash; + char *clientkey; + char *clientcert; HWND parent; WORD request; }; @@ -235,6 +245,18 @@ ConfigDSN(HWND parent, WORD request, LPC data.port = NULL; data.database = NULL; data.logfile = NULL; + data.schema = NULL; + data.autocommit = true; +// data.replysize = 1000; +// data.timezone; + data.logfile = NULL; + // TLS settings + data.use_tls = false; + data.servercert = NULL; + data.servercerthash = NULL; + data.clientkey = NULL; + data.clientcert = NULL; + data.parent = parent; data.request = request; diff --git a/clients/odbc/winsetup/setup.rc b/clients/odbc/winsetup/setup.rc --- a/clients/odbc/winsetup/setup.rc +++ b/clients/odbc/winsetup/setup.rc @@ -103,27 +103,45 @@ END // Dialog // -IDD_SETUP_DIALOG DIALOGEX 0, 0, 210, 179 +IDD_SETUP_DIALOG DIALOGEX 0, 0, 210, 323 STYLE DS_MODALFRAME | WS_CAPTION CAPTION "MonetDB Data Source Configuration" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_EDIT_DSN,75,40,128,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_UID,75,56,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_PWD,75,72,128,14,ES_PASSWORD | ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_PWD,75,72,128,14,ES_AUTOHSCROLL | ES_PASSWORD EDITTEXT IDC_EDIT_HOST,75,88,128,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_PORT,75,104,128,14,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_EDIT_DATABASE,75,120,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_LOGFILE,75,136,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_SCHEMA,75,136,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_AUTOCOMMIT,75,152,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_REPLYSIZE,75,168,128,14,ES_AUTOHSCROLL | ES_NUMBER + EDITTEXT IDC_EDIT_TIMEZONE,75,184,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_LOGFILE,75,200,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_TLS,75,216,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_SERVERCERT,75,232,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_SERVERCERTHASH,75,248,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_CLIENTKEY,75,264,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_CLIENTCERT,75,280,128,14,ES_AUTOHSCROLL LTEXT "Data Source Name",IDC_STATIC,7,42,63,8 LTEXT "User Name",IDC_STATIC,7,58,36,8 LTEXT "Password",IDC_STATIC,7,74,32,8 LTEXT "Host",IDC_STATIC,7,90,16,8 LTEXT "Port",IDC_STATIC,7,106,14,8 LTEXT "Database",IDC_STATIC,7,122,32,8 - LTEXT "Logfile",IDC_STATIC,7,138,32,8 - DEFPUSHBUTTON "OK",IDOK,7,157,50,14 - PUSHBUTTON "Cancel",IDCANCEL,153,157,50,14 + LTEXT "Schema",IDC_STATIC,7,138,32,8 + LTEXT "Autocommit On/Off",IDC_STATIC,7,154,63,8 + LTEXT "Reply Size",IDC_STATIC,7,170,32,8 + LTEXT "Timezone",IDC_STATIC,7,186,32,8 + LTEXT "Logfile",IDC_STATIC,7,202,32,8 + LTEXT "TLS Encrypt On/Off",IDC_STATIC,7,218,66,8 + LTEXT "Server Certificate",IDC_STATIC,7,234,66,8 + LTEXT "Server Certificate Hash",IDC_STATIC,7,250,70,8 + LTEXT "Client Key",IDC_STATIC,7,266,36,8 + LTEXT "Client Certificate",IDC_STATIC,7,282,66,8 + DEFPUSHBUTTON "OK",IDOK,7,301,50,14 + PUSHBUTTON "Cancel",IDCANCEL,153,301,50,14 CONTROL 2000,IDC_STATIC,"Static",SS_BITMAP,0,0,240,37 END _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org