driver/queries.h (155 lines of code) (raw):
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
#ifndef __QUERIES_H__
#define __QUERIES_H__
#include "error.h"
#include "handles.h"
BOOL queries_init();
void clear_resultset(esodbc_stmt_st *stmt, BOOL on_close);
SQLRETURN TEST_API attach_answer(esodbc_stmt_st *stmt, cstr_st *answer,
BOOL is_json);
SQLRETURN TEST_API attach_error(SQLHANDLE hnd, cstr_st *body, BOOL is_json,
long code);
SQLRETURN TEST_API attach_sql(esodbc_stmt_st *stmt, const SQLWCHAR *sql,
size_t tlen);
void detach_sql(esodbc_stmt_st *stmt);
esodbc_estype_st *lookup_es_type(esodbc_dbc_st *dbc,
SQLSMALLINT es_type, SQLULEN col_size);
SQLRETURN TEST_API serialize_statement(esodbc_stmt_st *stmt, cstr_st *buff);
SQLRETURN close_es_cursor(esodbc_stmt_st *stmt);
SQLRETURN close_es_answ_handler(esodbc_stmt_st *stmt, cstr_st *body,
BOOL is_json);
SQLRETURN EsSQLBindCol(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
_Inout_updates_opt_(_Inexpressible_(BufferLength))
SQLPOINTER TargetValue,
SQLLEN BufferLength,
_Inout_opt_ SQLLEN *StrLen_or_Ind);
SQLRETURN EsSQLFetch(SQLHSTMT StatementHandle);
SQLRETURN EsSQLFetchScroll(SQLHSTMT StatementHandle,
SQLSMALLINT FetchOrientation, SQLLEN FetchOffset);
SQLRETURN EsSQLGetData(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLSMALLINT TargetType,
_Out_writes_opt_(_Inexpressible_(BufferLength)) SQLPOINTER TargetValue,
SQLLEN BufferLength,
_Out_opt_ SQLLEN *StrLen_or_IndPtr);
SQLRETURN EsSQLSetPos(
SQLHSTMT StatementHandle,
SQLSETPOSIROW RowNumber,
SQLUSMALLINT Operation,
SQLUSMALLINT LockType);
SQLRETURN EsSQLBulkOperations(
SQLHSTMT StatementHandle,
SQLSMALLINT Operation);
SQLRETURN EsSQLMoreResults(SQLHSTMT hstmt);
SQLRETURN EsSQLCloseCursor(SQLHSTMT StatementHandle);
SQLRETURN EsSQLCancel(SQLHSTMT StatementHandle);
SQLRETURN EsSQLCancelHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle);
SQLRETURN EsSQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
SQLSMALLINT CompletionType);
SQLRETURN EsSQLNumResultCols(SQLHSTMT StatementHandle,
_Out_ SQLSMALLINT *ColumnCount);
SQLRETURN EsSQLPrepareW(
SQLHSTMT hstmt,
_In_reads_(cchSqlStr) SQLWCHAR *szSqlStr,
SQLINTEGER cchSqlStr);
SQLRETURN EsSQLBindParameter(
SQLHSTMT StatementHandle,
SQLUSMALLINT ParameterNumber,
SQLSMALLINT InputOutputType,
SQLSMALLINT ValueType,
SQLSMALLINT ParameterType,
SQLULEN ColumnSize,
SQLSMALLINT DecimalDigits,
SQLPOINTER ParameterValuePtr,
SQLLEN BufferLength,
SQLLEN *StrLen_or_IndPtr);
SQLRETURN EsSQLExecute(SQLHSTMT hstmt);
SQLRETURN EsSQLExecDirectW(
SQLHSTMT hstmt,
_In_reads_opt_(TextLength) SQLWCHAR *szSqlStr,
SQLINTEGER cchSqlStr);
SQLRETURN EsSQLNativeSqlW(
SQLHDBC hdbc,
_In_reads_(cchSqlStrIn) SQLWCHAR *szSqlStrIn,
SQLINTEGER cchSqlStrIn,
_Out_writes_opt_(cchSqlStrMax) SQLWCHAR *szSqlStr,
SQLINTEGER cchSqlStrMax,
SQLINTEGER *pcchSqlStr);
SQLRETURN EsSQLDescribeColW(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
_Out_writes_opt_(cchColNameMax)
SQLWCHAR *szColName,
SQLSMALLINT cchColNameMax,
_Out_opt_
SQLSMALLINT *pcchColName,
_Out_opt_
SQLSMALLINT *pfSqlType,
_Out_opt_
SQLULEN *pcbColDef,
_Out_opt_
SQLSMALLINT *pibScale,
_Out_opt_
SQLSMALLINT *pfNullable);
SQLRETURN EsSQLColAttributeW(
SQLHSTMT hstmt,
SQLUSMALLINT iCol,
SQLUSMALLINT iField,
_Out_writes_bytes_opt_(cbDescMax)
SQLPOINTER pCharAttr,
SQLSMALLINT cbDescMax,
_Out_opt_
SQLSMALLINT *pcbCharAttr,
_Out_opt_
SQLLEN *pNumAttr
);
SQLRETURN EsSQLNumParams(
SQLHSTMT StatementHandle,
_Out_opt_
SQLSMALLINT *ParameterCountPtr);
SQLRETURN EsSQLRowCount(_In_ SQLHSTMT StatementHandle, _Out_ SQLLEN *RowCount);
/*
* REST request parameters
*/
#define REQ_KEY_QUERY "query"
#define REQ_KEY_CURSOR "cursor"
#define REQ_KEY_PARAMS "params"
#define REQ_KEY_FETCH "fetch_size"
#define REQ_KEY_REQ_TOUT "request_timeout"
#define REQ_KEY_PAGE_TOUT "page_timeout"
#define REQ_KEY_MODE "mode"
#define REQ_KEY_CLT_ID "client_id"
#define REQ_KEY_VERSION "version"
#define REQ_KEY_MULTIVAL "field_multi_value_leniency"
#define REQ_KEY_IDX_FROZEN "index_include_frozen"
#define REQ_KEY_TIMEZONE "time_zone"
#define REQ_KEY_CATALOG "catalog"
#define REQ_KEY_BINARY_FMT "binary_format"
#define REST_REQ_KEY_COUNT 13 /* "query" / "cursor" count as one */
/* keys for the "params" argument */
#define REQ_KEY_PARAM_TYPE "type"
#define REQ_KEY_PARAM_VAL "value"
#ifdef _WIN64
# define REQ_VAL_CLT_ID "odbc64"
#else
# define REQ_VAL_CLT_ID "odbc32"
#endif
#define REQ_VAL_MODE "ODBC"
#define REQ_VAL_TIMEZONE_Z "Z"
/* JSON body building blocks */
#define JSON_KEY_QUERY "\"" REQ_KEY_QUERY "\": " /* 1st key */
#define JSON_KEY_CURSOR "\"" REQ_KEY_CURSOR "\": " /* 1st key */
#define JSON_KEY_PARAMS ", \"" REQ_KEY_PARAMS "\": " /* n-th key */
#define JSON_KEY_FETCH ", \"" REQ_KEY_FETCH "\": " /* n-th key */
#define JSON_KEY_REQ_TOUT ", \"" REQ_KEY_REQ_TOUT "\": " /* n-th key */
#define JSON_KEY_PAGE_TOUT ", \"" REQ_KEY_PAGE_TOUT "\": " /* n-th key */
#define JSON_KEY_VAL_MODE ", \"" REQ_KEY_MODE "\": \"" \
REQ_VAL_MODE "\"" /* n-th key */
#define JSON_KEY_CLT_ID ", \"" REQ_KEY_CLT_ID "\": \"" \
REQ_VAL_CLT_ID "\"" /* n-th k. */
#define JSON_KEY_VERSION ", \"" REQ_KEY_VERSION "\": " /* n-th key */
#define JSON_KEY_MULTIVAL ", \"" REQ_KEY_MULTIVAL "\": " /* n-th */
#define JSON_KEY_IDX_FROZEN ", \"" REQ_KEY_IDX_FROZEN "\": " /* n-th */
#define JSON_KEY_TIMEZONE ", \"" REQ_KEY_TIMEZONE "\": " /* n-th key */
#define JSON_KEY_CATALOG ", \"" REQ_KEY_CATALOG "\": " /* n-th key */
#define JSON_KEY_BINARY_FMT ", \"" REQ_KEY_BINARY_FMT "\": " /* n-th key */
#define JSON_VAL_TIMEZONE_Z "\"" REQ_VAL_TIMEZONE_Z "\""
#endif /* __QUERIES_H__ */