T I T A N D A T A B A S E I N T E R F A C E(TM) TO BTRIEVE(R) AND PERVASIVE.SQL(R) DATABASES Version 1.0 INTRODUCTION: Titan is a high performance database interface interface for Borland's Delphi and C++ Builder development tools. This release provides support for Btrieve and Pervasive.SQL. This file provides late-breaking news and information on Titan that could not be included in the manual. TABLE OF CONTENTS: This document includes the following: * What's New * Pricing & Upgrades * Requirements * Installation Notes * Notes and Known Problems * Maintenance * Feedback * Final Comments WHAT'S NEW: 07/05/99 G FINAL RELEASE * This version fixes 'Record not found' error messages when using FindKey and FindNearest. (Ref #176) * This version fixes SSQL bookmarks and Grid multi-selects. This fix should also fix unreliable scrolling of SQL result sets. * This version should better handle ranges and master/detail relationships. 06/10/99 G PRE-RELEASE * This version fixes an error where the message DBIERR_NOTABLOB appeared if the same file was opened twice. * This version fixes a crash when using Pervasive.SQL 7.0 with Service Pack #4. Titan was not issuing a XQLStop command, which did not cause problems prior to P.SQL Service Pack #4. * Previous versions of the on-line manual had some paragraphs missing due to conversion into Adobe Acrobat PDF format. This has been fixed. The on-line manual (MANUAL.PDF) requires the Adobe Acrobat 4.0 reader. You can download this version from Adobe at www.adobe.com for free. * This version pads string fields with spaces when inserting records if StringPaddedSpaces is active. Previous Titan versions were only padding fields that had been changed before the insert operation. 05/16/99 * This is the official 'F' release for Titan Btrieve. Any new fixes or changes will come in a 'G' release, or in an upgrade. * This release fixes several problems related to memo fields. * This release is now in compliance with the Pervasive Btrieve API calls in regards to the size of the data buffer parameter. Titan now uses a LongInt instead of a word, and all low-level functions which used words, now use LongInts. Any programs you have written which use the Titan TWinBtr class may have to be updated. 04/21/99 * Added a boolean constant to the BTRCONV unit called 'CLONETABLEEMPTY' which can be used control how Titan empties tables. The default, FALSE, causes Titan to empty a table by simply deleting every record. This maintains referential integrity which may have been established with SSQL. If set to TRUE, then Titan clones the table, which results in a much faster empty operation, but breaks referential integrity if it exists. If you are not using referential integrity, then you may want to set the flag to TRUE for better performance. This was reported as bug #84. * Fixed field overwrite when updating records using queries. This was reported as bugs #77 and #87. 04/10/99 * Fixed 'Invalid Pointer Operation' problem caused by Btrieve API overwriting Titan data. * Fixed compiled DDF resource creation when using Delphi 1.0. (Bug #23) * Memo fields are now compatible between tbTables and tbQuery's. See Bug #39 for details. We also fixed a potential memory overwrite reported as Bug #54. * The tbHexDump component has been fixed as reported in Bug #56. 04/01/99 * Added variable 'ConcurrentTransactWaitBias' to BTRWOBJ to prevent Btrieve from waiting for insert/update/delete operations during a transaction. See the 'Begin Transaction' chapter in your Btrieve manual for more information on the options you can use for this value. 03/28/99 * Fixed Titan to allow key lengths greater than 127 characters. * TransactionsConcurrent now defaults to TRUE. See the manual for more details on this setting. 03/26/99 * Fixed a bug with owner names when opening and closing tables. * Added a boolean constant to BTRCONV called 'PSQLBITFIELDMODE' which defaults to TRUE. If TRUE, the Bit Fields are treated as Pervasive.SQL handles them, if FALSE, then the field is treated like DDF Builder treats them. DDF Builder allows individual bits to be set using 1,2,3,4, etc., where the P.SQL mode uses powers of 2, like 2, 4, 8, 16, 32, etc. to set the bits. 03/22/1999 * Fixed problem with locating first record. 03/16/99 * Fixed an obscure bug related to using the TtbTable.Locate method when using a Owner name and/or compiled DDF's. 03/13/99 * This version includes fixes to Blob handling. 02/15/99 * A bug was fixed in the TWinBtr class related to number of indexes. Anyone using the low-level TWinBtr class to access the Btrieve engine directly should be sure to use the field 'NumIndexes' rather than the old 'Num_of_indexes'. The reason for this change is that Titan now can query the table to get it's version number, which is useful to determine if Chunk operations can be used. Chunk operations can only be used on file formats of 6.0 or greater. 01/31/99 * The Table and Query RecordCount functions now return a count which is accurate based on current ranges and filters. This is accomplished by Titan simply spinning through the dataset from start to finish and counting the records. This can be slow on a large dataset using filters. * Btrieve Timestamps now work with an empty value. * The manual is now in a better format for printing. * The Magic_0001 Date type now works correctly. 01/08/99 * This release fixes a problem using Queries with QuickReports. * This release fixes an erroneous Btrieve Status 4 error. (That's what I get for optimizing) * This release fixes several small problems related to data conversions. * This release fixes Stored Procedures for Pervasive.SQL 7.0 * This release passes SQL Date parameters to Pervasive.SQL in the format yyyy-mm-dd regardless of locale settings. * This release passes SQL Time parameters to Pervasive.SQL in the format hh:mm:ss:uu regardless of locale settings. * This release passes SQL TimeStamp parameters to Pervasive.SQL in the format yyyy-mm-dd hh:mm:ss regardless of locale settings. * This release better handles mixing transaction calls when using tables and queries from the same database. Please note that Pervasive.SQL still has not resolved this issue at the database level yet. * This release fixed a problem with the AddIndex procedure. * Fixed code where ':' characters embedded in literal strings were being converted into '@' signs. * Fixed a bug in the base classes where changing a Database AliasName property was not referencing the new database. * Changed Titan so that it uses the Key type derived from the index structure, rather than FIELD.DDF when linking Master/Detail relationships. This was an obscure bug which only affected a few people. - End of 'F' release updates * This release fixes a bug related to Master/Detail linking not working in cases where the data type used in the index is not the same as the data type defined for the field in FIELD.DDF. * This release treats Btrieve LVar data types as bytes. Previous Titan versions treated LVar's as memo fields, and this caused problems. See the Pervasive.SQL documentation for more information on LVar data types. * This release fixes a bug related to session management with Pervasive.SQL. * This release includes all InfoPower files that were left out of the last build. * This release fixes a bug with the TTable Locate function when searching for partial keys. For example, prior to this release, locating a record with a partial key of 'XX' could return a record with the value 'YY'. Titan now will return a DBIERR_RECNOTFOUND error when the partial key specified does appear in the record Btrieve returns. * This release now supports the Pervasive.SQL TIMESTAMP data type. * This release correctly handles boolean types when comparing Delphi/CBuilder boolean values with those stored by Pervasive.SQL. PRICING & UPGRADES: If you are currently licensed for the last Titan 'E' or 'F' releases, then this is a free maintenance upgrade, otherwise you'll need to upgrade. If you need to upgrade, please read the following information. This product is priced like all other Titan engines and is $395 for the run-time version, and $595 for the source code version. If you are a current Titan Btrieve List Server subscriber, this upgrade is free, and you will be notified via the list for upgrade details. With this new release, all developers will be given access to the list server for free. You may still purchase the $200 support plan, which will provide free upgrades for one year. All other Titan Btrieve developers can upgrade for $129.00. This upgrade includes free access to the Titan Btrieve list server, which formally cost $200. REQUIREMENTS: To use this product you MUST have: * C++ Builder 1.0 * Btrieve 6.x or greater -or- * Pervasive.SQL Please note that Titan does NOT ship with the Btrieve engine, Scalable SQL, or Pervasive.SQL. These products can be obtained from Pervasive Software directly. Pervasive can be reached through their web site at 'www.pervasive.com'. They do have a free trial version available at the time this was written. 32-bit development tools require a 32-bit version of Pervasive.SQL, Btrieve, or Scalable SQL. See the Titan manual for information the Titan Thunker which provides a way to use a 16-bit Btrieve engine with a 32-bit development tool in some cases. In order to use Titan's Query component, you'll need either Scalable SQL, or Pervasive.SQL, as these products provide the SQL processing. Titan will work without these products being present, but any attempts to use the Query component will raise an error. * DDF Builder/Maker/etc.: Titan still requires DDF's, even when using the DDF Compiler utility. You may want to have a DDF maintenance utility to update your DDF files. If you are using Pervasive.SQL, it comes with a DDF maintenance utility called DDF Ease. TEST DRIVERS: If this version is a Titan Test Drive version, then the product is fully functional except that your Inprise tool must be running when your compiled applications are run. Please note that it is in violation of the Titan license agreement to use a Test drive version for anything other than product evaluation. INSTALLATION NOTES: No installation notes for this release. NOTES & KNOWN PROBLEMS: * Records added with Cached updates active will not show in a grid, but they will be added to the table if the cached updates are committed. We may add support for the display of inserted records in an update release. Check out the example in CACHEXMP.ZIP for a demonstration of cached updates. * Cached update records are stored in memory, and you will eventually run out of memory if you put too many records in the cache. Each record in memory uses the record size + 260 bytes for a bookmark + a few bytes for a linked list entry. Don't overload a cached table. If you have a large number of records to manipulate, use a transaction instead. MAINTENANCE: Reggatta Systems now provides an annual maintenance program that includes free upgrades for one year at a cost of $200 per year. The Titan Btrieve list server is now free to all REGISTERED users, so get your registration card back to us right away. FEEDBACK & PROBLEM REPORTING: Please feel free to use our new bug tracking system on our web site. Be sure to search the system to see if anyone else has already reported your problem. If not, fill out a report, and we'll work with you to get it resolved. You can also send email to: BtrieveSupport@Reggatta.Com FINAL COMMENTS: The Titan license agreement states that you need one copy of Titan for each developer using the product. If you have multiple developers sharing one version of Titan, you should contact Reggatta Systems to obtain the correct number of licenses. We don't want to have to impose some sort of copy protection, and we want to continue to provide you with a quality product. *** END OF TITAN READ ME ***