IBProvider v1.7.4.289
In the version
- All known at the current moment errors and inaccuracies associated with the data type conversion are removed.
- The support of Client Cursor Engine is improved.
Support of NUMERIC
In the foregoing versions when preparing the parameters of DBTYPE_NUMERIC (adNumeric) type there was used intermediate conversion into double. In this case the significant digits could be lost. Now there is used direct conversion into InterBase presentation of NUMERIC (integer + scale) taking into account the current dialect of connection. Conversion into double is used only if DBTYPE_NUMERIC contains the number, which cannot be represented in the form of integer + scale with using of INT32 (first dialect) or INT64 (third dialect).)
Corrections are extended both to usual NUMERIC parameters and parameters containing NUMERIC-arrays.
The loss of the precision of NUMERIC-data when reading was excluded from the very beginning (see version 1.6.1).
Take into consideration, that DBTYPE_NUMERIC is not the VARIANT-compatible data type. Therefore maybe to exclude completely the loss of the significant digits for ADODB is possible only through using of text presentation of the number.
Support of binary presentation and storage-objects
Now they can get and put any data in the form of DBTYPE_BYTES and storage-objects with the ISequentialStream interface. Including the elements of arrays. ISequentialStream was supported only for the BLOB fields previously.
In particular, Client Cursor Engine reads/puts VARCHAR(32000) as storage-object.
This support is accessible also in the client library of C++ classes for the work with OLE DB.
Query parameters control
The new properties of the initialization of the data source and command are added.
auto_param_describe property. If when executing the parameterized query the descriptions of the parameters were not defined, then the provider will form them automatically. Default value is true. If you want to verify the correctness of the work of your software, then this support can be set off.
force_param_describe property. Forced obtaining of description of the parameters. It ensures the transfer of the parameters values in that format, which server requires. In this case all load lies down on the type converter of IBProvider. Previously implicit obtaining of description of the parameters was made only for arrays. Default value is true.
As a result, for example, it is possible not to worry about the correct setting of the description of text BLOB fields, but to work with it as usual text fields. If in your data base there occurred change of the type from VARCHAR to BLOB or vice versa, then provider will correct independently the principle of the data setting. Note that at present data base server can only write VARCHAR in BLOB, but not backward.
Client Cursor Engine requires the support of this type, which interprets text fields of VARCHAR(32000) type as MEMO.
If you form the correct descriptions of the parameters, then you can set this property in false. This excludes one additional access a server when executing the parameterized query first time (!).
clear_param_info property. IBProvider clears the list of the parameters descriptions when setting the new text of the query. However, if client sets the descriptions of the parameters firstly, and then the text of query, then information about the parameters will lost and provider inquires descriptions from the server (see auto_param_describe). This leads to the excess call of IB API and the possibility of the incorrect interpretation of the data presented as BYTES/storage-objects. Default value is true.
They can determine the sequence of the setting of the query text and description of the parameters through the special tracing provider version.
The loss of the user setting of the parameters description was observed when working with ADO.NET.
Principle of execution of SP
In the foregoing versions of IBProvider there was added the new property of the initialization of the data source and command std_exec_sp. This property determines how it is necessary to interpret query «exec SP» / «execute SP».
It is necessary to keep in mind that the description of the stored procedures in schema rowset describes SP with OUT-parameters independently from the value of std_exec_sp in the string of the initialization of the source.
Schema Rowset
Insignificant errors in the generation of the data sets are corrected. The possibility of data reading with the use of DBMEMOWNER_PROVIDEROWNED flag is provided, which decreases the traffic of the data movements between the client and provider to the minimum.
Rowset returned by IColumnsRowset
Added the support of DBMEMOWNER_PROVIDEROWNED.
Summary
On this the basic work on errors can be considered final. Nevertheless, if exploitation will reveal serious deficiencies, then before version 1.8 intermediate build will be released.