File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / pdo_odbc / php_pdo_odbc_int.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:34:41 2012 UTC (12 years, 1 month ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_17p0, HEAD
php 5.4.3+patches

    1: /*
    2:   +----------------------------------------------------------------------+
    3:   | PHP Version 5                                                        |
    4:   +----------------------------------------------------------------------+
    5:   | Copyright (c) 1997-2012 The PHP Group                                |
    6:   +----------------------------------------------------------------------+
    7:   | This source file is subject to version 3.0 of the PHP license,       |
    8:   | that is bundled with this package in the file LICENSE, and is        |
    9:   | available through the world-wide-web at the following url:           |
   10:   | http://www.php.net/license/3_0.txt.                                  |
   11:   | If you did not receive a copy of the PHP license and are unable to   |
   12:   | obtain it through the world-wide-web, please send a note to          |
   13:   | license@php.net so we can mail you a copy immediately.               |
   14:   +----------------------------------------------------------------------+
   15:   | Author: Wez Furlong <wez@php.net>                                    |
   16:   +----------------------------------------------------------------------+
   17: */
   18: 
   19: /* $Id: php_pdo_odbc_int.h,v 1.1.1.2 2012/05/29 12:34:41 misho Exp $ */
   20: 
   21: #ifdef PHP_WIN32
   22: # define PDO_ODBC_TYPE	"Win32"
   23: #endif
   24: 
   25: #ifndef PDO_ODBC_TYPE
   26: # warning Please fix configure to give your ODBC libraries a name
   27: # define PDO_ODBC_TYPE	"Unknown"
   28: #endif
   29: 
   30: /* {{{ Roll a dice, pick a header at random... */
   31: #if HAVE_SQLCLI1_H
   32: # include <sqlcli1.h>
   33: # if defined(DB268K) && HAVE_LIBRARYMANAGER_H
   34: #  include <LibraryManager.h>
   35: # endif
   36: #endif
   37: 
   38: #if HAVE_ODBC_H
   39: # include <odbc.h>
   40: #endif
   41: 
   42: #if HAVE_IODBC_H
   43: # include <iodbc.h>
   44: #endif
   45: 
   46: #if HAVE_SQLUNIX_H && !defined(PHP_WIN32)
   47: # include <sqlunix.h>
   48: #endif
   49: 
   50: #if HAVE_SQLTYPES_H
   51: # include <sqltypes.h>
   52: #endif
   53: 
   54: #if HAVE_SQLUCODE_H
   55: # include <sqlucode.h>
   56: #endif
   57: 
   58: #if HAVE_SQL_H
   59: # include <sql.h>
   60: #endif
   61: 
   62: #if HAVE_ISQL_H
   63: # include <isql.h>
   64: #endif
   65: 
   66: #if HAVE_SQLEXT_H
   67: # include <sqlext.h>
   68: #endif
   69: 
   70: #if HAVE_ISQLEXT_H
   71: # include <isqlext.h>
   72: #endif
   73: 
   74: #if HAVE_UDBCEXT_H
   75: # include <udbcext.h>
   76: #endif
   77: 
   78: #if HAVE_CLI0CORE_H
   79: # include <cli0core.h>
   80: #endif
   81: 
   82: #if HAVE_CLI0EXT1_H
   83: # include <cli0ext.h>
   84: #endif
   85: 
   86: #if HAVE_CLI0CLI_H
   87: # include <cli0cli.h>
   88: #endif
   89: 
   90: #if HAVE_CLI0DEFS_H
   91: # include <cli0defs.h>
   92: #endif
   93: 
   94: #if HAVE_CLI0ENV_H
   95: # include <cli0env.h>
   96: #endif
   97: 
   98: #if HAVE_ODBCSDK_H
   99: # include <odbcsdk.h>
  100: #endif
  101: 
  102: /* }}} */
  103: 
  104: /* {{{ Figure out the type for handles */
  105: #if !defined(HENV) && !defined(SQLHENV) && defined(SQLHANDLE)
  106: # define PDO_ODBC_HENV		SQLHANDLE
  107: # define PDO_ODBC_HDBC		SQLHANDLE
  108: # define PDO_ODBC_HSTMT		SQLHANDLE
  109: #elif !defined(HENV) && (defined(SQLHENV) || defined(DB2CLI_VER))
  110: # define PDO_ODBC_HENV		SQLHENV
  111: # define PDO_ODBC_HDBC		SQLHDBC
  112: # define PDO_ODBC_HSTMT		SQLHSTMT
  113: #else
  114: # define PDO_ODBC_HENV		HENV
  115: # define PDO_ODBC_HDBC		HDBC
  116: # define PDO_ODBC_HSTMT		HSTMT
  117: #endif
  118: /* }}} */
  119: 
  120: typedef struct {
  121: 	char last_state[6];
  122: 	char last_err_msg[SQL_MAX_MESSAGE_LENGTH];
  123: 	SDWORD last_error;
  124: 	const char *file, *what;
  125: 	int line;
  126: } pdo_odbc_errinfo;
  127: 
  128: typedef struct {
  129: 	PDO_ODBC_HENV	env;
  130: 	PDO_ODBC_HDBC	dbc;
  131: 	pdo_odbc_errinfo einfo;
  132: 	unsigned assume_utf8:1;
  133: 	unsigned _spare:31;
  134: } pdo_odbc_db_handle;
  135: 
  136: typedef struct {
  137: 	char *data;
  138: 	unsigned long datalen;
  139: 	SQLLEN fetched_len;
  140: 	SWORD	coltype;
  141: 	char colname[128];
  142: 	unsigned is_long;
  143: 	unsigned is_unicode:1;
  144: 	unsigned _spare:31;
  145: } pdo_odbc_column;
  146: 
  147: typedef struct {
  148: 	PDO_ODBC_HSTMT	stmt;
  149: 	pdo_odbc_column *cols;
  150: 	pdo_odbc_db_handle *H;
  151: 	pdo_odbc_errinfo einfo;
  152: 	char *convbuf;
  153: 	unsigned long convbufsize;
  154: 	unsigned going_long:1;
  155: 	unsigned assume_utf8:1;
  156: 	unsigned _spare:30;
  157: } pdo_odbc_stmt;
  158: 
  159: typedef struct {
  160: 	SQLINTEGER len;
  161: 	SQLSMALLINT paramtype;
  162: 	char *outbuf;
  163: 	unsigned is_unicode:1;
  164: 	unsigned _spare:31;
  165: } pdo_odbc_param;
  166: 	
  167: extern pdo_driver_t pdo_odbc_driver;
  168: extern struct pdo_stmt_methods odbc_stmt_methods;
  169: 
  170: void pdo_odbc_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, PDO_ODBC_HSTMT statement, char *what, const char *file, int line TSRMLS_DC);
  171: #define pdo_odbc_drv_error(what)	pdo_odbc_error(dbh, NULL, SQL_NULL_HSTMT, what, __FILE__, __LINE__ TSRMLS_CC)
  172: #define pdo_odbc_stmt_error(what)	pdo_odbc_error(stmt->dbh, stmt, SQL_NULL_HSTMT, what, __FILE__, __LINE__ TSRMLS_CC)
  173: #define pdo_odbc_doer_error(what)	pdo_odbc_error(dbh, NULL, stmt, what, __FILE__, __LINE__ TSRMLS_CC)
  174: 
  175: void pdo_odbc_init_error_table(void);
  176: void pdo_odbc_fini_error_table(void);
  177: 
  178: #ifdef SQL_ATTR_CONNECTION_POOLING
  179: extern SQLUINTEGER pdo_odbc_pool_on;
  180: extern SQLUINTEGER pdo_odbc_pool_mode;
  181: #endif
  182: 
  183: enum {
  184: 	PDO_ODBC_ATTR_USE_CURSOR_LIBRARY = PDO_ATTR_DRIVER_SPECIFIC,
  185: 	PDO_ODBC_ATTR_ASSUME_UTF8 /* assume that input strings are UTF-8 when feeding data to unicode columns */
  186: };
  187: 
  188: /*
  189:  * Local variables:
  190:  * tab-width: 4
  191:  * c-basic-offset: 4
  192:  * End:
  193:  * vim600: noet sw=4 ts=4 fdm=marker
  194:  * vim<600: noet sw=4 ts=4
  195:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>