1 Star 0 Fork 53

野狐先生/openGauss-connector-odbc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
bind.h 4.33 KB
一键复制 编辑 原始数据 按行查看 历史
/* File: bind.h
*
* Description: See "bind.c"
*
* Comments: See "readme.txt" for copyright and license information.
*
*/
#ifndef __BIND_H__
#define __BIND_H__
#include "psqlodbc.h"
#include "descriptor.h"
/*
* BindInfoClass -- stores information about a bound column
*/
struct BindInfoClass_
{
SQLLEN buflen; /* size of buffer */
char *buffer; /* pointer to the buffer */
SQLLEN *used; /* used space in the buffer (for strings
* not counting the '\0') */
SQLLEN *indicator; /* indicator == used in many cases ? */
SQLSMALLINT returntype; /* kind of conversion to be applied when
* returning (SQL_C_DEFAULT,
* SQL_C_CHAR... etc) */
SQLSMALLINT precision; /* the precision for numeric or timestamp type */
SQLSMALLINT scale; /* the scale for numeric type */
/* area for work variables */
char dummy_data; /* currently not used */
};
/* struct for SQLGetData */
typedef struct
{
/* for BLOBs which don't hold the data */
struct GetBlobDataClass {
Int8 data_left64; /* amount of large object data
left to read before conversion */
} blob;
/* for non-BLOBs which hold the data in ttlbuf after conversion */
char *ttlbuf; /* to save the large result */
SQLLEN ttlbuflen; /* the buffer length */
SQLLEN ttlbufused; /* used length of the buffer */
SQLLEN data_left; /* amount of data left to read */
} GetDataClass;
#define GETDATA_RESET(gdc) ((gdc).blob.data_left64 = (gdc).data_left = -1)
/*
* ParameterInfoClass -- stores information about a bound parameter
*/
struct ParameterInfoClass_
{
SQLLEN buflen;
char *buffer;
SQLLEN *used;
SQLLEN *indicator; /* indicator == used in many cases ? */
SQLSMALLINT CType;
SQLSMALLINT precision; /* the precision for numeric or timestamp type */
SQLSMALLINT scale; /* the scale for numeric type */
/* area for work variables */
char data_at_exec;
};
typedef struct
{
SQLLEN *EXEC_used; /* amount of data */
char *EXEC_buffer; /* the data */
OID lobj_oid;
} PutDataClass;
/*
* ParameterImplClass -- stores implementation information about a parameter
*/
struct ParameterImplClass_
{
pgNAME paramName; /* this is unavailable even in 8.1 */
SQLSMALLINT paramType;
SQLSMALLINT SQLType;
OID PGType;
SQLULEN column_size;
SQLSMALLINT decimal_digits;
SQLSMALLINT precision; /* the precision for numeric or timestamp type */
SQLSMALLINT scale; /* the scale for numeric type */
};
typedef struct
{
GetDataClass fdata;
SQLSMALLINT allocated;
GetDataClass *gdata;
} GetDataInfo;
typedef struct
{
SQLSMALLINT allocated;
PutDataClass *pdata;
} PutDataInfo;
#define PARSE_PARAM_CAST FALSE
#define EXEC_PARAM_CAST TRUE
#define SIMPLE_PARAM_CAST TRUE
#define CALC_BOOKMARK_ADDR(book, offset, bind_size, index) \
(book->buffer + offset + \
(bind_size > 0 ? bind_size : (SQL_C_VARBOOKMARK == book->returntype ? book->buflen : sizeof(UInt4))) * index)
/* Macros to handle pgtype of parameters */
#define PIC_get_pgtype(pari) ((pari).PGType)
#define PIC_set_pgtype(pari, type) ((pari).PGType = (type))
#define PIC_dsp_pgtype(conn, pari) ((pari).PGType ? (pari).PGType : sqltype_to_pgtype(conn, (pari).SQLType))
void extend_column_bindings(ARDFields *opts, int num_columns);
void reset_a_column_binding(ARDFields *opts, int icol);
void extend_parameter_bindings(APDFields *opts, int num_params);
void extend_iparameter_bindings(IPDFields *opts, int num_params);
void reset_a_parameter_binding(APDFields *opts, int ipar);
void reset_a_iparameter_binding(IPDFields *opts, int ipar);
int CountParameters(const StatementClass *stmt, Int2 *inCount, Int2 *ioCount, Int2 *outputCount);
void GetDataInfoInitialize(GetDataInfo *gdata);
void extend_getdata_info(GetDataInfo *gdata, int num_columns, BOOL shrink);
void reset_a_getdata_info(GetDataInfo *gdata, int icol);
void GDATA_unbind_cols(GetDataInfo *gdata, BOOL freeall);
void PutDataInfoInitialize(PutDataInfo *pdata);
void extend_putdata_info(PutDataInfo *pdata, int num_params, BOOL shrink);
void reset_a_putdata_info(PutDataInfo *pdata, int ipar);
void PDATA_free_params(PutDataInfo *pdata, char option);
void SC_param_next(const StatementClass*, int *param_number, ParameterInfoClass **, ParameterImplClass **);
RETCODE prepareParameters(StatementClass *stmt, BOOL fake_params);
RETCODE prepareParametersNoDesc(StatementClass *stmt, BOOL fake_params, BOOL param_cast);
int decideHowToPrepare(StatementClass *stmt, BOOL force);
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/qq1907824738/openGauss-connector-odbc.git
git@gitee.com:qq1907824738/openGauss-connector-odbc.git
qq1907824738
openGauss-connector-odbc
openGauss-connector-odbc
master

搜索帮助