.
contact contact

B.08.00 / Release Notes / Changes / Database Client Libraries

Database Client Libraries

 
.
  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.


 
 
.
 
 
  Privacy | Webmaster | Terms of use | Impressum Revision:  2008-11-29  
  Copyright © 2008 Marxmeier Software AG