# Runtime Information

The characteristics of the runtime currently active can be obtained by calling the `mco_get_runtime_info()` API. These characteristics are returned in the `mco_runtime_info_t` structure which has the following elements. Many of these are boolean (`uint1`) values (where 1 = `MCO_YES` and 0 = `MCO_NO`) indicating whether that feature is enabled or not.

        typedef struct mco_runtime_info_t_
        {
        uint1 mco_version_major; /* eXtremeDB version */
        uint1 mco_version_minor; /* eXtremeDB version */
        uint2 mco_build_number;  /* eXtremeDB build number */
        uint1 mco_size_t;       /* sizeof mco_size_t variable, depends on x32/x64 architecture */
        uint1 mco_offs_t;       /* sizeof mco_offs_t variable, depends on x32/x64 architecture */
        uint1 uint4_supported;  /* uint4 datatype support */
        uint1 float_supported;  /* double/float datatype support */
        uint1 mco_checklevel;   /* runtime's checklevel, 0 for non-debug libraries */
        uint1 evaluation_version;       /* Evaluation runtime */
        uint1 large_database_supported; /* Large database support (>4G) for x32 runtime mode */
        uint1 collation_supported;      /* External collations (index comparision) support */
        uint1 heap31_supported;         /* eXtremeDB v3.1 application level heap feature support. (DEPRECATED - value is always 0)*/
        uint1 bin_serialization_supported; /* Binary or XML serialization support */
        uint1 fixedrec_supported;          /* FIXEDREC alloations for constant-size objects support */
        uint1 statistics_supported;        /* Statistic collection enabled */
        uint1 events_supported;            /* Synch/Asynch events support */
        uint1 save_load_supported;         /* Database image save/load support */
        uint1 object_initialization_supported; /* Support of new object fields initialization (instead of zeros) support */
        uint1 direct_index_field_access_supported;  /* Use values of indexed fields from the indexes instead of object bodies
                                    optimization (persistent objects) */
        uint1 multiprocess_access_supported;        /* conventional or shared memory driver linked into the program  */
        uint1 object_repack_supported;              /* Support of dynamic object repack feature. Obsolete. Left for compatibility */
        uint1 transaction_logging_supported;        /* Transaaction Logging (TL) feature support */
        uint1 cluster_supported;                    /* Cluster (CL) feature support */
        uint1 high_availability_supported;          /* High Avalaibility (HA) fature support */
        uint1 ha_multicast_supported;               /* HA Multi-cast support */
        uint1 ha_incremental_replication_supported; /* HA incremental replication support */
        uint1 binary_schema_evalution_supported;    /* Binary schema evaluation support */
        uint1 unicode_supported;                    /* Unicode (nchar/nstring datatype) support */
        uint1 wchar_supported;                      /* WChar (wchar/wstring datatype) support. Required C/C++ runtime */
        uint1 recovery_supported;                   /* Recovery support. Obsolete, left for compatibility */
        uint1 disk_supported;                       /* Support for persistent objects (vtmem/vtdsk runtime) */
        uint1 direct_pointers_supported;            /* Direct- or offset-based pointers in the database (DPTR/OFFS runtime) */
        uint1 persistent_object_supported;          /* Object persistence support */
        uint1 xml_import_export_supported;          /* XML database export/import support */
        uint1 user_defined_index_supported;         /* User-defined index (comparision) support */
        uint1 multifile_supported;                  /* Multi-file persistent storage support */
        uint1 multifile_descriptor_supported;       /* Enable Multi-file descriptor file (mfd-file) support for
                                 multi-file persistent storage feature */
        uint1 two_phase_commit_supported;           /* Two-phase commit support */
        uint1 rtree_supported;                      /* Include rtree index implementation code into runtime */
        uint1 tree_based_hash;                      /* tree-based hash implementation (for internal debugging) */
        uint1 tmgr_mvcc_async_cleanup;              /* Value of 1 indicates “delayed  cleanup of unneeded object versions”; value of 0 means cleanup immediately */
        uint1 concurent_disk_btree;                 /* Always on, obsolete, left for compatibility */
        uint1 open_cursor_goto_first;               /* Indicates initial positioning of new cursors to the first element */
        uint1 smart_index_insert;                   /* Pre-sort data records in a voluntaty index creation procedure */
        uint1 btree_leaf_lock;                      /* Fine-grain locking of btree indexes */
        uint1 null_statistics;                      /* Always on, obsolete, left for compatibility */
        uint1 implicit_runtime_start;               /* Always on, obsolete, left for compatibility */
        uint1 bufferized_sync_iostream;             /* Indicates that HA transmission buffer-ization is enabled for synchronization procedure */
        uint1 async_replication;                    /* Asynchronus HA replication enabled */
        uint1 fast_transaction_list;                /* Indicates tree index in transaction list implementation enabled (MURSIW) */
        uint1 extendable_dirty_page_bitmap;         /* Persistent storage's dirty pages map extends */
        uint1 mursiw_policy;                        /* MURSIW TM behavior: 0 - Priority-based transaction queue,
                    1 - Sequential transaction queue, 2 - Global sync, 3 - RW-Lock */
        uint1 sync_capabilities;                    /* Sync. primitives implementation capabilities, bit mask:
                        1 - single-process, 2 - multi-process capable primitives */
        uint1 char_comparison_policy;               /* Compare chars as: 0 - Default, 1 - as signed, 2 - as unsigned */
        uint4 stream_buffer_size;                   /* Size of buffer used in streaming code in HA / CL / TL etc.
                        (Also for Stream Reader and Stream Writer functions.) */
        uint1 max_db_instances;                     /* Max. number of database instances supported by the runtime */
        uint1 max_db_name_length;                   /* Max. length of a database name supported by the runtime */
        int   max_extends;                          /* Max. number of extends of database memory area */
        uint4 tl_page_buffer_size;                  /* Size of internal buffers that TL operates */
        uint2 ha_max_replicas;                      /* Max. number of HA replicas at a time */
        uint4 ha_transmit_buffer_size;              /* Size of buffer used in HA to send data from commit, default is 2K */
        uint4 ha_syncronization_buffer_size;        /* HA synchronization stream IO buffer size, default is 2K */
        uint4 default_redo_log_limit;               /* Default size of REDO log length limit, default is 16M */
        uint1 mvcc_critical_sections;               /* Number of critical sections used by MVCC, it is better to be a prime number */
        uint1 mvcc_per_index_locks;                 /* Number of locks used by index, it is better to be a prime number */
        uint2 con_disk_page_cache_size;             /* Size of per-connection page cache. The runtime pre-allocates some
                            pages to speedup page allocation when needed */
        uint1 small_con_cache_threshold;            /* Use hashed per-connection cache if the
                            con_disk_page_cache_size > small_con_cache_threshold;
                            use an array otherwise */
        uint4 extendable_dirty_page_bitmap_limit;   /* Max bitmap size if extendable dirty page bitmap enabled */
        uint1 max_vista_sessions;                   /* Max number of Vista sessions (windows vista only) */
        uint1 concurrent_write_transactions;        /* Does current Transaction Manager support concurrent write transactions or not */
        uint1 encryption_support;                   /* Database encryption enabled */
        const char *mco_revision;                   /* String eXtremeDB version number */
    } mco_runtime_info_t;

mco_version_major | The eXtremeDB version major number
mco_version_minor | The eXtremeDB version minor number
mco_build_number | The eXtremeDB build number
mco_size_t | Sizeof `mco_size_t` variable, depends on x32/x64 architecture
mco_offs_t | Sizeof `mco_offs_t` variable, depends on x32/x64 architecture
uint4_supported | If `True,` `uint4` data type supported
float_supported | If `True,` `double`/`float` data type supported
mco_checklevel | The runtime's checklevel, 0 for non-debug libraries
evaluation_version | Evaluation runtime
large_database_supported | If `True,` large database supported (>4G) for x32 runtime mode
collation_supported | If `True,` external collations (index comparison) supported
heap31_supported | If `True,` eXtremeDB v3.1 application level heap feature supported
bin_serialization_supported | If `True,`Binary or XML serialization supported
fixedrec_supported | `If `True,`FIXEDREC` alloations for constant-size objects supported
statistics_supported | If `True,`Statistic collection enabled
events_supported | If `True,`Synch/Asynch events supported
save_load_supported | If `True,`Database image save/load supported
object_initialization_supported | If `True,` new object fields initialization (instead of zeros) supported
direct_index_field_access_supported | If `True,` use values of indexed fields from the indexes instead of object bodies optimization (persistent objects)
multiprocess_access_supported | Conventional or shared memory driver linked into the program
object_repack_supported | Support of dynamic object repack feature. Obsolete. Left for compatibility
transaction_logging_supported | If `True,` eXtremeDB Transaction Logging (TL) feature supported
cluster_supported | If `True,` eXtremeDB Cluster (CL) feature supported
high_availability_supported | If `True,`eXtremeDB High Availability (HA) fature supported
ha_multicast_supported | If `True,` HA Multi-cast supported
ha_incremental_replication_supported | If `True,` HA incremental replication supported
binary_schema_evalution_supported | If `True,` Binary schema evaluation supported
unicode_supported | If `True,` Unicode (`nchar` / `nstring` data type) supported
wchar_supported | If `True,` WChar (`wchar` / `wstring` datatype) supported. Required C/C++ runtime
recovery_supported | Recovery support. Obsolete, left for compatibility
disk_supported | If `True,` persistent objects (`vtmem` / `vtdsk` runtime) supported
direct_pointers_supported | If `True,` direct- or offset-based pointers in the database (`DPTR` / `OFFS` runtime) supported
persistent_object_supported | If `True,` object persistence supported (Allows persistent objects in IM-OFFS runtime)
xml_import_export_supported | If `True,` XML database export / import supported
user_defined_index_supported | If `True,` user-defined index (comparison) supported
multifile_supported | If `True,` multi-file persistent storage supported
multifile_descriptor_supported | If `True,` multi-file descriptor file (mfd-file) supported for multi-file persistent storage feature
two_phase_commit_supported | If `True,` two-phase commit supported
rtree_supported | If `True,` include `rtree` index implementation code into runtime
tree_based_hash | `If `True,` tree`-based hash implementation (for internal debugging) supported
tmgr_mvcc_async_cleanup | Value of 1 indicates “delayed cleanup of unneeded object versions”; value of 0 means cleanup immediately (represents the status of `MCO_CFG_TMGR_MVCC_ASYNC_CLEANUP` in file `mcocfg.h`)
concurent_disk_btree | Always on, obsolete, left for compatibility
open_cursor_goto_first | Indicates initial positioning of new cursors to the first element
smart_index_insert | Pre-sort data records in a `voluntaty index` creation procedure
btree_leaf_lock | Fine-grain locking of `tree` indexes
null_statistics | Always on, obsolete, left for compatibility
implicit_runtime_start | Always on, obsolete, left for compatibility
bufferized_sync_iostream | Indicates that HA transmission buffer-ization is enabled for synchronization procedure
async_replication | Asynchronous HA replication enabled
fast_transaction_list | Indicates `tree` index in transaction list implementation enabled (MURSIW)
extendable_dirty_page_bitmap | Persistent storage's dirty pages map extends
mursiw_policy | `MURSIW` TM behavior: 0 - Priority-based transaction queue, 1 - Sequential transaction queue, 2 - Global sync, 3 - RW-Lock
sync_capabilities | Synchronization primitives implementation capabilities, bit mask: 1 - single-process, 2 - multi-process capable primitives
char_comparition_policy | Compare chars as: 0 - Default, 1 - as signed, 2 - as unsigned
stream_buffer_size | Size of buffer used in streaming code in HA / CL / TL etc. (Also for Stream Reader and Stream Writer functions.)
max_db_instances | Max. number of database instances supported by the runtime
max_db_name_length | Max. length of a database name supported by the runtime
max_extends | Max. number of extends of database memory area
tl_page_buffer_size | Size of internal buffers that TL operates
ha_max_replicas | Max. number of HA replicas at a time
ha_transmit_buffer_size | Size of buffer used in HA to send data from commit, default is 2K
ha_syncronization_buffer_size | HA synchronization stream IO buffer size, default is 2K
default_redo_log_limit | Default size of `REDO` log length limit, default is 16M
mvcc_critical_sections | Number of critical sections used by MVCC, it is better to be a prime number
mvcc_per_index_locks | Number of locks used by index, it is better to be a prime number
con_disk_page_cache_size | Size of per-connection page cache. The runtime pre-allocates some pages to speedup page allocation when needed
small_con_cache_threshold | Use hashed per-connection cache if the `con_disk_page_cache_size > small_con_cache_threshold`; use an array otherwise
extendable_dirty_page_bitmap_limit | Max bitmap size if extendable dirty page bitmap enabled
max_vista_sessions | Max number of Vista sessions (windows vista only)
concurrent_write_transactions | Does current Transaction Manager support concurrent write transactions or not
rc4_encryption_support | Database encryption enabled
mco_revision | String eXtremeDB version number