Publish date: 2001-11-14

IBProvider v1.5.1 — change of compiler, optimization, IColumnsRowset, etc …

We completed the revision of functions realized in version 1.5. Some petty errors were fixed and optimisation was carried out in version 1.5.1. At present the realisation of new interfaces is started. IColumnsRowset is already available.

Change of compiler

At present we are turn to «Free Borland C++ Compiler», therefore you can download one of two modifications of provider:

  • Compiled by BCB3 (rtl — cw3240mt.dll)
  • Compiled by Free Borland C++ Compiler (rtl — cc3250mt.dll)

Errors

  • Support of quoted names containing apostrophes e.g. «a'b». As it turned out this error is meeting frequently in existing access libraries.)
  • Conversion of DBTYPE_UI1 and DBTYPE_I1 to text format.
  • CanConvert informed about impossibility of conversion DBTYPE_BOOL to other types.

Optimization

  • Management of the list of identifier of locked rows (HROW) is improved. Storing it in linear list used before led to speed decrease.
  • Inner SQL syntax analyzer was extended for recognition of all basic categories, therefore IBProvider makes the query to server for getting RowAffected only for «INSERT …», «UPDATE …», «DELETE …». For other categories -1 is returned always.
  • The pool of shared objects was realized. It allows the decrease of the expenses for using objects of metadata publication. See below IColumnsRowset.

New Functionality

  • Since ADO refuses flatly to use IOpenRowset to open the tables, the explicit support of opening ones was realized:

    ADODBCommand.CommandText=«TABLE/VIEW» .

    At the expense of inner SQL syntax analysis the outgoes for the support are tiny. Probably we will have to realize the special support of query: «select * from TABLE/VIEW».
  • The inner infrastructure of DB metadata publication implementation is began. As this metadata getting interfaces are used in ADO often enough then cache making of standart column descriptions and their declarations as rows IColumnsRowset created. At present IColumnsRowset implementation is completed:
    • Is supported by commands and resulting rowsets.
    • Recursion. Return rowsets support IColumnsRowset also. As structure and return data when recurse using of IColumnsRowset are not changable then they are suit things for repeatable use.
    • IColumnsRowset of commands and their resulting sets contain specified columns:
      • DBCOLUMN_BASECATALOGNAME is NULL always
      • DBCOLUMN_BASECOLUMNNAME
      • DBCOLUMN_BASESCHEMANAME is NULL always
      • DBCOLUMN_BASETABLENAME
      • DBCOLUMN_KEYCOLUMN — column entering into table primary key(NULL/true/false)
    • Query to system table to get primary key list is executed for table only. For views and other query categories the operation is not execute.
    • In auto-commit mode superfluous transaction starts only in case of using IColumnsRowset by command. IColumnsRowset of resulting set uses the same transaction during data selection is executed.

Publish date: 2001-11-14. Copyright: IBProvider. This material may be reproduced on other web sites, without written permission but link https://www.ibprovider.com/eng required.