~ubuntu-branches/ubuntu/edgy/psqlodbc/edgy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
/* File:			dlg_specific.h
 *
 * Description:		See "dlg_specific.c"
 *
 * Comments:		See "notice.txt" for copyright and license information.
 *
 */

#ifndef __DLG_SPECIFIC_H__
#define __DLG_SPECIFIC_H__

#include "psqlodbc.h"
#include "connection.h"

#ifdef WIN32
#include  <windowsx.h>
#include "resource.h"
#endif

/*	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"

#if (ODBCVER >= 0x0300)
#ifdef  UNICODE_SUPPORT
#define INI_DSN				"PostgreSQL30W"
#else
#define INI_DSN				"PostgreSQL30"
#endif /* UNICODE_SUPPORT */
#else
#define INI_DSN				DBMS_NAME
#endif   /* ODBCVER */

#define INI_KDESC						"Description"	/* Data source
														 * description */
#define INI_SERVER						"Servername"	/* Name of Server
														 * running the Postgres
														 * service */
#define INI_PORT						"Port"	/* Port on which the
												 * Postmaster is listening */
#define INI_DATABASE					"Database"		/* Database Name */
#define INI_USER						"Username"		/* Default User Name */
#define INI_PASSWORD					"Password"		/* Default Password */
#define INI_DEBUG						"Debug" /* Debug flag */
#define INI_FETCH						"Fetch" /* Fetch Max Count */
#define INI_SOCKET						"Socket"		/* Socket buffer size */
#define INI_READONLY					"ReadOnly"		/* Database is read only */
#define INI_COMMLOG						"CommLog"		/* Communication to
														 * backend logging */
#define INI_PROTOCOL					"Protocol"		/* What protocol (6.2) */
#define INI_OPTIMIZER					"Optimizer"		/* Use backend genetic
														 * optimizer */
#define INI_KSQO						"Ksqo"	/* Keyset query
												 * optimization */
#define INI_CONNSETTINGS				 "ConnSettings" /* Anything to send to
														 * backend on successful
														 * connection */
#define INI_UNIQUEINDEX					"UniqueIndex"	/* Recognize unique
														 * indexes */
#define INI_UNKNOWNSIZES				"UnknownSizes"	/* How to handle unknown
														 * result set sizes */

#define INI_CANCELASFREESTMT			"CancelAsFreeStmt"

#define INI_USEDECLAREFETCH				"UseDeclareFetch"		/* Use Declare/Fetch
																 * cursors */

/*	More ini stuff */
#define INI_TEXTASLONGVARCHAR			"TextAsLongVarchar"
#define INI_UNKNOWNSASLONGVARCHAR		"UnknownsAsLongVarchar"
#define INI_BOOLSASCHAR					"BoolsAsChar"
#define INI_MAXVARCHARSIZE				"MaxVarcharSize"
#define INI_MAXLONGVARCHARSIZE			"MaxLongVarcharSize"

#define INI_FAKEOIDINDEX				"FakeOidIndex"
#define INI_SHOWOIDCOLUMN				"ShowOidColumn"
#define INI_ROWVERSIONING				"RowVersioning"
#define INI_SHOWSYSTEMTABLES			"ShowSystemTables"
#define INI_LIE							"Lie"
#define INI_PARSE						"Parse"
#define INI_EXTRASYSTABLEPREFIXES		"ExtraSysTablePrefixes"

#define INI_TRANSLATIONNAME				"TranslationName"
#define INI_TRANSLATIONDLL				"TranslationDLL"
#define INI_TRANSLATIONOPTION			"TranslationOption"
#define INI_DISALLOWPREMATURE			"DisallowPremature"
#define INI_UPDATABLECURSORS			"UpdatableCursors"
#define INI_LFCONVERSION			"LFConversion"
#define INI_TRUEISMINUS1			"TrueIsMinus1"
#define INI_INT8AS				"BI"
#define INI_BYTEAASLONGVARBINARY		"ByteaAsLongVarBinary"
#define INI_USESERVERSIDEPREPARE		"UseServerSidePrepare"
#define INI_LOWERCASEIDENTIFIER			"LowerCaseIdentifier"
/* Bit representaion for abbreviated connection strings */
#define BIT_LFCONVERSION			(1L)
#define BIT_UPDATABLECURSORS			(1L<<1)
#define BIT_DISALLOWPREMATURE			(1L<<2)
#define BIT_UNIQUEINDEX				(1L<<3)
#define BIT_PROTOCOL_63				(1L<<4)
#define BIT_PROTOCOL_64				(1L<<5)
#define BIT_UNKNOWN_DONTKNOW			(1L<<6)
#define BIT_UNKNOWN_ASMAX			(1L<<7)
#define BIT_OPTIMIZER				(1L<<8)
#define BIT_KSQO				(1L<<9)
#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			27


/*	Connection Defaults */
#define DEFAULT_PORT					"5432"
#define DEFAULT_READONLY				0
#define DEFAULT_PROTOCOL				"6.4"	/* the latest protocol is
												 * the default */
#define DEFAULT_USEDECLAREFETCH			0
#define DEFAULT_TEXTASLONGVARCHAR		1
#define DEFAULT_UNKNOWNSASLONGVARCHAR	0
#define DEFAULT_BOOLSASCHAR				1
#define DEFAULT_OPTIMIZER				1		/* disable */
#define DEFAULT_KSQO					1		/* on */
#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	"dd_;"

#define DEFAULT_DISALLOWPREMATURE	0
#define DEFAULT_TRUEISMINUS1		0
#ifdef	DRIVER_CURSOR_IMPLEMENT
#define DEFAULT_UPDATABLECURSORS	1
#else
#define DEFAULT_UPDATABLECURSORS	0
#endif /* DRIVER_CURSOR_IMPLEMENT */
#ifdef	WIN32
#define DEFAULT_LFCONVERSION		1
#else
#define DEFAULT_LFCONVERSION		0
#endif	/* WIN32 */
#define DEFAULT_INT8AS			0
#define DEFAULT_BYTEAASLONGVARBINARY	0
#define DEFAULT_USESERVERSIDEPREPARE	0
#define DEFAULT_LOWERCASEIDENTIFIER	0

/*	prototypes */
void		getCommonDefaults(const char *section, const char *filename, ConnInfo *ci);

#ifdef WIN32
void		SetDlgStuff(HWND hdlg, const ConnInfo *ci);
void		GetDlgStuff(HWND hdlg, ConnInfo *ci);

int CALLBACK driver_optionsProc(HWND hdlg,
				   UINT wMsg,
				   WPARAM wParam,
				   LPARAM lParam);
int CALLBACK global_optionsProc(HWND hdlg,
				   UINT wMsg,
				   WPARAM wParam,
				   LPARAM lParam);
int CALLBACK ds_options1Proc(HWND hdlg,
			   UINT wMsg,
			   WPARAM wParam,
			   LPARAM lParam);
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);
void		writeDriverCommoninfo(const char *fileName, const char *sectionName,
		const GLOBAL_VALUES *);
void		writeDSNinfo(const ConnInfo *ci);
void		getDSNdefaults(ConnInfo *ci);
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