---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch bundle B040618 ---------------------------------------------------------------------- The following patches are included in patch bundle B040618 (as applicable for the specific OS / architecture): PE70-0305090 - startup/shutdown script PE70-0305092 - dbfsck utility PE70-0305120 - QUERY PE70-0305230 - eloqdb library PE70-0310080 - eloqcore PE70-0310081 - dbutil utility PE70-0312100 - image3k library PE70-0312150 - terminal adaption (terminfo) PE70-0401160 - eloqdb6 server PE70-0401161 - dblogreset utility PE70-0401162 - dbrecover utility The individual patch descriptions follow: ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0305090 ---------------------------------------------------------------------- This patch fixes a defect of the Eloquence startup/shutdown function 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. Severity: PE70-0305090: BUG FIX Fixed problems: --------------- Platforms: HP-UX, Linux * The timeout to shut down the server processes was too small (#1949). When the Eloquence server processes are shut down, a TERM signal is sent to the processes. If a server process does not terminate a KILL signal is sent after a timeout period. The timeout to detect that a server process did not terminate was too small and could result in server processes killed unnecessarily. The shutdown function has been modified to wait up to 10 seconds for a server process to terminate. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0305092 ---------------------------------------------------------------------- This patch fixes a defect of the dbfsck utility 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. Severity: PE70-0305092: CRITICAL (database inconsistencies) Fixed problems: --------------- Platforms: All * dbfsck could fail to write back changes to the volume file (#1961). dbfsck saves any changes in a memory cache but might discard the changes before writing them back to disk. Due to this bug, fixes to the record free list in pass1 may not be written back to disk. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0305120 ---------------------------------------------------------------------- This patch fixes a defect of the QUERY utility 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. Severity: PE70-0305120: BUG FIX Fixed problems: --------------- Platforms: All * QUERY could silently fail to remove records from a manual master set (#1917) * QUERY has been modified to support updating search items or sort items. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0305230 ---------------------------------------------------------------------- This patch fixes a defect of the Eloquence database client library 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-0305210 (beta). Severity: PE70-0305230: BUG FIX PE70-0305210: BUG FIX Fixed problems: --------------- Platforms: All * Fixes a regression in idb_logon() * Changed internal library revision to "B.07.00.03" Patch PE70-0305210 ------------------ Platforms: All * The EQ_DBUSER and EQ_DBPASSWORD environment variables did not work as expected with the TurboIMAGE compatibility (#1970). The EQ_DBUSER and EQ_DBPASSWORD environment variables may be used to specify the default user and password to access the database. However they were only considered when the Eloqunce idb_logon() API function was called. With the image3k library the idb_logon() API function is only called when a user and password is specified and consequently the defaults are ignored. The Eloquence database client library has been modified to use the default user and password, independendly if the idb_logon() API function is called. * The idb_logon() function has been modified to recognize empty user and password (zero character string) as no password (#1970). * Eloquence may call malloc to allocate zero bytes (#1918) While this is not a problem it may cause problems with code verification tools, such as Electric Fence. * Changed internal library revision to "B.07.00.02" ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0310080 ---------------------------------------------------------------------- This patch fixes a defect of the eloqcore program 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. Severity: PE70-0310080: BUG FIX PE70-0304040: BUG FIX Fixed problems: --------------- Platforms: All * Possible wrong conversion in QUERY of Zoned or Packed item values from the database (#2130). Unpacking Zoned or Packed items could result in truncated values due to access to an uninitialized variable. This was observed in QUERY that could output truncated values while the database had the correct value. Patch PE70-0304040 ------------------ Platforms: All * QFIND returned unexpected results when using the IN clause and numeric arguments (#1881). * While JDLG was modified to support 10 levels of nested dialog objects eloqcore was still limited to a nesting level of 8 and failed with error 653 (#1556). ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0310081 ---------------------------------------------------------------------- This patch fixes a defect of the dbutil program 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-0304170 and PE70-0307160. Severity: PE70-0310081: BUG FIX PE70-0307160: BUG FIX PE70-0304170: BUG FIX Fixed problems: --------------- Platforms: All * Changing group membership for a database in dbutil script mode could fail (#2129) When modifying database security group membership, the user capabilities were checked rather than the database specific capabilities for the user. The following error could be output: *** Sorry, you are not allowed to perform this task. *** The DBPRIV capability is required to maintain database security. Patch PE70-0307160 ------------------ Platforms: All * When multiple DATABASE statements were used in a single dbutil script, dbutil aborted with an internal error message (#1999) Assertion failed: (sc_db_ctx == -1) * Changing primary path could have no effect (#2015) dbutil may be used to change the primary path. This could have no effect when a detail set had more then two paths. * dbutil could report the wrong error line (#2029) In case a syntax error was detected in a dbutil script, the error line reported by dbutil could be wrong. In some cases the current line number was incremented twice. Patch PE70-0304170 ------------------ Platforms: All * dbutil could abort with a segmentation fault on the REVOKE ALL PRIVILEGES ON ALL FROM ... statement (#1919). The REVOKE ALL PRIVILEGES ON ALL FROM ... statement did not work correctly when used immediately after a DATABASE statement. The REVOKE .. ON statement uses cached database group information which might not been read before execution. This patch makes sure that database group information is present when executing the REVOKE .. ON statement. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0312100 ---------------------------------------------------------------------- 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, PE70-0311060 and PE70-0311181. Severity: PE70-0312100: BUG FIX 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-0312100 ------------------ Platforms: All * DBFIND status return could be inconsistent with the documentation. DBFIND has been modified to return a chain count of 2^32-1 entries in modes 21/24. DBFIND modes 1/4 on master sets now return zero as the forward/previous pointers. DBFIND TPI modes 22 and 1xx to 5xx return 1 as the chain count. * DBFIND TPI modes may also be used to access search items (equivalent to the TurboIMAGE btree modes). * DBFIND mode 4/24 has been modified to return status codes -429, -430, -431, -432 and -446 in case the specified argument was not correct. Previously DBFIND mode 4/24 returned status -258 which is inconsistent with TurboIMAGE. * DBINFO modes 811,812,814,833 could write debug messages to stderr. Some debug code was left active in DBFIND and has been de-activated. * The DBUPDATE mode 1 status array could be inconsistent with TurboIMAGE in case a CIUPDATE operation failed (for example due to a missing chain head). In this case, DBUPDATE returned status code 1xx in the first status element. The TurboIMAGE documentation specifies that in case of a failed CIUPDATE operation additional status information is returned in status element 3. DBUPDATE mode 1 has been modified to return status 41 and return additional information in status element 3. DBUPDATE mode 2 (which is equivalent to DBUPDATE mode 1 with the CIUPDATE flag set) has been changed accordingly. * DBLOCK modes 3/4/13/14 have been modified to support the "@" qualifier to specify an effective database lock. This is supported by TurboIMAGE but was not possible with Eloquence. * DBUNLOCK did not support the extended Eloquence modes to allow selective unlock. DBUNLOCK has been modified to follow the Eloquence documentation. * Fixed a PROBLEM with DBFIND TPI mode 1/21 on an index with compound keys. The argument was not parsed correctly, possibly omitting part of the specified lookup value if more than two segments were present. * The image3k library version has been changed to B.07.00.15 For use of the TurboIMAGE btree modes the eloqdb6 patch PE70-0312080 (or newer) must be installed. 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 ""; 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 ""; 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. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0312150 ---------------------------------------------------------------------- This patch fixes a compatibility problem with Eloquence terminal adaptions and newer ncurses versions. Problems have been observed with SuSE 8.2 and SuSE 9.0 but other Linux distributions are likely also affected. This patch will be integrated in the Eloquence B.07.00 release. Eloquence B.07.00 must be installed before applying this patch. Severity: PE70-0312150: BUG FIX PE70-0309190: BUG FIX Patch PE70-0312150 ------------------ Platforms: Linux * The hp7009x and hpterm terminal types did not display line drawing characters or displayed wrong line drawing characters. Ncurses may not output any line drawing characters unless the acsc capability is defined. Unless a character is present in the acsc capability, ncurses may output a binary zero instead of a line drawing charater that could cause a garbaged display. The hp.ti and hpterm.ti terminfo files have been modified to handle all possible line drawing characters. Please note that ncurses has known problems with hp terminal types (terminal types that use xmc#0) we recommend to use the em220 terminal type (vt220 compatibility) with hp7009x (or compatible) terminals. * The hp7009x and hpterm terminal types could show a garbaged display. Newer ncurses versions use the cub1 capability after a previous CR to move to the last column of a line. However cub1 was defined as a backspace that does not move backwards when at the first column. The cub1 capability has been changed to use ESC D instead. * The 70060 terminal type did not show line drawing characters. This was caused by a missing acsc capability. Patch PE70-0309190 ------------------ Platforms: Linux * Wrong line Drawing characters are displayed with the em220 terminal type. The em220 terminal emulation is used on Linux with Reflection/1 or HP terminals using the vt220-7 emulation. SuSE 8.2 uses the ncurses 5.3 library which results in a problem with alternate character set and compiled terminfo entries that do not include the acsc property. The ncurses 5.3 tic utility adds a default acsc value. The em220.ti terminal description was modified to add the acsc property and compiled terminfo entries are included. As an alternative to installing this patch, the em220 terminfo entry may simply be re-compiled with the commands below: $ cd /opt/eloquence6/share/terminal $ tic -o ../terminfo em220 ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0401160 ---------------------------------------------------------------------- This patch fixes a defect of the eloqdb6 program 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. Severity: PE70-0401160: CRITICAL (server abort, corruption) PE70-0401130: CRITICAL (server abort, corruption) PE70-0312080: BUG FIX PE70-0311180: ENHANCEMENT PE70-0310180: BUG FIX PE70-0310082: BUG FIX PE70-0309300: BUG FIX PE70-0307161: CRITICAL (server abort, corruption) PE70-0305270: BUG FIX PE70-0304041: CRITICAL (database inconsistencies) Patch PE70-0401160 ------------------ Platforms: ALL * A server abort due to an internal error during a dbrestore operation could result in disk space not being released and stale node entries (#2187,#2192). When the eloqdb6 process aborted during a dbrestore operation in some cases the disk space used by the partial dbrestore was not released. In addition stale node entries could remain that could result in warnings when running dbfsck. The eloqdb6 database server has been modified to recover disk space from an aborted dbrestore operation and to delete all non-committed node entries during restart. * In case of a server abort due to an internal error forward logging is disabled and a warning mesage is written to the log file (#2198). In case the eloqdb6 process aborted and performs a crash recovery the forward log files may not fully describe the volume changes. Consequently, forward logging is disabled. To recover, a backup must be performed and forward logging needs to be re-enabled manually. * The eloqdb6 process could abort with an internal error message like below (#2190): Assertion failed: cluster panic: Aborting on internal failure, file volpool.c, line 3182 * Insuffient disk space during a dbrestore operation could cause the eloqdb6 process to abort with an internal failure (#2189,#2192): Pool_Commit() failed on Node_AddItemToFlist() Assertion failed: Tlog_Commit() failed on Tlog_Action() panic: Aborting on internal failure, file voltxn.c, line 749 Assertion failed: !FPool_ValidAnchor(&meta->do_log_anchor) panic: Aborting on internal failure, file voltxn.c, line 734 * A server recovery after a previous server abort due to an internal error could result in an internal failure message like below (#1169): Assertion failed: f_bhp->id.node_id == node_id panic: Aborting on internal failure, file mpool.c, line 408 This was caused by a defect that could release transaction journal pages too early. In rare cases this could corrupt the transaction journal and could potentially lead to data corruption. When using this patch, installation of dblogreset patch PE70-0401161 (or newer) and dbrecover patch PE70-0307162 (or newer) is recommended. Patch PE70-0401130 ------------------ Platforms: ALL * The eloqdb6 process could abort with an internal failure when searching an index with multiple key segments of different types when providing a search key that covered multiple segments (#2175). An internal error message like below was written to the log file: Assertion failed: idx_op->seg_len == idx_op->val_sz server panic: Aborting on internal failure, file find.c, line 933 This was caused by a defect in the Eloquence DBFIND modes 6/7 that are used in the Eloquence image3k library. * A problem with collating sequences and the Eloquence DBFIND modes 6/7 was fixed (#2175). * The eloqdb6 server process could abort with a message like below when a dbrestore operation failed due to an invalid archive (#2181): server panic: Fatal problem detected in bf_flags Assertion failed: !(bhp->flags & BUF_NEWPAGE) server panic: Aborting on internal failure, file mpool.c, line 2095 The eloqdb6 code has been fixed to recover correctly from a dbrestore failure in this case. * A rare race condition has been fixed that could result in corrupted node meta data during a dbrestore operation (#2182). * The http status has been modified to use relative links (#2183). Previous versions created absolute links (including host ip address) that could cause a problem on system with multiple network addresses and in NAT environments. * A server abort during a dbrestore operation could result in a circular page link in the server node directory (#2186). The server recovery procedure has been modified to avoid and fix circular page links in the node directory. In case a circular page link in the server node directory is recognized an informational message like below is output: N1: Node_CommitNodePage(page=0xe396): page is already present - ignored * The eloqdb6 server could abort with an internal failure during if the available disk space (as defined by the volume files) was exausted in a dbrestore operation. This could result in volume corruption (#2187). * An ongoing dbrestore operation could block concurrent requests or cause large delays (#2188). Patch PE70-0312080 ------------------ Platforms: ALL * DBLOCK could ignore a conflicting lock. In rare cases DBLOCK could ignore a granted lock when granting a previously blocked lock request. This could cause status -12 on a subsequent database write (#2167). * DBGET mode 1 returned status 12 if no current record existed. It has been modified to return status 17 (#2168). * DBFIND mode 1 on a search item (chained access) could result in a memory leak if the corresponding master set was not created. * Database restructuring could fail to initialize new items (#2171) * The status return for DBFIND mode 1 on index items was inconsistent with the documentation. Status element 8 returned the first matching record number and status element 10 the last matching record number. The documented behavior is to return the first matching record number in status element 10 and the last matching record number in status element 8. DBFIND mode 1 on index items now follows the documented behavior. * The Eloquence DBFIND modes 6 and 7 may be used with detail search items. This enables the use of TurboIMAGE btree modes with the image3k library ("superchains"). * The data set /INDEXED flag is now returned to the image3k library (#1358). This enables the TurboIMAGE DBINFO modes 113 and 209 to return information on master sets with "attached" indexes. It also enables the use of DBFIND mode 1 (if the btreemode1 flag is set) to locate records though the master set index ("superchains"). Please note that index access (other than DBFIND mode 1) is always enabled with Eloquence, independendly if the /INDEXED flag is set for a master set. Patch PE70-0311180 ------------------ Platforms: ALL * The maximum number of concurrent connections has been increased to 4000 on the HP-UX platform (PA-RISC and Itanium). Windows and Linux are still limited to 1000 concurrent connections. * The performance for larger configurations has been improved. - The eloqdb6 process has been changed so that a large number of configured threads does not affect the performance. - The performance of the eloqdb6 process has been improved when a large number of (mostly) idle connections is used. - The number of system calls have been reduced. * The Eloquence DBFIND modes 6 and 7 may be used with master sets. The previous implementation was limited to detail sets. To use the image3k DBFIND with master sets, installation of patch PE70-0311181 (or newer) is required. Patch PE70-0310180 ------------------ Platforms: ALL * A deadlock situation could cause the eloqdb6 process to abort with a a panic message (#2136) D0: Assertion failed: tcp->marker != current_marker D0: server panic: Aborting on internal failure, file thread.c, line 362 This panic is caused by a deadlock situation that is not detected immediately and only becomes apparent after another process executes a DBUNLOCK. However at this time, the deadlock resolving code is bypassed instead of flagging one of the processes involved in the deadlock. The resolution is to notify one of the threads involved of the deadlock and return a db status to the application. Patch PE70-0310082 ------------------ Platforms: ALL * The eloqdb6 process could abort with an internal failure when on-line backup is initiated (dbctl backup start) (#2128) eloqdb6 could abort with the message below: D0: server panic: Fatal problem detected in Fwr_Setup D0: Assertion failed: rc == 0 D0: server panic: Aborting on internal failure, file volfwr.c, line 541 When forward logging is used but currently disabled due to an error (eg. disk full, permission problem) and is re-enabled subsequently (dbctl forwardlog enable) writing to the log file is delayed until the server is restarted or an on-line backup is performed. Initiating on-line backup resulted in an abort of the server process because the previous failure status was not reset properly. Patch PE70-0309300 ------------------ Platforms: ALL * The eloqdb6 server process could abort with a SIGSEGV when forward logging is used and a log file reached its maximum size (#2126). * The maximum number of concurrent connections has been increased from 1000 to 2000 on the HP-UX platform (#2125). Patch PE70-0307161 ------------------ Platforms: All * DBGET mode 6 after an image3k DBFIND 1/21 on an index could return status 14 (#2046) A DBGET mode 6 after an image3k DBFIND mode 1/21 on an index should retrieve the last matching record in index order. DBGET mode 6 failed with status 14 when the record was the highest key in the index. * The eloqdb6 process could abort with an internal failure or cause database corruption (#1966, #2030) Assertion failed: f_bhp->id.node_id == node_id Restructuring a database with dbutil could cause the server process to abort with an internal error. In rare cases it could cause corruption of the database catalog during crash recovery. * Restructuring a database could cause an internal failure during forward recovery (#2051) Restructuring a database might cause an internal failure in the dbrecover utility when applying the forward log files. The dbrecover utility could abort with an error message like below: panic: Fatal problem detected in FixRec_FinalCommitUpdatePut Assertion failed: *flag_ptr == FixRec_USED || *flag_ptr == FixRec_DELETED Patch PE70-0305270 ------------------ Platforms: All * The eloqdb6 process could abort with an internal failure (#1973) eloqdb6 panics with the message: panic: current_task->waiting_for == NULL (thread.c, line ~413) This was caused by a race condition which could happen when a number of application processes are terminated at the same time while accessing the database. The eloqdb6 server has been modified to solve this problem. The problem can be triggered in the following scenario: - Application thread A holds a lock. It is in the process of releasing database locks. - Application thread B is waiting for the lock held by thread A. - Application thread C is wating for the lock held by thread A (and thread B). Thread C gets interrupted (application process has been killed) during the wait. - There is a situation where thread A might become runnable before thread C during the same scheduler quantum and might unexpectedly update a scheduler variable used in the deadlock detection code ("waiting_for" which is used to track dependencies among application threads). * Connecting to the database server could fail with status -700:-6 when EnableIPC=2 is used on HP-UX (#1982). A message like below is printed: P0: Unable to down semaphore P0: semop(DOWN): Identifier removed (errno 36) P0: Failure during wait on server response This was caused by a missing initialization when a shared memory segment was re-used by a subsequent process. Due to a race condition, a new connection could become disconnected by the server immediately. * Recovery in case of abnormal server termination has been improved. An incomplete transaction journal could corrupt the database volume(s) for btree and catalog node types (#1966). * In case of inconsistent meta information (such as number of records) the eloqdb6 process could abort with an internal error message like below (#1941). D0: server panic: Fatal problem detected D0: Assertion failed: meta->num_records == 1 D0: server panic: Aborting on internal failure, file volfrec.c, line 3191 This situation is is now handled more gracefully and does no longer cause a server abort. * When forward logging is enabled, the eloqdb6 process will refuse to override an existing file (#1952). An existing file is considered a logging failure and will either result in diabling forward logging or an internal abort (depending on the configuration). When using forward recovery and restoring the volume files from the backup and errorneously starting the eloqdb6 process could could overwrite forward log segments and cause potential data loss. The eloqdb6 has been modified to refuse overwriting existing files. * When forward logging is anbled and the eloqdb6 process is killed using kill -9 (eg. due to patch PE70-0305090 is not installed), it might fail to flag the volume file(s) as consisent. This might cause the server to refuse to start (#1985). A message like below is printed: failed to open volume: volume #1 has inconsistent generation count 8 (should be 9) volume.c line 828 The eloqdb6 server code has been modified to handle this this situation correctly. Patch PE70-0304041 ------------------ Platforms: All * Changing the data set structure with dbutil could result in an inconsistent internal highest record number. As a consequence, new records which are added subsequently could become inaccessible. This could cause database status -96 on DBPUT or status 17 and status 18 on DBGET, depending on the use of the particular data set (#1880). Please note: Installing this patch will prevent this problem to occur in the future. However, it will not correct your existing database environment(s). In case you used the Eloquence B.07.00 dbutil program to modify the database structure we recommend to check and correct your database environment(s) with the dbfsck utility: 1) Shut down the eloqdb6 database server instance(s). 2) Write access to the volume files is required. On HP-UX and Linux logon as root or the user configured in the server configuration file. 3) Check and correct your database environment(s) with dbfsck: dbfsck -way This will automatically fix any inconsistencies caused by dbutil data set restructuring. You may need to specify the -c /path/to/configfile command line option in case multiple database server instances are used. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0401161 ---------------------------------------------------------------------- This patch fixes a defect of the dblogreset utility 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. Severity: PE70-0401161: BUX FIX PE70-0401131: BUX FIX PE70-0307163: BUX FIX Patch PE70-0401161 ------------------ Platforms: All * dblogreset after a previous abort of the eloqdb6 server process could fail to release some disk space (#2048). In case the eloqdb6 process has aborted, dblogreset performs a recovery operation before resetting the transaction log volume. Disk space that was freed during the recovery operation could in some cases not be marked as avaialable by dblogreset. The dblogreset utility has been fixed accordingly. * The recovery operations in dblogreset have been aligned with the changes in eloqdb6 patch PE70-0401160. This patch (or newer) should be installed when using the corresponding eloqdb6 patch PE70-0401160. Patch PE70-0401131 ------------------ Platforms: All * dblogreset was fixed to handle a situation where the database server has aborted during a dbrestore operation. dblogreset now checks for a corner case that could result in a circular page link in the server node directory (#2186). In case a circular page link in the server node directory is recognized an informational message like below is output: N1: Node_CommitNodePage(page=0xe396): page is already present - ignored Patch PE70-0307163 ------------------ Platforms: All * dblogreset was fixed to handle a situation where the database server has crashed. In this case dblogreset performs a recovery of recently committed transactions. A rare corner case could lead to (unused) data blocks linked to a table but not marked in use. This could lead to subsequent data corruption. ---------------------------------------------------------------------- ELOQUENCE B.07.00 - patch 0401162 ---------------------------------------------------------------------- This patch fixes a defect of the dbrecover utility 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. Severity: PE70-0401162: BUG FIX PE70-0307162: CRITICAL (panic during recovery) PE70-0305091: CRITICAL (panic during recovery) Patch PE70-0401162 ------------------ Platforms: All * The commit operations performed by dbrecover have been aligned with the changes in eloqdb6 patch PE70-0401160. This patch (or newer) should be installed when using the corresponding eloqdb6 patch PE70-0401160. Patch PE70-0307162 ------------------ Platforms: All * dbrecover was enhanced to improve recovery performance (#1988) dbrecover uses temporary files to collect all changes which belong to a single transaction. This handling was optimized, resulting in a dramatic performance increase on HP-UX (and to some lesser extent on other platforms). * dbrecover was fixed to handle a situation where the database server crashed and wrote incomplete information to the forward log (#1966). While dbrecover makes sure only complete transactions are applied a rare corner case could lead to (unused) data blocks linked to a table but not marked in use. This could lead to subsequent data corruption. * dbrecover could abort with an internal error when schema is executed immediately after a dbpurge (#2053) panic: Fatal problem detected in bf_link_cluster Assertion failed: f_bhp->id.node_id == node_id Aborting on internal failure, file mpool.c, line 408 Patch PE70-0305091 ------------------ Platforms: All * dbrecover could abort with an internal error (#1948). panic: Fatal problem detected in FixRec_FinalCommitDelete Assertion failed: data_addr Aborting on internal failure, file volfrec.c, line 3126 NOTE: In case dbrecover aborts the forward recovery needs to be restarted from the beginning by restoring the backup and running dbrecover again.