1251876Speter/* Licensed to the Apache Software Foundation (ASF) under one or more
2251876Speter * contributor license agreements.  See the NOTICE file distributed with
3251876Speter * this work for additional information regarding copyright ownership.
4251876Speter * The ASF licenses this file to You under the Apache License, Version 2.0
5251876Speter * (the "License"); you may not use this file except in compliance with
6251876Speter * the License.  You may obtain a copy of the License at
7251876Speter *
8251876Speter *     http://www.apache.org/licenses/LICENSE-2.0
9251876Speter *
10251876Speter * Unless required by applicable law or agreed to in writing, software
11251876Speter * distributed under the License is distributed on an "AS IS" BASIS,
12251876Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13251876Speter * See the License for the specific language governing permissions and
14251876Speter * limitations under the License.
15251876Speter */
16251876Speter
17251876Speter
18251876Speter/*  ONLY USED FOR ODBC Version 2   -DODBCV2
19251876Speter*
20251876Speter*   Re-define everything to work (more-or-less) in an ODBC V2 environment
21251876Speter*       Random access to retrieved rows is not supported - i.e. calls to apr_dbd_select() cannot
22251876Speter*       have a 'random' argument of 1.  apr_dbd_get_row() must always pass rownum as 0 (get next row)
23251876Speter*
24251876Speter*/
25251876Speter
26251876Speter#define SQLHANDLE SQLHENV /* Presumes that ENV, DBC, and STMT handles are all the same datatype */
27251876Speter#define SQL_NULL_HANDLE 0
28251876Speter#define SQL_HANDLE_STMT 1
29251876Speter#define SQL_HANDLE_DBC  2
30251876Speter#define SQL_HANDLE_ENV  3
31251876Speter#define SQL_NO_DATA     SQL_NO_DATA_FOUND
32251876Speter
33251876Speter#ifndef SQL_SUCCEEDED
34251876Speter#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
35251876Speter#endif
36251876Speter
37251876Speter#undef SQLSetEnvAttr
38251876Speter#define SQLSetEnvAttr(henv, Attribute, Value, StringLength)  (0)
39251876Speter
40251876Speter#undef SQLAllocHandle
41251876Speter#define SQLAllocHandle(type, parent, hndl) \
42251876Speter(     (type == SQL_HANDLE_STMT) ? SQLAllocStmt(parent, hndl) \
43251876Speter    : (type == SQL_HANDLE_ENV)  ? SQLAllocEnv(hndl) \
44251876Speter    :                             SQLAllocConnect(parent, hndl)  \
45251876Speter)
46251876Speter
47251876Speter#undef SQLFreeHandle
48251876Speter#define SQLFreeHandle(type, hndl) \
49251876Speter(     (type == SQL_HANDLE_STMT) ? SQLFreeStmt(hndl, SQL_DROP) \
50251876Speter    : (type == SQL_HANDLE_ENV)  ? SQLFreeEnv(hndl) \
51251876Speter    :                             SQLFreeConnect(hndl)  \
52251876Speter)
53251876Speter
54251876Speter#undef SQLGetDiagRec
55251876Speter#define SQLGetDiagRec(type, h, i, state, native, buffer, bufsize, reslen) \
56251876Speter        SQLError(  (type == SQL_HANDLE_ENV) ? h : NULL, \
57251876Speter                   (type == SQL_HANDLE_DBC) ? h : NULL, \
58251876Speter                   (type == SQL_HANDLE_STMT) ? h : NULL, \
59251876Speter                   state, native, buffer, bufsize, reslen)
60251876Speter
61251876Speter#undef SQLCloseCursor
62251876Speter#define SQLCloseCursor(stmt) SQLFreeStmt(stmt, SQL_CLOSE)
63251876Speter
64251876Speter#undef SQLGetConnectAttr
65251876Speter#define SQLGetConnectAttr(hdbc, fOption, ValuePtr, BufferLength, NULL) \
66251876Speter    SQLGetConnectOption(hdbc, fOption, ValuePtr)
67251876Speter
68251876Speter#undef SQLSetConnectAttr
69251876Speter#define SQLSetConnectAttr(hdbc, fOption, ValuePtr, BufferLength) \
70251876Speter        SQLSetConnectOption(hdbc, fOption, (SQLUINTEGER) ValuePtr)
71251876Speter
72251876Speter#undef SQLSetStmtAttr
73251876Speter#define SQLSetStmtAttr(hstmt, fOption, ValuePtr, BufferLength) (0); return APR_ENOTIMPL;
74251876Speter
75251876Speter#undef SQLEndTran
76251876Speter#define SQLEndTran(hType, hdbc,type)  SQLTransact(henv, hdbc, type)
77251876Speter
78251876Speter#undef SQLFetchScroll
79251876Speter#define SQLFetchScroll(stmt, orient, rownum) (0); return APR_ENOTIMPL;
80251876Speter
81251876Speter#define SQL_DESC_TYPE           SQL_COLUMN_TYPE
82251876Speter#define SQL_DESC_CONCISE_TYPE   SQL_COLUMN_TYPE
83251876Speter#define SQL_DESC_DISPLAY_SIZE   SQL_COLUMN_DISPLAY_SIZE
84251876Speter#define SQL_DESC_OCTET_LENGTH   SQL_COLUMN_LENGTH
85251876Speter#define SQL_DESC_UNSIGNED       SQL_COLUMN_UNSIGNED
86251876Speter
87251876Speter#undef SQLColAttribute
88251876Speter#define SQLColAttribute(s, c, f, a, l, m, n) SQLColAttributes(s, c, f, a, l, m, n)
89251876Speter
90251876Speter#define SQL_ATTR_ACCESS_MODE            SQL_ACCESS_MODE
91251876Speter#define SQL_ATTR_AUTOCOMMIT             SQL_AUTOCOMMIT
92251876Speter#define SQL_ATTR_CONNECTION_TIMEOUT     113
93251876Speter#define SQL_ATTR_CURRENT_CATALOG        SQL_CURRENT_QUALIFIER
94251876Speter#define SQL_ATTR_DISCONNECT_BEHAVIOR    114
95251876Speter#define SQL_ATTR_ENLIST_IN_DTC          1207
96251876Speter#define SQL_ATTR_ENLIST_IN_XA           1208
97251876Speter
98251876Speter#define SQL_ATTR_CONNECTION_DEAD        1209
99251876Speter#define SQL_CD_TRUE                     1L   /* Connection is closed/dead */
100251876Speter#define SQL_CD_FALSE                    0L   /* Connection is open/available */
101251876Speter
102251876Speter#define SQL_ATTR_LOGIN_TIMEOUT          SQL_LOGIN_TIMEOUT
103251876Speter#define SQL_ATTR_ODBC_CURSORS           SQL_ODBC_CURSORS
104251876Speter#define SQL_ATTR_PACKET_SIZE            SQL_PACKET_SIZE
105251876Speter#define SQL_ATTR_QUIET_MODE             SQL_QUIET_MODE
106251876Speter#define SQL_ATTR_TRACE                  SQL_OPT_TRACE
107251876Speter#define SQL_ATTR_TRACEFILE              SQL_OPT_TRACEFILE
108251876Speter#define SQL_ATTR_TRANSLATE_LIB          SQL_TRANSLATE_DLL
109251876Speter#define SQL_ATTR_TRANSLATE_OPTION       SQL_TRANSLATE_OPTION
110251876Speter#define SQL_ATTR_TXN_ISOLATION          SQL_TXN_ISOLATION
111251876Speter
112251876Speter#define SQL_ATTR_CURSOR_SCROLLABLE -1
113251876Speter
114251876Speter#define SQL_C_SBIGINT (SQL_BIGINT+SQL_SIGNED_OFFSET)   /* SIGNED BIGINT */
115251876Speter#define SQL_C_UBIGINT (SQL_BIGINT+SQL_UNSIGNED_OFFSET) /* UNSIGNED BIGINT */
116251876Speter
117251876Speter#define SQL_FALSE           0
118251876Speter#define SQL_TRUE            1
119251876Speter
120