From 7ebdf2015f206fbf7bd6f612874a9c70edbbf4d1 Mon Sep 17 00:00:00 2001 From: Hiroshi Inoue Date: Mon, 12 May 2003 15:44:08 +0000 Subject: [PATCH] 1) Add a *bytea as LO* DSN option button. 2) Add japanese resources to psqlodbc.rc. 3) Add a dialog for the driver change. --- connection.c | 19 +- connection.h | 2 +- dlg_specific.c | 19 +- dlg_specific.h | 6 + dlg_wingui.c | 142 ++++++- drvconn.c | 4 +- multibyte.h | 3 + psqlodbc.rc | 996 ++++++++++++++++++++++++++++++-------------- psqlodbc_api30.def | 22 +- psqlodbc_api30w.def | 16 +- qresult.c | 23 + resource.h | 20 +- setup.c | 70 +++- statement.c | 7 +- version.h | 6 +- win_setup.h | 3 +- 16 files changed, 974 insertions(+), 384 deletions(-) diff --git a/connection.c b/connection.c index 456637a..1823aad 100644 --- a/connection.c +++ b/connection.c @@ -461,13 +461,12 @@ CC_cleanup(ConnectionClass *self) /* We are always in the middle of a transaction, */ /* even if we are in auto commit. */ if (self->sock) + { CC_abort(self); - mylog("after CC_abort\n"); + mylog("after CC_abort\n"); - /* This actually closes the connection to the dbase */ - if (self->sock) - { + /* This actually closes the connection to the dbase */ SOCK_Destructor(self->sock); self->sock = NULL; } @@ -501,14 +500,20 @@ CC_cleanup(ConnectionClass *self) self->transact_status = CONN_IN_AUTOCOMMIT; CC_conninfo_init(&(self->connInfo)); if (self->client_encoding) + { free(self->client_encoding); - self->client_encoding = NULL; + self->client_encoding = NULL; + } if (self->server_encoding) + { free(self->server_encoding); - self->server_encoding = NULL; + self->server_encoding = NULL; + } if (self->current_schema) + { free(self->current_schema); - self->current_schema = NULL; + self->current_schema = NULL; + } /* Free cached table info */ if (self->col_info) { diff --git a/connection.h b/connection.h index fe097f3..b7cd872 100644 --- a/connection.h +++ b/connection.h @@ -179,7 +179,7 @@ typedef struct { char dsn[MEDIUM_REGISTRY_LEN]; char desc[MEDIUM_REGISTRY_LEN]; - char driver[MEDIUM_REGISTRY_LEN]; + char drivername[MEDIUM_REGISTRY_LEN]; char server[MEDIUM_REGISTRY_LEN]; char database[MEDIUM_REGISTRY_LEN]; char username[MEDIUM_REGISTRY_LEN]; diff --git a/dlg_specific.c b/dlg_specific.c index f01dd3b..638c357 100644 --- a/dlg_specific.c +++ b/dlg_specific.c @@ -48,7 +48,7 @@ makeConnectString(char *connect_string, const ConnInfo *ci, UWORD len) /* fundamental info */ sprintf(connect_string, "%s=%s;DATABASE=%s;SERVER=%s;PORT=%s;UID=%s;PWD=%s", got_dsn ? "DSN" : "DRIVER", - got_dsn ? ci->dsn : ci->driver, + got_dsn ? ci->dsn : ci->drivername, ci->database, ci->server, ci->port, @@ -262,7 +262,7 @@ copyAttributes(ConnInfo *ci, const char *attribute, const char *value) strcpy(ci->dsn, value); else if (stricmp(attribute, "driver") == 0) - strcpy(ci->driver, value); + strcpy(ci->drivername, value); else if (stricmp(attribute, INI_DATABASE) == 0) strcpy(ci->database, value); @@ -425,6 +425,11 @@ getDSNdefaults(ConnInfo *ci) ci->use_server_side_prepare = DEFAULT_USESERVERSIDEPREPARE; } +int +getDriverNameFromDSN(const char *dsn, char *driver_name, int namelen) +{ + return SQLGetPrivateProfileString(ODBC_DATASOURCES, dsn, "", driver_name, namelen, ODBC_INI); +} void getDSNinfo(ConnInfo *ci, char overwrite) @@ -439,7 +444,7 @@ getDSNinfo(ConnInfo *ci, char overwrite) */ if (DSN[0] == '\0') { - if (ci->driver[0] != '\0') + if (ci->drivername[0] != '\0') return; else strcpy(DSN, INI_DSN); @@ -449,11 +454,11 @@ getDSNinfo(ConnInfo *ci, char overwrite) while (*(DSN + strlen(DSN) - 1) == ' ') *(DSN + strlen(DSN) - 1) = '\0'; - if (ci->driver[0] == '\0' || overwrite) + if (ci->drivername[0] == '\0' || overwrite) { - SQLGetPrivateProfileString(ODBC_DATASOURCES, DSN, "", ci->driver, sizeof(ci->driver), ODBC_INI); - if (ci->driver[0] && stricmp(ci->driver, DBMS_NAME)) - getCommonDefaults(ci->driver, ODBCINST_INI, ci); + getDriverNameFromDSN(DSN, ci->drivername, sizeof(ci->drivername)); + if (ci->drivername[0] && stricmp(ci->drivername, DBMS_NAME)) + getCommonDefaults(ci->drivername, ODBCINST_INI, ci); } /* Proceed with getting info for the given DSN. */ diff --git a/dlg_specific.h b/dlg_specific.h index 4cef795..b0ea70f 100644 --- a/dlg_specific.h +++ b/dlg_specific.h @@ -200,6 +200,10 @@ int CALLBACK ds_options2Proc(HWND hdlg, UINT wMsg, WPARAM wParam, LPARAM lParam); +int CALLBACK manage_dsnProc(HWND hdlg, + UINT wMsg, + WPARAM wParam, + LPARAM lParam); #endif /* WIN32 */ void updateGlobals(void); @@ -211,5 +215,7 @@ void getDSNinfo(ConnInfo *ci, char overwrite); void makeConnectString(char *connect_string, const ConnInfo *ci, UWORD); void copyAttributes(ConnInfo *ci, const char *attribute, const char *value); void copyCommonAttributes(ConnInfo *ci, const char *attribute, const char *value); +int getDriverNameFromDSN(const char *dsn, char *driver_name, int namelen); +int changeDriverNameOfaDSN(const char *dsn, const char *driver_name, DWORD *errcode); #endif diff --git a/dlg_wingui.c b/dlg_wingui.c index 7e58fc4..d4b5398 100644 --- a/dlg_wingui.c +++ b/dlg_wingui.c @@ -19,6 +19,7 @@ /* Multibyte support Eiji Tokuya 2001-03-15 */ #include "dlg_specific.h" +#include "win_setup.h" #include "convert.h" @@ -232,14 +233,17 @@ driver_optionsProc(HWND hdlg, LPARAM lParam) { ConnInfo *ci; + char strbuf[128]; switch (wMsg) { case WM_INITDIALOG: SetWindowLong(hdlg, DWL_USER, lParam); /* save for OK etc */ ci = (ConnInfo *) lParam; - SetWindowText(hdlg, "Advanced Options (Default)"); - SetWindowText(GetDlgItem(hdlg, IDOK), "Save"); + LoadString(s_hModule, IDS_ADVANCE_OPTION_DEF, strbuf, sizeof(strbuf)); + SetWindowText(hdlg, strbuf); + LoadString(s_hModule, IDS_ADVANCE_SAVE, strbuf, sizeof(strbuf)); + SetWindowText(GetDlgItem(hdlg, IDOK), strbuf); ShowWindow(GetDlgItem(hdlg, IDAPPLY), SW_HIDE); driver_optionsDraw(hdlg, ci, 0, TRUE); break; @@ -250,7 +254,7 @@ driver_optionsProc(HWND hdlg, case IDOK: ci = (ConnInfo *) GetWindowLong(hdlg, DWL_USER); driver_options_update(hdlg, NULL, - ci ? ci->driver : NULL); + ci ? ci->drivername : NULL); case IDCANCEL: EndDialog(hdlg, GET_WM_COMMAND_ID(wParam, lParam) == IDOK); @@ -309,6 +313,7 @@ ds_options1Proc(HWND hdlg, LPARAM lParam) { ConnInfo *ci; + char strbuf[128]; switch (wMsg) { @@ -316,10 +321,23 @@ ds_options1Proc(HWND hdlg, SetWindowLong(hdlg, DWL_USER, lParam); /* save for OK etc */ ci = (ConnInfo *) lParam; if (ci && ci->dsn && ci->dsn[0]) - SetWindowText(hdlg, "Advanced Options (DSN 1/2)"); + { + DWORD cmd; + char fbuf[64]; + + cmd = LoadString(s_hModule, + IDS_ADVANCE_OPTION_DSN1, + fbuf, + sizeof(fbuf)); + if (cmd <= 0) + strcpy(fbuf, "Advanced Options (%s) 1/2"); + sprintf(strbuf, fbuf, ci->dsn); + SetWindowText(hdlg, strbuf); + } else { - SetWindowText(hdlg, "Advanced Options (Connection 1/2)"); + LoadString(s_hModule, IDS_ADVANCE_OPTION_CON1, strbuf, sizeof(strbuf)); + SetWindowText(hdlg, strbuf); ShowWindow(GetDlgItem(hdlg, IDAPPLY), SW_HIDE); } driver_optionsDraw(hdlg, ci, 1, FALSE); @@ -378,15 +396,24 @@ ds_options2Proc(HWND hdlg, SetWindowLong(hdlg, DWL_USER, lParam); /* save for OK */ /* Change window caption */ - if (ci->driver[0]) + if (ci && ci->dsn && ci->dsn[0]) { - SetWindowText(hdlg, "Advanced Options (Connection 2/2)"); - ShowWindow(GetDlgItem(hdlg, IDAPPLY), SW_HIDE); } + char fbuf[64]; + + cmd = LoadString(s_hModule, + IDS_ADVANCE_OPTION_DSN2, + fbuf, + sizeof(fbuf)); + if (cmd <= 0) + strcpy(fbuf, "Advanced Options (%s) 2/2"); + sprintf(buf, fbuf, ci->dsn); + SetWindowText(hdlg, buf); + } else { - sprintf(buf, "Advanced Options (%s) 2/2", ci->dsn); + LoadString(s_hModule, IDS_ADVANCE_OPTION_CON2, buf, sizeof(buf)); SetWindowText(hdlg, buf); - } + ShowWindow(GetDlgItem(hdlg, IDAPPLY), SW_HIDE); } /* Readonly */ CheckDlgButton(hdlg, DS_READONLY, atoi(ci->onlyread)); @@ -434,6 +461,7 @@ ds_options2Proc(HWND hdlg, EnableWindow(GetDlgItem(hdlg, DS_UPDATABLECURSORS), FALSE); #endif /* DRIVER_CURSOR_IMPLEMENT */ CheckDlgButton(hdlg, DS_SERVERSIDEPREPARE, ci->use_server_side_prepare); + CheckDlgButton(hdlg, DS_BYTEAASLONGVARBINARY, ci->bytea_as_longvarbinary); EnableWindow(GetDlgItem(hdlg, DS_FAKEOIDINDEX), atoi(ci->show_oid_column)); @@ -491,6 +519,7 @@ ds_options2Proc(HWND hdlg, ci->allow_keyset = IsDlgButtonChecked(hdlg, DS_UPDATABLECURSORS); #endif /* DRIVER_CURSOR_IMPLEMENT */ ci->use_server_side_prepare = IsDlgButtonChecked(hdlg, DS_SERVERSIDEPREPARE); + ci->bytea_as_longvarbinary = IsDlgButtonChecked(hdlg, DS_BYTEAASLONGVARBINARY); /* OID Options */ sprintf(ci->fake_oid_index, "%d", IsDlgButtonChecked(hdlg, DS_FAKEOIDINDEX)); @@ -521,4 +550,97 @@ ds_options2Proc(HWND hdlg, return FALSE; } +static int +makeDriversList(HWND lwnd, const ConnInfo *ci) +{ + HMODULE hmodule; + SQLHENV henv; + int lcount = 0, iidx; + char drvname[64], drvatt[128]; + SQLUSMALLINT direction = SQL_FETCH_FIRST; + SQLSMALLINT drvncount, drvacount; + SQLRETURN ret; + FARPROC addr; + + hmodule = GetModuleHandle("ODBC32"); + if (!hmodule) return lcount; + addr = GetProcAddress(hmodule, "SQLAllocHandle"); + if (!addr) return lcount; + ret = (*addr)(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); + if (SQL_SUCCESS == ret) + { + addr = GetProcAddress(hmodule, "SQLSetEnvAttr"); + if (addr) + ret = (*addr)(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0); + } + do + { + ret = SQLDrivers(henv, direction, + drvname, sizeof(drvname), &drvncount, + drvatt, sizeof(drvatt), &drvacount); + if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret) + break; + if (strnicmp(drvname, "postgresql", 10) == 0) + { + iidx = SendMessage(lwnd, LB_ADDSTRING, 0, (LPARAM) drvname); + if (LB_ERR != iidx && stricmp(drvname, ci->drivername) == 0) +{ + SendMessage(lwnd, LB_SETCURSEL, (WPARAM) iidx, (LPARAM) 0); +} + lcount++; + } + direction = SQL_FETCH_NEXT; + } while (1); + addr = GetProcAddress(hmodule, "SQLFreeHandle"); + if (addr) + (*addr)(SQL_HANDLE_ENV, henv); + + return lcount; +} + +int CALLBACK +manage_dsnProc(HWND hdlg, UINT wMsg, + WPARAM wParam, LPARAM lParam) +{ + LPSETUPDLG lpsetupdlg; + ConnInfo *ci; + HWND lwnd; + int sidx; + char drvname[64]; + + switch (wMsg) + { + case WM_INITDIALOG: + SetWindowLong(hdlg, DWL_USER, lParam); + lpsetupdlg = (LPSETUPDLG) lParam; + ci = &lpsetupdlg->ci; + lwnd = GetDlgItem(hdlg, IDC_DRIVER_LIST); + makeDriversList(lwnd, ci); + break; + + case WM_COMMAND: + switch (GET_WM_COMMAND_ID(wParam, lParam)) + { + case IDOK: + lpsetupdlg = (LPSETUPDLG) GetWindowLong(hdlg, DWL_USER); + lwnd = GetDlgItem(hdlg, IDC_DRIVER_LIST); + sidx = SendMessage(lwnd, LB_GETCURSEL, + (WPARAM) 0, (LPARAM) 0); + if (LB_ERR == sidx) + return FALSE; + sidx = SendMessage(lwnd, LB_GETTEXT, + (WPARAM) sidx, (LPARAM) drvname); + if (LB_ERR == sidx) + return FALSE; + ChangeDriverName(hdlg, lpsetupdlg, drvname); + + case IDCANCEL: + EndDialog(hdlg, GET_WM_COMMAND_ID(wParam, lParam) == IDOK); + return TRUE; + } + } + + return FALSE; +} + #endif /* WIN32 */ diff --git a/drvconn.c b/drvconn.c index 8115647..7dda006 100644 --- a/drvconn.c +++ b/drvconn.c @@ -317,6 +317,7 @@ dconn_FDriverConnectProc( LPARAM lParam) { ConnInfo *ci; + char strbuf[64]; switch (wMsg) { @@ -326,7 +327,8 @@ dconn_FDriverConnectProc( /* Change the caption for the setup dialog */ SetWindowText(hdlg, "PostgreSQL Connection"); - SetWindowText(GetDlgItem(hdlg, IDC_DATASOURCE), "Connection"); + LoadString(s_hModule, IDS_ADVANCE_CONNECTION, strbuf, sizeof(strbuf)); + SetWindowText(GetDlgItem(hdlg, IDC_DATASOURCE), strbuf); /* Hide the DSN and description fields */ ShowWindow(GetDlgItem(hdlg, IDC_DSNAMETEXT), SW_HIDE); diff --git a/multibyte.h b/multibyte.h index ef348b4..3d9d662 100644 --- a/multibyte.h +++ b/multibyte.h @@ -1,3 +1,5 @@ +#ifndef __MULTIBUYTE_H__ +#define __MULTIBUYTE_H__ /* * * Multibyte library header ( psqlODBC Only ) @@ -88,3 +90,4 @@ void encoded_str_constr(encoded_str *encstr, int ccsc, const char *str); extern int encoded_nextchar(encoded_str *encstr); extern int encoded_byte_check(encoded_str *encstr, int abspos); #define check_client_encoding(X) pg_CS_name(pg_CS_code(X)) +#endif /* __MULTIBUYTE_H__ */ diff --git a/psqlodbc.rc b/psqlodbc.rc index a1411db..5c521bb 100644 --- a/psqlodbc.rc +++ b/psqlodbc.rc @@ -1,323 +1,673 @@ -//Microsoft Developer Studio generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" -#include "version.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// ‰pŒê (±Òض) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "#include ""version.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -DLG_CONFIG DIALOG DISCARDABLE 65, 43, 292, 116 -STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | - WS_SYSMENU -CAPTION "PostgreSQL ODBC Driver (psqlODBC) Setup" -FONT 10, "Terminal" -BEGIN - RTEXT "&Data Source",IDC_DSNAMETEXT,5,11,50,12,NOT WS_GROUP - EDITTEXT IDC_DSNAME,57,10,72,12,ES_AUTOHSCROLL | WS_GROUP - RTEXT "Des&cription",IDC_DESCTEXT,129,10,45,12,NOT WS_GROUP - EDITTEXT IDC_DESC,176,10,107,12,ES_AUTOHSCROLL - RTEXT "Data&base",IDC_STATIC,16,26,38,12,NOT WS_GROUP - EDITTEXT IDC_DATABASE,57,25,72,12,ES_AUTOHSCROLL - RTEXT "&Server",IDC_STATIC,26,41,29,12,NOT WS_GROUP - EDITTEXT IDC_SERVER,57,40,72,12,ES_AUTOHSCROLL - RTEXT "&Port",IDC_STATIC,151,41,22,12 - EDITTEXT IDC_PORT,175,40,37,12,ES_AUTOHSCROLL - RTEXT "&User Name",IDC_STATIC,16,56,39,12 - EDITTEXT IDC_USER,57,55,72,12,ES_AUTOHSCROLL - RTEXT "Pass&word",IDC_STATIC,139,57,34,9 - EDITTEXT IDC_PASSWORD,175,55,72,12,ES_PASSWORD | ES_AUTOHSCROLL - DEFPUSHBUTTON "OK",IDOK,25,87,40,14,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,80,87,40,14 - GROUPBOX "Options",IDC_OPTIONS,140,74,140,35,BS_LEFT - PUSHBUTTON "Datasource",IDC_DATASOURCE,159,87,50,14 - PUSHBUTTON "Global",IDC_DRIVER,220,87,50,14 - CTEXT "Please supply any missing information required to connect.", - DRV_MSG_LABEL,36,2,220,10 -END - -DLG_OPTIONS_DRV DIALOG DISCARDABLE 0, 0, 287, 231 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Advanced Options (DataSource)" -FONT 10, "Terminal" -BEGIN - PUSHBUTTON "Page 1",IDPREVPAGE,5,5,40,15 - PUSHBUTTON "Page 2",IDNEXTPAGE,49,5,40,15 - CONTROL "Disable Genetic &Optimizer",DRV_OPTIMIZER,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,15,26,116,10 - CONTROL "Comm&Log (C:\\psqlodbc_xxxx.log)",DRV_COMMLOG,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,149,26,131,10 - CONTROL "&KSQO(Keyset Query Optimization)",DRV_KSQO,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,15,41,132,10 - CONTROL "Recognize Unique &Indexes",DRV_UNIQUEINDEX,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,15,56,110,10 - CONTROL "P&arse Statements",DRV_PARSE,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,149,41,80,10 - CONTROL "&Use Declare/Fetch",DRV_USEDECLAREFETCH,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,15,71,83,10 - CONTROL "Cancel as FreeStmt (Exp)",DRV_CANCELASFREESTMT,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,149,56,114,10 - CONTROL "MyLog (C:\\mylog_xxxx.log)",DRV_DEBUG,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,149,71,112,10 - GROUPBOX "Unknown Sizes",IDC_STATIC,5,85,277,25 - CONTROL "Maximum",DRV_UNKNOWN_MAX,"Button",BS_AUTORADIOBUTTON | - WS_GROUP | WS_TABSTOP,15,96,45,10 - CONTROL "Don't Know",DRV_UNKNOWN_DONTKNOW,"Button", - BS_AUTORADIOBUTTON | WS_TABSTOP,105,96,53,10 - CONTROL "Longest",DRV_UNKNOWN_LONGEST,"Button", - BS_AUTORADIOBUTTON | WS_TABSTOP,215,95,50,10 - GROUPBOX "Data Type Options",IDC_STATIC,5,115,277,25 - CONTROL "Text as LongVarChar",DRV_TEXT_LONGVARCHAR,"Button", - BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,15,125,90,10 - CONTROL "Unknowns as LongVarChar",DRV_UNKNOWNS_LONGVARCHAR, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,105,125,105,10 - CONTROL "Bools as Char",DRV_BOOLS_CHAR,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,215,125,67,10 - LTEXT "&Cache Size:",IDC_STATIC,14,183,52,8 - EDITTEXT DRV_CACHE_SIZE,69,181,35,12,ES_AUTOHSCROLL - LTEXT "Max &Varchar:",IDC_STATIC,13,161,54,8 - EDITTEXT DRV_VARCHAR_SIZE,70,160,35,12,ES_AUTOHSCROLL - LTEXT "Max Lon&gVarChar:",IDC_STATIC,125,161,67,8 - EDITTEXT DRV_LONGVARCHAR_SIZE,199,160,35,12,ES_AUTOHSCROLL - LTEXT "SysTable &Prefixes:",IDC_STATIC,125,183,61,18 - EDITTEXT DRV_EXTRASYSTABLEPREFIXES,199,181,71,12,ES_AUTOHSCROLL - DEFPUSHBUTTON "OK",IDOK,5,212,50,14,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,81,211,50,15 - PUSHBUTTON "Apply",IDAPPLY,156,212,50,14 - PUSHBUTTON "Defaults",IDDEFAULTS,232,211,50,15 - GROUPBOX "Miscellanous",IDC_STATIC,5,145,277,58 -END - -DLG_OPTIONS_DS DIALOG DISCARDABLE 0, 0, 287, 231 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Advanced Options (DataSource)" -FONT 10, "Terminal" -BEGIN - PUSHBUTTON "Page 2",IDNEXTPAGE,49,5,40,15 - PUSHBUTTON "Page 1",IDPREVPAGE,5,5,40,15 - CONTROL "&Read Only",DS_READONLY,"Button",BS_AUTOCHECKBOX | - WS_GROUP | WS_TABSTOP,15,26,102,10 - CONTROL "Row &Versioning",DS_ROWVERSIONING,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,149,26,85,10 - CONTROL "Show System &Tables",DS_SHOWSYSTEMTABLES,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,15,41,100,10 - CONTROL "Disallow &Premature",DS_DISALLOWPREMATURE,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,149,41,85,10 - CONTROL "LF <-> CR/LF conversion",DS_LFCONVERSION,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,15,56,106,10 - CONTROL "True is -1",DS_TRUEISMINUS1,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,149,56,86,10 - CONTROL "Updatable Cursors",DS_UPDATABLECURSORS,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,15,71,87,10 - CONTROL "Server side prepare",DS_SERVERSIDEPREPARE,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,149,71,90,10 - GROUPBOX "Int8 As",IDC_STATIC,5,85,277,25 - CONTROL "default",DS_INT8_AS_DEFAULT,"Button",BS_AUTORADIOBUTTON | - WS_GROUP,12,95,40,10 - CONTROL "bigint",DS_INT8_AS_BIGINT,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,55,95,35,10 - CONTROL "numeric",DS_INT8_AS_NUMERIC,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,98,95,40,10 - CONTROL "varchar",DS_INT8_AS_VARCHAR,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,141,95,40,10 - CONTROL "double",DS_INT8_AS_DOUBLE,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,184,95,40,10 - CONTROL "int4",DS_INT8_AS_INT4,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,227,95,29,10 - GROUPBOX "Protocol",IDC_STATIC,5,115,277,25 - CONTROL "7.X,6.4+",DS_PG64,"Button",BS_AUTORADIOBUTTON | - WS_GROUP,44,126,49,10 - CONTROL "6.3",DS_PG63,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, - 117,126,26,10 - CONTROL "6.2",DS_PG62,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, - 191,126,26,10 - GROUPBOX "OID Options",IDC_STATIC,5,145,277,25 - CONTROL "Show &Column",DS_SHOWOIDCOLUMN,"Button",BS_AUTOCHECKBOX | - WS_GROUP | WS_TABSTOP,53,157,59,10 - CONTROL "Fake &Index",DS_FAKEOIDINDEX,"Button",BS_AUTOCHECKBOX | - WS_GROUP | WS_TABSTOP,155,156,51,10 - LTEXT "Connect &Settings:",IDC_STATIC,5,182,62,17 - EDITTEXT DS_CONNSETTINGS,71,178,211,27,ES_MULTILINE | - ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN - DEFPUSHBUTTON "OK",IDOK,5,212,50,14,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,81,212,50,14 - PUSHBUTTON "Apply",IDAPPLY,156,212,50,14 -END - -DLG_OPTIONS_GLOBAL DIALOG DISCARDABLE 0, 0, 306, 87 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Global settings" -FONT 10, "Terminal" -BEGIN - CONTROL "Comm&Log (C:\\psqlodbc_xxxx.log - Communications log)", - DRV_COMMLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,24, - 263,10 - CONTROL "Mylog (C:\\mylog_xxxx.log - Detailed debug output)", - DRV_DEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,42, - 264,10 - DEFPUSHBUTTON "OK",IDOK,82,68,50,14,WS_GROUP - PUSHBUTTON "Cancel",IDCANCEL,172,67,50,15 - GROUPBOX "Pre-connection/default logging options",IDC_STATIC,5,5, - 296,58 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - DLG_CONFIG, DIALOG - BEGIN - BOTTOMMARGIN, 115 - END - - DLG_OPTIONS_DRV, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 282 - TOPMARGIN, 5 - BOTTOMMARGIN, 226 - END - - DLG_OPTIONS_DS, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 282 - TOPMARGIN, 5 - BOTTOMMARGIN, 226 - END - - DLG_OPTIONS_GLOBAL, DIALOG - BEGIN - LEFTMARGIN, 5 - RIGHTMARGIN, 301 - TOPMARGIN, 5 - BOTTOMMARGIN, 82 - END -END -#endif // APSTUDIO_INVOKED - - -#ifndef _MAC -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION PG_DRVFILE_VERSION - PRODUCTVERSION PG_DRVFILE_VERSION - FILEFLAGSMASK 0x3L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "Comments", "PostgreSQL ODBC driver\0" - VALUE "CompanyName", "Insight Distribution Systems\0" - VALUE "FileDescription", "PostgreSQL Driver\0" - VALUE "FileVersion", POSTGRES_RESOURCE_VERSION - VALUE "InternalName", "psqlodbc\0" - VALUE "LegalCopyright", "\0" - VALUE "LegalTrademarks", "ODBC(TM) is a trademark of Microsoft Corporation. Microsoft® is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation.\0" - VALUE "OriginalFilename", "psqlodbc.dll\0" - VALUE "PrivateBuild", "\0" - VALUE "ProductName", "Microsoft Open Database Connectivity\0" - VALUE "ProductVersion", POSTGRES_RESOURCE_VERSION - VALUE "SpecialBuild", "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // !_MAC - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE DISCARDABLE -BEGIN - IDS_BADDSN "Invalid DSN entry, please recheck." - IDS_MSGTITLE "Invalid DSN" -END - -#endif // ‰pŒê (±Òض) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +#include "version.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// “ú–{Œê resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) +#ifdef _WIN32 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +#pragma code_page(932) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +DLG_CONFIG DIALOGEX 65, 43, 359, 219 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_VISIBLE | + WS_CAPTION | WS_SYSMENU +CAPTION "PostgreSQL ODBC ƒZƒbƒgƒAƒbƒv" +FONT 9, "‚l‚r ƒSƒVƒbƒN", 0, 0, 0x1 +BEGIN + LTEXT "ƒf|ƒ^ƒ\|ƒX–¼:(&N)",IDC_DSNAMETEXT,6,3,59,27, + SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_TRANSPARENT | + WS_EX_RIGHT + EDITTEXT IDC_DSNAME,71,12,188,13,ES_AUTOHSCROLL | WS_GROUP, + WS_EX_TRANSPARENT + RTEXT "à–¾:(&D)",IDC_DESCTEXT,5,24,60,30,SS_CENTERIMAGE | NOT + WS_GROUP,WS_EX_TRANSPARENT | WS_EX_RIGHT + EDITTEXT IDC_DESC,71,32,189,13,ES_AUTOHSCROLL,WS_EX_TRANSPARENT + RTEXT "ƒT|ƒo|–¼:(&S)",IDC_STATIC,17,68,48,15,NOT WS_GROUP + EDITTEXT IDC_SERVER,69,66,203,14,ES_AUTOHSCROLL + RTEXT "ƒf|ƒ^ƒx|ƒX–¼:(&b)",IDC_STATIC,5,91,60,15,NOT WS_GROUP + EDITTEXT IDC_DATABASE,69,88,203,14,ES_AUTOHSCROLL + RTEXT "&Port:",IDC_STATIC,281,101,22,11 + EDITTEXT IDC_PORT,307,99,37,14,ES_AUTOHSCROLL + RTEXT "ƒ†|ƒU|–¼:(&U)",IDC_STATIC,18,139,47,15 + EDITTEXT IDC_USER,71,135,162,14,ES_AUTOHSCROLL + RTEXT "ƒpƒXƒ|ƒh:(&w)",IDC_STATIC,21,159,46,15 + EDITTEXT IDC_PASSWORD,71,157,162,13,ES_PASSWORD | ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,295,61,52,14,WS_GROUP + PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,296,80,51,14 + GROUPBOX "ƒIƒvƒVƒ‡ƒ“ (‚“x‚Ȑݒè)",IDC_OPTIONS,249,119,99,59, + BS_CENTER + PUSHBUTTON "‘S‘̐ݒè",IDC_DRIVER,269,155,53,15 + PUSHBUTTON "ƒf|ƒ^ƒ\|ƒX",IDC_DATASOURCE,269,132,53,15 + GROUPBOX "Šù’è‚Ì”FØ",IDC_STATIC,11,119,235,59 + LTEXT "PostgreSQL Ver7.3 Copyright (C) 1998-2002; Insight Distribution Systems", + IDC_STATIC,36,186,302,9 + LTEXT "In the original form, Japanese patch Hiroshi-saito", + IDC_STATIC,35,198,295,8 + // CONTROL "IDB_BANNER",IDC_STATIC,"Static",SS_BITMAP,8,3,16,15, + // WS_EX_TRANSPARENT | WS_EX_STATICEDGE + PUSHBUTTON "ŠÇ—",IDC_MANAGEDSN,295,10,50,14 +END + +DLG_OPTIONS_DRV DIALOG DISCARDABLE 0, 0, 350, 241 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION | + WS_SYSMENU +CAPTION "‚“x‚Ȑݒè (ƒf[ƒ^ƒ\[ƒX‚P)" +FONT 9, "‚l‚r ƒSƒVƒbƒN" +BEGIN + PUSHBUTTON "Ý’è1",IDPREVPAGE,5,5,40,15 + PUSHBUTTON "Ý’è2",IDNEXTPAGE,49,5,40,15 + CONTROL "ˆâ“`“IÅ“K‰»ˆ—‚𖳌ø‚É‚·‚é(&O)",DRV_OPTIMIZER,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,15,26,140,10 + CONTROL "ˆê”ʃƒOo—Í‚ð‚·‚é(&L) (C:\\psqlodbc.log)",DRV_COMMLOG, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,24,170,10 + CONTROL "&KSQO (¸´Ø°·°¾¯ÄÅ“K‰»ƒIƒvƒVƒ‡ƒ“)",DRV_KSQO,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,41,145,10 + CONTROL "ƒ†ƒj|ƒNƒCƒ“ƒfƒbƒNƒX‚ðŽg‚¤(&I)",DRV_UNIQUEINDEX,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,56,129,10 + CONTROL "ƒXƒe|ƒgƒƒ“ƒg‚̍\•¶‰ðÍ‚ðs‚È‚¤(&a)",DRV_PARSE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,167,40,152,10 + CONTROL "Declare`Fetch‚ðŽg—p‚·‚é(&U)",DRV_USEDECLAREFETCH, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,71,138,10 + CONTROL "ƒLƒƒƒ“ƒZƒ‹‚ÉSQLFreeStmt‚ðŽg—p‚·‚é(Exp)", + DRV_CANCELASFREESTMT,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,167,54,168,10 + CONTROL "Ú×ƒƒOo—Í‚ð‚·‚é(C:\\mylog_xxxx.log)",DRV_DEBUG, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,69,164,10 + GROUPBOX "–¢’m‚̃TƒCƒY“®ì",IDC_STATIC,5,85,340,31 + CONTROL "Å‘å‚ð‚Æ‚é",DRV_UNKNOWN_MAX,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,17,98,57,10 + CONTROL "“Á’肵‚È‚¢",DRV_UNKNOWN_DONTKNOW,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,99,98,59,10 + CONTROL "Å’·‚ð‚Æ‚é",DRV_UNKNOWN_LONGEST,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,173,98,60,10 + GROUPBOX "ƒf|ƒ^ ƒ^ƒCƒv ƒIƒvƒVƒ‡ƒ“",IDC_STATIC,5,119,340,32 + CONTROL "text‚ð’·•¶Žš—ñ‚Æ‚µ‚Ĉµ‚¤",DRV_TEXT_LONGVARCHAR,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,12,132,107,10 + CONTROL "•s–¾‚ð’·•¶Žš—ñ‚Æ‚µ‚Ĉµ‚¤",DRV_UNKNOWNS_LONGVARCHAR, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,123,132,117,10 + CONTROL "Char‚Æ‚µ‚ÄBools‚ðˆµ‚¤",DRV_BOOLS_CHAR,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,243,132,96,10 + LTEXT "ƒLƒƒƒbƒVƒ…ƒTƒCƒY:",IDC_STATIC,21,189,42,8 + EDITTEXT DRV_CACHE_SIZE,69,187,35,12,ES_AUTOHSCROLL + LTEXT "Å‘å&Varchar:",IDC_STATIC,13,167,54,8 + EDITTEXT DRV_VARCHAR_SIZE,70,166,35,12,ES_AUTOHSCROLL + LTEXT "Å‘åLon&gVarChar:",IDC_STATIC,145,167,67,8 + EDITTEXT DRV_LONGVARCHAR_SIZE,219,166,35,12,ES_AUTOHSCROLL + LTEXT "¼½ÃÑðÌÞÙ ÌßŲ́¸½:",IDC_STATIC,140,189,74,9 + EDITTEXT DRV_EXTRASYSTABLEPREFIXES,219,187,71,12,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,5,221,50,15,WS_GROUP + PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,68,221,50,15 + PUSHBUTTON "“K—p",IDAPPLY,132,221,50,15 + PUSHBUTTON "ƒfƒtƒHƒ‹ƒg",IDDEFAULTS,295,221,50,15 + GROUPBOX "‚»‚Ì‘¼",IDC_STATIC,5,155,340,54 +END + +DLG_OPTIONS_DS DIALOG DISCARDABLE 0, 0, 306, 243 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION | + WS_SYSMENU +CAPTION "‚“x‚Ȑݒè (ƒf[ƒ^ƒ\[ƒX‚Q)" +FONT 9, "‚l‚r ƒSƒVƒbƒN" +BEGIN + PUSHBUTTON "Ý’è2",IDNEXTPAGE,49,5,40,15 + PUSHBUTTON "Ý’è1",IDPREVPAGE,5,5,40,15 + CONTROL "ƒŠ|ƒhƒIƒ“ƒŠƒB(&R)",DS_READONLY,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,15,26,102,10 + CONTROL "ƒo|ƒWƒ‡ƒ“—ñ•\ަ(&V)",DS_ROWVERSIONING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,139,25,114,10 + CONTROL "ƒVƒXƒeƒ€ƒe|ƒuƒ‹‚ð•\ަ(&T)",DS_SHOWSYSTEMTABLES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,41,111,10 + CONTROL "Prepareî•ñŽæ“¾‚ɐæsŽÀs‚µ‚È‚¢(&P)", + DS_DISALLOWPREMATURE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,139,41,162,10 + CONTROL "LF <-> CR/LF •ÏŠ·‚ðs‚¤",DS_LFCONVERSION,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,56,106,10 + CONTROL "-1 ‚ð^’l(True)‚Æ‚·‚é",DS_TRUEISMINUS1,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,139,55,98,10 + CONTROL "XV‰Â”\ƒJ[ƒ\ƒ‹",DS_UPDATABLECURSORS,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,71,87,10 + CONTROL "ƒT[ƒo[‘¤ Prepare(7.3ˆÈŒã)",DS_SERVERSIDEPREPARE, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,139,70,122,10 + GROUPBOX "Int8 ‚Ì‘ã‘Ö’è‹`",IDC_STATIC,5,98,296,25 + CONTROL "default",DS_INT8_AS_DEFAULT,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,12,108,40,10 + CONTROL "bigint",DS_INT8_AS_BIGINT,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,55,108,35,10 + CONTROL "numeric",DS_INT8_AS_NUMERIC,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,98,108,40,10 + CONTROL "varchar",DS_INT8_AS_VARCHAR,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,141,108,40,10 + CONTROL "double",DS_INT8_AS_DOUBLE,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,184,108,40,10 + CONTROL "int4",DS_INT8_AS_INT4,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,227,108,29,10 + GROUPBOX "ƒvƒƒgƒRƒ‹ƒo|ƒWƒ‡ƒ“",IDC_STATIC,5,128,296,25 + CONTROL "7.X,6.4+",DS_PG64,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,18,139,49,10 + CONTROL "6.3",DS_PG63,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, + 87,139,26,10 + CONTROL "6.2",DS_PG62,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, + 140,140,26,10 + GROUPBOX "OID ƒIƒvƒVƒ‡ƒ“",IDC_STATIC,5,158,296,25 + CONTROL "ƒJƒ‰ƒ€—ñ•\ަ(&C)",DS_SHOWOIDCOLUMN,"Button", + BS_AUTOCHECKBOX | WS_GROUP,16,169,72,10 + CONTROL "ƒCƒ“ƒfƒbƒNƒX‚ð‘•‚¤(&I)",DS_FAKEOIDINDEX,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,107,169,95,10 + LTEXT "Ú‘±Žž Ý’è:(&S)",IDC_STATIC,13,192,69,10,NOT + WS_GROUP + EDITTEXT DS_CONNSETTINGS,90,191,211,27,ES_MULTILINE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | NOT + WS_TABSTOP + DEFPUSHBUTTON "OK",IDOK,5,224,50,14,WS_GROUP + PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,66,224,50,14 + PUSHBUTTON "“K—p",IDAPPLY,128,224,50,14 + CONTROL "bytea‚ðLO‚Æ‚µ‚Ĉµ‚¤",DS_BYTEAASLONGVARBINARY,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,85,87,10 +END + +DLG_OPTIONS_GLOBAL DIALOG DISCARDABLE 0, 0, 306, 87 +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION | + WS_SYSMENU +CAPTION "‚“x‚Ȑݒè(‘S‘Ì)" +FONT 9, "‚l‚r ƒSƒVƒbƒN" +BEGIN + CONTROL "ˆê”ʃƒO(&L) (C:\\psqlodbc_xxxx.log - ƒRƒ~ƒ…ƒjƒP|ƒVƒ‡ƒ“ƒƒO)", + DRV_COMMLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,24, + 249,10 + CONTROL "ê—pƒƒO (C:\\mylog_xxxx.log - Ú×ƒfƒoƒbƒOo—̓ƒO)", + DRV_DEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,42, + 220,10 + DEFPUSHBUTTON "OK",IDOK,5,68,50,14,WS_GROUP + PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹",IDCANCEL,65,67,50,15 + GROUPBOX "ƒRƒlƒNƒVƒ‡ƒ“‘O‚̃fƒtƒHƒ‹ƒgƒƒMƒ“ƒOƒIƒvƒVƒ‡ƒ“", + IDC_STATIC,5,5,296,58 +END + +DLG_DRIVER_CHANGE DIALOG DISCARDABLE 0, 0, 306, 87 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ƒhƒ‰ƒCƒo@ƒAƒbƒv/ƒ_ƒEƒ“" +FONT 10, "Terminal" +BEGIN + DEFPUSHBUTTON "OK",IDOK,82,68,50,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,172,67,50,15 + GROUPBOX "ƒhƒ‰ƒCƒoƒŠƒXƒg",IDC_STATIC,5,5,296,58 + LTEXT "ƒhƒ‰ƒCƒo‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢",IDC_STATIC,11,33,105,8 + LISTBOX IDC_DRIVER_LIST,117,23,151,32,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + DLG_CONFIG, DIALOG + BEGIN + VERTGUIDE, 65 + BOTTOMMARGIN, 210 + END + + DLG_OPTIONS_DRV, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 345 + TOPMARGIN, 5 + BOTTOMMARGIN, 236 + END + + DLG_OPTIONS_DS, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 301 + TOPMARGIN, 5 + BOTTOMMARGIN, 238 + END + + DLG_OPTIONS_GLOBAL, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 301 + TOPMARGIN, 5 + BOTTOMMARGIN, 82 + END + + DLG_DRIVER_CHANGE, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 301 + TOPMARGIN, 5 + BOTTOMMARGIN, 82 + END +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "#include ""version.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PG_DRVFILE_VERSION + PRODUCTVERSION PG_DRVFILE_VERSION + FILEFLAGSMASK 0x3L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "Comments", "PostgreSQL ODBC driver\0" + VALUE "CompanyName", "Insight Distribution Systems\0" + VALUE "FileDescription", "PostgreSQL Driver\0" + VALUE "FileVersion", POSTGRES_RESOURCE_VERSION + VALUE "InternalName", "psqlodbc\0" + VALUE "LegalCopyright", "\0" + VALUE "LegalTrademarks", "ODBC(TM) is a trademark of Microsoft Corporation. Microsoft® is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation.\0" + VALUE "OriginalFilename", "psqlodbc.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Microsoft Open Database Connectivity\0" + VALUE "ProductVersion", POSTGRES_RESOURCE_VERSION + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_BADDSN "DSNƒGƒ“ƒgƒŠ|‚ª•s³‚Å‚·BÄ“xƒ`ƒFƒbƒNÝ’肵‚Ä‚­‚¾‚³‚¢B." + IDS_MSGTITLE "DSN•s³" + IDS_ADVANCE_OPTION_DEF "‚“x‚Ȑݒè (ƒfƒtƒHƒ‹ƒg)" + IDS_ADVANCE_SAVE "•Û‘¶" + IDS_ADVANCE_OPTION_DSN1 "‚“x‚Ȑݒè (%s Ý’è1)" + IDS_ADVANCE_OPTION_CON1 "‚“x‚ȐݒèiƒRƒlƒNƒVƒ‡ƒ“Ý’è‚Pj" + IDS_ADVANCE_OPTION_DSN2 "‚“x‚Ȑݒè (%s Ý’è2)" + IDS_ADVANCE_OPTION_CON2 "‚“x‚Ȑݒè (ƒRƒlƒNƒVƒ‡ƒ“Ý’è2)" + IDS_ADVANCE_CONNECTION "ƒRƒlƒNƒVƒ‡ƒ“" +END + +#endif // “ú–{Œê resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// ‰pŒê (±Òض) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +DLG_CONFIG DIALOG DISCARDABLE 65, 43, 292, 116 +STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | + WS_SYSMENU +CAPTION "PostgreSQL ODBC Driver (psqlODBC) Setup" +FONT 10, "Terminal" +BEGIN + RTEXT "&Data Source",IDC_DSNAMETEXT,5,11,50,12,NOT WS_GROUP + EDITTEXT IDC_DSNAME,57,10,72,12,ES_AUTOHSCROLL | WS_GROUP + RTEXT "Des&cription",IDC_DESCTEXT,129,10,45,12,NOT WS_GROUP + EDITTEXT IDC_DESC,176,10,107,12,ES_AUTOHSCROLL + RTEXT "Data&base",IDC_STATIC,16,26,38,12,NOT WS_GROUP + EDITTEXT IDC_DATABASE,57,25,72,12,ES_AUTOHSCROLL + RTEXT "&Server",IDC_STATIC,26,41,29,12,NOT WS_GROUP + EDITTEXT IDC_SERVER,57,40,72,12,ES_AUTOHSCROLL + RTEXT "&Port",IDC_STATIC,151,41,22,12 + EDITTEXT IDC_PORT,175,40,37,12,ES_AUTOHSCROLL + RTEXT "&User Name",IDC_STATIC,16,56,39,12 + EDITTEXT IDC_USER,57,55,72,12,ES_AUTOHSCROLL + RTEXT "Pass&word",IDC_STATIC,139,57,34,9 + EDITTEXT IDC_PASSWORD,175,55,72,12,ES_PASSWORD | ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,25,87,40,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,80,87,40,14 + GROUPBOX "Options",IDC_OPTIONS,140,74,140,35,BS_LEFT + PUSHBUTTON "Datasource",IDC_DATASOURCE,159,87,50,14 + PUSHBUTTON "Global",IDC_DRIVER,220,87,50,14 + CTEXT "Please supply any missing information required to connect.", + DRV_MSG_LABEL,36,2,220,10 + PUSHBUTTON "",IDC_MANAGEDSN,275,57,1,1 +END + +DLG_OPTIONS_DRV DIALOG DISCARDABLE 0, 0, 287, 231 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Advanced Options (DataSource)" +FONT 10, "Terminal" +BEGIN + PUSHBUTTON "Page 1",IDPREVPAGE,5,5,40,15 + PUSHBUTTON "Page 2",IDNEXTPAGE,49,5,40,15 + CONTROL "Disable Genetic &Optimizer",DRV_OPTIMIZER,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,15,26,116,10 + CONTROL "Comm&Log (C:\\psqlodbc_xxxx.log)",DRV_COMMLOG,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,149,26,131,10 + CONTROL "&KSQO(Keyset Query Optimization)",DRV_KSQO,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,41,132,10 + CONTROL "Recognize Unique &Indexes",DRV_UNIQUEINDEX,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,56,110,10 + CONTROL "P&arse Statements",DRV_PARSE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,149,41,80,10 + CONTROL "&Use Declare/Fetch",DRV_USEDECLAREFETCH,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,71,83,10 + CONTROL "Cancel as FreeStmt (Exp)",DRV_CANCELASFREESTMT,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,149,56,114,10 + CONTROL "MyLog (C:\\mylog_xxxx.log)",DRV_DEBUG,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,149,71,112,10 + GROUPBOX "Unknown Sizes",IDC_STATIC,5,85,277,25 + CONTROL "Maximum",DRV_UNKNOWN_MAX,"Button",BS_AUTORADIOBUTTON | + WS_GROUP | WS_TABSTOP,15,96,45,10 + CONTROL "Don't Know",DRV_UNKNOWN_DONTKNOW,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,105,96,53,10 + CONTROL "Longest",DRV_UNKNOWN_LONGEST,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,215,95,50,10 + GROUPBOX "Data Type Options",IDC_STATIC,5,115,277,25 + CONTROL "Text as LongVarChar",DRV_TEXT_LONGVARCHAR,"Button", + BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,15,125,90,10 + CONTROL "Unknowns as LongVarChar",DRV_UNKNOWNS_LONGVARCHAR, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,105,125,105,10 + CONTROL "Bools as Char",DRV_BOOLS_CHAR,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,215,125,67,10 + LTEXT "&Cache Size:",IDC_STATIC,14,183,52,8 + EDITTEXT DRV_CACHE_SIZE,69,181,35,12,ES_AUTOHSCROLL + LTEXT "Max &Varchar:",IDC_STATIC,13,161,54,8 + EDITTEXT DRV_VARCHAR_SIZE,70,160,35,12,ES_AUTOHSCROLL + LTEXT "Max Lon&gVarChar:",IDC_STATIC,125,161,67,8 + EDITTEXT DRV_LONGVARCHAR_SIZE,199,160,35,12,ES_AUTOHSCROLL + LTEXT "SysTable &Prefixes:",IDC_STATIC,125,183,61,18 + EDITTEXT DRV_EXTRASYSTABLEPREFIXES,199,181,71,12,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,5,212,50,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,81,211,50,15 + PUSHBUTTON "Apply",IDAPPLY,156,212,50,14 + PUSHBUTTON "Defaults",IDDEFAULTS,232,211,50,15 + GROUPBOX "Miscellanous",IDC_STATIC,5,145,277,58 +END + +DLG_OPTIONS_DS DIALOG DISCARDABLE 0, 0, 287, 234 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Advanced Options (DataSource)" +FONT 10, "Terminal" +BEGIN + PUSHBUTTON "Page 2",IDNEXTPAGE,49,5,40,15,BS_BITMAP + PUSHBUTTON "Page 1",IDPREVPAGE,5,5,40,15 + CONTROL "&Read Only",DS_READONLY,"Button",BS_AUTOCHECKBOX | + WS_GROUP | WS_TABSTOP,15,26,102,10 + CONTROL "Row &Versioning",DS_ROWVERSIONING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,149,26,85,10 + CONTROL "Show System &Tables",DS_SHOWSYSTEMTABLES,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,41,100,10 + CONTROL "Disallow &Premature",DS_DISALLOWPREMATURE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,149,41,85,10 + CONTROL "LF <-> CR/LF conversion",DS_LFCONVERSION,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,56,106,10 + CONTROL "True is -1",DS_TRUEISMINUS1,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,149,56,86,10 + CONTROL "Updatable Cursors",DS_UPDATABLECURSORS,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,15,71,87,10 + CONTROL "Server side prepare",DS_SERVERSIDEPREPARE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,149,71,90,10 + CONTROL "bytea as LO",DS_BYTEAASLONGVARBINARY,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,16,84,87,10 + GROUPBOX "Int8 As",IDC_STATIC,5,95,277,25 + CONTROL "default",DS_INT8_AS_DEFAULT,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,12,105,40,10 + CONTROL "bigint",DS_INT8_AS_BIGINT,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,55,105,35,10 + CONTROL "numeric",DS_INT8_AS_NUMERIC,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,98,105,40,10 + CONTROL "varchar",DS_INT8_AS_VARCHAR,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,141,105,40,10 + CONTROL "double",DS_INT8_AS_DOUBLE,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,184,105,40,10 + CONTROL "int4",DS_INT8_AS_INT4,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,227,105,29,10 + GROUPBOX "Protocol",IDC_STATIC,5,125,277,25 + CONTROL "7.X,6.4+",DS_PG64,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,44,136,49,10 + CONTROL "6.3",DS_PG63,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, + 117,136,26,10 + CONTROL "6.2",DS_PG62,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP, + 191,136,26,10 + GROUPBOX "OID Options",IDC_STATIC,5,155,277,25 + CONTROL "Show &Column",DS_SHOWOIDCOLUMN,"Button",BS_AUTOCHECKBOX | + WS_GROUP | WS_TABSTOP,53,167,59,10 + CONTROL "Fake &Index",DS_FAKEOIDINDEX,"Button",BS_AUTOCHECKBOX | + WS_GROUP | WS_TABSTOP,155,166,51,10 + LTEXT "Connect &Settings:",IDC_STATIC,5,192,62,17 + EDITTEXT DS_CONNSETTINGS,71,188,211,27,ES_MULTILINE | + ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN + DEFPUSHBUTTON "OK",IDOK,5,220,50,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,81,220,50,14 + PUSHBUTTON "Apply",IDAPPLY,156,220,50,14 +END + +DLG_OPTIONS_GLOBAL DIALOG DISCARDABLE 0, 0, 306, 87 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Global settings" +FONT 10, "Terminal" +BEGIN + CONTROL "Comm&Log (C:\\psqlodbc_xxxx.log - Communications log)", + DRV_COMMLOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,24, + 263,10 + CONTROL "Mylog (C:\\mylog_xxxx.log - Detailed debug output)", + DRV_DEBUG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,42, + 264,10 + DEFPUSHBUTTON "OK",IDOK,82,68,50,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,172,67,50,15 + GROUPBOX "Pre-connection/default logging options",IDC_STATIC,5,5, + 296,58 +END + +DLG_DRIVER_CHANGE DIALOG DISCARDABLE 0, 0, 306, 87 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Driver up/downgrade" +FONT 10, "Terminal" +BEGIN + DEFPUSHBUTTON "OK",IDOK,82,68,50,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,172,67,50,15 + GROUPBOX "Drivers List",IDC_STATIC,5,5,296,58 + LTEXT "Select the driver",IDC_STATIC,31,33,73,8 + LISTBOX IDC_DRIVER_LIST,117,23,151,32,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + DLG_CONFIG, DIALOG + BEGIN + BOTTOMMARGIN, 115 + END + + DLG_OPTIONS_DRV, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 282 + TOPMARGIN, 5 + BOTTOMMARGIN, 226 + END + + DLG_OPTIONS_DS, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 282 + TOPMARGIN, 5 + BOTTOMMARGIN, 231 + END + + DLG_OPTIONS_GLOBAL, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 301 + TOPMARGIN, 5 + BOTTOMMARGIN, 82 + END + + DLG_DRIVER_CHANGE, DIALOG + BEGIN + LEFTMARGIN, 5 + RIGHTMARGIN, 301 + TOPMARGIN, 5 + BOTTOMMARGIN, 82 + END +END +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION PG_DRVFILE_VERSION + PRODUCTVERSION PG_DRVFILE_VERSION + FILEFLAGSMASK 0x3L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "Comments", "PostgreSQL ODBC driver\0" + VALUE "CompanyName", "Insight Distribution Systems\0" + VALUE "FileDescription", "PostgreSQL Driver\0" + VALUE "FileVersion", POSTGRES_RESOURCE_VERSION + VALUE "InternalName", "psqlodbc\0" + VALUE "LegalCopyright", "\0" + VALUE "LegalTrademarks", "ODBC(TM) is a trademark of Microsoft Corporation. Microsoft? is a registered trademark of Microsoft Corporation. Windows(TM) is a trademark of Microsoft Corporation.\0" + VALUE "OriginalFilename", "psqlodbc.dll\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "Microsoft Open Database Connectivity\0" + VALUE "ProductVersion", POSTGRES_RESOURCE_VERSION + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_BADDSN "Invalid DSN entry, please recheck." + IDS_MSGTITLE "Invalid DSN" + IDS_ADVANCE_OPTION_DEF "Advanced Options (Default)" + IDS_ADVANCE_SAVE "Save" + IDS_ADVANCE_OPTION_DSN1 "Advanced Options (%s) 1/2)" + IDS_ADVANCE_OPTION_CON1 "Advanced Options (Connection 2/2)" + IDS_ADVANCE_OPTION_DSN2 "Advanced Options (%s) 2/2" + IDS_ADVANCE_OPTION_CON2 "Advanced Options (Connection 2/2)" + IDS_ADVANCE_CONNECTION "Connection" +END + +#endif // ‰pŒê (±Òض) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/psqlodbc_api30.def b/psqlodbc_api30.def index ddc7806..6f144b8 100755 --- a/psqlodbc_api30.def +++ b/psqlodbc_api30.def @@ -1,39 +1,39 @@ LIBRARY psqlodbc30 EXPORTS -SQLAllocConnect @1 -SQLAllocEnv @2 -SQLAllocStmt @3 +;SQLAllocConnect @1 +;SQLAllocEnv @2 +;SQLAllocStmt @3 SQLBindCol @4 SQLCancel @5 ; SQLColAttributes @6 */ SQLConnect @7 SQLDescribeCol @8 SQLDisconnect @9 -SQLError @10 +;SQLError @10 SQLExecDirect @11 SQLExecute @12 SQLFetch @13 -SQLFreeConnect @14 -SQLFreeEnv @15 +;SQLFreeConnect @14 +;SQLFreeEnv @15 SQLFreeStmt @16 SQLGetCursorName @17 SQLNumResultCols @18 SQLPrepare @19 SQLRowCount @20 SQLSetCursorName @21 -SQLTransact @23 +;SQLTransact @23 SQLColumns @40 SQLDriverConnect @41 -SQLGetConnectOption @42 +;SQLGetConnectOption @42 SQLGetData @43 SQLGetFunctions @44 SQLGetInfo @45 -SQLGetStmtOption @46 +;SQLGetStmtOption @46 SQLGetTypeInfo @47 SQLParamData @48 SQLPutData @49 -SQLSetConnectOption @50 -SQLSetStmtOption @51 +;SQLSetConnectOption @50 +;SQLSetStmtOption @51 SQLSpecialColumns @52 SQLStatistics @53 SQLTables @54 diff --git a/psqlodbc_api30w.def b/psqlodbc_api30w.def index 86dedae..0f02a7e 100644 --- a/psqlodbc_api30w.def +++ b/psqlodbc_api30w.def @@ -1,33 +1,33 @@ LIBRARY psqlodbc30w EXPORTS -SQLAllocConnect @1 -SQLAllocEnv @2 -SQLAllocStmt @3 +;SQLAllocConnect @1 +;SQLAllocEnv @2 +;SQLAllocStmt @3 SQLBindCol @4 SQLCancel @5 ; SQLColAttributes @6 SQLConnect @7 SQLDescribeCol @8 SQLDisconnect @9 -SQLError @10 +;SQLError @10 SQLExecDirect @11 SQLExecute @12 SQLFetch @13 -SQLFreeConnect @14 -SQLFreeEnv @15 +;SQLFreeConnect @14 +;SQLFreeEnv @15 SQLFreeStmt @16 SQLGetCursorName @17 SQLNumResultCols @18 SQLPrepare @19 SQLRowCount @20 SQLSetCursorName @21 -SQLTransact @23 +;SQLTransact @23 SQLColumns @40 SQLDriverConnect @41 SQLGetData @43 SQLGetFunctions @44 SQLGetInfo @45 -SQLGetStmtOption @46 +;SQLGetStmtOption @46 SQLGetTypeInfo @47 SQLParamData @48 SQLPutData @49 diff --git a/qresult.c b/qresult.c index b64f6de..60d100a 100644 --- a/qresult.c +++ b/qresult.c @@ -41,6 +41,7 @@ void QR_set_num_fields(QResultClass *self, int new_num_fields) { + if (!self) return; mylog("in QR_set_num_fields\n"); CI_set_num_fields(self->fields, new_num_fields); @@ -143,11 +144,15 @@ QR_Constructor() void QR_Destructor(QResultClass *self) { + if (!self) return; mylog("QResult: in DESTRUCTOR\n"); /* manual result set tuples */ if (self->manual_tuples) + { TL_Destructor(self->manual_tuples); + self->manual_tuples = NULL; + } /* * If conn is defined, then we may have used "backend_tuples", so in @@ -160,26 +165,44 @@ QR_Destructor(QResultClass *self) /* Should have been freed in the close() but just in case... */ if (self->cursor) + { free(self->cursor); + self->cursor = NULL; + } /* Free up column info */ if (self->fields) + { CI_Destructor(self->fields); + self->fields = NULL; + } /* Free command info (this is from strdup()) */ if (self->command) + { free(self->command); + self->command = NULL; + } /* Free message info (this is from strdup()) */ if (self->message) + { free(self->message); + self->message = NULL; + } /* Free notice info (this is from strdup()) */ if (self->notice) + { free(self->notice); + self->notice = NULL; + } /* Destruct the result object in the chain */ if (self->next) + { QR_Destructor(self->next); + self->next = NULL; + } free(self); diff --git a/resource.h b/resource.h index 426ccc8..5db9ed8 100644 --- a/resource.h +++ b/resource.h @@ -4,6 +4,15 @@ // #define IDS_BADDSN 1 #define IDS_MSGTITLE 2 +#define IDS_ADVANCE_OPTION_DEF 3 +#define IDOK2 3 +#define IDS_ADVANCE_SAVE 4 +#define IDCANCEL2 4 +#define IDS_ADVANCE_OPTION_DSN1 5 +#define IDS_ADVANCE_OPTION_CON1 6 +#define IDS_ADVANCE_OPTION_DSN2 7 +#define IDS_ADVANCE_OPTION_CON2 8 +#define IDS_ADVANCE_CONNECTION 9 #define DLG_OPTIONS_DRV 102 #define DLG_OPTIONS_DS 103 #define DLG_OPTIONS_GLOBAL 104 @@ -14,6 +23,7 @@ #define IDC_DATABASE 408 #define DLG_CONFIG 1001 #define IDC_PORT 1002 +#define DLG_DRIVER_CHANGE 1002 #define IDC_USER 1006 #define IDC_PASSWORD 1009 #define DS_READONLY 1011 @@ -65,16 +75,20 @@ #define DS_INT8_AS_DOUBLE 1071 #define DS_INT8_AS_INT4 1072 #define DRV_MSG_LABEL2 1073 +#define DS_BYTEAASLONGVARBINARY 1073 #define IDAPPLY 1074 -#define DS_SERVERSIDEPREPARE 1075 +#define DS_SERVERSIDEPREPARE 1075 +#define IDC_DRIVERNAME 1076 +#define IDC_MANAGEDSN 1077 +#define IDC_DRIVER_LIST 1078 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_RESOURCE_VALUE 106 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1076 +#define _APS_NEXT_CONTROL_VALUE 1079 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/setup.c b/setup.c index a1cfa1b..c288e17 100644 --- a/setup.c +++ b/setup.c @@ -110,7 +110,7 @@ ConfigDSN(HWND hwnd, (LONG) (LPSTR) lpsetupdlg)); } else if (lpsetupdlg->ci.dsn[0]) - fSuccess = SetDSNAttributes(hwnd, lpsetupdlg); + fSuccess = SetDSNAttributes(hwnd, lpsetupdlg, NULL); else fSuccess = FALSE; } @@ -194,6 +194,7 @@ ConfigDlgProc(HWND hdlg, LPSETUPDLG lpsetupdlg; ConnInfo *ci; DWORD cmd; + char strbuf[64]; switch (wMsg) { @@ -204,7 +205,8 @@ ConfigDlgProc(HWND hdlg, /* Hide the driver connect message */ ShowWindow(GetDlgItem(hdlg, DRV_MSG_LABEL), SW_HIDE); - SetWindowText(GetDlgItem(hdlg, IDOK), "Save"); + LoadString(s_hModule, IDS_ADVANCE_SAVE, strbuf, sizeof(strbuf)); + SetWindowText(GetDlgItem(hdlg, IDOK), strbuf); SetWindowLong(hdlg, DWL_USER, lParam); CenterDialog(hdlg); /* Center dialog */ @@ -224,6 +226,8 @@ ConfigDlgProc(HWND hdlg, /* Initialize dialog fields */ SetDlgStuff(hdlg, ci); + if (lpsetupdlg->fNewDSN || !ci->dsn[0]) + ShowWindow(GetDlgItem(hdlg, IDC_MANAGEDSN), SW_HIDE); if (lpsetupdlg->fDefault) { EnableWindow(GetDlgItem(hdlg, IDC_DSNAME), FALSE); @@ -272,7 +276,7 @@ ConfigDlgProc(HWND hdlg, GetDlgStuff(hdlg, &lpsetupdlg->ci); /* Update ODBC.INI */ - SetDSNAttributes(hdlg, lpsetupdlg); + SetDSNAttributes(hdlg, lpsetupdlg, NULL); if (IDAPPLY == cmd) break; /* Return to caller */ @@ -291,6 +295,14 @@ ConfigDlgProc(HWND hdlg, DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_OPTIONS_GLOBAL), hdlg, global_optionsProc, (LPARAM) &lpsetupdlg->ci); + return TRUE; + case IDC_MANAGEDSN: + lpsetupdlg = (LPSETUPDLG) GetWindowLong(hdlg, DWL_USER); + if (DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_DRIVER_CHANGE), + hdlg, manage_dsnProc, + (LPARAM) lpsetupdlg) > 0) + EndDialog(hdlg, 0); + return TRUE; } break; @@ -368,12 +380,14 @@ ParseAttributes(LPCSTR lpszAttributes, LPSETUPDLG lpsetupdlg) *-------- */ BOOL INTFUNC -SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg) +SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg, DWORD *errcode) { LPCSTR lpszDSN; /* Pointer to data source name */ lpszDSN = lpsetupdlg->ci.dsn; + if (errcode) + *errcode = 0; /* Validate arguments */ if (lpsetupdlg->fNewDSN && !*lpsetupdlg->ci.dsn) return FALSE; @@ -381,16 +395,24 @@ SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg) /* Write the data source name */ if (!SQLWriteDSNToIni(lpszDSN, lpsetupdlg->lpszDrvr)) { + DWORD err; + char szMsg[SQL_MAX_MESSAGE_LENGTH]; + + SQLInstallerError(1, &err, szMsg, sizeof(szMsg), NULL); if (hwndParent) { char szBuf[MAXPGPATH]; - char szMsg[MAXPGPATH]; - LoadString(s_hModule, IDS_BADDSN, szBuf, sizeof(szBuf)); - wsprintf(szMsg, szBuf, lpszDSN); + if (SQL_SUCCESS != err) + { + LoadString(s_hModule, IDS_BADDSN, szBuf, sizeof(szBuf)); + wsprintf(szMsg, szBuf, lpszDSN); + } LoadString(s_hModule, IDS_MSGTITLE, szBuf, sizeof(szBuf)); MessageBox(hwndParent, szMsg, szBuf, MB_ICONEXCLAMATION | MB_OK); } + if (errcode) + *errcode = err; return FALSE; } @@ -403,3 +425,37 @@ SetDSNAttributes(HWND hwndParent, LPSETUPDLG lpsetupdlg) SQLRemoveDSNFromIni(lpsetupdlg->szDSN); return TRUE; } + + +#ifdef WIN32 + +BOOL INTFUNC +ChangeDriverName(HWND hwndParent, LPSETUPDLG lpsetupdlg, LPCSTR driver_name) +{ + DWORD err = 0; + ConnInfo *ci = &lpsetupdlg->ci; + + if (!ci->dsn[0]) + { + err = ODBC_ERROR_INVALID_DSN; + } + else if (!driver_name || strnicmp(driver_name, "postgresql", 10)) + { + err = ODBC_ERROR_INVALID_NAME; + } + else + { + LPCSTR lpszDrvr = lpsetupdlg->lpszDrvr; + + lpsetupdlg->lpszDrvr = driver_name; + if (!SetDSNAttributes(hwndParent, lpsetupdlg, &err)) + { + if (!err) + err = ODBC_ERROR_INVALID_DSN; + lpsetupdlg->lpszDrvr = lpszDrvr; + } + } + return (err == 0); +} + +#endif /* WIN32 */ diff --git a/statement.c b/statement.c index c9d6816..6c4198e 100644 --- a/statement.c +++ b/statement.c @@ -154,6 +154,8 @@ PGAPI_FreeStmt(HSTMT hstmt, /* Remove the statement from the connection's statement list */ if (conn) { + QResultClass *res; + if (!CC_remove_statement(conn, stmt)) { SC_set_error(stmt, STMT_SEQUENCE_ERROR, "Statement is currently executing a transaction."); @@ -163,9 +165,9 @@ PGAPI_FreeStmt(HSTMT hstmt, } /* Free any cursors and discard any result info */ - if (SC_get_Result(stmt)) + if (res = SC_get_Result(stmt), res) { - QR_Destructor(SC_get_Result(stmt)); + QR_Destructor(res); SC_set_Result(stmt, NULL); } } @@ -364,6 +366,7 @@ SC_Destructor(StatementClass *self) { QResultClass *res = SC_get_Result(self); + if (!self) return FALSE; mylog("SC_Destructor: self=%u, self->result=%u, self->hdbc=%u\n", self, res, self->hdbc); SC_clear_error(self); if (STMT_EXECUTING == self->status) diff --git a/version.h b/version.h index 097deb9..eab41fc 100644 --- a/version.h +++ b/version.h @@ -9,8 +9,8 @@ #ifndef __VERSION_H__ #define __VERSION_H__ -#define POSTGRESDRIVERVERSION "07.03.0001" -#define POSTGRES_RESOURCE_VERSION "07.03.0001\0" -#define PG_DRVFILE_VERSION 7,3,0,01 +#define POSTGRESDRIVERVERSION "07.03.0002" +#define POSTGRES_RESOURCE_VERSION "07.03.0002\0" +#define PG_DRVFILE_VERSION 7,3,0,02 #endif diff --git a/win_setup.h b/win_setup.h index 3c767d8..3be80fe 100644 --- a/win_setup.h +++ b/win_setup.h @@ -22,6 +22,7 @@ typedef struct tagSETUPDLG void INTFUNC CenterDialog(HWND hdlg); int CALLBACK ConfigDlgProc(HWND hdlg, UINT wMsg, WPARAM wParam, LPARAM lParam); void INTFUNC ParseAttributes(LPCSTR lpszAttributes, LPSETUPDLG lpsetupdlg); -BOOL INTFUNC SetDSNAttributes(HWND hwnd, LPSETUPDLG lpsetupdlg); +BOOL INTFUNC SetDSNAttributes(HWND hwnd, LPSETUPDLG lpsetupdlg, DWORD *); +BOOL INTFUNC ChangeDriverName(HWND hwnd, LPSETUPDLG lpsetupdlg, LPCSTR driver_name); #endif /* _WIN_SETUP_H__ */ -- 2.39.5