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

Reply via email to