338 lines
11 KiB
C
338 lines
11 KiB
C
/* File: dlg_specific.h
|
|
*
|
|
* Description: See "dlg_specific.c"
|
|
*
|
|
* Comments: See "readme.txt" for copyright and license information.
|
|
*
|
|
*/
|
|
|
|
#ifndef __DLG_SPECIFIC_H__
|
|
#define __DLG_SPECIFIC_H__
|
|
|
|
#include "psqlodbc.h"
|
|
|
|
#ifdef WIN32
|
|
#include <windowsx.h>
|
|
#include "resource.h"
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
/* Unknown data type sizes */
|
|
#define UNKNOWNS_AS_MAX 0
|
|
#define UNKNOWNS_AS_DONTKNOW 1
|
|
#define UNKNOWNS_AS_LONGEST 2
|
|
|
|
/* ODBC initialization files */
|
|
#ifndef WIN32
|
|
#define ODBC_INI ".odbc.ini"
|
|
#define ODBCINST_INI "odbcinst.ini"
|
|
#else
|
|
#define ODBC_INI "ODBC.INI"
|
|
#define ODBCINST_INI "ODBCINST.INI"
|
|
#endif
|
|
|
|
#define ODBC_DATASOURCES "ODBC Data Sources"
|
|
#define INVALID_DRIVER " @@driver not exist@@ "
|
|
|
|
#ifdef UNICODE_SUPPORT
|
|
#define INI_DSN "PostgreSQL35W"
|
|
#else
|
|
#define INI_DSN "PostgreSQL30"
|
|
#endif /* UNICODE_SUPPORT */
|
|
|
|
#define INI_KDESC "Description" /* Data source
|
|
* description */
|
|
#define INI_SERVER "Servername" /* Name of Server
|
|
* running the Postgres
|
|
* service */
|
|
#define SPEC_SERVER "server"
|
|
#define INI_PORT "Port" /* Port on which the
|
|
* Postmaster is listening */
|
|
#define INI_DATABASE "Database" /* Database Name */
|
|
#define INI_UID "UID" /* Default User Name */
|
|
#define INI_USERNAME "Username" /* Default User Name */
|
|
#define INI_PASSWORD "Password" /* Default Password */
|
|
|
|
#define INI_ABBREVIATE "CX"
|
|
#define INI_DEBUG "Debug" /* Debug flag */
|
|
#define ABBR_DEBUG "B2"
|
|
#define INI_FETCH "Fetch" /* Fetch Max Count */
|
|
#define ABBR_FETCH "A7"
|
|
/*
|
|
* "Socket", abbreviated as "A8" was used for socket buffer. Now that we do
|
|
* everything through libpq, it's not used
|
|
*/
|
|
#define INI_READONLY "ReadOnly" /* Database is read only */
|
|
#define ABBR_READONLY "A0"
|
|
#define INI_COMMLOG "CommLog" /* Communication to
|
|
* backend logging */
|
|
#define ABBR_COMMLOG "B3"
|
|
#define INI_PROTOCOL "Protocol" /* Controls rollback-on-error
|
|
* behavior. Called "Protocol"
|
|
* for historical reasons */
|
|
#define ABBR_PROTOCOL "A1"
|
|
/* "Optimizer", abbreviated to B4 used to stand for "disable genetic query
|
|
* optimizer". No longer supported, you can use generic ConnSettings instead.
|
|
#define INI_OPTIMIZER "Optimizer"
|
|
#define ABBR_OPTIMIZER "B4"
|
|
*/
|
|
/* "Ksqo", abbreviated to B5 was used with pre-7.1 server versions for
|
|
* "keyset query optimization". No longer used.
|
|
#define INI_KSQO "Ksqo"
|
|
#define ABBR_KSQO "B5"
|
|
*/
|
|
#define INI_CONNSETTINGS "ConnSettings" /* Anything to send to
|
|
* backend on successful
|
|
* connection */
|
|
#define ABBR_CONNSETTINGS "A6"
|
|
#define INI_UNIQUEINDEX "UniqueIndex" /* Recognize unique
|
|
* indexes */
|
|
#define INI_UNKNOWNSIZES "UnknownSizes" /* How to handle unknown
|
|
* result set sizes */
|
|
#define ABBR_UNKNOWNSIZES "A9"
|
|
|
|
/* "CancelAsFreeStmt", abbreviated to "C1" was used with ODBC versions older
|
|
* than 3.51. It was a hack that made SQLCancel to imply
|
|
* SQLFreeStmt(SQL_CLOSE). It never had an effect in > 3.51 mode.
|
|
#define INI_CANCELASFREESTMT "CancelAsFreeStmt"
|
|
#define ABBR_CANCELASFREESTMT "C1"
|
|
*/
|
|
#define INI_USEDECLAREFETCH "UseDeclareFetch" /* Use Declare/Fetch
|
|
* cursors */
|
|
#define ABBR_USEDECLAREFETCH "B6"
|
|
|
|
#define INI_FOREXTENSIONCONNECTOR "ForExtensionConnector"
|
|
|
|
/* More ini stuff */
|
|
#define INI_TEXTASLONGVARCHAR "TextAsLongVarchar"
|
|
#define ABBR_TEXTASLONGVARCHAR "B7"
|
|
#define INI_UNKNOWNSASLONGVARCHAR "UnknownsAsLongVarchar"
|
|
#define ABBR_UNKNOWNSASLONGVARCHAR "B8"
|
|
#define INI_BOOLSASCHAR "BoolsAsChar"
|
|
#define ABBR_BOOLSASCHAR "B9"
|
|
#define INI_MAXVARCHARSIZE "MaxVarcharSize"
|
|
#define ABBR_MAXVARCHARSIZE "B0"
|
|
#define INI_MAXLONGVARCHARSIZE "MaxLongVarcharSize"
|
|
#define ABBR_MAXLONGVARCHARSIZE "B1"
|
|
|
|
#define INI_FAKEOIDINDEX "FakeOidIndex"
|
|
#define ABBR_FAKEOIDINDEX "A2"
|
|
#define INI_SHOWOIDCOLUMN "ShowOidColumn"
|
|
#define ABBR_SHOWOIDCOLUMN "A3"
|
|
#define INI_ROWVERSIONING "RowVersioning"
|
|
#define ABBR_ROWVERSIONING "A4"
|
|
#define INI_SHOWSYSTEMTABLES "ShowSystemTables"
|
|
#define ABBR_SHOWSYSTEMTABLES "A5"
|
|
#define INI_LIE "Lie"
|
|
#define INI_PARSE "Parse"
|
|
#define ABBR_PARSE "C0"
|
|
#define INI_EXTRASYSTABLEPREFIXES "ExtraSysTablePrefixes"
|
|
#define ABBR_EXTRASYSTABLEPREFIXES "C2"
|
|
|
|
#define INI_TRANSLATIONNAME "TranslationName"
|
|
#define INI_TRANSLATIONDLL "TranslationDLL"
|
|
#define INI_TRANSLATIONOPTION "TranslationOption"
|
|
/*
|
|
* "DisallowPremature", abbreviated "C3", used to mean that we should not
|
|
* execute a statement prematurely, before SQLExecute() when e.g.
|
|
* SQLPrepare+SQLDescribeCol is called. We never do that anymore.
|
|
*
|
|
#define INI_DISALLOWPREMATURE "DisallowPremature"
|
|
#define ABBR_DISALLOWPREMATURE "C3"
|
|
*/
|
|
#define INI_UPDATABLECURSORS "UpdatableCursors"
|
|
#define ABBR_UPDATABLECURSORS "C4"
|
|
#define INI_LFCONVERSION "LFConversion"
|
|
#define ABBR_LFCONVERSION "C5"
|
|
#define INI_TRUEISMINUS1 "TrueIsMinus1"
|
|
#define ABBR_TRUEISMINUS1 "C6"
|
|
#define INI_INT8AS "BI"
|
|
#define INI_BYTEAASLONGVARBINARY "ByteaAsLongVarBinary"
|
|
#define ABBR_BYTEAASLONGVARBINARY "C7"
|
|
#define INI_USESERVERSIDEPREPARE "UseServerSidePrepare"
|
|
#define ABBR_USESERVERSIDEPREPARE "C8"
|
|
#define INI_LOWERCASEIDENTIFIER "LowerCaseIdentifier"
|
|
#define ABBR_LOWERCASEIDENTIFIER "C9"
|
|
#define INI_SSLMODE "SSLmode"
|
|
#define ABBR_SSLMODE "CA"
|
|
#define INI_EXTRAOPTIONS "AB"
|
|
#define INI_LOGDIR "Logdir"
|
|
#define INI_KEEPALIVETIME "KeepaliveTime"
|
|
#define ABBR_KEEPALIVETIME "D1"
|
|
#define INI_KEEPALIVEINTERVAL "KeepaliveInterval"
|
|
#define ABBR_KEEPALIVEINTERVAL "D2"
|
|
#define INI_PQOPT "pqopt"
|
|
#define ABBR_PQOPT "D5"
|
|
#define INI_DTCLOG "Dtclog"
|
|
/* "PreferLibpq", abbreviated "D4", used to mean whether to prefer libpq.
|
|
* libpq is now required
|
|
#define INI_PREFERLIBPQ "PreferLibpq"
|
|
#define ABBR_PREFERLIBPQ "D3"
|
|
*/
|
|
#define ABBR_XAOPT "D4"
|
|
|
|
#define INI_CONNECTIONEXTRAINFO "ConnectionExtraInfo"
|
|
|
|
/* Whether to use batch protocol ('U' message) while batch executing. */
|
|
#define INI_USEBATCHPROTOCOL "UseBatchProtocol"
|
|
|
|
#define INI_AUTOBALANCE "AutoBalance" /* Control the switch of autobalance */
|
|
#define ABBR_AUTOBALANCE "AuB"
|
|
#define INI_REFRESHCNLISTTIME "RefreshCNListTime"
|
|
#define ABBR_REFRESHCNLISTTIME "RT"
|
|
#define INI_PRIORITY "Priority"
|
|
#define ABBR_PRIORITY "PR"
|
|
#define SSLMODE_DISABLE "disable"
|
|
#define SSLMODE_ALLOW "allow"
|
|
#define SSLMODE_PREFER "prefer"
|
|
#define SSLMODE_REQUIRE "require"
|
|
#define SSLMODE_VERIFY_CA "verify-ca"
|
|
#define SSLMODE_VERIFY_FULL "verify-full"
|
|
#define SSLLBYTE_DISABLE 'd'
|
|
#define SSLLBYTE_ALLOW 'a'
|
|
#define SSLLBYTE_PREFER 'p'
|
|
#define SSLLBYTE_REQUIRE 'r'
|
|
#define SSLLBYTE_VERIFY 'v'
|
|
|
|
#ifdef _HANDLE_ENLIST_IN_DTC_
|
|
#define INI_XAOPT "XaOpt"
|
|
#endif /* _HANDLE_ENLIST_IN_DTC_ */
|
|
/* Bit representation for abbreviated connection strings */
|
|
#define BIT_LFCONVERSION (1L)
|
|
#define BIT_UPDATABLECURSORS (1L<<1)
|
|
#define BIT_UNIQUEINDEX (1L<<3)
|
|
#define BIT_UNKNOWN_DONTKNOW (1L<<6)
|
|
#define BIT_UNKNOWN_ASMAX (1L<<7)
|
|
#define BIT_COMMLOG (1L<<10)
|
|
#define BIT_DEBUG (1L<<11)
|
|
#define BIT_PARSE (1L<<12)
|
|
#define BIT_CANCELASFREESTMT (1L<<13)
|
|
#define BIT_USEDECLAREFETCH (1L<<14)
|
|
#define BIT_READONLY (1L<<15)
|
|
#define BIT_TEXTASLONGVARCHAR (1L<<16)
|
|
#define BIT_UNKNOWNSASLONGVARCHAR (1L<<17)
|
|
#define BIT_BOOLSASCHAR (1L<<18)
|
|
#define BIT_ROWVERSIONING (1L<<19)
|
|
#define BIT_SHOWSYSTEMTABLES (1L<<20)
|
|
#define BIT_SHOWOIDCOLUMN (1L<<21)
|
|
#define BIT_FAKEOIDINDEX (1L<<22)
|
|
#define BIT_TRUEISMINUS1 (1L<<23)
|
|
#define BIT_BYTEAASLONGVARBINARY (1L<<24)
|
|
#define BIT_USESERVERSIDEPREPARE (1L<<25)
|
|
#define BIT_LOWERCASEIDENTIFIER (1L<<26)
|
|
|
|
#define EFFECTIVE_BIT_COUNT 28
|
|
|
|
/* Mask for extra options */
|
|
#define BIT_FORCEABBREVCONNSTR 1L
|
|
#define BIT_FAKE_MSS (1L << 1)
|
|
#define BIT_BDE_ENVIRONMENT (1L << 2)
|
|
#define BIT_CVT_NULL_DATE (1L << 3)
|
|
#define BIT_ACCESSIBLE_ONLY (1L << 4)
|
|
#define BIT_IGNORE_ROUND_TRIP_TIME (1L << 5)
|
|
#define BIT_DISABLE_KEEPALIVE (1L << 6)
|
|
|
|
/* Connection Defaults */
|
|
#define DEFAULT_READONLY 0
|
|
#define DEFAULT_PROTOCOL "7.4" /* the latest protocol is
|
|
* the default */
|
|
#define DEFAULT_USEDECLAREFETCH 0
|
|
#define DEFAULT_FOREXTENSIONCONNECTOR 1
|
|
#define DEFAULT_TEXTASLONGVARCHAR 1
|
|
#define DEFAULT_UNKNOWNSASLONGVARCHAR 0
|
|
#define DEFAULT_BOOLSASCHAR 1
|
|
#define DEFAULT_UNIQUEINDEX 1 /* dont recognize */
|
|
#define DEFAULT_COMMLOG 0 /* dont log */
|
|
#define DEFAULT_DEBUG 0
|
|
#define DEFAULT_UNKNOWNSIZES UNKNOWNS_AS_MAX
|
|
|
|
|
|
#define DEFAULT_FAKEOIDINDEX 0
|
|
#define DEFAULT_SHOWOIDCOLUMN 0
|
|
#define DEFAULT_ROWVERSIONING 0
|
|
#define DEFAULT_SHOWSYSTEMTABLES 0 /* dont show system tables */
|
|
#define DEFAULT_LIE 0
|
|
#define DEFAULT_PARSE 0
|
|
|
|
#define DEFAULT_CANCELASFREESTMT 0
|
|
|
|
#define DEFAULT_EXTRASYSTABLEPREFIXES ""
|
|
|
|
#define DEFAULT_TRUEISMINUS1 0
|
|
#define DEFAULT_UPDATABLECURSORS 1
|
|
#ifdef WIN32
|
|
#define DEFAULT_LFCONVERSION 1
|
|
#else
|
|
#define DEFAULT_LFCONVERSION 0
|
|
#endif /* WIN32 */
|
|
#define DEFAULT_INT8AS 0
|
|
#define DEFAULT_BYTEAASLONGVARBINARY 1
|
|
#define DEFAULT_USESERVERSIDEPREPARE 1
|
|
#define DEFAULT_USEBATCHPROTOCOL 1
|
|
#define DEFAULT_CONNECTIONEXTRAINFO 0
|
|
#define DEFAULT_LOWERCASEIDENTIFIER 0
|
|
#define DEFAULT_SSLMODE SSLMODE_DISABLE
|
|
|
|
#ifdef _HANDLE_ENLIST_IN_DTC_
|
|
#define DEFAULT_XAOPT 1
|
|
#endif /* _HANDLE_ENLIST_IN_DTC_ */
|
|
|
|
/* for CC_DSN_info */
|
|
#define CONN_DONT_OVERWRITE 0
|
|
#define CONN_OVERWRITE 1
|
|
|
|
/* prototypes */
|
|
|
|
#ifdef WIN32
|
|
void SetDlgStuff(HWND hdlg, const ConnInfo *ci);
|
|
void GetDlgStuff(HWND hdlg, ConnInfo *ci);
|
|
|
|
LRESULT CALLBACK driver_optionsProc(HWND hdlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
LRESULT CALLBACK global_optionsProc(HWND hdlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
LRESULT CALLBACK ds_options1Proc(HWND hdlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
LRESULT CALLBACK ds_options2Proc(HWND hdlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
LRESULT CALLBACK ds_options3Proc(HWND hdlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
LRESULT CALLBACK manage_dsnProc(HWND hdlg,
|
|
UINT wMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
#endif /* WIN32 */
|
|
|
|
int write_Ci_Drivers(const char *fileName, const char *sectionName,
|
|
const GLOBAL_VALUES *);
|
|
int writeDriversDefaults(const char *drivername, const GLOBAL_VALUES *);
|
|
void writeDSNinfo(const ConnInfo *ci);
|
|
void getDriversDefaults(const char *drivername, GLOBAL_VALUES *);
|
|
void getDSNinfo(ConnInfo *ci, const char *configDrvrname);
|
|
void makeConnectString(char *connect_string, const ConnInfo *ci, UWORD);
|
|
BOOL get_DSN_or_Driver(ConnInfo *ci, const char *attribute, char *value);
|
|
BOOL copyConnAttributes(ConnInfo *ci, const char *attribute, char *value);
|
|
int getDriverNameFromDSN(const char *dsn, char *driver_name, int namelen);
|
|
UInt4 getExtraOptions(const ConnInfo *);
|
|
BOOL setExtraOptions(ConnInfo *, const char *str, const char *format);
|
|
char *extract_extra_attribute_setting(const pgNAME setting, const char *attr);
|
|
signed char ci_updatable_cursors_set(ConnInfo *ci);
|
|
void getCiAllDefaults(ConnInfo *ci);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
#endif /* __DLG_SPECIFIC_H__ */
|