6 * Environment object management functions
8 * The iODBC driver manager.
10 * Copyright (C) 1995 by Ke Jin <kejin@empress.com>
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Library General Public
14 * License as published by the Free Software Foundation; either
15 * version 2 of the License, or (at your option) any later version.
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Library General Public License for more details.
22 * You should have received a copy of the GNU Library General Public
23 * License along with this library; if not, write to the Free
24 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
42 #if (ODBCVER >= 0x0300)
43 en_AllocHandle
= SQL_API_SQLALLOCHANDLE
,
44 en_FreeHandle
= SQL_API_SQLFREEHANDLE
,
47 en_AllocEnv
= SQL_API_SQLALLOCENV
,
48 en_AllocConnect
= SQL_API_SQLALLOCCONNECT
,
49 en_Connect
= SQL_API_SQLCONNECT
,
50 en_DriverConnect
= SQL_API_SQLDRIVERCONNECT
,
51 en_BrowseConnect
= SQL_API_SQLBROWSECONNECT
,
53 en_DataSources
= SQL_API_SQLDATASOURCES
,
54 en_Drivers
= SQL_API_SQLDRIVERS
,
55 en_GetInfo
= SQL_API_SQLGETINFO
,
56 en_GetFunctions
= SQL_API_SQLGETFUNCTIONS
,
57 en_GetTypeInfo
= SQL_API_SQLGETTYPEINFO
,
59 en_SetConnectOption
= SQL_API_SQLSETCONNECTOPTION
,
60 en_GetConnectOption
= SQL_API_SQLGETCONNECTOPTION
,
61 en_SetStmtOption
= SQL_API_SQLSETSTMTOPTION
,
62 en_GetStmtOption
= SQL_API_SQLGETSTMTOPTION
,
64 en_AllocStmt
= SQL_API_SQLALLOCSTMT
,
65 en_Prepare
= SQL_API_SQLPREPARE
,
66 en_BindParameter
= SQL_API_SQLBINDPARAMETER
,
67 en_ParamOptions
= SQL_API_SQLPARAMOPTIONS
,
68 en_GetCursorName
= SQL_API_SQLGETCURSORNAME
,
69 en_SetCursorName
= SQL_API_SQLSETCURSORNAME
,
70 en_SetScrollOptions
= SQL_API_SQLSETSCROLLOPTIONS
,
71 en_SetParam
= SQL_API_SQLSETPARAM
,
73 en_Execute
= SQL_API_SQLEXECUTE
,
74 en_ExecDirect
= SQL_API_SQLEXECDIRECT
,
75 en_NativeSql
= SQL_API_SQLNATIVESQL
,
76 en_DescribeParam
= SQL_API_SQLDESCRIBEPARAM
,
77 en_NumParams
= SQL_API_SQLNUMPARAMS
,
78 en_ParamData
= SQL_API_SQLPARAMDATA
,
79 en_PutData
= SQL_API_SQLPUTDATA
,
81 en_RowCount
= SQL_API_SQLROWCOUNT
,
82 en_NumResultCols
= SQL_API_SQLNUMRESULTCOLS
,
83 en_DescribeCol
= SQL_API_SQLDESCRIBECOL
,
84 en_ColAttributes
= SQL_API_SQLCOLATTRIBUTES
,
85 en_BindCol
= SQL_API_SQLBINDCOL
,
86 en_Fetch
= SQL_API_SQLFETCH
,
87 en_ExtendedFetch
= SQL_API_SQLEXTENDEDFETCH
,
88 en_GetData
= SQL_API_SQLGETDATA
,
89 en_SetPos
= SQL_API_SQLSETPOS
,
90 en_MoreResults
= SQL_API_SQLMORERESULTS
,
91 en_Error
= SQL_API_SQLERROR
,
93 en_ColumnPrivileges
= SQL_API_SQLCOLUMNPRIVILEGES
,
94 en_Columns
= SQL_API_SQLCOLUMNS
,
95 en_ForeignKeys
= SQL_API_SQLFOREIGNKEYS
,
96 en_PrimaryKeys
= SQL_API_SQLPRIMARYKEYS
,
97 en_ProcedureColumns
= SQL_API_SQLPROCEDURECOLUMNS
,
98 en_Procedures
= SQL_API_SQLPROCEDURES
,
99 en_SpecialColumns
= SQL_API_SQLSPECIALCOLUMNS
,
100 en_Statistics
= SQL_API_SQLSTATISTICS
,
101 en_TablePrivileges
= SQL_API_SQLTABLEPRIVILEGES
,
102 en_Tables
= SQL_API_SQLTABLES
,
104 en_FreeStmt
= SQL_API_SQLFREESTMT
,
105 en_Cancel
= SQL_API_SQLCANCEL
,
106 en_Transact
= SQL_API_SQLTRANSACT
,
108 en_Disconnect
= SQL_API_SQLDISCONNECT
,
109 en_FreeConnect
= SQL_API_SQLFREECONNECT
,
110 en_FreeEnv
= SQL_API_SQLFREEENV
,
117 int type
; /* must be 1st field */
119 HENV henv
; /* driver's env list */
120 HDBC hdbc
; /* driver's dbc list */
121 HERR herr
; /* err list */
128 HENV next
; /* next attached env handle */
129 int refcount
; /* Driver's bookkeeping reference count */
130 HPROC dllproc_tab
[SQL_EXT_API_LAST
+ 1]; /* driver api calls */
132 HENV dhenv
; /* driver env handle */
133 HDLL hdll
; /* drvier share library handle */
139 * - ODBC applications only know about global environment handle,
140 * a void pointer points to a GENV_t object. There is only one
141 * this object per process(however, to make the library reentrant,
142 * we still keep this object on heap). Applications only know
143 * address of this object and needn't care about its detail.
145 * - ODBC driver manager knows about instance environment handles,
146 * void pointers point to ENV_t objects. There are maybe more
147 * than one this kind of objects per process. However, multiple
148 * connections to a same data source(i.e. call same share library)
149 * will share one instance environment object.
151 * - ODBC drvier manager knows about their own environemnt handle,
152 * a void pointer point to a driver defined object. Every driver
153 * keeps one of its own environment object and driver manager
154 * keeps address of it by the 'dhenv' field in the instance
155 * environment object without care about its detail.
157 * - Applications can get driver's environment object handle by
158 * SQLGetInfo() with fInfoType equals to SQL_DRIVER_HENV