X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/8c6fa3fbaccc22127280bf77a48fab5a3ee0716e..46b0747592074017ff0ea4b33d4a7194235886e5:/libs/ibpp/ibase.h?ds=sidebyside diff --git a/libs/ibpp/ibase.h b/libs/ibpp/ibase.h new file mode 100644 index 00000000..9c43ba20 --- /dev/null +++ b/libs/ibpp/ibase.h @@ -0,0 +1,2853 @@ +/* + * 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): ______________________________________. + * Added TCP_NO_DELAY option for superserver on Linux + * FSG 16.03.2001 + * 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 + * + */ +/* +$Id: ibase.h,v 1.2 2007/05/17 08:39:25 faust Exp $ + */ + +#ifndef JRD_IBASE_H +#define JRD_IBASE_H + + +/* + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (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.mozilla.org/MPL/ + * Alternatively, the contents of this file may be used under the + * terms of the GNU General Public License Version 2 or later (the + * "GPL"), in which case the provisions of the GPL are applicable + * instead of those above. You may obtain a copy of the Licence at + * http://www.gnu.org/copyleft/gpl.html + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * Relevant for more details. + * + * This file was created by members of the firebird development team. + * All individual contributions remain the Copyright (C) of those + * individuals. Contributors to this file are either listed here or + * can be obtained from a CVS history command. + * + * All rights reserved. + * + * Contributor(s): + * Mike Nordel + * Mark O'Donohue + * + * + * $Id: ibase.h,v 1.2 2007/05/17 08:39:25 faust Exp $ + * + * 2002.02.15 Sean Leyne - Code Cleanup, removed obsolete "OS/2" port + * + */ + + +#ifndef INCLUDE_FB_TYPES_H +#define INCLUDE_FB_TYPES_H + + +/******************************************************************/ +/* Define type, export and other stuff based on c/c++ and Windows */ +/******************************************************************/ + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +#ifndef __GNUC__ +typedef __int64 ISC_INT64; +typedef unsigned __int64 ISC_UINT64; +#define ISC_INT64_DEFINED +#endif +#define ISC_EXPORT __stdcall +#define ISC_EXPORT_VARARG __cdecl +#else +#define ISC_EXPORT +#define ISC_EXPORT_VARARG +#endif + +/*******************************************************************/ +/* 64 bit Integers */ +/*******************************************************************/ + +#ifdef ISC_INT64_DEFINED +#undef ISC_INT64_DEFINED +#else +//typedef long long int ISC_INT64; +//typedef unsigned long long int ISC_UINT64; +typedef int64_t ISC_INT64; +typedef uint64_t ISC_UINT64; +#endif + +// Nickolay: it is easier to assume that integer is at least 32-bit. +// This comes from limitation that we cannot reliably detect datatype size at +// compile time in cases when we do not control compilation (public headers) +// We are not going to support 16-bit platforms, right? +// +// Temporarly restrict new definition until ULONG clash with Windows +// type is solved. Win64 port is not possible before that point. +// Cannot use SIZEOF_LONG define here because we are in a public header +#if defined(_LP64) || defined(__LP64__) || defined(__arch64__) + /* EKU: Firebird requires (S)LONG to be 32 bit */ +# define LONG_DEFINED + typedef int SLONG; + typedef unsigned int ULONG; +#endif /* SIZEOF_LONG == 8 */ + + + +/* Basic data types */ + + +#ifdef NOT_USED_OR_REPLACED +typedef signed char SCHAR; +#else +/* TMN: TODO It seems SCHAR is used just about *everywhere* where a plain + * "char" is really intended. This currently forces us to this bad definition. + */ +typedef char SCHAR; +#endif + + +typedef unsigned char UCHAR; +typedef short SSHORT; +typedef unsigned short USHORT; + + +#ifndef LONG_DEFINED /* 32 bit */ +typedef long SLONG; +typedef unsigned long ULONG; +#else +#undef LONG_DEFINED +#endif + + +#ifndef SQUAD_DEFINED /* 64 bit */ +typedef struct { + SLONG high; + ULONG low; +} SQUAD; +#endif + + +#ifndef DEFINED_GDS_QUAD +#define DEFINED_GDS_QUAD +struct GDS_QUAD_t { + SLONG gds_quad_high; + ULONG gds_quad_low; +}; + +typedef struct GDS_QUAD_t GDS_QUAD; + +#endif /* DEFINED_GDS_QUAD */ + +// +// TMN: some misc data types from all over the place +// +struct vary +{ + USHORT vary_length; + char vary_string[1]; +}; +// TMN: Currently we can't do this, since remote uses a different +// definition of VARY than the rest of the code! :-< +//typedef vary* VARY; + +struct lstring +{ + ULONG lstr_length; + ULONG lstr_allocated; + UCHAR* lstr_address; +}; +typedef struct lstring LSTRING; + + +typedef unsigned char BOOLEAN; +typedef char TEXT; // To be expunged over time +//typedef unsigned char STEXT; Signed text - not used +//typedef unsigned char UTEXT; Unsigned text - not used +typedef unsigned char BYTE; // Unsigned byte - common +//typedef char SBYTE; Signed byte - not used +typedef long ISC_STATUS; +typedef long IPTR; +typedef unsigned long U_IPTR; +typedef void (*FPTR_VOID) (); +typedef void (*FPTR_VOID_PTR) (void *); +typedef int (*FPTR_INT) (); +typedef int (*FPTR_INT_VOID_PTR) (void *); +typedef ULONG RCRD_OFFSET; +typedef USHORT FLD_LENGTH; +typedef int (*lock_ast_t)(void *); + +typedef IPTR FB_THREAD_ID; + +#define ISC_STATUS_LENGTH 20 +typedef ISC_STATUS ISC_STATUS_ARRAY[ISC_STATUS_LENGTH]; + +/* Number of elements in an arry */ +#define FB_NELEM(x) ((int)(sizeof(x) / sizeof(x[0]))) +#define FB_ALIGN(n,b) ((n+b-1)&~(b-1)) + +#endif /* INCLUDE_FB_TYPES_H */ + +#define FB_API_VER 15 +#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 + +// It is difficult to detect 64-bit long from the redistributable header +// we do not care of 16-bit platforms anymore thus we may use plain "int" +// which is 32-bit on all platforms we support +#if defined(_LP64) || defined(__LP64__) || defined(__arch64__) +typedef int ISC_LONG; +typedef unsigned int ISC_ULONG; +#else +typedef signed long ISC_LONG; +typedef unsigned long ISC_ULONG; +#endif + +typedef signed short ISC_SHORT; +typedef unsigned short ISC_USHORT; + +typedef unsigned char ISC_UCHAR; + +#define DSQL_close 1 +#define DSQL_drop 2 + + +/********************************/ +/* InterBase Handle Definitions */ +/********************************/ + +#ifndef JRD_Y_REF_H +#define FRBRD void +#endif + +typedef FRBRD * isc_att_handle; +typedef FRBRD * isc_blob_handle; +typedef FRBRD * isc_db_handle; +typedef FRBRD * isc_req_handle; +typedef FRBRD * isc_stmt_handle; +typedef FRBRD * isc_svc_handle; +typedef FRBRD * isc_tr_handle; +typedef void (* isc_callback) (); +typedef ISC_LONG isc_resv_handle; + +/*******************************************************************/ +/* Time & Date Support */ +/*******************************************************************/ + +#ifndef ISC_TIMESTAMP_DEFINED +typedef int ISC_DATE; +typedef unsigned int ISC_TIME; +typedef struct +{ + ISC_DATE timestamp_date; + ISC_TIME timestamp_time; +} ISC_TIMESTAMP; +#define ISC_TIMESTAMP_DEFINED +#endif /* ISC_TIMESTAMP_DEFINED */ + +#define ISC_TIME_SECONDS_PRECISION 10000L +#define ISC_TIME_SECONDS_PRECISION_SCALE (-4) + +/*******************************************************************/ +/* Blob id structure */ +/*******************************************************************/ + +#if !(defined __cplusplus) +typedef GDS_QUAD GDS__QUAD; +#endif /* !(defined __cplusplus) */ + +typedef struct GDS_QUAD_t ISC_QUAD; + +#define isc_quad_high gds_quad_high +#define isc_quad_low gds_quad_low + +typedef struct +{ + short array_bound_lower; + short array_bound_upper; +} ISC_ARRAY_BOUND; + +typedef struct +{ + unsigned char array_desc_dtype; + char array_desc_scale; + unsigned short array_desc_length; + char array_desc_field_name[32]; + char 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; + unsigned char blob_desc_field_name[32]; + unsigned char 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 */ + char * ctl_bpb; /* Address of blob parameter block */ + unsigned char * 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 */ + char * bstr_buffer; /* Address of buffer */ + char * 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 */ + +enum lseek_mode {blb_seek_relative = 1, blb_seek_from_tail = 2}; + +typedef struct blobcallback { + short ( *blob_get_segment) + (void * hnd, unsigned char* 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, unsigned char* 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 dsc.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, dsc.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 { + unsigned char dsc_dtype; + signed char dsc_scale; + ISC_USHORT dsc_length; + short dsc_sub_type; + ISC_USHORT dsc_flags; + unsigned char *dsc_address; +} PARAMDSC; + +#if !defined(JRD_VAL_H) +/* This is a helper struct to work with varchars. */ +typedef struct paramvary { + ISC_USHORT vary_length; + unsigned char vary_string [1]; +} PARAMVARY; +#endif /* !defined(JRD_VAL_H) */ + +/* values for dsc_flags */ +/* Note: DSC_null is only reliably set for local variables + (blr_variable) */ +#define DSC_null 1 +#define DSC_no_subtype 2 /* dsc has no sub type specified */ +#define DSC_nullable 4 /* not stored. instead, is derived + from metadata primarily to flag + SQLDA (in DSQL) */ + +/* Overload text typing information into the dsc_sub_type field. + See intl.h for definitions of text types */ + +#ifndef dsc_ttype +#define dsc_ttype dsc_sub_type +#endif + + +/* Note that dtype_null actually means that we do not yet know the + dtype for this descriptor. A nice cleanup item would be to globally + change it to dtype_unknown. --chrisj 1999-02-17 */ + +#define dtype_null 0 +#define dtype_text 1 +#define dtype_cstring 2 +#define dtype_varying 3 + +#define dtype_packed 6 +#define dtype_byte 7 +#define dtype_short 8 +#define dtype_long 9 +#define dtype_quad 10 +#define dtype_real 11 +#define dtype_double 12 +#define dtype_d_float 13 +#define dtype_sql_date 14 +#define dtype_sql_time 15 +#define dtype_timestamp 16 +#define dtype_blob 17 +#define dtype_array 18 +#define dtype_int64 19 +#define DTYPE_TYPE_MAX 20 +#endif /* !defined(JRD_DSC_H) */ + + +/***************************/ +/* Dynamic SQL definitions */ +/***************************/ + +/******************************/ +/* Declare the extended SQLDA */ +/******************************/ + +#ifndef FB_SQLDA + +typedef struct +{ + short sqltype; /* datatype of field */ + short sqlscale; /* scale factor */ + short sqlsubtype; /* datatype subtype - BLOBs & Text types only */ + short sqllen; /* length of data area */ + char * sqldata; /* address of data */ + short * sqlind; /* address of indicator variable */ + short sqlname_length; /* length of sqlname field */ + char sqlname[32]; /* name of field, name length + space for NULL */ + short relname_length; /* length of relation name */ + char relname[32]; /* field's relation name + space for NULL */ + short ownname_length; /* length of owner name */ + char ownname[32]; /* relation's owner name + space for NULL */ + short aliasname_length; /* length of alias name */ + char aliasname[32]; /* relation's alias name + space for NULL */ +} XSQLVAR; + +typedef struct +{ + short version; /* version of this XSQLDA */ + char sqldaid[8]; /* XSQLDA name field */ + ISC_LONG sqldabc; /* length in bytes of SQLDA */ + short sqln; /* number of fields allocated */ + short sqld; /* actual number of fields */ + XSQLVAR sqlvar[1]; /* first field address */ +} XSQLDA; + +#define XSQLDA_LENGTH(n) (sizeof (XSQLDA) + ((n)-1) * sizeof (XSQLVAR)) + +#define SQLDA_VERSION1 1 + +#define SQL_DIALECT_V5 1 /* meaning is same as DIALECT_xsqlda */ +#define SQL_DIALECT_V6_TRANSITION 2 /* flagging anything that is delimited + by double quotes as an error and + flagging keyword DATE as an error */ +#define SQL_DIALECT_V6 3 /* supports SQL delimited identifier, + SQLDATE/DATE, TIME, TIMESTAMP, + CURRENT_DATE, CURRENT_TIME, + CURRENT_TIMESTAMP, and 64-bit exact + numeric type */ +#define SQL_DIALECT_CURRENT SQL_DIALECT_V6 /* latest IB DIALECT */ + + +#define FB_SQLDA +#endif + +/***************************/ +/* OSRI database functions */ +/***************************/ + +#ifdef __cplusplus +extern "C" { +#endif + +ISC_STATUS ISC_EXPORT isc_attach_database(ISC_STATUS *, + short, + char *, + isc_db_handle *, + short, + char *); + +ISC_STATUS ISC_EXPORT isc_array_gen_sdl(ISC_STATUS *, + ISC_ARRAY_DESC *, + short *, + char *, + short *); + +ISC_STATUS ISC_EXPORT isc_array_get_slice(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + ISC_QUAD *, + ISC_ARRAY_DESC *, + void *, + ISC_LONG *); + +ISC_STATUS ISC_EXPORT isc_array_lookup_bounds(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + char *, + char *, + ISC_ARRAY_DESC *); + +ISC_STATUS ISC_EXPORT isc_array_lookup_desc(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + char *, + char *, + ISC_ARRAY_DESC *); + +ISC_STATUS ISC_EXPORT isc_array_set_desc(ISC_STATUS *, + char *, + char *, + short *, + short *, + short *, + ISC_ARRAY_DESC *); + +ISC_STATUS ISC_EXPORT isc_array_put_slice(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + ISC_QUAD *, + ISC_ARRAY_DESC *, + void *, + ISC_LONG *); + +void ISC_EXPORT isc_blob_default_desc(ISC_BLOB_DESC *, + unsigned char *, + unsigned char *); + +ISC_STATUS ISC_EXPORT isc_blob_gen_bpb(ISC_STATUS *, + ISC_BLOB_DESC *, + ISC_BLOB_DESC *, + unsigned short, + unsigned char *, + unsigned short *); + +ISC_STATUS ISC_EXPORT isc_blob_info(ISC_STATUS *, + isc_blob_handle *, + short, + char *, + short, + char *); + +ISC_STATUS ISC_EXPORT isc_blob_lookup_desc(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + unsigned char *, + unsigned char *, + ISC_BLOB_DESC *, + unsigned char *); + +ISC_STATUS ISC_EXPORT isc_blob_set_desc(ISC_STATUS *, + unsigned char *, + unsigned char *, + 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, + char *); + +ISC_STATUS ISC_EXPORT isc_create_database(ISC_STATUS *, + short, + char *, + isc_db_handle *, + short, + char *, + short); + +ISC_STATUS ISC_EXPORT isc_database_info(ISC_STATUS *, + isc_db_handle *, + short, + char *, + short, + char *); + +void ISC_EXPORT isc_decode_date(ISC_QUAD *, + void *); + +void ISC_EXPORT isc_decode_sql_date(ISC_DATE *, + void *); + +void ISC_EXPORT isc_decode_sql_time(ISC_TIME *, + void *); + +void ISC_EXPORT isc_decode_timestamp(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, + char *, + 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, + char *, + 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, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_dsql_set_cursor_name(ISC_STATUS *, + isc_stmt_handle *, + char *, + unsigned short); + +ISC_STATUS ISC_EXPORT isc_dsql_sql_info(ISC_STATUS *, + isc_stmt_handle *, + short, + const char *, + short, + char *); + +void ISC_EXPORT isc_encode_date(void *, + ISC_QUAD *); + +void ISC_EXPORT isc_encode_sql_date(void *, + ISC_DATE *); + +void ISC_EXPORT isc_encode_sql_time(void *, + ISC_TIME *); + +void ISC_EXPORT isc_encode_timestamp(void *, + ISC_TIMESTAMP *); + +ISC_LONG ISC_EXPORT_VARARG isc_event_block(char * *, + char * *, + unsigned short, ...); + +void ISC_EXPORT isc_event_counts(ISC_ULONG *, + short, + char *, + char *); + +/* 17 May 2001 - isc_expand_dpb is DEPRECATED */ +void ISC_EXPORT_VARARG isc_expand_dpb(char * *, + short *, ...); + +int ISC_EXPORT isc_modify_dpb(char * *, + short *, + unsigned short, + char *, + short); + +ISC_LONG ISC_EXPORT isc_free(char *); + +ISC_STATUS ISC_EXPORT isc_get_segment(ISC_STATUS *, + isc_blob_handle *, + unsigned short *, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_get_slice(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + ISC_QUAD *, + short, + char *, + short, + ISC_LONG *, + ISC_LONG, + void *, + ISC_LONG *); + +ISC_STATUS ISC_EXPORT isc_interprete(char *, + 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, + ISC_UCHAR *); + +ISC_STATUS ISC_EXPORT isc_prepare_transaction2(ISC_STATUS *, + isc_tr_handle *, + ISC_USHORT, + ISC_UCHAR *); + +void ISC_EXPORT isc_print_sqlerror(ISC_SHORT, + ISC_STATUS *); + +ISC_STATUS ISC_EXPORT isc_print_status(ISC_STATUS *); + +ISC_STATUS ISC_EXPORT isc_put_segment(ISC_STATUS *, + isc_blob_handle *, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_put_slice(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + ISC_QUAD *, + short, + char *, + short, + ISC_LONG *, + ISC_LONG, + void *); + +ISC_STATUS ISC_EXPORT isc_que_events(ISC_STATUS *, + isc_db_handle *, + ISC_LONG *, + short, + char *, + isc_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(ISC_STATUS *); + +void ISC_EXPORT isc_sql_interprete(short, + char *, + short); + +ISC_STATUS ISC_EXPORT isc_transaction_info(ISC_STATUS *, + isc_tr_handle *, + short, + char *, + short, + char *); + +ISC_STATUS ISC_EXPORT isc_transact_request(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + unsigned short, + char *, + unsigned short, + char *, + unsigned short, + char *); + +ISC_LONG ISC_EXPORT isc_vax_integer(char *, + short); + +ISC_INT64 ISC_EXPORT isc_portable_integer(unsigned char *, + 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 */ + char *server; /* server to administer */ + char *user_name; /* the user's name */ + char *password; /* the user's password */ + char *group_name; /* the group name */ + char *first_name; /* the user's first name */ + char *middle_name; /* the user's middle name */ + char *last_name; /* the user's last name */ + char *dba_user_name; /* the dba user name */ + char *dba_password; /* the dba password */ +} USER_SEC_DATA; + +int ISC_EXPORT isc_add_user(ISC_STATUS *, USER_SEC_DATA *); + +int ISC_EXPORT isc_delete_user(ISC_STATUS *, USER_SEC_DATA *); + +int ISC_EXPORT isc_modify_user(ISC_STATUS *, USER_SEC_DATA *); + +/**********************************/ +/* Other OSRI functions */ +/**********************************/ + +ISC_STATUS ISC_EXPORT isc_compile_request(ISC_STATUS *, + isc_db_handle *, + isc_req_handle *, + short, + char *); + +ISC_STATUS ISC_EXPORT isc_compile_request2(ISC_STATUS *, + isc_db_handle *, + isc_req_handle *, + short, + char *); + +ISC_STATUS ISC_EXPORT isc_ddl(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + short, + char *); + +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, + char *); + +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, + char *, + short, + char *); + +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, + void *, + short); + +ISC_STATUS ISC_EXPORT isc_start_and_send(ISC_STATUS *, + isc_req_handle *, + isc_tr_handle *, + short, + short, + 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, + char *, + char *); + + +/*****************************/ +/* Other Sql functions */ +/*****************************/ + +ISC_STATUS ISC_EXPORT isc_close(ISC_STATUS *, + char *); + +ISC_STATUS ISC_EXPORT isc_declare(ISC_STATUS *, + char *, + char *); + +ISC_STATUS ISC_EXPORT isc_describe(ISC_STATUS *, + char *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_describe_bind(ISC_STATUS *, + char *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_execute(ISC_STATUS *, + isc_tr_handle *, + char *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_execute_immediate(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + short *, + char *); + +ISC_STATUS ISC_EXPORT isc_fetch(ISC_STATUS *, + char *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_open(ISC_STATUS *, + isc_tr_handle *, + char *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_prepare(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + char *, + short *, + char *, + XSQLDA *); + + +/*************************************/ +/* Other Dynamic sql functions */ +/*************************************/ + +ISC_STATUS ISC_EXPORT isc_dsql_execute_m(ISC_STATUS *, + isc_tr_handle *, + isc_stmt_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_execute2_m(ISC_STATUS *, + isc_tr_handle *, + isc_stmt_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_execute_immediate_m(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *, + unsigned short, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_exec_immed3_m(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *, + unsigned short, + unsigned short, + char *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_fetch_m(ISC_STATUS *, + isc_stmt_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_insert_m(ISC_STATUS *, + isc_stmt_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_prepare_m(ISC_STATUS *, + isc_tr_handle *, + isc_stmt_handle *, + unsigned short, + char *, + unsigned short, + unsigned short, + char *, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_dsql_release(ISC_STATUS *, + char *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_close(ISC_STATUS *, + char *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_declare(ISC_STATUS *, + char *, + char *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_describe(ISC_STATUS *, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_describe_bind(ISC_STATUS *, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_execute(ISC_STATUS *, + isc_tr_handle *, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_execute2(ISC_STATUS *, + isc_tr_handle *, + char *, + unsigned short, + XSQLDA *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_execute_immed(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + unsigned short, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_fetch(ISC_STATUS *, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_open(ISC_STATUS *, + isc_tr_handle *, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_open2(ISC_STATUS *, + isc_tr_handle *, + char *, + unsigned short, + XSQLDA *, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_insert(ISC_STATUS *, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_prepare(ISC_STATUS *, + isc_db_handle *, + isc_tr_handle *, + char *, + unsigned short, + char *, + unsigned short, + XSQLDA *); + +ISC_STATUS ISC_EXPORT isc_embed_dsql_release(ISC_STATUS *, + char *); + + +/******************************/ +/* Other Blob functions */ +/******************************/ + +BSTREAM *ISC_EXPORT BLOB_open(isc_blob_handle, + char *, + int); + +int ISC_EXPORT BLOB_put(char, + 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, + char *); + +int ISC_EXPORT BLOB_dump(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *); + +int ISC_EXPORT BLOB_edit(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *); + +int ISC_EXPORT BLOB_load(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *); + +int ISC_EXPORT BLOB_text_dump(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *); + +int ISC_EXPORT BLOB_text_load(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *); + +BSTREAM *ISC_EXPORT Bopen(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *); + +BSTREAM *ISC_EXPORT Bopen2(ISC_QUAD *, + isc_db_handle, + isc_tr_handle, + char *, + unsigned short); + + +/******************************/ +/* Other Misc functions */ +/******************************/ + +ISC_LONG ISC_EXPORT isc_ftof(char *, + unsigned short, + char *, + unsigned short); + +ISC_STATUS ISC_EXPORT isc_print_blr(char *, + isc_callback, + void *, + short); + +void ISC_EXPORT isc_set_debug(int); + +void ISC_EXPORT isc_qtoq(ISC_QUAD *, + ISC_QUAD *); + +void ISC_EXPORT isc_vtof(char *, + char *, + unsigned short); + +void ISC_EXPORT isc_vtov(char *, + char *, + short); + +int ISC_EXPORT isc_version(isc_db_handle *, + isc_callback, + void *); + +ISC_LONG ISC_EXPORT isc_reset_fpe(unsigned short); + + +/*****************************************/ +/* Service manager functions */ +/*****************************************/ + +#define ADD_SPB_LENGTH(p, length) {*(p)++ = (length); *(p)++ = (length) >> 8;} + +#define ADD_SPB_NUMERIC(p, data) {*(p)++ = (SCHAR) (data); *(p)++ = (SCHAR) ((data) >> 8); *(p)++ = (SCHAR) ((data) >> 16); *(p)++ = (SCHAR) ((data) >> 24);} + +ISC_STATUS ISC_EXPORT isc_service_attach(ISC_STATUS *, + unsigned short, + char *, + isc_svc_handle *, + unsigned short, + char *); + +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, + char *, + unsigned short, + char *, + unsigned short, + char *); + +ISC_STATUS ISC_EXPORT isc_service_start(ISC_STATUS *, + isc_svc_handle *, + isc_resv_handle *, + unsigned short, + char *); + + +/********************************/ +/* Client information functions */ +/********************************/ + +void ISC_EXPORT isc_get_client_version ( char *); +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 */ +/*******************/ + +/* + * PROGRAM: C preprocessor + * MODULE: blr.h + * DESCRIPTION: BLR constants + * + * 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): ______________________________________. + * + * Claudio Valderrama: 2001.6.18: Add blr_current_role. + * 2002.09.28 Dmitry Yemanov: Reworked internal_info stuff, enhanced + * exception handling in SPs/triggers, + * implemented ROWS_AFFECTED system variable + * 2002.10.21 Nickolay Samofatov: Added support for explicit pessimistic locks + * 2002.10.29 Nickolay Samofatov: Added support for savepoints + */ + +#ifndef _JRD_BLR_H_ +#define _JRD_BLR_H_ + +/* WARNING: if you add a new BLR representing a data type, and the value + * is greater than the numerically greatest value which now + * represents a data type, you must change the define for + * DTYPE_BLR_MAX in jrd/align.h, and add the necessary entries + * to all the arrays in that file. + */ + +#define blr_text (unsigned char)14 +#define blr_text2 (unsigned char)15 /* added in 3.2 JPN */ +#define blr_short (unsigned char)7 +#define blr_long (unsigned char)8 +#define blr_quad (unsigned char)9 +#define blr_float (unsigned char)10 +#define blr_double (unsigned char)27 +#define blr_d_float (unsigned char)11 +#define blr_timestamp (unsigned char)35 +#define blr_varying (unsigned char)37 +#define blr_varying2 (unsigned char)38 /* added in 3.2 JPN */ +#define blr_blob (unsigned short)261 +#define blr_cstring (unsigned char)40 +#define blr_cstring2 (unsigned char)41 /* added in 3.2 JPN */ +#define blr_blob_id (unsigned char)45 /* added from gds.h */ +#define blr_sql_date (unsigned char)12 +#define blr_sql_time (unsigned char)13 +#define blr_int64 (unsigned char)16 + +/* Historical alias for pre V6 applications */ +#define blr_date blr_timestamp + +#define blr_inner (unsigned char)0 +#define blr_left (unsigned char)1 +#define blr_right (unsigned char)2 +#define blr_full (unsigned char)3 + +#define blr_gds_code (unsigned char)0 +#define blr_sql_code (unsigned char)1 +#define blr_exception (unsigned char)2 +#define blr_trigger_code (unsigned char)3 +#define blr_default_code (unsigned char)4 +#define blr_raise (unsigned char)5 +#define blr_exception_msg (unsigned char)6 + +#define blr_version4 (unsigned char)4 +#define blr_version5 (unsigned char)5 +#define blr_eoc (unsigned char)76 +#define blr_end (unsigned char)255 /* note: defined as -1 in gds.h */ + +#define blr_assignment (unsigned char)1 +#define blr_begin (unsigned char)2 +#define blr_dcl_variable (unsigned char)3 /* added from gds.h */ +#define blr_message (unsigned char)4 +#define blr_erase (unsigned char)5 +#define blr_fetch (unsigned char)6 +#define blr_for (unsigned char)7 +#define blr_if (unsigned char)8 +#define blr_loop (unsigned char)9 +#define blr_modify (unsigned char)10 +#define blr_handler (unsigned char)11 +#define blr_receive (unsigned char)12 +#define blr_select (unsigned char)13 +#define blr_send (unsigned char)14 +#define blr_store (unsigned char)15 +#define blr_label (unsigned char)17 +#define blr_leave (unsigned char)18 +#define blr_store2 (unsigned char)19 +#define blr_post (unsigned char)20 +#define blr_literal (unsigned char)21 +#define blr_dbkey (unsigned char)22 +#define blr_field (unsigned char)23 +#define blr_fid (unsigned char)24 +#define blr_parameter (unsigned char)25 +#define blr_variable (unsigned char)26 +#define blr_average (unsigned char)27 +#define blr_count (unsigned char)28 +#define blr_maximum (unsigned char)29 +#define blr_minimum (unsigned char)30 +#define blr_total (unsigned char)31 +/* count 2 +#define blr_count2 32 +*/ +#define blr_add (unsigned char)34 +#define blr_subtract (unsigned char)35 +#define blr_multiply (unsigned char)36 +#define blr_divide (unsigned char)37 +#define blr_negate (unsigned char)38 +#define blr_concatenate (unsigned char)39 +#define blr_substring (unsigned char)40 +#define blr_parameter2 (unsigned char)41 +#define blr_from (unsigned char)42 +#define blr_via (unsigned char)43 +#define blr_parameter2_old (unsigned char)44 /* Confusion */ +#define blr_user_name (unsigned char)44 /* added from gds.h */ +#define blr_null (unsigned char)45 + +#define blr_eql (unsigned char)47 +#define blr_neq (unsigned char)48 +#define blr_gtr (unsigned char)49 +#define blr_geq (unsigned char)50 +#define blr_lss (unsigned char)51 +#define blr_leq (unsigned char)52 +#define blr_containing (unsigned char)53 +#define blr_matching (unsigned char)54 +#define blr_starting (unsigned char)55 +#define blr_between (unsigned char)56 +#define blr_or (unsigned char)57 +#define blr_and (unsigned char)58 +#define blr_not (unsigned char)59 +#define blr_any (unsigned char)60 +#define blr_missing (unsigned char)61 +#define blr_unique (unsigned char)62 +#define blr_like (unsigned char)63 + +#define blr_stream (unsigned char)65 /* added from gds.h */ +#define blr_set_index (unsigned char)66 /* added from gds.h */ + +#define blr_rse (unsigned char)67 +#define blr_first (unsigned char)68 +#define blr_project (unsigned char)69 +#define blr_sort (unsigned char)70 +#define blr_boolean (unsigned char)71 +#define blr_ascending (unsigned char)72 +#define blr_descending (unsigned char)73 +#define blr_relation (unsigned char)74 +#define blr_rid (unsigned char)75 +#define blr_union (unsigned char)76 +#define blr_map (unsigned char)77 +#define blr_group_by (unsigned char)78 +#define blr_aggregate (unsigned char)79 +#define blr_join_type (unsigned char)80 + +#define blr_agg_count (unsigned char)83 +#define blr_agg_max (unsigned char)84 +#define blr_agg_min (unsigned char)85 +#define blr_agg_total (unsigned char)86 +#define blr_agg_average (unsigned char)87 +#define blr_parameter3 (unsigned char)88 /* same as Rdb definition */ +#define blr_run_max (unsigned char)89 +#define blr_run_min (unsigned char)90 +#define blr_run_total (unsigned char)91 +#define blr_run_average (unsigned char)92 +#define blr_agg_count2 (unsigned char)93 +#define blr_agg_count_distinct (unsigned char)94 +#define blr_agg_total_distinct (unsigned char)95 +#define blr_agg_average_distinct (unsigned char)96 + +#define blr_function (unsigned char)100 +#define blr_gen_id (unsigned char)101 +#define blr_prot_mask (unsigned char)102 +#define blr_upcase (unsigned char)103 +#define blr_lock_state (unsigned char)104 +#define blr_value_if (unsigned char)105 +#define blr_matching2 (unsigned char)106 +#define blr_index (unsigned char)107 +#define blr_ansi_like (unsigned char)108 +#define blr_bookmark (unsigned char)109 +#define blr_crack (unsigned char)110 +#define blr_force_crack (unsigned char)111 +#define blr_seek (unsigned char)112 +#define blr_find (unsigned char)113 + +/* these indicate directions for blr_seek and blr_find */ + +#define blr_continue (unsigned char)0 +#define blr_forward (unsigned char)1 +#define blr_backward (unsigned char)2 +#define blr_bof_forward (unsigned char)3 +#define blr_eof_backward (unsigned char)4 + +#define blr_lock_relation (unsigned char)114 +#define blr_lock_record (unsigned char)115 +#define blr_set_bookmark (unsigned char)116 +#define blr_get_bookmark (unsigned char)117 + +#define blr_run_count (unsigned char)118 /* changed from 88 to avoid conflict with blr_parameter3 */ +#define blr_rs_stream (unsigned char)119 +#define blr_exec_proc (unsigned char)120 +#define blr_begin_range (unsigned char)121 +#define blr_end_range (unsigned char)122 +#define blr_delete_range (unsigned char)123 +#define blr_procedure (unsigned char)124 +#define blr_pid (unsigned char)125 +#define blr_exec_pid (unsigned char)126 +#define blr_singular (unsigned char)127 +#define blr_abort (unsigned char)128 +#define blr_block (unsigned char)129 +#define blr_error_handler (unsigned char)130 + +#define blr_cast (unsigned char)131 +#define blr_release_lock (unsigned char)132 +#define blr_release_locks (unsigned char)133 +#define blr_start_savepoint (unsigned char)134 +#define blr_end_savepoint (unsigned char)135 +#define blr_find_dbkey (unsigned char)136 +#define blr_range_relation (unsigned char)137 +#define blr_delete_ranges (unsigned char)138 + +#define blr_plan (unsigned char)139 /* access plan items */ +#define blr_merge (unsigned char)140 +#define blr_join (unsigned char)141 +#define blr_sequential (unsigned char)142 +#define blr_navigational (unsigned char)143 +#define blr_indices (unsigned char)144 +#define blr_retrieve (unsigned char)145 + +#define blr_relation2 (unsigned char)146 +#define blr_rid2 (unsigned char)147 +#define blr_reset_stream (unsigned char)148 +#define blr_release_bookmark (unsigned char)149 + +#define blr_set_generator (unsigned char)150 + +#define blr_ansi_any (unsigned char)151 /* required for NULL handling */ +#define blr_exists (unsigned char)152 /* required for NULL handling */ +#define blr_cardinality (unsigned char)153 + +#define blr_record_version (unsigned char)154 /* get tid of record */ +#define blr_stall (unsigned char)155 /* fake server stall */ + +#define blr_seek_no_warn (unsigned char)156 +#define blr_find_dbkey_version (unsigned char)157 /* find dbkey with record version */ +#define blr_ansi_all (unsigned char)158 /* required for NULL handling */ + +#define blr_extract (unsigned char)159 + +/* sub parameters for blr_extract */ + +#define blr_extract_year (unsigned char)0 +#define blr_extract_month (unsigned char)1 +#define blr_extract_day (unsigned char)2 +#define blr_extract_hour (unsigned char)3 +#define blr_extract_minute (unsigned char)4 +#define blr_extract_second (unsigned char)5 +#define blr_extract_weekday (unsigned char)6 +#define blr_extract_yearday (unsigned char)7 + +#define blr_current_date (unsigned char)160 +#define blr_current_timestamp (unsigned char)161 +#define blr_current_time (unsigned char)162 + +/* FB 1.0 specific BLR */ + +#define blr_current_role (unsigned char)174 +#define blr_skip (unsigned char)175 + +/* FB 1.5 specific BLR */ + +#define blr_exec_sql (unsigned char)176 +#define blr_internal_info (unsigned char)177 +#define blr_nullsfirst (unsigned char)178 +#define blr_writelock (unsigned char)179 +#define blr_nullslast (unsigned char)180 + +/* These codes reuse BLR code space */ + +#define blr_post_arg (unsigned char)163 +#define blr_exec_into (unsigned char)164 +#define blr_user_savepoint (unsigned char)165 + +/* These codes are actions for user-defined savepoints */ + +#define blr_savepoint_set (unsigned char)0 +#define blr_savepoint_release (unsigned char)1 +#define blr_savepoint_undo (unsigned char)2 +#define blr_savepoint_release_single (unsigned char)3 + +#endif /* _JRD_BLR_H_ */ + + +/**********************************/ +/* Database parameter block stuff */ +/**********************************/ + +#define isc_dpb_version1 1 +#define isc_dpb_cdd_pathname 1 +#define isc_dpb_allocation 2 +#define isc_dpb_journal 3 +#define isc_dpb_page_size 4 +#define isc_dpb_num_buffers 5 +#define isc_dpb_buffer_length 6 +#define isc_dpb_debug 7 +#define isc_dpb_garbage_collect 8 +#define isc_dpb_verify 9 +#define isc_dpb_sweep 10 +#define isc_dpb_enable_journal 11 +#define isc_dpb_disable_journal 12 +#define isc_dpb_dbkey_scope 13 +#define isc_dpb_number_of_users 14 +#define isc_dpb_trace 15 +#define isc_dpb_no_garbage_collect 16 +#define isc_dpb_damaged 17 +#define isc_dpb_license 18 +#define isc_dpb_sys_user_name 19 +#define isc_dpb_encrypt_key 20 +#define isc_dpb_activate_shadow 21 +#define isc_dpb_sweep_interval 22 +#define isc_dpb_delete_shadow 23 +#define isc_dpb_force_write 24 +#define isc_dpb_begin_log 25 +#define isc_dpb_quit_log 26 +#define isc_dpb_no_reserve 27 +#define isc_dpb_user_name 28 +#define isc_dpb_password 29 +#define isc_dpb_password_enc 30 +#define isc_dpb_sys_user_name_enc 31 +#define isc_dpb_interp 32 +#define isc_dpb_online_dump 33 +#define isc_dpb_old_file_size 34 +#define isc_dpb_old_num_files 35 +#define isc_dpb_old_file 36 +#define isc_dpb_old_start_page 37 +#define isc_dpb_old_start_seqno 38 +#define isc_dpb_old_start_file 39 +#define isc_dpb_drop_walfile 40 +#define isc_dpb_old_dump_id 41 +#define isc_dpb_wal_backup_dir 42 +#define isc_dpb_wal_chkptlen 43 +#define isc_dpb_wal_numbufs 44 +#define isc_dpb_wal_bufsize 45 +#define isc_dpb_wal_grp_cmt_wait 46 +#define isc_dpb_lc_messages 47 +#define isc_dpb_lc_ctype 48 +#define isc_dpb_cache_manager 49 +#define isc_dpb_shutdown 50 +#define isc_dpb_online 51 +#define isc_dpb_shutdown_delay 52 +#define isc_dpb_reserved 53 +#define isc_dpb_overwrite 54 +#define isc_dpb_sec_attach 55 +#define isc_dpb_disable_wal 56 +#define isc_dpb_connect_timeout 57 +#define isc_dpb_dummy_packet_interval 58 +#define isc_dpb_gbak_attach 59 +#define isc_dpb_sql_role_name 60 +#define isc_dpb_set_page_buffers 61 +#define isc_dpb_working_directory 62 +#define isc_dpb_sql_dialect 63 +#define isc_dpb_set_db_readonly 64 +#define isc_dpb_set_db_sql_dialect 65 +#define isc_dpb_gfix_attach 66 +#define isc_dpb_gstat_attach 67 +#define isc_dpb_set_db_charset 68 + +/*********************************/ +/* isc_dpb_verify specific flags */ +/*********************************/ + +#define isc_dpb_pages 1 +#define isc_dpb_records 2 +#define isc_dpb_indices 4 +#define isc_dpb_transactions 8 +#define isc_dpb_no_update 16 +#define isc_dpb_repair 32 +#define isc_dpb_ignore 64 + +/***********************************/ +/* isc_dpb_shutdown specific flags */ +/***********************************/ + +#define isc_dpb_shut_cache 1 +#define isc_dpb_shut_attachment 2 +#define isc_dpb_shut_transaction 4 +#define isc_dpb_shut_force 8 + +/**************************************/ +/* Bit assignments in RDB$SYSTEM_FLAG */ +/**************************************/ + +#define RDB_system 1 +#define RDB_id_assigned 2 + + +/*************************************/ +/* Transaction parameter block stuff */ +/*************************************/ + +#define isc_tpb_version1 1 +#define isc_tpb_version3 3 +#define isc_tpb_consistency 1 +#define isc_tpb_concurrency 2 +#define isc_tpb_shared 3 +#define isc_tpb_protected 4 +#define isc_tpb_exclusive 5 +#define isc_tpb_wait 6 +#define isc_tpb_nowait 7 +#define isc_tpb_read 8 +#define isc_tpb_write 9 +#define isc_tpb_lock_read 10 +#define isc_tpb_lock_write 11 +#define isc_tpb_verb_time 12 +#define isc_tpb_commit_time 13 +#define isc_tpb_ignore_limbo 14 +#define isc_tpb_read_committed 15 +#define isc_tpb_autocommit 16 +#define isc_tpb_rec_version 17 +#define isc_tpb_no_rec_version 18 +#define isc_tpb_restart_requests 19 +#define isc_tpb_no_auto_undo 20 + + +/************************/ +/* Blob Parameter Block */ +/************************/ + +#define isc_bpb_version1 1 +#define isc_bpb_source_type 1 +#define isc_bpb_target_type 2 +#define isc_bpb_type 3 +#define isc_bpb_source_interp 4 +#define isc_bpb_target_interp 5 +#define isc_bpb_filter_parameter 6 + +#define isc_bpb_type_segmented 0 +#define isc_bpb_type_stream 1 + + +/*********************************/ +/* Service parameter block stuff */ +/*********************************/ + +#define isc_spb_version1 1 +#define isc_spb_current_version 2 +#define isc_spb_version isc_spb_current_version +#define isc_spb_user_name isc_dpb_user_name +#define isc_spb_sys_user_name isc_dpb_sys_user_name +#define isc_spb_sys_user_name_enc isc_dpb_sys_user_name_enc +#define isc_spb_password isc_dpb_password +#define isc_spb_password_enc isc_dpb_password_enc +#define isc_spb_command_line 105 +#define isc_spb_dbname 106 +#define isc_spb_verbose 107 +#define isc_spb_options 108 + +#define isc_spb_connect_timeout isc_dpb_connect_timeout +#define isc_spb_dummy_packet_interval isc_dpb_dummy_packet_interval +#define isc_spb_sql_role_name isc_dpb_sql_role_name + + +/*********************************/ +/* Information call declarations */ +/*********************************/ + +/****************************/ +/* Common, structural codes */ +/****************************/ + +#define isc_info_end 1 +#define isc_info_truncated 2 +#define isc_info_error 3 +#define isc_info_data_not_ready 4 +#define isc_info_flag_end 127 + +/******************************/ +/* Database information items */ +/******************************/ + +enum db_info_types + { + isc_info_db_id = 4, + isc_info_reads = 5, + isc_info_writes = 6, + isc_info_fetches = 7, + isc_info_marks = 8, + + isc_info_implementation = 11, + isc_info_isc_version = 12, + isc_info_base_level = 13, + isc_info_page_size = 14, + isc_info_num_buffers = 15, + isc_info_limbo = 16, + isc_info_current_memory = 17, + isc_info_max_memory = 18, + isc_info_window_turns = 19, + isc_info_license = 20, + + isc_info_allocation = 21, + isc_info_attachment_id = 22, + isc_info_read_seq_count = 23, + isc_info_read_idx_count = 24, + isc_info_insert_count = 25, + isc_info_update_count = 26, + isc_info_delete_count = 27, + isc_info_backout_count = 28, + isc_info_purge_count = 29, + isc_info_expunge_count = 30, + + isc_info_sweep_interval = 31, + isc_info_ods_version = 32, + isc_info_ods_minor_version = 33, + isc_info_no_reserve = 34, + isc_info_logfile = 35, + isc_info_cur_logfile_name = 36, + isc_info_cur_log_part_offset = 37, + isc_info_num_wal_buffers = 38, + isc_info_wal_buffer_size = 39, + isc_info_wal_ckpt_length = 40, + + isc_info_wal_cur_ckpt_interval = 41, + isc_info_wal_prv_ckpt_fname = 42, + isc_info_wal_prv_ckpt_poffset = 43, + isc_info_wal_recv_ckpt_fname = 44, + isc_info_wal_recv_ckpt_poffset = 45, + isc_info_wal_grpc_wait_usecs = 47, + isc_info_wal_num_io = 48, + isc_info_wal_avg_io_size = 49, + isc_info_wal_num_commits = 50, + + isc_info_wal_avg_grpc_size = 51, + isc_info_forced_writes = 52, + isc_info_user_names = 53, + isc_info_page_errors = 54, + isc_info_record_errors = 55, + isc_info_bpage_errors = 56, + isc_info_dpage_errors = 57, + isc_info_ipage_errors = 58, + isc_info_ppage_errors = 59, + isc_info_tpage_errors = 60, + + isc_info_set_page_buffers = 61, + isc_info_db_sql_dialect = 62, + isc_info_db_read_only = 63, + isc_info_db_size_in_pages = 64, + + /* Values 65 -100 unused to avoid conflict with InterBase */ + + frb_info_att_charset = 101, + isc_info_db_class = 102, + isc_info_firebird_version = 103, + isc_info_oldest_transaction = 104, + isc_info_oldest_active = 105, + isc_info_oldest_snapshot = 106, + isc_info_next_transaction = 107, + isc_info_db_provider = 108, + isc_info_active_transactions = 109, + + isc_info_db_last_value /* Leave this LAST! */ + }; + +#define isc_info_version isc_info_isc_version + + +/**************************************/ +/* Database information return values */ +/**************************************/ + +enum info_db_implementations + { + isc_info_db_impl_rdb_vms = 1, + isc_info_db_impl_rdb_eln = 2, + isc_info_db_impl_rdb_eln_dev = 3, + isc_info_db_impl_rdb_vms_y = 4, + isc_info_db_impl_rdb_eln_y = 5, + isc_info_db_impl_jri = 6, + isc_info_db_impl_jsv = 7, + + isc_info_db_impl_isc_apl_68K = 25, + isc_info_db_impl_isc_vax_ultr = 26, + isc_info_db_impl_isc_vms = 27, + isc_info_db_impl_isc_sun_68k = 28, + isc_info_db_impl_isc_os2 = 29, + isc_info_db_impl_isc_sun4 = 30, /* 30 */ + + isc_info_db_impl_isc_hp_ux = 31, + isc_info_db_impl_isc_sun_386i = 32, + isc_info_db_impl_isc_vms_orcl = 33, + isc_info_db_impl_isc_mac_aux = 34, + isc_info_db_impl_isc_rt_aix = 35, + isc_info_db_impl_isc_mips_ult = 36, + isc_info_db_impl_isc_xenix = 37, + isc_info_db_impl_isc_dg = 38, + isc_info_db_impl_isc_hp_mpexl = 39, + isc_info_db_impl_isc_hp_ux68K = 40, /* 40 */ + + isc_info_db_impl_isc_sgi = 41, + isc_info_db_impl_isc_sco_unix = 42, + isc_info_db_impl_isc_cray = 43, + isc_info_db_impl_isc_imp = 44, + isc_info_db_impl_isc_delta = 45, + isc_info_db_impl_isc_next = 46, + isc_info_db_impl_isc_dos = 47, + isc_info_db_impl_m88K = 48, + isc_info_db_impl_unixware = 49, + isc_info_db_impl_isc_winnt_x86 = 50, + + isc_info_db_impl_isc_epson = 51, + isc_info_db_impl_alpha_osf = 52, + isc_info_db_impl_alpha_vms = 53, + isc_info_db_impl_netware_386 = 54, + isc_info_db_impl_win_only = 55, + isc_info_db_impl_ncr_3000 = 56, + isc_info_db_impl_winnt_ppc = 57, + isc_info_db_impl_dg_x86 = 58, + isc_info_db_impl_sco_ev = 59, + isc_info_db_impl_i386 = 60, + + isc_info_db_impl_freebsd = 61, + isc_info_db_impl_netbsd = 62, + isc_info_db_impl_darwin = 63, + isc_info_db_impl_sinixz = 64, + + isc_info_db_impl_linux_sparc = 65, + isc_info_db_impl_linux_amd64 = 66, + + isc_info_db_impl_last_value /* Leave this LAST! */ + }; + +#define isc_info_db_impl_isc_a isc_info_db_impl_isc_apl_68K +#define isc_info_db_impl_isc_u isc_info_db_impl_isc_vax_ultr +#define isc_info_db_impl_isc_v isc_info_db_impl_isc_vms +#define isc_info_db_impl_isc_s isc_info_db_impl_isc_sun_68k + + +enum info_db_class + { + isc_info_db_class_access = 1, + isc_info_db_class_y_valve = 2, + isc_info_db_class_rem_int = 3, + isc_info_db_class_rem_srvr = 4, + isc_info_db_class_pipe_int = 7, + isc_info_db_class_pipe_srvr = 8, + isc_info_db_class_sam_int = 9, + isc_info_db_class_sam_srvr = 10, + isc_info_db_class_gateway = 11, + isc_info_db_class_cache = 12, + isc_info_db_class_classic_access = 13, + isc_info_db_class_server_access = 14, + + isc_info_db_class_last_value /* Leave this LAST! */ + }; + +enum info_db_provider + { + isc_info_db_code_rdb_eln = 1, + isc_info_db_code_rdb_vms = 2, + isc_info_db_code_interbase = 3, + isc_info_db_code_firebird = 4, + + isc_info_db_code_last_value /* Leave this LAST! */ + }; + + +/*****************************/ +/* Request information items */ +/*****************************/ + +#define isc_info_number_messages 4 +#define isc_info_max_message 5 +#define isc_info_max_send 6 +#define isc_info_max_receive 7 +#define isc_info_state 8 +#define isc_info_message_number 9 +#define isc_info_message_size 10 +#define isc_info_request_cost 11 +#define isc_info_access_path 12 +#define isc_info_req_select_count 13 +#define isc_info_req_insert_count 14 +#define isc_info_req_update_count 15 +#define isc_info_req_delete_count 16 + + +/*********************/ +/* Access path items */ +/*********************/ + +#define isc_info_rsb_end 0 +#define isc_info_rsb_begin 1 +#define isc_info_rsb_type 2 +#define isc_info_rsb_relation 3 +#define isc_info_rsb_plan 4 + +/*************/ +/* Rsb types */ +/*************/ + +#define isc_info_rsb_unknown 1 +#define isc_info_rsb_indexed 2 +#define isc_info_rsb_navigate 3 +#define isc_info_rsb_sequential 4 +#define isc_info_rsb_cross 5 +#define isc_info_rsb_sort 6 +#define isc_info_rsb_first 7 +#define isc_info_rsb_boolean 8 +#define isc_info_rsb_union 9 +#define isc_info_rsb_aggregate 10 +#define isc_info_rsb_merge 11 +#define isc_info_rsb_ext_sequential 12 +#define isc_info_rsb_ext_indexed 13 +#define isc_info_rsb_ext_dbkey 14 +#define isc_info_rsb_left_cross 15 +#define isc_info_rsb_select 16 +#define isc_info_rsb_sql_join 17 +#define isc_info_rsb_simulate 18 +#define isc_info_rsb_sim_cross 19 +#define isc_info_rsb_once 20 +#define isc_info_rsb_procedure 21 + +/**********************/ +/* Bitmap expressions */ +/**********************/ + +#define isc_info_rsb_and 1 +#define isc_info_rsb_or 2 +#define isc_info_rsb_dbkey 3 +#define isc_info_rsb_index 4 + +#define isc_info_req_active 2 +#define isc_info_req_inactive 3 +#define isc_info_req_send 4 +#define isc_info_req_receive 5 +#define isc_info_req_select 6 +#define isc_info_req_sql_stall 7 + +/**************************/ +/* Blob information items */ +/**************************/ + +#define isc_info_blob_num_segments 4 +#define isc_info_blob_max_segment 5 +#define isc_info_blob_total_length 6 +#define isc_info_blob_type 7 + +/*********************************/ +/* Transaction information items */ +/*********************************/ + +#define isc_info_tra_id 4 + +/***************************** + * Service action items * + *****************************/ + +#define isc_action_svc_backup 1 /* Starts database backup process on the server */ +#define isc_action_svc_restore 2 /* Starts database restore process on the server */ +#define isc_action_svc_repair 3 /* Starts database repair process on the server */ +#define isc_action_svc_add_user 4 /* Adds a new user to the security database */ +#define isc_action_svc_delete_user 5 /* Deletes a user record from the security database */ +#define isc_action_svc_modify_user 6 /* Modifies a user record in the security database */ +#define isc_action_svc_display_user 7 /* Displays a user record from the security database */ +#define isc_action_svc_properties 8 /* Sets database properties */ +#define isc_action_svc_add_license 9 /* Adds a license to the license file */ +#define isc_action_svc_remove_license 10 /* Removes a license from the license file */ +#define isc_action_svc_db_stats 11 /* Retrieves database statistics */ +#define isc_action_svc_get_ib_log 12 /* Retrieves the InterBase log file from the server */ + +/***************************** + * Service information items * + *****************************/ + +#define isc_info_svc_svr_db_info 50 /* Retrieves the number of attachments and databases */ +#define isc_info_svc_get_license 51 /* Retrieves all license keys and IDs from the license file */ +#define isc_info_svc_get_license_mask 52 /* Retrieves a bitmask representing licensed options on the server */ +#define isc_info_svc_get_config 53 /* Retrieves the parameters and values for IB_CONFIG */ +#define isc_info_svc_version 54 /* Retrieves the version of the services manager */ +#define isc_info_svc_server_version 55 /* Retrieves the version of the InterBase server */ +#define isc_info_svc_implementation 56 /* Retrieves the implementation of the InterBase server */ +#define isc_info_svc_capabilities 57 /* Retrieves a bitmask representing the server's capabilities */ +#define isc_info_svc_user_dbpath 58 /* Retrieves the path to the security database in use by the server */ +#define isc_info_svc_get_env 59 /* Retrieves the setting of $INTERBASE */ +#define isc_info_svc_get_env_lock 60 /* Retrieves the setting of $INTERBASE_LCK */ +#define isc_info_svc_get_env_msg 61 /* Retrieves the setting of $INTERBASE_MSG */ +#define isc_info_svc_line 62 /* Retrieves 1 line of service output per call */ +#define isc_info_svc_to_eof 63 /* Retrieves as much of the server output as will fit in the supplied buffer */ +#define isc_info_svc_timeout 64 /* Sets / signifies a timeout value for reading service information */ +#define isc_info_svc_get_licensed_users 65 /* Retrieves the number of users licensed for accessing the server */ +#define isc_info_svc_limbo_trans 66 /* Retrieve the limbo transactions */ +#define isc_info_svc_running 67 /* Checks to see if a service is running on an attachment */ +#define isc_info_svc_get_users 68 /* Returns the user information from isc_action_svc_display_users */ + +/****************************************************** + * Parameters for isc_action_{add|delete|modify)_user * + ******************************************************/ + +#define isc_spb_sec_userid 5 +#define isc_spb_sec_groupid 6 +#define isc_spb_sec_username 7 +#define isc_spb_sec_password 8 +#define isc_spb_sec_groupname 9 +#define isc_spb_sec_firstname 10 +#define isc_spb_sec_middlename 11 +#define isc_spb_sec_lastname 12 + +/******************************************************* + * Parameters for isc_action_svc_(add|remove)_license, * + * isc_info_svc_get_license * + *******************************************************/ + +#define isc_spb_lic_key 5 +#define isc_spb_lic_id 6 +#define isc_spb_lic_desc 7 + + +/***************************************** + * Parameters for isc_action_svc_backup * + *****************************************/ + +#define isc_spb_bkp_file 5 +#define isc_spb_bkp_factor 6 +#define isc_spb_bkp_length 7 +#define isc_spb_bkp_ignore_checksums 0x01 +#define isc_spb_bkp_ignore_limbo 0x02 +#define isc_spb_bkp_metadata_only 0x04 +#define isc_spb_bkp_no_garbage_collect 0x08 +#define isc_spb_bkp_old_descriptions 0x10 +#define isc_spb_bkp_non_transportable 0x20 +#define isc_spb_bkp_convert 0x40 +#define isc_spb_bkp_expand 0x80 + +/******************************************** + * Parameters for isc_action_svc_properties * + ********************************************/ + +#define isc_spb_prp_page_buffers 5 +#define isc_spb_prp_sweep_interval 6 +#define isc_spb_prp_shutdown_db 7 +#define isc_spb_prp_deny_new_attachments 9 +#define isc_spb_prp_deny_new_transactions 10 +#define isc_spb_prp_reserve_space 11 +#define isc_spb_prp_write_mode 12 +#define isc_spb_prp_access_mode 13 +#define isc_spb_prp_set_sql_dialect 14 +#define isc_spb_prp_activate 0x0100 +#define isc_spb_prp_db_online 0x0200 + +/******************************************** + * Parameters for isc_spb_prp_reserve_space * + ********************************************/ + +#define isc_spb_prp_res_use_full 35 +#define isc_spb_prp_res 36 + +/****************************************** + * Parameters for isc_spb_prp_write_mode * + ******************************************/ + +#define isc_spb_prp_wm_async 37 +#define isc_spb_prp_wm_sync 38 + +/****************************************** + * Parameters for isc_spb_prp_access_mode * + ******************************************/ + +#define isc_spb_prp_am_readonly 39 +#define isc_spb_prp_am_readwrite 40 + +/***************************************** + * Parameters for isc_action_svc_repair * + *****************************************/ + +#define isc_spb_rpr_commit_trans 15 +#define isc_spb_rpr_rollback_trans 34 +#define isc_spb_rpr_recover_two_phase 17 +#define isc_spb_tra_id 18 +#define isc_spb_single_tra_id 19 +#define isc_spb_multi_tra_id 20 +#define isc_spb_tra_state 21 +#define isc_spb_tra_state_limbo 22 +#define isc_spb_tra_state_commit 23 +#define isc_spb_tra_state_rollback 24 +#define isc_spb_tra_state_unknown 25 +#define isc_spb_tra_host_site 26 +#define isc_spb_tra_remote_site 27 +#define isc_spb_tra_db_path 28 +#define isc_spb_tra_advise 29 +#define isc_spb_tra_advise_commit 30 +#define isc_spb_tra_advise_rollback 31 +#define isc_spb_tra_advise_unknown 33 + +#define isc_spb_rpr_validate_db 0x01 +#define isc_spb_rpr_sweep_db 0x02 +#define isc_spb_rpr_mend_db 0x04 +#define isc_spb_rpr_list_limbo_trans 0x08 +#define isc_spb_rpr_check_db 0x10 +#define isc_spb_rpr_ignore_checksum 0x20 +#define isc_spb_rpr_kill_shadows 0x40 +#define isc_spb_rpr_full 0x80 + +/***************************************** + * Parameters for isc_action_svc_restore * + *****************************************/ + +#define isc_spb_res_buffers 9 +#define isc_spb_res_page_size 10 +#define isc_spb_res_length 11 +#define isc_spb_res_access_mode 12 +#define isc_spb_res_deactivate_idx 0x0100 +#define isc_spb_res_no_shadow 0x0200 +#define isc_spb_res_no_validity 0x0400 +#define isc_spb_res_one_at_a_time 0x0800 +#define isc_spb_res_replace 0x1000 +#define isc_spb_res_create 0x2000 +#define isc_spb_res_use_all_space 0x4000 + +/****************************************** + * Parameters for isc_spb_res_access_mode * + ******************************************/ + +#define isc_spb_res_am_readonly isc_spb_prp_am_readonly +#define isc_spb_res_am_readwrite isc_spb_prp_am_readwrite + +/******************************************* + * Parameters for isc_info_svc_svr_db_info * + *******************************************/ + +#define isc_spb_num_att 5 +#define isc_spb_num_db 6 + +/***************************************** + * Parameters for isc_info_svc_db_stats * + *****************************************/ + +#define isc_spb_sts_data_pages 0x01 +#define isc_spb_sts_db_log 0x02 +#define isc_spb_sts_hdr_pages 0x04 +#define isc_spb_sts_idx_pages 0x08 +#define isc_spb_sts_sys_relations 0x10 +#define isc_spb_sts_record_versions 0x20 +#define isc_spb_sts_table 0x40 + +/*************************/ +/* SQL information items */ +/*************************/ + +#define isc_info_sql_select 4 +#define isc_info_sql_bind 5 +#define isc_info_sql_num_variables 6 +#define isc_info_sql_describe_vars 7 +#define isc_info_sql_describe_end 8 +#define isc_info_sql_sqlda_seq 9 +#define isc_info_sql_message_seq 10 +#define isc_info_sql_type 11 +#define isc_info_sql_sub_type 12 +#define isc_info_sql_scale 13 +#define isc_info_sql_length 14 +#define isc_info_sql_null_ind 15 +#define isc_info_sql_field 16 +#define isc_info_sql_relation 17 +#define isc_info_sql_owner 18 +#define isc_info_sql_alias 19 +#define isc_info_sql_sqlda_start 20 +#define isc_info_sql_stmt_type 21 +#define isc_info_sql_get_plan 22 +#define isc_info_sql_records 23 +#define isc_info_sql_batch_fetch 24 + +/*********************************/ +/* SQL information return values */ +/*********************************/ + +#define isc_info_sql_stmt_select 1 +#define isc_info_sql_stmt_insert 2 +#define isc_info_sql_stmt_update 3 +#define isc_info_sql_stmt_delete 4 +#define isc_info_sql_stmt_ddl 5 +#define isc_info_sql_stmt_get_segment 6 +#define isc_info_sql_stmt_put_segment 7 +#define isc_info_sql_stmt_exec_procedure 8 +#define isc_info_sql_stmt_start_trans 9 +#define isc_info_sql_stmt_commit 10 +#define isc_info_sql_stmt_rollback 11 +#define isc_info_sql_stmt_select_for_upd 12 +#define isc_info_sql_stmt_set_generator 13 +#define isc_info_sql_stmt_savepoint 14 + + +/***********************************/ +/* Server configuration key values */ +/***********************************/ + +/* Not available in Firebird 1.5 */ + + +/**********************************************/ +/* Dynamic Data Definition Language operators */ +/**********************************************/ + +/******************/ +/* Version number */ +/******************/ + +#define isc_dyn_version_1 1 +#define isc_dyn_eoc 255 + +/******************************/ +/* Operations (may be nested) */ +/******************************/ + +#define isc_dyn_begin 2 +#define isc_dyn_end 3 +#define isc_dyn_if 4 +#define isc_dyn_def_database 5 +#define isc_dyn_def_global_fld 6 +#define isc_dyn_def_local_fld 7 +#define isc_dyn_def_idx 8 +#define isc_dyn_def_rel 9 +#define isc_dyn_def_sql_fld 10 +#define isc_dyn_def_view 12 +#define isc_dyn_def_trigger 15 +#define isc_dyn_def_security_class 120 +#define isc_dyn_def_dimension 140 +#define isc_dyn_def_generator 24 +#define isc_dyn_def_function 25 +#define isc_dyn_def_filter 26 +#define isc_dyn_def_function_arg 27 +#define isc_dyn_def_shadow 34 +#define isc_dyn_def_trigger_msg 17 +#define isc_dyn_def_file 36 +#define isc_dyn_mod_database 39 +#define isc_dyn_mod_rel 11 +#define isc_dyn_mod_global_fld 13 +#define isc_dyn_mod_idx 102 +#define isc_dyn_mod_local_fld 14 +#define isc_dyn_mod_sql_fld 216 +#define isc_dyn_mod_view 16 +#define isc_dyn_mod_security_class 122 +#define isc_dyn_mod_trigger 113 +#define isc_dyn_mod_trigger_msg 28 +#define isc_dyn_delete_database 18 +#define isc_dyn_delete_rel 19 +#define isc_dyn_delete_global_fld 20 +#define isc_dyn_delete_local_fld 21 +#define isc_dyn_delete_idx 22 +#define isc_dyn_delete_security_class 123 +#define isc_dyn_delete_dimensions 143 +#define isc_dyn_delete_trigger 23 +#define isc_dyn_delete_trigger_msg 29 +#define isc_dyn_delete_filter 32 +#define isc_dyn_delete_function 33 +#define isc_dyn_delete_shadow 35 +#define isc_dyn_grant 30 +#define isc_dyn_revoke 31 +#define isc_dyn_def_primary_key 37 +#define isc_dyn_def_foreign_key 38 +#define isc_dyn_def_unique 40 +#define isc_dyn_def_procedure 164 +#define isc_dyn_delete_procedure 165 +#define isc_dyn_def_parameter 135 +#define isc_dyn_delete_parameter 136 +#define isc_dyn_mod_procedure 175 +#define isc_dyn_def_log_file 176 +#define isc_dyn_def_cache_file 180 +#define isc_dyn_def_exception 181 +#define isc_dyn_mod_exception 182 +#define isc_dyn_del_exception 183 +#define isc_dyn_drop_log 194 +#define isc_dyn_drop_cache 195 +#define isc_dyn_def_default_log 202 + +/***********************/ +/* View specific stuff */ +/***********************/ + +#define isc_dyn_view_blr 43 +#define isc_dyn_view_source 44 +#define isc_dyn_view_relation 45 +#define isc_dyn_view_context 46 +#define isc_dyn_view_context_name 47 + +/**********************/ +/* Generic attributes */ +/**********************/ + +#define isc_dyn_rel_name 50 +#define isc_dyn_fld_name 51 +#define isc_dyn_new_fld_name 215 +#define isc_dyn_idx_name 52 +#define isc_dyn_description 53 +#define isc_dyn_security_class 54 +#define isc_dyn_system_flag 55 +#define isc_dyn_update_flag 56 +#define isc_dyn_prc_name 166 +#define isc_dyn_prm_name 137 +#define isc_dyn_sql_object 196 +#define isc_dyn_fld_character_set_name 174 + +/********************************/ +/* Relation specific attributes */ +/********************************/ + +#define isc_dyn_rel_dbkey_length 61 +#define isc_dyn_rel_store_trig 62 +#define isc_dyn_rel_modify_trig 63 +#define isc_dyn_rel_erase_trig 64 +#define isc_dyn_rel_store_trig_source 65 +#define isc_dyn_rel_modify_trig_source 66 +#define isc_dyn_rel_erase_trig_source 67 +#define isc_dyn_rel_ext_file 68 +#define isc_dyn_rel_sql_protection 69 +#define isc_dyn_rel_constraint 162 +#define isc_dyn_delete_rel_constraint 163 + +/************************************/ +/* Global field specific attributes */ +/************************************/ + +#define isc_dyn_fld_type 70 +#define isc_dyn_fld_length 71 +#define isc_dyn_fld_scale 72 +#define isc_dyn_fld_sub_type 73 +#define isc_dyn_fld_segment_length 74 +#define isc_dyn_fld_query_header 75 +#define isc_dyn_fld_edit_string 76 +#define isc_dyn_fld_validation_blr 77 +#define isc_dyn_fld_validation_source 78 +#define isc_dyn_fld_computed_blr 79 +#define isc_dyn_fld_computed_source 80 +#define isc_dyn_fld_missing_value 81 +#define isc_dyn_fld_default_value 82 +#define isc_dyn_fld_query_name 83 +#define isc_dyn_fld_dimensions 84 +#define isc_dyn_fld_not_null 85 +#define isc_dyn_fld_precision 86 +#define isc_dyn_fld_char_length 172 +#define isc_dyn_fld_collation 173 +#define isc_dyn_fld_default_source 193 +#define isc_dyn_del_default 197 +#define isc_dyn_del_validation 198 +#define isc_dyn_single_validation 199 +#define isc_dyn_fld_character_set 203 + +/***********************************/ +/* Local field specific attributes */ +/***********************************/ + +#define isc_dyn_fld_source 90 +#define isc_dyn_fld_base_fld 91 +#define isc_dyn_fld_position 92 +#define isc_dyn_fld_update_flag 93 + +/*****************************/ +/* Index specific attributes */ +/*****************************/ + +#define isc_dyn_idx_unique 100 +#define isc_dyn_idx_inactive 101 +#define isc_dyn_idx_type 103 +#define isc_dyn_idx_foreign_key 104 +#define isc_dyn_idx_ref_column 105 +#define isc_dyn_idx_statistic 204 + +/*******************************/ +/* Trigger specific attributes */ +/*******************************/ + +#define isc_dyn_trg_type 110 +#define isc_dyn_trg_blr 111 +#define isc_dyn_trg_source 112 +#define isc_dyn_trg_name 114 +#define isc_dyn_trg_sequence 115 +#define isc_dyn_trg_inactive 116 +#define isc_dyn_trg_msg_number 117 +#define isc_dyn_trg_msg 118 + +/**************************************/ +/* Security Class specific attributes */ +/**************************************/ + +#define isc_dyn_scl_acl 121 +#define isc_dyn_grant_user 130 +#define isc_dyn_grant_user_explicit 219 +#define isc_dyn_grant_proc 186 +#define isc_dyn_grant_trig 187 +#define isc_dyn_grant_view 188 +#define isc_dyn_grant_options 132 +#define isc_dyn_grant_user_group 205 +#define isc_dyn_grant_role 218 + + +/**********************************/ +/* Dimension specific information */ +/**********************************/ + +#define isc_dyn_dim_lower 141 +#define isc_dyn_dim_upper 142 + +/****************************/ +/* File specific attributes */ +/****************************/ + +#define isc_dyn_file_name 125 +#define isc_dyn_file_start 126 +#define isc_dyn_file_length 127 +#define isc_dyn_shadow_number 128 +#define isc_dyn_shadow_man_auto 129 +#define isc_dyn_shadow_conditional 130 + +/********************************/ +/* Log file specific attributes */ +/********************************/ + +#define isc_dyn_log_file_sequence 177 +#define isc_dyn_log_file_partitions 178 +#define isc_dyn_log_file_serial 179 +#define isc_dyn_log_file_overflow 200 +#define isc_dyn_log_file_raw 201 + +/***************************/ +/* Log specific attributes */ +/***************************/ + +#define isc_dyn_log_group_commit_wait 189 +#define isc_dyn_log_buffer_size 190 +#define isc_dyn_log_check_point_length 191 +#define isc_dyn_log_num_of_buffers 192 + +/********************************/ +/* Function specific attributes */ +/********************************/ + +#define isc_dyn_function_name 145 +#define isc_dyn_function_type 146 +#define isc_dyn_func_module_name 147 +#define isc_dyn_func_entry_point 148 +#define isc_dyn_func_return_argument 149 +#define isc_dyn_func_arg_position 150 +#define isc_dyn_func_mechanism 151 +#define isc_dyn_filter_in_subtype 152 +#define isc_dyn_filter_out_subtype 153 + + +#define isc_dyn_description2 154 +#define isc_dyn_fld_computed_source2 155 +#define isc_dyn_fld_edit_string2 156 +#define isc_dyn_fld_query_header2 157 +#define isc_dyn_fld_validation_source2 158 +#define isc_dyn_trg_msg2 159 +#define isc_dyn_trg_source2 160 +#define isc_dyn_view_source2 161 +#define isc_dyn_xcp_msg2 184 + +/*********************************/ +/* Generator specific attributes */ +/*********************************/ + +#define isc_dyn_generator_name 95 +#define isc_dyn_generator_id 96 + +/*********************************/ +/* Procedure specific attributes */ +/*********************************/ + +#define isc_dyn_prc_inputs 167 +#define isc_dyn_prc_outputs 168 +#define isc_dyn_prc_source 169 +#define isc_dyn_prc_blr 170 +#define isc_dyn_prc_source2 171 + +/*********************************/ +/* Parameter specific attributes */ +/*********************************/ + +#define isc_dyn_prm_number 138 +#define isc_dyn_prm_type 139 + +/********************************/ +/* Relation specific attributes */ +/********************************/ + +#define isc_dyn_xcp_msg 185 + +/**********************************************/ +/* Cascading referential integrity values */ +/**********************************************/ +#define isc_dyn_foreign_key_update 205 +#define isc_dyn_foreign_key_delete 206 +#define isc_dyn_foreign_key_cascade 207 +#define isc_dyn_foreign_key_default 208 +#define isc_dyn_foreign_key_null 209 +#define isc_dyn_foreign_key_none 210 + +/***********************/ +/* SQL role values */ +/***********************/ +#define isc_dyn_def_sql_role 211 +#define isc_dyn_sql_role_name 212 +#define isc_dyn_grant_admin_options 213 +#define isc_dyn_del_sql_role 214 +/* 215 & 216 are used some lines above. */ + +/**********************************************/ +/* Generators again */ +/**********************************************/ + +#ifndef __cplusplus /* c definitions */ +#define gds_dyn_delete_generator 217 +#else /* c++ definitions */ +const unsigned char gds_dyn_delete_generator = 217; +#endif + +/****************************/ +/* Last $dyn value assigned */ +/****************************/ + +#define isc_dyn_last_dyn_value 219 + +/******************************************/ +/* Array slice description language (SDL) */ +/******************************************/ + +#define isc_sdl_version1 1 +#define isc_sdl_eoc 255 +#define isc_sdl_relation 2 +#define isc_sdl_rid 3 +#define isc_sdl_field 4 +#define isc_sdl_fid 5 +#define isc_sdl_struct 6 +#define isc_sdl_variable 7 +#define isc_sdl_scalar 8 +#define isc_sdl_tiny_integer 9 +#define isc_sdl_short_integer 10 +#define isc_sdl_long_integer 11 +#define isc_sdl_literal 12 +#define isc_sdl_add 13 +#define isc_sdl_subtract 14 +#define isc_sdl_multiply 15 +#define isc_sdl_divide 16 +#define isc_sdl_negate 17 +#define isc_sdl_eql 18 +#define isc_sdl_neq 19 +#define isc_sdl_gtr 20 +#define isc_sdl_geq 21 +#define isc_sdl_lss 22 +#define isc_sdl_leq 23 +#define isc_sdl_and 24 +#define isc_sdl_or 25 +#define isc_sdl_not 26 +#define isc_sdl_while 27 +#define isc_sdl_assignment 28 +#define isc_sdl_label 29 +#define isc_sdl_leave 30 +#define isc_sdl_begin 31 +#define isc_sdl_end 32 +#define isc_sdl_do3 33 +#define isc_sdl_do2 34 +#define isc_sdl_do1 35 +#define isc_sdl_element 36 + +/********************************************/ +/* International text interpretation values */ +/********************************************/ + +#define isc_interp_eng_ascii 0 +#define isc_interp_jpn_sjis 5 +#define isc_interp_jpn_euc 6 + +/*******************/ +/* SQL definitions */ +/*******************/ + +#define SQL_TEXT 452 +#define SQL_VARYING 448 +#define SQL_SHORT 500 +#define SQL_LONG 496 +#define SQL_FLOAT 482 +#define SQL_DOUBLE 480 +#define SQL_D_FLOAT 530 +#define SQL_TIMESTAMP 510 +#define SQL_BLOB 520 +#define SQL_ARRAY 540 +#define SQL_QUAD 550 +#define SQL_TYPE_TIME 560 +#define SQL_TYPE_DATE 570 +#define SQL_INT64 580 + +/* Historical alias for pre V6 applications */ +#define SQL_DATE SQL_TIMESTAMP + +/*****************/ +/* Blob Subtypes */ +/*****************/ + +/* types less than zero are reserved for customer use */ + +#define isc_blob_untyped 0 + +/* internal subtypes */ + +#define isc_blob_text 1 +#define isc_blob_blr 2 +#define isc_blob_acl 3 +#define isc_blob_ranges 4 +#define isc_blob_summary 5 +#define isc_blob_format 6 +#define isc_blob_tra 7 +#define isc_blob_extfile 8 + +/* the range 20-30 is reserved for dBASE and Paradox types */ + +#define isc_blob_formatted_memo 20 +#define isc_blob_paradox_ole 21 +#define isc_blob_graphic 22 +#define isc_blob_dbase_ole 23 +#define isc_blob_typed_binary 24 + +/* Deprecated definitions maintained for compatibility only */ + +#define isc_info_db_SQL_dialect 62 +#define isc_dpb_SQL_dialect 63 +#define isc_dpb_set_db_SQL_dialect 65 + + +#include "iberror.h" + +#endif /* JRD_IBASE_H */ +