Logo Search packages:      
Sourcecode: gambas2 version File versions

ibase.h

/*
 *    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.40.2.6 2004/03/29 03:50:10 skidder 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 <tamlin@algonet.se>
 *       Mark O'Donohue <mark.odonohue@ludwig.edu.au>
 *
 *
 *  $Id: fb_types.h,v 1.25.2.2 2004/09/17 23:34:05 skidder 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;
#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 */


Generated by  Doxygen 1.6.0   Back to index