📄 changes2.txt
字号:
you would need to use %QUERY_AND whereas now you simply use a ZERO.
- Aggregate query functions (%MINIMUM, %MAXIMUM, %SUM, %AVERAGE) must now follow after any regular type of
query condition. That is, when feeding xdbQueryConditions to Cheetah make sure that the last ones you
specify are the aggregate functions. This enables Cheetah to greatly optimize queries that contain aggregate
functions. In some cases you can realize speed gains of 50% or more.
- Implemented new reindexing routine. Reindexing should now be up to 400% faster than before and can handle
gigabyte sized databases with no problems.
- The xdbGetRecord function can now use Query handles. You cannow retrieve the "i-th" record from a query
result. Previously, you could only iterate through the query result. Now you can position the record buffer
to any record in the query result. The following shows how to iterate the query results using the ordinal
record numbers of the query result.
For x& = 1 To xdbRecordCount(Query1&)
Call xdbGetRecord(Query1&, x&)
Print #f&, "Rec#:" & Str$(xdbRecordNumber&(Query1&)) & " " & xdbFieldValue$(Query1&, "MANUF", 0)
Next
- Corrected GPF that would occur if query executed with a condition based on a memo field (Type M or Z).
- Improved internal code related to multi-user use.
- Documentation changed for xdbReindex and xdbReindexAll. Optional parameter 'UniqueContinueOrError'. This
parameter allows indexes created to only allow unique keys to either 'Continue' or generate an 'Error'
when a duplicate key is encountered during reindexing. Two new equates have been added to accommodate this
new functionality: XDBUNIQUE_CONTINUE = 0, XDBUNIQUE_ERROR = 1.
- When opening a database you must now specify the encryption key used to create it. To facilitate this the
xdbOpen and xdbOpenEX functions have an additional optional parameter call 'EncryptionKey'. An additional
errorcode now exists called %INVALID_ENCRYPTIONKEY that will be reported if an incorrect encryption key
is used.
- Fixed bug in xdbAddDate that disabled that function from working.
- Fields of Type "L" (Logical) now behave a little differently. The value "T" is stored in the field when
it is assigned any of the following: "t", "T", "y", "Y". A value of "F" is stored for any other value
including blank fields. Likewise, when using xdbFieldValue to retrieve the logical field value, only "T" or
"F" will be returned. You may need to adjust existing source code to accommodate this change.
- Corrected bug that would only delete a key from the last index associated with an open database. That is,
if a database had two open indexes then only the second index would update if a record in the database
was deleted.
2.1.1 April 8, 2002
- Corrected bug whereby some indexes of multiple indexes on a database could possibly not be updated if
the key field changed did not result in all indexes having to be updated.
2.1.0 April 7, 2002
- Added xdbCallBack capabilities to the xdbPack routine.
- Corrected error in documentation regarding the DTOS function. It was entered in the Help file as DTOC.
- Added logic to limit record sizes to 4000 bytes. This is consistent with the xbase specification for
dBase III and IV. It was found that record sizes greater than 4K would cause the query processor to lock
up. Added error code 5014 (RECORDSIZE_EXCEEDED). This error will be reported if attempting to create or
open a database with a record size greater than 4000 bytes.
-Changed how Cheetah handles memo fields. Memo fields are now buffered during xdbAssignField and not
written to disk until xdbPutRecord, xdbAddRecord or xdbAppendRecord. Previously, memo fields were written
to the memo file when xdbAssignField was called.
-In multi-user mode, the memo file's header was not being consistently refreshed during a record update.
This is now fixed and will be refreshed in the same fashion as the database and index files.
2.0.9 February 16, 2002
- New feature: Cheetah file sizes can exceed the 2 gigabyte barrier! The number of records in a database
however is still limited to LONG values.
- New functions: Search for partial key matches using xdbSeekPartial and xdbSeekPartialNext (refer to Help
file for more information).
- Fixed xdbZap not zapping associated memo files.
- Fixed problem when looping through a database using an index (i.e. xdbMoveNext) and deleting records
as you go. Because index keys are now physically removed from the index, the xdbMoveNext was not able
to correctly find the most previously used key.
- Fixed the xdbJulianToDate$ function. The internal use of the FORMAT function was not returning the proper
formatted string.
2.0.8 February 3, 2002
- Fixed bug. If user did not use xdbClearBuffer prior to adding a new record then it was possible for
records not to be successfully added. For example, if record was added, then another deleted, then the
record buffer would contain the deleted flag. Also, if the previous record had a memo field, then the
new record would use that memo field number instead of a new one. Therefore, it is now imperative that
you use xdbClearBuffer prior to adding new records. The help has been updated to reflect this.
- Fixed bug. If the index key being deleted was the first key in the root node of the index then incorrect
information would be written to the index header record. This would cause subsequent index key additions
to be unreliable.
2.0.7 January 30, 2002
- Fixed bug in the file flush routine for the header record to the memo file. Incorrect memo field
sizes could be returned causing the memo file to become corrupt.
- xdbClearBuffer is now automatically called after a database record add or append. Programmers should
be aware that they can no longer perform xBase type "CARRY ON" functionality because the record buffer
is now completely cleared after each record add. There was no way around this so you may have to adjust
some code if you were not filling each field in the record explicitly. Not clearing the record buffer
would affect the adding of subsequent memo fields.
- Changed logic for deleting records that have keys associated with them in an index. Previously,
deleted records would leave the associated keys in the indexes - now the keys are deleted. This makes
adding new records easier because there will be not potential for adding a duplicate key (the original
key would have been deleted).
- Certain queries would fail to return the correct results. This would occur if the query was based
on binary fields from the database. If values greater than 9999 were used to query on then the query
would fail.
- Cleaned up code related to using an %EQUAL_TO query using binary fields. Cheetah will normally
optimize a query to use an index if it can. If the index used was created using binary values, Cheetah
will properly handle it.
2.0.6 January 7, 2002
- xdbSeekNext would always return a value of zero, therefore requiring the programmer to manually
test that the next returned record matched. This has been fixed.
- xdbClose now checks for invalid file handles. This will prevent GPF's if you attempt to close a database
that was not opened.
- The equate %MAX_INDEXES in the include files for PowerBasic and Visual Basic was still showing the value
of 16 even though the value had been increased to 100 internally to Cheetah. This equate represents the
maximum number of open indexes *per* database.
- Binary indexes could be created but using MKL$ or MKI% to perform SEEK on the index would fail. Two
new functions have been added, xdbMKL$ and xdbMKI$, to allow the user to create the correct strings for
seeking with.
2.0.5 December 16, 2001
- Error in 2.0.4. Code to flush database header on close was accidently commented out. Therefore, the
database header was not being updated causing incorrect number of records to be reported on open.
2.0.4 December 13, 2001
- Error in the index expression evaluator if more than one embedded function used. For example, the index
expression UPPER(FNAME)+UPPER(LNAME) would return an error. This is now corrected.
- Corrected issue whereby internal records that handle database and index state information were not
being totally cleared when a database and/or index was closed.
2.0.3 November 22, 2001
- Previous header files failed to include the function declaration for xdbCloseAllIndexes. This function
is now included.
- Error was being returned for databases with the same name but in different directories during xdbOpen. This
was due to the xdbAlias function returning the same alias.
- New Error 7007 'INDEX_NOT_FOUND' now returned if attempting to open a non-existent index file.
- More error checks added to test for violating the share and access modes when reading or writing to
a database. See new error codes 4002 and 4003.
- New help file (Cheetah.chm) now replaces the PDF documentation. The PDF documentation can still be found
on the web site. The Cheetah.chm is also on the web site.
- The function xdbDebugMode is now semi-operational. Most functions will report a messagebox with error
code and description if xdbDebugMode is set to true. The remaining functions (mostly index and query) will
be completed soon. This is a very handy function to use while building your application.
2.0.2 October 15, 2001
- Fixed error whereby encrypted records were not being properly decrypted (typo error caused invalid
database handles to be passed to the decryption routine).
- Fixed xdbQuerySort when used with extended binary type fields.
- Fixed error with xdbQueryDistinct when the distinct field was not already specified in the list
of conditions.
- Fixed declaration error for the xdbTodaysDate function in the PowerBasic and Visual Basic include files.
- Added CTOD and DTOC date conversion routines which mirror common xbase type functions.
- Added %INCOMPATIBLE_MEMO_FIELDS error code when databases are created that use both a Type "M" and
a Type "Z" memo field.
- Modified the xdbQuerySort routine to include an additional parameter to specify the sort direction. Also
included are two new constants %SORT_ASCEND and %SORT_DESCEND.
- Increased the number of open indexes per database from 16 to 100.
- Fixed problem with xdbHtmlStripTag incorrectly resizing the test string.
- Aggregate query conditions would fail if they were the only conditions specified. This is now fixed.
2.0.1 September 26, 2001
- Added the xdbEncryptionMethod function.
- Added logic to date routines to check for proper length of incoming date parameters. (ie. 8 characters)
- Fixed problem with query processor where the field specified in the xdbQueryDistinct function was being
overriden by the field in the last query condition.
- Fixed problem with xdbQuerySort not properly sorting binary fields (i.e. integer, single, double, etc.)
- Began adding xdbDebug support to many Cheetah functions. This allows a MessageBox to pop up when a Cheetah
error occurs. This functionality can be toggled on and off.
- Added xdbHtmlStripTag function which strips out HTML tags from fields specified in a query prior to the
field being evaluated.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -