psqlodbc.h 4.51 KB
Newer Older
1 2 3 4 5 6 7 8 9

/* File:            psqlodbc.h
 *
 * Description:     This file contains defines and declarations that are related to
 *                  the entire driver.
 *
 * Comments:        See "notice.txt" for copyright and license information.
 *
 */
10 11 12 13

#ifndef __PSQLODBC_H__
#define __PSQLODBC_H__

Byron Nikolaidis's avatar
Byron Nikolaidis committed
14
#ifdef HAVE_CONFIG_H
15
#include "config.h"
Byron Nikolaidis's avatar
Byron Nikolaidis committed
16 17
#endif

18 19 20
#include <stdio.h>	/* for FILE* pointers: see GLOBAL_VALUES */

#ifndef WIN32
Byron Nikolaidis's avatar
Byron Nikolaidis committed
21 22 23 24 25 26 27
#define Int4 long int
#define UInt4 unsigned int
#define Int2 short
#define UInt2 unsigned short
typedef float SFLOAT;
typedef double SDOUBLE;
#else
28 29 30 31
#define Int4 int
#define UInt4 unsigned int
#define Int2 short
#define UInt2 unsigned short
Byron Nikolaidis's avatar
Byron Nikolaidis committed
32
#endif
33 34 35

typedef UInt4 Oid;

36 37 38 39 40 41
/* Driver stuff */
#define ODBCVER				0x0200
#define DRIVER_ODBC_VER		"02.00"

#define DRIVERNAME             "PostgreSQL ODBC"
#define DBMS_NAME              "PostgreSQL"
42

43 44
#define DBMS_VERSION           "06.40.0009 PostgreSQL 6.4/6.5"
#define POSTGRESDRIVERVERSION  "06.40.0009"
45 46 47 48 49 50

#ifdef WIN32
#define DRIVER_FILE_NAME		"PSQLODBC.DLL"
#else
#define DRIVER_FILE_NAME		"libpsqlodbc.so"
#endif
51 52

/* Limits */
53 54 55 56
#ifdef WIN32
#define BLCKSZ                      4096
#endif

57 58
#define MAX_QUERY_SIZE				(BLCKSZ*2)
#define MAX_MESSAGE_LEN				MAX_QUERY_SIZE
59
#define MAX_CONNECT_STRING			4096
60 61
#define ERROR_MSG_LENGTH			4096
#define FETCH_MAX					100		/* default number of rows to cache for declare/fetch */
62
#define TUPLE_MALLOC_INC			100
63
#define SOCK_BUFFER_SIZE			4096	/* default socket buffer size */
64 65 66 67 68
#define MAX_CONNECTIONS				128		/* conns per environment (arbitrary)  */
#define MAX_FIELDS					512
#define BYTELEN						8
#define VARHDRSZ					sizeof(Int4)

Byron Nikolaidis's avatar
Byron Nikolaidis committed
69 70 71 72
#define MAX_TABLE_LEN				32
#define MAX_COLUMN_LEN				32
#define MAX_CURSOR_LEN				32

73 74 75 76
/*	Registry length limits */
#define LARGE_REGISTRY_LEN			4096	/* used for special cases */
#define MEDIUM_REGISTRY_LEN			256		/* normal size for user,database,etc. */
#define SMALL_REGISTRY_LEN			10		/* for 1/0 settings */
77 78 79 80 81 82 83 84 85


/*	These prefixes denote system tables */
#define POSTGRES_SYS_PREFIX	"pg_"
#define KEYS_TABLE			"dd_fkey"

/*	Info limits */
#define MAX_INFO_STRING		128
#define MAX_KEYPARTS		20
86
#define MAX_KEYLEN			512			/*	max key of the form "date+outlet+invoice" */
87 88
#define MAX_STATEMENT_LEN	MAX_MESSAGE_LEN

89 90

#define PG62	"6.2"		/* "Protocol" key setting to force Postgres 6.2 */
91
#define PG63	"6.3"		/* "Protocol" key setting to force postgres 6.3 */
Byron Nikolaidis's avatar
Byron Nikolaidis committed
92
#define PG64	"6.4"
93 94 95 96 97 98 99 100 101 102 103 104

typedef struct ConnectionClass_ ConnectionClass;
typedef struct StatementClass_ StatementClass;
typedef struct QResultClass_ QResultClass;
typedef struct SocketClass_ SocketClass;
typedef struct BindInfoClass_ BindInfoClass;
typedef struct ParameterInfoClass_ ParameterInfoClass;
typedef struct ColumnInfoClass_ ColumnInfoClass;
typedef struct TupleListClass_ TupleListClass;
typedef struct EnvironmentClass_ EnvironmentClass;
typedef struct TupleNode_ TupleNode;
typedef struct TupleField_ TupleField;
105

Byron Nikolaidis's avatar
Byron Nikolaidis committed
106
typedef struct col_info COL_INFO;
107 108 109 110 111 112 113 114 115 116 117 118
typedef struct lo_arg LO_ARG;

typedef struct GlobalValues_
{
	int					fetch_max;
	int					socket_buffersize;
	int					unknown_sizes;
	int					max_varchar_size;
	int					max_longvarchar_size;
	char				debug;
	char				commlog;
	char				disable_optimizer;
119
	char				ksqo;
120
	char				unique_index;
121
	char				onlyread; /* readonly is reserved on Digital C++ compiler */
122 123 124 125
	char				use_declarefetch;
	char				text_as_longvarchar;
	char				unknowns_as_longvarchar;
	char				bools_as_char;
126
	char				lie;
Byron Nikolaidis's avatar
Byron Nikolaidis committed
127
	char				parse;
128
	char				cancel_as_freestmt;
129 130
	char				extra_systable_prefixes[MEDIUM_REGISTRY_LEN];
	char				conn_settings[LARGE_REGISTRY_LEN];
Byron Nikolaidis's avatar
Byron Nikolaidis committed
131 132
	char				protocol[SMALL_REGISTRY_LEN];

133 134
	FILE*				mylogFP;
	FILE*				qlogFP;	
135 136
} GLOBAL_VALUES;

137 138 139 140 141 142 143 144 145
typedef struct StatementOptions_ {
	int maxRows;
	int maxLength;
	int rowset_size;
	int keyset_size;
	int cursor_type;
	int scroll_concurrency;
	int retrieve_data;
	int bind_size;		        /* size of each structure if using Row Binding */
146
	int use_bookmarks;
147 148 149 150 151 152 153 154 155
} StatementOptions;

/*	Used to pass extra query info to send_query */
typedef struct QueryInfo_ {
	int				row_size;
	QResultClass	*result_in;
	char			*cursor;
} QueryInfo;

156 157 158 159 160

#define PG_TYPE_LO				-999	/* hack until permanent type available */
#define PG_TYPE_LO_NAME			"lo"
#define OID_ATTNUM				-2		/* the attnum in pg_index of the oid */

161
/* sizes */
162
#define TEXT_FIELD_SIZE			8190	/* size of text fields (not including null term) */
163 164 165
#define NAME_FIELD_SIZE			32		/* size of name fields */
#define MAX_VARCHAR_SIZE		254		/* maximum size of a varchar (not including null term) */

166 167
#define PG_NUMERIC_MAX_PRECISION	1000
#define PG_NUMERIC_MAX_SCALE		1000
168 169 170 171

#include "misc.h"

#endif