----------------------------------------------------------------------

ELOQUENCE B.07.00 - patch 0311181

----------------------------------------------------------------------

This patch fixes a defect of the image3k TurboIMAGE compatibility
extension as released with Eloquence B.07.00. This patch will be
integrated in the Eloquence B.07.00 release.

Eloquence B.07.00 must be installed before applying this patch.

This patch replaces patch PE70-0304300 (beta), PE70-0304090,
PE70-0305260, PE70-0307060, PE70-0307100 (beta), PE70-0308010
and PE70-0311060.

Severity:
 PE70-0311181: ENHANCEMENT
 PE70-0311060: BUG FIX
 PE70-0308010: BUG FIX
 PE70-0307100: ENHANCEMENT
 PE70-0307060: BUG FIX
 PE70-0305260: BUG FIX
 PE70-0304300: ENHANCEMENT
 PE70-0304090: BUG FIX


Patch PE70-0311181
------------------

Platforms: All

* This patch enables the use of the TurboIMAGE TPI and btree modes
  with master sets. This requires installation of the eloqdb6 patch 
  PE70-0311180 (or newer).

* The image3k library version has been changed to B.07.00.15


Patch PE70-0311060
------------------

Platforms: All

* A compatibility problem with DBFIND mode 4 and 24 was fixed.
  The DBFIND was errorneously expecting "==" to be passed as 
  byte 1-2 of the structured DBFIND mode 2/24 argument to locate 
  a key with an equal value.
  However the TurboIMAGE documentation specifies "= " to be used. 
  The DBFIND call has been changed accordingly.

* Specifying an invalid argument size to DBFIND mode 4/24 could 
  cause an internal image3k library error:
  assertion failed: used_sz + size <= HP3K_MAX_BUFFER
  DBFIND has been modified to return a status -258 (invalid argument)
  in this case.

* A compatibility problem with TPI DBFIND mode 1 and 21 was 
  fixed when a trailing space was used before the @ wildcard 
  character. DBFIND errorneously handled this as a special case.
  It filled the remaining key with spaces and did not perform
  a wildcard search. DBFIND has been changed to no longer
  consider this a special case.

* A compatibility problem with TPI DBFIND mode 1 and 21 with 
  numeric values has been fixed. DBFIND mode 1/21 was handling 
  numeric arguments on an index incorrectly. 

  DBFIND was expecting that numeric values are passed as text and 
  converted it to the binary representation. However the TPI
  documentation defines that numeric values should be passed as
  a binary value.
  DBFIND mode 1/21 on indexes has been changed to follow the TPI 
  documentation.
  
  The HP3K_TPI_COMPAT property may be used to enable the previous 
  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 (==, <=, >=), a positive 
  or the 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.

  Setting this property can be done with the dbutil utility either 
  interactively or using the following script:
  --- snip ---
  database "<database_name>";
  create property "HP3K_TPI_COMPAT"
   value "2";
  --- snip ---
  
* The image3k library version has been changed to B.07.00.14


Patch PE70-0308010
------------------

Platforms: All

* The DBEXPLAIN and DBERROR calls did not return a message for
  status codes 10 and 14 (#2088)

* A problem with DBERROR and DBEXPLAIN was fixed. In case an
  Eloquence call failed in some cases the message did not 
  properly reflect the IMAGE intrinsic call.

* The encoding of the status array has been modified in case an
  Eloquence call fails. In case a nonzero status is returned the
  status array is used as below:

  Element Description
  ------- ------------------------------------
   1      IMAGE status code
   2 - 4  unchanged
   5      zero
   6      IMAGE intrinsic ID
   7      Eloquence status code
   8      Eloquence extended status code
   9      IMAGE mode
   10     Encoded Eloquence call ID and mode
          (Format: 6 bit id, 10 bit mode)

* DBLOCK could return wrong status codes. A wrong status code was 
  returned instead of status -128 and -126.

* The IMAGE3K library has been modified to consistently return 
  status -105 in case a memory allocation failed.

* The image3k library version has been changed to B.07.00.13


Patch PE70-0307100
------------------

Platforms: All

* The Eloquence DBFIND mode 1/21 index handling has been enhanced 
  with the option to handle TPI and TurboIMAGE btree search arguments 
  more similar (#2032).

  TurboIMAGE btree indexes and TPI indexes use slightly different
  conventions in the DBFIND mode 1/21 search argument. 
  With TurboIMAGE btree indexes the wildcard character can be 
  configured through DBCONTROL or dbutil. For TPI indexes a "@" 
  character is used. TPI also considers a space character before 
  the "@" wildcard to be special.
  
  The IMAGE btree functions are currently not enabled in Eloquence
  and Eloquence indexes are used used as a replacement. However 
  Eloquence indexes follow the TPI conventions which could cause 
  problems with applications relying on the IMAGE btree behavior. 
  As Eloquence allows to use all TurboIMAGE DBFIND modes, 
  independendly of the index type, this option allows DBFIND mode
  1/21 calls to work more closely.

  The HP3K_TPI_COMPAT database property can be used to cause
  Eloquence indexes to follow the TurboIMAGE btree behavior
  more closely. If HP3K_TPI_COMPAT is set to nonzero it causes 
  TPI indexes to use the current IMAGE btree wildcard character 
  and not handle trailing spaces as a special case. The default
  value is zero which implements the previous behavior.
  Setting this property can be done with the dbutil utility either 
  interactively or using the following script:
  --- snip ---
  database "<database_name>";
  create property "HP3K_TPI_COMPAT"
   value "1";
  --- snip ---
  This property is currently not available in the dbutil TurboIMAGE 
  property dialog.

* DBCONTROL mode 5 and 6 return status -82 is CIUPDATE is DISALLOWED.

* Fixed NULL pointer access with DBINFO mode 814. This could cause 
  a crash on platforms other than HP-UX.

* DBXBEGIN, DBXEND and DBXUNDO could cause an internal failure when 
  called before any database was opened. Status -11 is now returned
  instead of aborting the application.

* Implemented the undocumented DBVERSION intrinsic. The DBVERSION
  intrinsic result follows the MPE format and returns the following 
  NUL terminated string:
   MPE/iX:     "HP30391 C.1005"
   Eloquence : "IMAGE3K B.0700.12"

* The DBOPEN call returns 1 in the status element 4. With TurboIMAGE
  this is the size of the DBU area in half words. This has no meaning
  with Eloquence but a nonzero value is used by some applications to 
  distinguish between HP IMAGE and TurboIMAGE.

* Mode 0 has been added to all database calls. On MPE this may used to
  obtain version information about a TurboIMAGE intrinsic call (eg.
  QUERY/3000 version command). Eloquence returns status -31 (invalid
  mode) but status elements 2 to 4 return the Eloquence image3k 
  library version (w/o the patch level, for example B.07.00).
  It is recommended to use DBINFO mode 801 (or DBVERSION) to obtain
  the TurboIMAGE version.

* The image3k library version has been changed to B.07.00.12


Patch PE70-0307060
------------------

Platforms: All

* DBUPDATE returned status -82 instead of status 41 in case 
  a critical item was changed but critical item update was 
  not enabled (#2010)
  While status -82 is specified in the TurboIMAGE documentation
  for DBUPDFATE it is not used with DBUPDATE.

* The image3k library version has been changed to B.07.00.11


Patch PE70-0305260
------------------

Platforms: All

* DBINFO mode 833 returned information indicating that Eloquence 
  indexes are case sensitive. (#1977)
  Case sensitive indexes are currently not supported with Eloquence. 
  The information has been corrected.

* DBFIND mode 11/22 terminated with an internal error (#1978)

    assertion failed: arg_sz >= 0
    file hp3k_tpi.c, line 112

  This problem was caused by a wrong consistency check.

* The image3k library version has been changed to B.07.00.10


Patch PE70-0304090
------------------

Platforms: All

* DBFIND should set status elements 2-4 to zero if the call 
  returns a status code (#1935).

  Eloquence only set the status elements 2-4 to zero when the
  call succeeded. This behavior is slightly different from
  TurboIMAGE which sets the status elements 2-4 to zero even
  if the call returns with a nonzero status. This difference 
  might cause problems for applications which rely on the 
  TurboIMAGE behavior.

* A corresponsing change was made to the DBDELETE call to set
  status element 2 to zero even if the call returns with a 
  nonzero status code.

* The image3k library version has been changed to B.07.00.09


Patch PE70-0304090
------------------

Platforms: All

* DBFIND modes 1/21 could fail with database status -21 when a
  wildcard character is present (and the btreemode1 flag is
  enabled).

  This problem was caused by a wrong mapping of the data set flags
  uploaded by the database server when opening the database (#1901).
  It was only uncovered by a fix to DBFIND related to btreemode1
  before the B.07.00 release, so it was not exposed in the B.07.00 
  pre-releases.

  The Eloquence image3k library makes use of these dataset flags 
  to determine if the /indexed flag is set for a data set.
  Currently the server process does not enable the /indexed flag
  but the image3k library assumed it was available. As a consequense
  the server process causes the DBFIND to fail with status -21.

* The image3k library version has been changed to B.07.00.08

** REVISION 02 **

* A bug was fixed in an internal function that is commonly used
  to check call argument alignment. This has resulted in wrong
  behavior in some IMAGE calls (eg. DBGET with saved item lists).
  This is defect was corrected in the original patch but not 
  documented.


Installation:
-------------

UNIX:

In order to install this patch, you need to unpack it with gzip.
Gzip is included with HP-UX and Linux.
Installation requires root privileges.

cd /opt/eloquence6
gzip -dc /path/to/PE70-0311181-hpux.tar.gz | tar xf -

Files:

  Linux:
   lib/libimage3k.so
   lib/libimage3k.a
   include/image3k.h
   share/doc/PE70-0311181-README

  HP-UX:
   lib/pa11_32/libimage3k.sl (HP-UX PA-RISC 1.1 32bit)
   lib/pa11_32/libimage3k.a
   lib/pa20_32/libimage3k.sl (HP-UX PA-RISC 2.0 32bit)
   lib/pa20_32/libimage3k.a
   lib/pa20_64/libimage3k.sl (HP-UX PA-RISC 2.0 64bit)
   lib/pa20_64/libimage3k.a
   lib/hpux32/libimage3k.sl  (HP-UX Itanium 32bit)
   lib/hpux32/libimage3k.a
   lib/hpux64/libimage3k.sl  (HP-UX Itanium 64bit)
   lib/hpux64/libimage3k.a
   include/image3k.h
   share/doc/PE70-0311181-README


Windows:

Download the PE70-0311181-win32.zip file and unpack its contents
with WinZip or PKUNZIP.
Installation requires administrative capabilities.

Please copy the .dll files into the WINDOWS SYSTEM DIRECTORY
(for example C:\Windows\System32).

Please copy the .lib and .def files into the lib subdirectory of
your Eloquence installation (for example C:\Programs\Eloquence\lib).

Please copy the image3k.h file into the include subdirectory of your
Eloquence installation (for example C:\Programs\Eloquence\include).

Please copy the PE70-0311181-README.txt file into the share\doc
subdirectory of your Eloquence installation (for example
C:\Programs\Eloquence\share\doc).

Files:

   image3k.dll
   image3kC.dll
   image3k.lib
   image3kC.lib
   libimage3k.lib
   image3k.def
   image3kC.def
   image3k.h
   PE70-0311181-README.txt