Apache Portable Runtime
apr_dbd_odbc_v2.h
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 /* ONLY USED FOR ODBC Version 2 -DODBCV2
19 *
20 * Re-define everything to work (more-or-less) in an ODBC V2 environment
21 * Random access to retrieved rows is not supported - i.e. calls to apr_dbd_select() cannot
22 * have a 'random' argument of 1. apr_dbd_get_row() must always pass rownum as 0 (get next row)
23 *
24 */
25 
26 #define SQLHANDLE SQLHENV /* Presumes that ENV, DBC, and STMT handles are all the same datatype */
27 #define SQL_NULL_HANDLE 0
28 #define SQL_HANDLE_STMT 1
29 #define SQL_HANDLE_DBC 2
30 #define SQL_HANDLE_ENV 3
31 #define SQL_NO_DATA SQL_NO_DATA_FOUND
32 
33 #ifndef SQL_SUCCEEDED
34 #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
35 #endif
36 
37 #undef SQLSetEnvAttr
38 #define SQLSetEnvAttr(henv, Attribute, Value, StringLength) (0)
39 
40 #undef SQLAllocHandle
41 #define SQLAllocHandle(type, parent, hndl) \
42 ( (type == SQL_HANDLE_STMT) ? SQLAllocStmt(parent, hndl) \
43  : (type == SQL_HANDLE_ENV) ? SQLAllocEnv(hndl) \
44  : SQLAllocConnect(parent, hndl) \
45 )
46 
47 #undef SQLFreeHandle
48 #define SQLFreeHandle(type, hndl) \
49 ( (type == SQL_HANDLE_STMT) ? SQLFreeStmt(hndl, SQL_DROP) \
50  : (type == SQL_HANDLE_ENV) ? SQLFreeEnv(hndl) \
51  : SQLFreeConnect(hndl) \
52 )
53 
54 #undef SQLGetDiagRec
55 #define SQLGetDiagRec(type, h, i, state, native, buffer, bufsize, reslen) \
56  SQLError( (type == SQL_HANDLE_ENV) ? h : NULL, \
57  (type == SQL_HANDLE_DBC) ? h : NULL, \
58  (type == SQL_HANDLE_STMT) ? h : NULL, \
59  state, native, buffer, bufsize, reslen)
60 
61 #undef SQLCloseCursor
62 #define SQLCloseCursor(stmt) SQLFreeStmt(stmt, SQL_CLOSE)
63 
64 #undef SQLGetConnectAttr
65 #define SQLGetConnectAttr(hdbc, fOption, ValuePtr, BufferLength, NULL) \
66  SQLGetConnectOption(hdbc, fOption, ValuePtr)
67 
68 #undef SQLSetConnectAttr
69 #define SQLSetConnectAttr(hdbc, fOption, ValuePtr, BufferLength) \
70  SQLSetConnectOption(hdbc, fOption, (SQLUINTEGER) ValuePtr)
71 
72 #undef SQLSetStmtAttr
73 #define SQLSetStmtAttr(hstmt, fOption, ValuePtr, BufferLength) (0); return APR_ENOTIMPL;
74 
75 #undef SQLEndTran
76 #define SQLEndTran(hType, hdbc,type) SQLTransact(henv, hdbc, type)
77 
78 #undef SQLFetchScroll
79 #define SQLFetchScroll(stmt, orient, rownum) (0); return APR_ENOTIMPL;
80 
81 #define SQL_DESC_TYPE SQL_COLUMN_TYPE
82 #define SQL_DESC_CONCISE_TYPE SQL_COLUMN_TYPE
83 #define SQL_DESC_DISPLAY_SIZE SQL_COLUMN_DISPLAY_SIZE
84 #define SQL_DESC_OCTET_LENGTH SQL_COLUMN_LENGTH
85 #define SQL_DESC_UNSIGNED SQL_COLUMN_UNSIGNED
86 
87 #undef SQLColAttribute
88 #define SQLColAttribute(s, c, f, a, l, m, n) SQLColAttributes(s, c, f, a, l, m, n)
89 
90 #define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
91 #define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
92 #define SQL_ATTR_CONNECTION_TIMEOUT 113
93 #define SQL_ATTR_CURRENT_CATALOG SQL_CURRENT_QUALIFIER
94 #define SQL_ATTR_DISCONNECT_BEHAVIOR 114
95 #define SQL_ATTR_ENLIST_IN_DTC 1207
96 #define SQL_ATTR_ENLIST_IN_XA 1208
97 
98 #define SQL_ATTR_CONNECTION_DEAD 1209
99 #define SQL_CD_TRUE 1L /* Connection is closed/dead */
100 #define SQL_CD_FALSE 0L /* Connection is open/available */
101 
102 #define SQL_ATTR_LOGIN_TIMEOUT SQL_LOGIN_TIMEOUT
103 #define SQL_ATTR_ODBC_CURSORS SQL_ODBC_CURSORS
104 #define SQL_ATTR_PACKET_SIZE SQL_PACKET_SIZE
105 #define SQL_ATTR_QUIET_MODE SQL_QUIET_MODE
106 #define SQL_ATTR_TRACE SQL_OPT_TRACE
107 #define SQL_ATTR_TRACEFILE SQL_OPT_TRACEFILE
108 #define SQL_ATTR_TRANSLATE_LIB SQL_TRANSLATE_DLL
109 #define SQL_ATTR_TRANSLATE_OPTION SQL_TRANSLATE_OPTION
110 #define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
111 
112 #define SQL_ATTR_CURSOR_SCROLLABLE -1
113 
114 #define SQL_C_SBIGINT (SQL_BIGINT+SQL_SIGNED_OFFSET) /* SIGNED BIGINT */
115 #define SQL_C_UBIGINT (SQL_BIGINT+SQL_UNSIGNED_OFFSET) /* UNSIGNED BIGINT */
116 
117 #define SQL_FALSE 0
118 #define SQL_TRUE 1
119