|
This document provides a list of enhancements and user visible changes
in Eloquence B.08.00, relative to the original B.07.10 release.
Contents:
Database client library
-
The client side caching functionality implemented in the database client
library was enhanced to and uses an improved algorithm to determine if
previously cached results need to be invalidated.
This may significantly improve throughput on high-latency connections
(eg. WAN connections).
-
Introduced the EQ_DBENABLEIPC environment variable to specify whether or
not IPC communication may be used on a local connection.
By default, the client library and the database server determine whether
a connection is local, so that the more efficient IPC communication method
is used. This is usually the desired behavior.
However, when using a tunneled network connection to a remote server,
for example with SSH forwarding, the connection may appear to be
local to both the client library and the database server, although
it is remote. This would cause the connection to fail because the IPC
communication method cannot be established on a remote connection.
To work around this, the EQ_DBENABLEIPC environment variable may be
set to zero for the connecting program, for example:
export EQ_DBENABLEIPC=0
... start the program using a tunneled connection ...
The database client evaluates the EQ_DBENABLEIPC variable. If it is
set to zero, the IPC communication method is not used.
-
The client library was enhanced to make use of an HP-UX option
to obtain up to 500 characters from the command line for audit
use. Previously, on HP-UX only up to 64 characters of the
command line were available.
-
The client library was changed to enable using the the EQ_DBCACHE
environment variable to specifiy the max. the number of cached
records requested from the server.
The following values are recognized for the EQ_DBCACHE
environment variable:
Value Effect
---------- -----------------
undefined - enable caching
0 - disable caching
1 - enable caching
>= 2 - enable caching and specify a max. number of
cached records from the server process.
It is not recommended to use EQ_DBCACHE values other than 0 and 1
unless instructed by support.
-
The client library was modified to solve a compatibility issue with
TurboIMAGE applications.
TurboIMAGE documents that a DBFIND resets the current record number
for a data set. The Eloquence DBFIND call previously did not affect
the current record number.
When using the Eloquence programming language (eloqcore), this functionality
is disabled. It is, however, enabled by default for other applications
using the Eloquence database client library.
TurboIMAGE compatibility (image3k)
-
The DBEXPLAIN call was enhanced to flush stdout before writing to
stderr. This should improve cases where DBEXPLAIN output
is not in sync with application output to stdout.
-
Fixed a potential TurboIMAGE compatibility problem.
A TurboIMAGE DBGET call that fails with a status code may return
the current record number in the status array.
The image3k library was modified to return the current record number
when a status code between 10 and 18 is returned by a DBGET call.
-
Added support to DBINFO mode 833 to indicate an index is case
insensitive. Previous versions of DBINFO 833 always returned an index
to be case sensitive.
-
Added an option to enhance support for the DBBEGIN/DBEND/DBMEMO
calls. By default, these calls have no function in the image3k
library. In rare cases, however, applications may require these
calls for auditing purposes.
By default the DBBEGIN/DBEND/DBMEMO calls have no effect. When
enabled, they submit the passed text to the server for including
it in the forward log file. These calls are currently not database
specific; when any opened database has the DBBEGIN/DBEND/DBMEMO
functionality enabled, the passed information is sent to the server.
For DBBEGIN/DBEND calls different mode values are currently
ignored.
The passed information is considered text, passing binary values
is not supported.
To enable this functionality, the HP3K_API_COMPAT database property
must be set as below:
+1 - enable DBMEMO
+2 - enable DBBEGIN/DBEND
If the bit 0 in the HP3K_API_COMPAT property value is set (+1)
then DBMEMO will call the server process to record the passed
text argument in the forward log. By default this option is
disabled.
If the bit 1 in the HP3K_API_COMPAT property value is set (+2)
then DBBEGIN/DBEND will call the server process to record the
passed text argument in the forward log. By default this option
is disabled.
Setting this property can be done with the dbutil utility either
interactively or using the following script:
database "database_name";
create property "HP3K_API_COMPAT" value "3";
The image3k API compatibility flags may also be changed dynamically
for a database (while the database is opened) using the Eloquence
image3k specific DBCONTROL mode 1016.
mode = 1016;
DBCONTROL(base, "3", &mode, status);
where the qualifier argument passes the desired HP3K_API_COMPAT option value
as a string, terminated by a NUL or space character.
The Eloquence image3k DBINFO mode 503 may be used to return the current
HP3K_API_COMPAT option value. It is substantially similar to DBINFO mode 502.
Mode 503 checks the HP3K_API_COMPAT option settings for the database
and the current DBOPEN. The HP3K_API_COMPAT option is set for the
database with the DBUTIL utility or with DBCONTROL for the
current DBOPEN.
The Qualifier argument is ignored. The DBINFO mode 503 call returns the
following information in the Buffer argument (note that each element is
a halfword or two bytes):
-----------------------------------------------------
| Element | Contents |
-----------------------------------------------------
| 1 | HP3K_API_COMPAT option |
-----------------------------------------------------
| 2 | Current setting for accessor |
-----------------------------------------------------
-
Added an option to recognize ">" and "<" as relational operators
in DBFIND mode 1 and 21 on an index (#3397). Previous versions
only recognized ==, >= and <= as relational operators. As this
may cause ambiguities, this option is disabled by default.
To enable this function, the HP3K_TPI_COMPAT database property
must be set to a value that has the bit 2 set (+4).
The following values are currently recognized for the
HP3K_TPI_COMPAT database property:
-
+1 - use IMAGE wildcards for TPI access
-
+2 - support numeric values passed as text
-
+4 - enable the < and > relational operators
If the bit 0 in the HP3K_TPI_COMPAT property value is set (+1)
then searching TPI indexes uses the current IMAGE btree
wildcard character (as defined for the database or through a
DBCONTROL mode 15 call) and do not consider trailing spaces as
a special case. By default this option is disabled which
implements documented TPI behavior.
If the bit 1 in the HP3K_TPI_COMPAT property value is set (+2)
then a numeric argument may be passed as text if the argument
either starts with an operator (==, <=, >= and < or > if bit 2
is set as well), a positive or negative sign. Otherwise a
binary value is assumed. As this may cause ambiguities, the
default is that numeric values must be passed as a binary value.
If the bit 2 in the HP3K_TPI_COMPAT property value is set (+4)
then the < and > characters are recognized as operators. As this
may cause ambiguities, it is disabled by default.
Setting this property can be done with the dbutil utility either
interactively or using the following script:
database "database_name";
create property "HP3K_TPI_COMPAT" value "6";
The image3k TPI compatibility flags may also be changed dynamically
(for the session) using DBCONTROL mode 1015.
-
Fixed a compatibility problem with DBFIND mode 1 or 21 on an
index. An additional wildcard character (after all
characters for the index value were specified) resulted in
subsequent search conditions not recognized.
The following example uses query3k to demonstrate the problem.
> fo indexes
IMATCHCODE, G10 CUSTOMERS
MATCHCODE, X10
Previous behavior:
>f imatchcode=">=KEL @<=KEM @"
683 ENTRIES QUALIFIED
Expected results:
>f imatchcode=">=KEL @<=KEM @"
3 ENTRIES QUALIFIED
-
The username and password arguments were extended to 255 characters
The following image3k problems were fixed in the database server:
-
A TurboIMAGE/SuperDex compatibility problem was solved.
If the wildcard tokens (?, #, @) were used within a DBFIND search
argument, using the "greater than (or equal)" or "less than (or
equal)" conditions caused the server to return a status 53 (bad
argument). A wildcard search argument could not be used to
evaluate a greater/less comparison.
The implementation was modified to support "greater/less than
(or equal)" conditions on search arguments if leading literal
characters are present in the search argument. In this case,
the leading literal part is used to evaluate a greater/less
comparison.
-
A TurboIMAGE/SuperDex compatibility problem was solved.
After a DBFIND on an index using a "greater than" or "less than"
condition, the DBGET modes 15 or 16 behaved as "greater than or
equal" or "less than or equal", respectively.
-
DBGET mode 4 does not update index position.
After a DBFIND on an index, a DBGET mode 4 could not be used
to position the current record inside the result.
The index position was not updated by a dbget mode 4.
This was inconsistent with the behavior of image paths and
not compatible with TurboIMAGE/SuperDex behavior.
-
The server was modified to solve a compatibility issue with
TurboIMAGE applications.
TurboIMAGE documents that a DBFIND resets the current record
number for a data set. The Eloquence DBFIND call previously did
not affect the current record number.
|
|