8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-25 00:43:03 +01:00
firebird-mirror/src/jrd/ibase.h

1169 lines
33 KiB
C

/*
* MODULE: ibase.h
* DESCRIPTION: OSRI entrypoints and defines
*
* The contents of this file are subject to the Interbase Public
* License Version 1.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy
* of the License at http://www.Inprise.com/IPL.html
*
* Software distributed under the License is distributed on an
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
* or implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code was created by Inprise Corporation
* and its predecessors. Portions created by Inprise Corporation are
* Copyright (C) Inprise Corporation.
*
* All Rights Reserved.
* Contributor(s): ______________________________________.
*
* 2001.07.28: John Bellardo: Added blr_skip
* 2001.09.18: Ann Harrison: New info codes
* 17-Oct-2001 Mike Nordell: CPU affinity
* 2001-04-16 Paul Beach: ISC_TIME_SECONDS_PRECISION_SCALE modified for HP10
* Compiler Compatibility
* 2002.02.15 Sean Leyne - Code Cleanup, removed obsolete ports:
* - EPSON, XENIX, MAC (MAC_AUX), Cray and OS/2
* 2002.10.29 Nickolay Samofatov: Added support for savepoints
*
* 2002.10.29 Sean Leyne - Removed support for obsolete IPX/SPX Protocol
*
* 2006.09.06 Steve Boyd - Added various prototypes required by Cobol ESQL
* isc_embed_dsql_length
* isc_event_block_a
* isc_sqlcode_s
* isc_embed_dsql_fetch_a
* isc_event_block_s
* isc_baddress
* isc_baddress_s
*
*/
#ifndef JRD_IBASE_H
#define JRD_IBASE_H
#define FB_API_VER 20
#define isc_version4
#define ISC_TRUE 1
#define ISC_FALSE 0
#if !(defined __cplusplus)
#define ISC__TRUE ISC_TRUE
#define ISC__FALSE ISC_FALSE
#endif
#define ISC_FAR
#if defined _MSC_VER && _MSC_VER >= 1300
#define FB_API_DEPRECATED __declspec(deprecated)
#elif defined __GNUC__ && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
#define FB_API_DEPRECATED __attribute__((__deprecated__))
#else
#define FB_API_DEPRECATED
#endif
#include "types_pub.h"
/********************************/
/* Firebird Handle Definitions */
/********************************/
typedef FB_API_HANDLE isc_att_handle;
typedef FB_API_HANDLE isc_blob_handle;
typedef FB_API_HANDLE isc_db_handle;
typedef FB_API_HANDLE isc_req_handle;
typedef FB_API_HANDLE isc_stmt_handle;
typedef FB_API_HANDLE isc_svc_handle;
typedef FB_API_HANDLE isc_tr_handle;
typedef void (* isc_callback) ();
typedef ISC_LONG isc_resv_handle;
typedef void (*ISC_PRINT_CALLBACK) (void*, ISC_SHORT, const char*);
typedef void (*ISC_VERSION_CALLBACK)(void*, const char*);
typedef void (*ISC_EVENT_CALLBACK)(void*, ISC_USHORT, const ISC_UCHAR*);
/*******************************************************************/
/* Blob id structure */
/*******************************************************************/
#if !(defined __cplusplus)
typedef GDS_QUAD GDS__QUAD;
#endif /* !(defined __cplusplus) */
typedef struct
{
short array_bound_lower;
short array_bound_upper;
} ISC_ARRAY_BOUND;
typedef struct
{
ISC_UCHAR array_desc_dtype;
ISC_SCHAR array_desc_scale;
unsigned short array_desc_length;
ISC_SCHAR array_desc_field_name[32];
ISC_SCHAR array_desc_relation_name[32];
short array_desc_dimensions;
short array_desc_flags;
ISC_ARRAY_BOUND array_desc_bounds[16];
} ISC_ARRAY_DESC;
typedef struct
{
short blob_desc_subtype;
short blob_desc_charset;
short blob_desc_segment_size;
ISC_UCHAR blob_desc_field_name[32];
ISC_UCHAR blob_desc_relation_name[32];
} ISC_BLOB_DESC;
/***************************/
/* Blob control structure */
/***************************/
typedef struct isc_blob_ctl
{
ISC_STATUS (* ctl_source)(); /* Source filter */
struct isc_blob_ctl* ctl_source_handle; /* Argument to pass to source filter */
short ctl_to_sub_type; /* Target type */
short ctl_from_sub_type; /* Source type */
unsigned short ctl_buffer_length; /* Length of buffer */
unsigned short ctl_segment_length; /* Length of current segment */
unsigned short ctl_bpb_length; /* Length of blob parameter block */
/* Internally, this is const UCHAR*, but this public struct probably can't change. */
ISC_SCHAR* ctl_bpb; /* Address of blob parameter block */
ISC_UCHAR* ctl_buffer; /* Address of segment buffer */
ISC_LONG ctl_max_segment; /* Length of longest segment */
ISC_LONG ctl_number_segments; /* Total number of segments */
ISC_LONG ctl_total_length; /* Total length of blob */
ISC_STATUS* ctl_status; /* Address of status vector */
long ctl_data[8]; /* Application specific data */
} * ISC_BLOB_CTL;
/***************************/
/* Blob stream definitions */
/***************************/
typedef struct bstream
{
isc_blob_handle bstr_blob; /* Blob handle */
ISC_SCHAR * bstr_buffer; /* Address of buffer */
ISC_SCHAR * bstr_ptr; /* Next character */
short bstr_length; /* Length of buffer */
short bstr_cnt; /* Characters in buffer */
char bstr_mode; /* (mode) ? OUTPUT : INPUT */
} BSTREAM;
/* Three ugly macros, one even using octal radix... sigh... */
#define getb(p) (--(p)->bstr_cnt >= 0 ? *(p)->bstr_ptr++ & 0377: BLOB_get (p))
#define putb(x,p) (((x) == '\n' || (!(--(p)->bstr_cnt))) ? BLOB_put ((x),p) : ((int) (*(p)->bstr_ptr++ = (unsigned) (x))))
#define putbx(x,p) ((!(--(p)->bstr_cnt)) ? BLOB_put ((x),p) : ((int) (*(p)->bstr_ptr++ = (unsigned) (x))))
/********************************************************************/
/* CVC: Public blob interface definition held in val.h. */
/* For some unknown reason, it was only documented in langRef */
/* and being the structure passed by the engine to UDFs it never */
/* made its way into this public definitions file. */
/* Being its original name "blob", I renamed it blobcallback here. */
/* I did the full definition with the proper parameters instead of */
/* the weak C declaration with any number and type of parameters. */
/* Since the first parameter -BLB- is unknown outside the engine, */
/* it's more accurate to use void* than int* as the blob pointer */
/********************************************************************/
#if !defined(JRD_VAL_H) && !defined(REQUESTER)
/* Blob passing structure */
/* This enum applies to parameter "mode" in blob_lseek */
enum blob_lseek_mode {blb_seek_relative = 1, blb_seek_from_tail = 2};
/* This enum applies to the value returned by blob_get_segment */
enum blob_get_result {blb_got_fragment = -1, blb_got_eof = 0, blb_got_full_segment = 1};
typedef struct blobcallback {
short (*blob_get_segment)
(void* hnd, ISC_UCHAR* buffer, ISC_USHORT buf_size, ISC_USHORT* result_len);
void* blob_handle;
ISC_LONG blob_number_segments;
ISC_LONG blob_max_segment;
ISC_LONG blob_total_length;
void (*blob_put_segment)
(void* hnd, const ISC_UCHAR* buffer, ISC_USHORT buf_size);
ISC_LONG (*blob_lseek)
(void* hnd, ISC_USHORT mode, ISC_LONG offset);
} *BLOBCALLBACK;
#endif /* !defined(JRD_VAL_H) && !defined(REQUESTER) */
/********************************************************************/
/* CVC: Public descriptor interface held in dsc2.h. */
/* We need it documented to be able to recognize NULL in UDFs. */
/* Being its original name "dsc", I renamed it paramdsc here. */
/* Notice that I adjust to the original definition: contrary to */
/* other cases, the typedef is the same struct not the pointer. */
/* I included the enumeration of dsc_dtype possible values. */
/* Ultimately, dsc2.h should be part of the public interface. */
/********************************************************************/
#if !defined(JRD_DSC_H)
/* This is the famous internal descriptor that UDFs can use, too. */
typedef struct paramdsc {
ISC_UCHAR dsc_dtype;
signed char dsc_scale;
ISC_USHORT dsc_length;
short dsc_sub_type;
ISC_USHORT dsc_flags;
ISC_UCHAR *dsc_address;
} PARAMDSC;
#if !defined(JRD_VAL_H)
/* This is a helper struct to work with varchars. */
typedef struct paramvary {
ISC_USHORT vary_length;
ISC_UCHAR vary_string[1];
} PARAMVARY;
#endif /* !defined(JRD_VAL_H) */
#include "../jrd/dsc_pub.h"
#endif /* !defined(JRD_DSC_H) */
/***************************/
/* Dynamic SQL definitions */
/***************************/
#include "../dsql/sqlda_pub.h"
/***************************/
/* OSRI database functions */
/***************************/
#ifdef __cplusplus
extern "C" {
#endif
ISC_STATUS ISC_EXPORT isc_attach_database(ISC_STATUS*,
short,
const ISC_SCHAR*,
isc_db_handle*,
short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_array_gen_sdl(ISC_STATUS*,
const ISC_ARRAY_DESC*,
ISC_SHORT*,
ISC_UCHAR*,
ISC_SHORT*);
ISC_STATUS ISC_EXPORT isc_array_get_slice(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
ISC_QUAD*,
const ISC_ARRAY_DESC*,
void*,
ISC_LONG*);
ISC_STATUS ISC_EXPORT isc_array_lookup_bounds(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
const ISC_SCHAR*,
const ISC_SCHAR*,
ISC_ARRAY_DESC*);
ISC_STATUS ISC_EXPORT isc_array_lookup_desc(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
const ISC_SCHAR*,
const ISC_SCHAR*,
ISC_ARRAY_DESC*);
ISC_STATUS ISC_EXPORT isc_array_set_desc(ISC_STATUS*,
const ISC_SCHAR*,
const ISC_SCHAR*,
const short*,
const short*,
const short*,
ISC_ARRAY_DESC*);
ISC_STATUS ISC_EXPORT isc_array_put_slice(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
ISC_QUAD*,
const ISC_ARRAY_DESC*,
void*,
ISC_LONG *);
void ISC_EXPORT isc_blob_default_desc(ISC_BLOB_DESC*,
const ISC_UCHAR*,
const ISC_UCHAR*);
ISC_STATUS ISC_EXPORT isc_blob_gen_bpb(ISC_STATUS*,
const ISC_BLOB_DESC*,
const ISC_BLOB_DESC*,
unsigned short,
ISC_UCHAR*,
unsigned short*);
ISC_STATUS ISC_EXPORT isc_blob_info(ISC_STATUS*,
isc_blob_handle*,
short,
const ISC_SCHAR*,
short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_blob_lookup_desc(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
const ISC_UCHAR*,
const ISC_UCHAR*,
ISC_BLOB_DESC*,
ISC_UCHAR*);
ISC_STATUS ISC_EXPORT isc_blob_set_desc(ISC_STATUS*,
const ISC_UCHAR*,
const ISC_UCHAR*,
short,
short,
short,
ISC_BLOB_DESC*);
ISC_STATUS ISC_EXPORT isc_cancel_blob(ISC_STATUS *,
isc_blob_handle *);
ISC_STATUS ISC_EXPORT isc_cancel_events(ISC_STATUS *,
isc_db_handle *,
ISC_LONG *);
ISC_STATUS ISC_EXPORT isc_close_blob(ISC_STATUS *,
isc_blob_handle *);
ISC_STATUS ISC_EXPORT isc_commit_retaining(ISC_STATUS *,
isc_tr_handle *);
ISC_STATUS ISC_EXPORT isc_commit_transaction(ISC_STATUS *,
isc_tr_handle *);
ISC_STATUS ISC_EXPORT isc_create_blob(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
isc_blob_handle*,
ISC_QUAD*);
ISC_STATUS ISC_EXPORT isc_create_blob2(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
isc_blob_handle*,
ISC_QUAD*,
short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_create_database(ISC_STATUS*,
short,
const ISC_SCHAR*,
isc_db_handle*,
short,
const ISC_SCHAR*,
short);
ISC_STATUS ISC_EXPORT isc_database_info(ISC_STATUS*,
isc_db_handle*,
short,
const ISC_SCHAR*,
short,
ISC_SCHAR*);
void ISC_EXPORT isc_decode_date(const ISC_QUAD*,
void*);
void ISC_EXPORT isc_decode_sql_date(const ISC_DATE*,
void*);
void ISC_EXPORT isc_decode_sql_time(const ISC_TIME*,
void*);
void ISC_EXPORT isc_decode_timestamp(const ISC_TIMESTAMP*,
void*);
ISC_STATUS ISC_EXPORT isc_detach_database(ISC_STATUS *,
isc_db_handle *);
ISC_STATUS ISC_EXPORT isc_drop_database(ISC_STATUS *,
isc_db_handle *);
ISC_STATUS ISC_EXPORT isc_dsql_allocate_statement(ISC_STATUS *,
isc_db_handle *,
isc_stmt_handle *);
ISC_STATUS ISC_EXPORT isc_dsql_alloc_statement2(ISC_STATUS *,
isc_db_handle *,
isc_stmt_handle *);
ISC_STATUS ISC_EXPORT isc_dsql_describe(ISC_STATUS *,
isc_stmt_handle *,
unsigned short,
XSQLDA *);
ISC_STATUS ISC_EXPORT isc_dsql_describe_bind(ISC_STATUS *,
isc_stmt_handle *,
unsigned short,
XSQLDA *);
ISC_STATUS ISC_EXPORT isc_dsql_exec_immed2(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
XSQLDA*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_dsql_execute(ISC_STATUS*,
isc_tr_handle*,
isc_stmt_handle*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_dsql_execute2(ISC_STATUS*,
isc_tr_handle*,
isc_stmt_handle*,
unsigned short,
XSQLDA*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_dsql_execute_immediate(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_dsql_fetch(ISC_STATUS *,
isc_stmt_handle *,
unsigned short,
XSQLDA *);
ISC_STATUS ISC_EXPORT isc_dsql_finish(isc_db_handle *);
ISC_STATUS ISC_EXPORT isc_dsql_free_statement(ISC_STATUS *,
isc_stmt_handle *,
unsigned short);
ISC_STATUS ISC_EXPORT isc_dsql_insert(ISC_STATUS*,
isc_stmt_handle*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_dsql_prepare(ISC_STATUS*,
isc_tr_handle*,
isc_stmt_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_dsql_set_cursor_name(ISC_STATUS*,
isc_stmt_handle*,
const ISC_SCHAR*,
unsigned short);
ISC_STATUS ISC_EXPORT isc_dsql_sql_info(ISC_STATUS*,
isc_stmt_handle*,
short,
const ISC_SCHAR*,
short,
ISC_SCHAR*);
void ISC_EXPORT isc_encode_date(const void*,
ISC_QUAD*);
void ISC_EXPORT isc_encode_sql_date(const void*,
ISC_DATE*);
void ISC_EXPORT isc_encode_sql_time(const void*,
ISC_TIME*);
void ISC_EXPORT isc_encode_timestamp(const void*,
ISC_TIMESTAMP*);
ISC_LONG ISC_EXPORT_VARARG isc_event_block(ISC_UCHAR**,
ISC_UCHAR**,
ISC_USHORT, ...);
ISC_USHORT ISC_EXPORT isc_event_block_a(ISC_SCHAR**,
ISC_SCHAR**,
ISC_USHORT,
ISC_SCHAR**);
void ISC_EXPORT isc_event_block_s(ISC_SCHAR**,
ISC_SCHAR**,
ISC_USHORT,
ISC_SCHAR**,
ISC_USHORT*);
void ISC_EXPORT isc_event_counts(ISC_ULONG*,
short,
ISC_UCHAR*,
const ISC_UCHAR *);
/* 17 May 2001 - isc_expand_dpb is DEPRECATED */
void FB_API_DEPRECATED ISC_EXPORT_VARARG isc_expand_dpb(ISC_SCHAR**,
short*, ...);
int ISC_EXPORT isc_modify_dpb(ISC_SCHAR**,
short*,
unsigned short,
const ISC_SCHAR*,
short);
ISC_LONG ISC_EXPORT isc_free(ISC_SCHAR *);
ISC_STATUS ISC_EXPORT isc_get_segment(ISC_STATUS *,
isc_blob_handle *,
unsigned short *,
unsigned short,
ISC_SCHAR *);
ISC_STATUS ISC_EXPORT isc_get_slice(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
ISC_QUAD*,
short,
const ISC_SCHAR*,
short,
const ISC_LONG*,
ISC_LONG,
void*,
ISC_LONG*);
/* CVC: This non-const signature is needed for compatibility, see gds.cpp. */
ISC_LONG FB_API_DEPRECATED ISC_EXPORT isc_interprete(ISC_SCHAR*,
ISC_STATUS**);
/* This const params version used in the engine and other places. */
ISC_LONG ISC_EXPORT fb_interpret(ISC_SCHAR*,
unsigned int,
const ISC_STATUS**);
ISC_STATUS ISC_EXPORT isc_open_blob(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
isc_blob_handle*,
ISC_QUAD*);
ISC_STATUS ISC_EXPORT isc_open_blob2(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
isc_blob_handle*,
ISC_QUAD*,
ISC_USHORT,
const ISC_UCHAR*);
ISC_STATUS ISC_EXPORT isc_prepare_transaction2(ISC_STATUS*,
isc_tr_handle*,
ISC_USHORT,
const ISC_UCHAR*);
void ISC_EXPORT isc_print_sqlerror(ISC_SHORT,
const ISC_STATUS*);
ISC_STATUS ISC_EXPORT isc_print_status(const ISC_STATUS*);
ISC_STATUS ISC_EXPORT isc_put_segment(ISC_STATUS*,
isc_blob_handle*,
unsigned short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_put_slice(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
ISC_QUAD*,
short,
const ISC_SCHAR*,
short,
const ISC_LONG*,
ISC_LONG,
void*);
ISC_STATUS ISC_EXPORT isc_que_events(ISC_STATUS*,
isc_db_handle*,
ISC_LONG*,
short,
const ISC_UCHAR*,
ISC_EVENT_CALLBACK,
void*);
ISC_STATUS ISC_EXPORT isc_rollback_retaining(ISC_STATUS *,
isc_tr_handle *);
ISC_STATUS ISC_EXPORT isc_rollback_transaction(ISC_STATUS *,
isc_tr_handle *);
ISC_STATUS ISC_EXPORT isc_start_multiple(ISC_STATUS *,
isc_tr_handle *,
short,
void *);
ISC_STATUS ISC_EXPORT_VARARG isc_start_transaction(ISC_STATUS *,
isc_tr_handle *,
short, ...);
ISC_LONG ISC_EXPORT isc_sqlcode(const ISC_STATUS*);
void ISC_EXPORT isc_sqlcode_s(const ISC_STATUS*,
ISC_ULONG*);
void ISC_EXPORT isc_sql_interprete(short,
ISC_SCHAR*,
short);
ISC_STATUS ISC_EXPORT isc_transaction_info(ISC_STATUS*,
isc_tr_handle*,
short,
const ISC_SCHAR*,
short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_transact_request(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
ISC_SCHAR*,
unsigned short,
ISC_SCHAR*);
ISC_LONG ISC_EXPORT isc_vax_integer(const ISC_SCHAR*,
short);
ISC_INT64 ISC_EXPORT isc_portable_integer(const ISC_UCHAR*,
short);
/*************************************/
/* Security Functions and structures */
/*************************************/
#define sec_uid_spec 0x01
#define sec_gid_spec 0x02
#define sec_server_spec 0x04
#define sec_password_spec 0x08
#define sec_group_name_spec 0x10
#define sec_first_name_spec 0x20
#define sec_middle_name_spec 0x40
#define sec_last_name_spec 0x80
#define sec_dba_user_name_spec 0x100
#define sec_dba_password_spec 0x200
#define sec_protocol_tcpip 1
#define sec_protocol_netbeui 2
#define sec_protocol_spx 3 /* -- Deprecated Protocol. Declaration retained for compatibility */
#define sec_protocol_local 4
typedef struct {
short sec_flags; /* which fields are specified */
int uid; /* the user's id */
int gid; /* the user's group id */
int protocol; /* protocol to use for connection */
ISC_SCHAR *server; /* server to administer */
ISC_SCHAR *user_name; /* the user's name */
ISC_SCHAR *password; /* the user's password */
ISC_SCHAR *group_name; /* the group name */
ISC_SCHAR *first_name; /* the user's first name */
ISC_SCHAR *middle_name; /* the user's middle name */
ISC_SCHAR *last_name; /* the user's last name */
ISC_SCHAR *dba_user_name; /* the dba user name */
ISC_SCHAR *dba_password; /* the dba password */
} USER_SEC_DATA;
ISC_STATUS ISC_EXPORT isc_add_user(ISC_STATUS*, const USER_SEC_DATA*);
ISC_STATUS ISC_EXPORT isc_delete_user(ISC_STATUS*, const USER_SEC_DATA*);
ISC_STATUS ISC_EXPORT isc_modify_user(ISC_STATUS*, const USER_SEC_DATA*);
/**********************************/
/* Other OSRI functions */
/**********************************/
ISC_STATUS ISC_EXPORT isc_compile_request(ISC_STATUS*,
isc_db_handle*,
isc_req_handle*,
short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_compile_request2(ISC_STATUS*,
isc_db_handle*,
isc_req_handle*,
short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_ddl(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_prepare_transaction(ISC_STATUS*,
isc_tr_handle*);
ISC_STATUS ISC_EXPORT isc_receive(ISC_STATUS*,
isc_req_handle*,
short,
short,
void*,
short);
ISC_STATUS ISC_EXPORT isc_reconnect_transaction(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_release_request(ISC_STATUS*,
isc_req_handle*);
ISC_STATUS ISC_EXPORT isc_request_info(ISC_STATUS*,
isc_req_handle*,
short,
short,
const ISC_SCHAR*,
short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_seek_blob(ISC_STATUS*,
isc_blob_handle*,
short,
ISC_LONG,
ISC_LONG*);
ISC_STATUS ISC_EXPORT isc_send(ISC_STATUS*,
isc_req_handle*,
short,
short,
const void*,
short);
ISC_STATUS ISC_EXPORT isc_start_and_send(ISC_STATUS*,
isc_req_handle*,
isc_tr_handle*,
short,
short,
const void*,
short);
ISC_STATUS ISC_EXPORT isc_start_request(ISC_STATUS *,
isc_req_handle *,
isc_tr_handle *,
short);
ISC_STATUS ISC_EXPORT isc_unwind_request(ISC_STATUS *,
isc_tr_handle *,
short);
ISC_STATUS ISC_EXPORT isc_wait_for_event(ISC_STATUS*,
isc_db_handle*,
short,
const ISC_UCHAR*,
ISC_UCHAR*);
/*****************************/
/* Other Sql functions */
/*****************************/
ISC_STATUS ISC_EXPORT isc_close(ISC_STATUS*,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_declare(ISC_STATUS*,
const ISC_SCHAR*,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_describe(ISC_STATUS*,
const ISC_SCHAR*,
XSQLDA *);
ISC_STATUS ISC_EXPORT isc_describe_bind(ISC_STATUS*,
const ISC_SCHAR*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_execute(ISC_STATUS*,
isc_tr_handle*,
const ISC_SCHAR*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_execute_immediate(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
short*,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_fetch(ISC_STATUS*,
const ISC_SCHAR*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_open(ISC_STATUS*,
isc_tr_handle*,
const ISC_SCHAR*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_prepare(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
const ISC_SCHAR*,
short*,
const ISC_SCHAR*,
XSQLDA*);
/*************************************/
/* Other Dynamic sql functions */
/*************************************/
ISC_STATUS ISC_EXPORT isc_dsql_execute_m(ISC_STATUS*,
isc_tr_handle*,
isc_stmt_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_execute2_m(ISC_STATUS*,
isc_tr_handle*,
isc_stmt_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
const ISC_SCHAR*,
unsigned short,
ISC_SCHAR*,
unsigned short,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_execute_immediate_m(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_exec_immed3_m(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
ISC_SCHAR*,
unsigned short,
ISC_SCHAR*,
unsigned short,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_fetch_m(ISC_STATUS*,
isc_stmt_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_insert_m(ISC_STATUS*,
isc_stmt_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_prepare_m(ISC_STATUS*,
isc_tr_handle*,
isc_stmt_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
unsigned short,
const ISC_SCHAR*,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_dsql_release(ISC_STATUS*,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_close(ISC_STATUS*,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_declare(ISC_STATUS*,
const ISC_SCHAR*,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_describe(ISC_STATUS*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_describe_bind(ISC_STATUS*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_execute(ISC_STATUS*,
isc_tr_handle*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_execute2(ISC_STATUS*,
isc_tr_handle*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_execute_immed(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_fetch(ISC_STATUS*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_fetch_a(ISC_STATUS*,
int*,
const ISC_SCHAR*,
ISC_USHORT,
XSQLDA*);
void ISC_EXPORT isc_embed_dsql_length(const ISC_UCHAR*,
ISC_USHORT*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_open(ISC_STATUS*,
isc_tr_handle*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_open2(ISC_STATUS*,
isc_tr_handle*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_insert(ISC_STATUS*,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_prepare(ISC_STATUS*,
isc_db_handle*,
isc_tr_handle*,
const ISC_SCHAR*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
XSQLDA*);
ISC_STATUS ISC_EXPORT isc_embed_dsql_release(ISC_STATUS*,
const ISC_SCHAR*);
/******************************/
/* Other Blob functions */
/******************************/
BSTREAM* ISC_EXPORT BLOB_open(isc_blob_handle,
ISC_SCHAR*,
int);
int ISC_EXPORT BLOB_put(ISC_SCHAR,
BSTREAM*);
int ISC_EXPORT BLOB_close(BSTREAM*);
int ISC_EXPORT BLOB_get(BSTREAM*);
int ISC_EXPORT BLOB_display(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
int ISC_EXPORT BLOB_dump(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
int ISC_EXPORT BLOB_edit(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
int ISC_EXPORT BLOB_load(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
int ISC_EXPORT BLOB_text_dump(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
int ISC_EXPORT BLOB_text_load(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
BSTREAM* ISC_EXPORT Bopen(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*);
/* Disabled, not found anywhere.
BSTREAM* ISC_EXPORT Bopen2(ISC_QUAD*,
isc_db_handle,
isc_tr_handle,
const ISC_SCHAR*,
unsigned short);
*/
/******************************/
/* Other Misc functions */
/******************************/
ISC_LONG ISC_EXPORT isc_ftof(const ISC_SCHAR*,
const unsigned short,
ISC_SCHAR*,
const unsigned short);
ISC_STATUS ISC_EXPORT isc_print_blr(const ISC_SCHAR*,
ISC_PRINT_CALLBACK,
void*,
short);
void ISC_EXPORT isc_set_debug(int);
void ISC_EXPORT isc_qtoq(const ISC_QUAD*,
ISC_QUAD*);
void ISC_EXPORT isc_vtof(const ISC_SCHAR*,
ISC_SCHAR*,
unsigned short);
void ISC_EXPORT isc_vtov(const ISC_SCHAR*,
ISC_SCHAR*,
short);
int ISC_EXPORT isc_version(isc_db_handle*,
ISC_VERSION_CALLBACK,
void*);
ISC_LONG ISC_EXPORT isc_reset_fpe(ISC_USHORT);
uintptr_t ISC_EXPORT isc_baddress(ISC_SCHAR*);
void ISC_EXPORT isc_baddress_s(const ISC_SCHAR*,
uintptr_t*);
/*****************************************/
/* Service manager functions */
/*****************************************/
#define ADD_SPB_LENGTH(p, length) {*(p)++ = (length); \
*(p)++ = (length) >> 8;}
#define ADD_SPB_NUMERIC(p, data) {*(p)++ = (ISC_SCHAR) (data); \
*(p)++ = (ISC_SCHAR) ((data) >> 8); \
*(p)++ = (ISC_SCHAR) ((data) >> 16); \
*(p)++ = (ISC_SCHAR) ((data) >> 24);}
ISC_STATUS ISC_EXPORT isc_service_attach(ISC_STATUS*,
unsigned short,
const ISC_SCHAR*,
isc_svc_handle*,
unsigned short,
const ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_service_detach(ISC_STATUS *,
isc_svc_handle *);
ISC_STATUS ISC_EXPORT isc_service_query(ISC_STATUS*,
isc_svc_handle*,
isc_resv_handle*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
const ISC_SCHAR*,
unsigned short,
ISC_SCHAR*);
ISC_STATUS ISC_EXPORT isc_service_start(ISC_STATUS*,
isc_svc_handle*,
isc_resv_handle*,
unsigned short,
const ISC_SCHAR*);
/********************************/
/* Client information functions */
/********************************/
void ISC_EXPORT isc_get_client_version ( ISC_SCHAR *);
int ISC_EXPORT isc_get_client_major_version ();
int ISC_EXPORT isc_get_client_minor_version ();
#ifdef __cplusplus
} /* extern "C" */
#endif
/***************************************************/
/* Actions to pass to the blob filter (ctl_source) */
/***************************************************/
#define isc_blob_filter_open 0
#define isc_blob_filter_get_segment 1
#define isc_blob_filter_close 2
#define isc_blob_filter_create 3
#define isc_blob_filter_put_segment 4
#define isc_blob_filter_alloc 5
#define isc_blob_filter_free 6
#define isc_blob_filter_seek 7
/*******************/
/* Blr definitions */
/*******************/
#include "blr.h"
#include "consts_pub.h"
/*********************************/
/* Information call declarations */
/*********************************/
#include "../jrd/inf_pub.h"
#include "iberror.h"
#endif /* JRD_IBASE_H */