Changeset: aec239d94c1e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/aec239d94c1e
Modified Files:
        clients/odbc/winsetup/setup.rc
        sql/backends/monet5/sql.c
Branch: default
Log Message:

Merge with Aug2024 branch.


diffs (truncated from 599 to 300 lines):

diff --git a/clients/odbc/ChangeLog.Aug2024 b/clients/odbc/ChangeLog.Aug2024
--- a/clients/odbc/ChangeLog.Aug2024
+++ b/clients/odbc/ChangeLog.Aug2024
@@ -1,6 +1,16 @@
 # ChangeLog file for odbc
 # This file is updated with Maddlog
 
+* Wed Aug  7 2024 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
+- Extended ODBC Data Source Setup program on Windows with fields to specify
+  optional Client Information such as Application Name and Client Remark.
+
+* Thu Aug  1 2024 Martin van Dinther <martin.van.dint...@monetdbsolutions.com>
+- Extended ODBC Data Source Setup program on Windows with fields to specify
+  new TLS Connection settings.
+- Extended ODBC Data Source Setup program on Windows with a Test-button
+  to quickly test connectivity to a MonetDB server.
+
 * Fri May 24 2024 Joeri van Ruth <joeri.van.r...@monetdbsolutions.com>
 - ODBC now supports TLS. It can be configured through the following
   DSN- or Connection String attributes (canonical name / user friendly name):
diff --git a/clients/odbc/winsetup/banner.bmp b/clients/odbc/winsetup/banner.bmp
index 
55ca8c7c1dfb2244e729d3f8aeb829e9aa753669..128fe2edf3ab2fbfb791c4933a7b5772a6513385
GIT binary patch
literal 129654
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
wCK&qy>D&%VODMWy7ytkO00000000000000000000000000000006Y)>4>oTy6#xJL

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
@@ -40,8 +40,13 @@
 #define IDC_EDIT_TIMEZONE               2026
 #define IDC_EDIT_LOGFILE                2027
 
-#define IDC_BUTTON_TEST                 2031
-#define IDC_BUTTON_HELP                 2032
+// Client Info settings
+#define IDC_EDIT_CLIENTINFO             2031
+#define IDC_EDIT_APPLICNAME             2032
+#define IDC_EDIT_CLIENTREMARK           2033
+
+#define IDC_BUTTON_TEST                 2041
+#define IDC_BUTTON_HELP                 2042
 
 // 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
@@ -91,6 +91,13 @@ struct data {
        char *host;
        char *port;             /* positive integer */
        char *database;
+       // TLS settings
+       char *use_tls;          /* only on or off allowed */
+       char *servercert;
+       char *servercerthash;
+       char *clientkey;
+       char *clientcert;
+       // Advanced settings
        char *schema;
        char *logintimeout;     /* empty, 0 or positive integer (millisecs) */
        char *replytimeout;     /* empty, 0 or positive integer (millisecs)  */
@@ -98,12 +105,10 @@ struct data {
        char *autocommit;       /* only on or off allowed */
        char *timezone;         /* empty, 0 or signed integer (minutes) */
        char *logfile;
-       // TLS settings
-       char *use_tls;          /* only on or off allowed */
-       char *servercert;
-       char *servercerthash;
-       char *clientkey;
-       char *clientcert;
+       // Client info
+       char *clientinfo;               /* only on or off allowed */
+       char *applicationname;
+       char *clientremark;
 
        HWND parent;
        WORD request;
@@ -153,6 +158,7 @@ TestConnection(HWND hwndDlg, struct data
                }
                // Only when use_tls is "on", add TLS parameters
                if (datap->use_tls && strcmp(datap->use_tls, "on") == 0) {
+                       pos += snprintf(inStr + pos, strSize - pos, "TLS=on;");
                        if (datap->servercert && strlen(datap->servercert) > 0) 
{
                                pos += snprintf(inStr + pos, strSize - pos, 
"CERT=%s;", datap->servercert);
                        }
@@ -179,9 +185,9 @@ TestConnection(HWND hwndDlg, struct data
                if (datap->replysize && strlen(datap->replysize) > 0) {
                        pos += snprintf(inStr + pos, strSize - pos, 
"REPLYSIZE=%s;", datap->replysize);
                }
-               // in ODBC autocommit is on by default. Only when set to off, 
add it to the connection string.
+               // in ODBC autocommit is on by specification. Only when set to 
off, add it to the connection string.
                if (datap->autocommit && strcmp(datap->autocommit, "off") == 0) 
{
-                       pos += snprintf(inStr + pos, strSize - pos, 
"AUTOCOMMIT=%s;", datap->autocommit);
+                       pos += snprintf(inStr + pos, strSize - pos, 
"AUTOCOMMIT=off;");
                }
                if (datap->timezone && strlen(datap->timezone) > 0) {
                        pos += snprintf(inStr + pos, strSize - pos, 
"TIMEZONE=%s;", datap->timezone);
@@ -191,27 +197,21 @@ TestConnection(HWND hwndDlg, struct data
                }
                // test the constructed connection string
                ret = SQLDriverConnect(dbc, hwndDlg, (SQLCHAR *) inStr, 
SQL_NTS, (SQLCHAR *) outStr, strSize, &outLen, SQL_DRIVER_NOPROMPT);
-               switch (ret) {
-                       case SQL_SUCCESS:
-                       case SQL_SUCCESS_WITH_INFO:
-                               MessageBox(hwndDlg, "Connection successful", 
boxtitle, MB_OK);
-                               ret = SQLDisconnect(dbc);
-                               break;
-                       case SQL_ERROR:
-                       default:
-                       {
-                               SQLCHAR state[6];
-                               SQLINTEGER errnr;
-                               SQLCHAR msg[2560];
-                               SQLSMALLINT msglen;
-                               char buf[2600 + strSize + strSize];
-                               // get Error msg
-                               ret = SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, 
state, &errnr, msg, sizeof(msg), &msglen);
-                               sprintf(buf, "Connection failed!\n\nError 
message: %s\n\nSQLstate %s, Errnr %d\n\nConnectString used: %s\n\nReturned 
ConnectString: %s",
-                                               (char *) msg, (char *) state, 
(int) errnr, inStr, outStr);
-                               MessageBox(hwndDlg, buf, boxtitle, 
MB_ICONERROR);
-                               break;
-                       }
+               if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
+                       MessageBox(hwndDlg, "Connection successful", boxtitle, 
MB_OK);
+                       ret = SQLDisconnect(dbc);
+               } else {
+                       SQLCHAR state[6];
+                       SQLINTEGER errnr;
+                       SQLCHAR msg[2560];
+                       SQLSMALLINT msglen;
+                       char buf[2600 + strSize + strSize];
+
+                       // get Error msg
+                       ret = SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, state, 
&errnr, msg, sizeof(msg), &msglen);
+                       sprintf(buf, "Connection failed!\n\nError message: 
%s\n\nSQLstate %s, Errnr %d\n\nConnectString used: %s\n\nReturned 
ConnectString: %s",
+                                       (char *) msg, (char *) state, (int) 
errnr, inStr, outStr);
+                       MessageBox(hwndDlg, buf, boxtitle, MB_ICONERROR);
                }
                ret = SQLFreeHandle(SQL_HANDLE_DBC, dbc);
 #undef strSize
@@ -280,6 +280,10 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                SetDlgItemText(hwndDlg, IDC_EDIT_AUTOCOMMIT, datap->autocommit 
? datap->autocommit : "on");
                SetDlgItemText(hwndDlg, IDC_EDIT_TIMEZONE, datap->timezone ? 
datap->timezone : "");
                SetDlgItemText(hwndDlg, IDC_EDIT_LOGFILE, datap->logfile ? 
datap->logfile : "");
+               // Client Info
+               SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTINFO, datap->clientinfo 
? datap->clientinfo : "off");
+               SetDlgItemText(hwndDlg, IDC_EDIT_APPLICNAME, 
datap->applicationname ? datap->applicationname : "");
+               SetDlgItemText(hwndDlg, IDC_EDIT_CLIENTREMARK, 
datap->clientremark ? datap->clientremark : "");
                if (datap->request == ODBC_ADD_DSN && datap->dsn && *datap->dsn)
                        EnableWindow(GetDlgItem(hwndDlg, IDC_EDIT_DSN), FALSE);
                return TRUE;
@@ -300,7 +304,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                        }
                        /* fall through */
                case IDC_BUTTON_TEST:
-                       /* validate entered string values */
+                       /* validate entered string values for on/off fields */
                        GetDlgItemText(hwndDlg, IDC_EDIT_AUTOCOMMIT, buf, 
sizeof(buf));
                        if (strcmp("on", buf) != 0 && strcmp("off", buf) != 0) {
                                MessageBox(hwndDlg, "Autocommit must be set to 
on or off. Default is on.", NULL, MB_ICONERROR);
@@ -311,6 +315,11 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                                MessageBox(hwndDlg, "TLS Encrypt must be set to 
on or off. Default is off.", NULL, MB_ICONERROR);
                                return TRUE;
                        }
+                       GetDlgItemText(hwndDlg, IDC_EDIT_CLIENTINFO, buf, 
sizeof(buf));
+                       if (strcmp("on", buf) != 0 && strcmp("off", buf) != 0) {
+                               MessageBox(hwndDlg, "Client Info must be set to 
on or off. Default is off.", NULL, MB_ICONERROR);
+                               return TRUE;
+                       }
 
                        GetDlgItemText(hwndDlg, IDC_EDIT_DESC, buf, 
sizeof(buf));
                        if (datap->desc)
@@ -386,6 +395,19 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR
                        if (datap->logfile)
                                free(datap->logfile);
                        datap->logfile = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_CLIENTINFO, buf, 
sizeof(buf));
+                       if (datap->clientinfo)
+                               free(datap->clientinfo);
+                       datap->clientinfo = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_APPLICNAME, buf, 
sizeof(buf));
+                       if (datap->applicationname)
+                               free(datap->applicationname);
+                       datap->applicationname = strdup(buf);
+                       GetDlgItemText(hwndDlg, IDC_EDIT_CLIENTREMARK, buf, 
sizeof(buf));
+                       if (datap->clientremark)
+                               free(datap->clientremark);
+                       datap->clientremark = strdup(buf);
+
 
                        if (LOWORD(wParam) == IDC_BUTTON_TEST) {
                                TestConnection(hwndDlg, datap);
@@ -438,6 +460,12 @@ ConfigDSN(HWND parent, WORD request, LPC
        data.host = NULL;
        data.port = NULL;
        data.database = NULL;
+       // TLS settings
+       data.use_tls = NULL;
+       data.servercert = NULL;
+       data.servercerthash = NULL;
+       data.clientkey = NULL;
+       data.clientcert = NULL;
        // Advanced settings
        data.logfile = NULL;
        data.schema = NULL;
@@ -447,12 +475,10 @@ ConfigDSN(HWND parent, WORD request, LPC
        data.autocommit = NULL;
        data.timezone = NULL;
        data.logfile = NULL;
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to