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 -- [email protected]
To unsubscribe send an email to [email protected]