Compound indexes such as CDX ( CDXDBE or ADSDBE ) have the
ability to store multiple orders. The index file storing those
orders is called the bag, while each order is called tag.
Both DatabaseEngines CDXDBE and ADSDBE need to verify if a tag
is already open, they do that by checking the bag-name/tag-name
combination. However bag-names (the cdx file name) can be different
while pointing to the same file. A sample for that scenario is
the usage of a driver-letter and path versus a full qualified
UNC path both pointing to the same remote file.
The Xbase++ runtime assists storage engines to avoid ambigious
bag-names by performing a normalization of the filename using
a Windows API. This way the former drive-letter is normalized to
a full qualified unc path name.
Unfortunately Windows API's performance depends on various
factors such as connected remote drives, mapped driver, broken
network drives and so on. Because of that OrdListAdd() may need
10 milliseconds or more to open a single tag - leading to the
situation that opening 100 tags can easily consume seconds.
This behaviour is considered inacceptable. Customers with an urgend
need shall get in contact with technical support and request an Hotfix
for that issue.
|