|  | OverviewAfter the release of Eloquence B.08.10 a number of bug fixes and enhancements were released 
as patches, providing improved functionality, performance and reliability.
The user visible changes implemented through these patches (along with critical bug fixes)
are covered in this document (relative to the original B.08.10 release).
 
This document extends on the Eloquence 
B.08.10 release notes and
reflects the changes in the Eloquence patch bundle
PE81-B130529
relative to the Eloquence B.08.10 release.
 
 
 Critical fixes for corner-case issues in the database server include
 
  Under rare conditions, an internal deadlock condition could result in a database server hang while on-line backup mode is active (#4059).
  A dbpurge operation could cause the database server to abort due to an internal race condition (#3781).
  In a certain corner case, deleting a record using the Eloquence language could result in a server panic.
  Under rare conditions, the database server could abort due to a segment violation if multiple dbctl list or HTTP session status invocations were issued at the same time (#4062, #4063, #4065).
  Under rare conditions, the HTTP thread could terminate unexpectedly on a failed network call (#4094).
  A dbutil UPGRADE DATABASE command could cause the database server process to abort if applied to a database where the items were reordered alphabetically so that the column identifiers are no longer incremental (#4098).
  In a rare case, data corruption could occur when on-line backup mode was stopped (#4108).
  A transaction journal corruption could occur if the database server was stopped or aborted while in on-line backup mode after using the dblogreset or dbrecover utility (#4126).
  The eloqdb startup behavior was modified to prevent that a transaction journal corruption remains undetected. 
 User visible changes to the database server include
 
  Modified database server startup behavior in case a transaction
  journal corruption is detected:
  If the database server aborts unexpectedly due to a power failure
  or an operating system problem and the SyncMode configuration has
  been deactivated, it might happen in rare cases that the transaction
  journal is damaged so that on startup the database server cannot
  perform its usual transaction recovery.
 
  In such a case, the database server now aborts immediately with a
  message like below, preventing the problem to remain unnoticed:
 
  WARNING: Unable to perform volume recovery due to inconsistencies.
 Please restore the data volume files from a backup, then use
 dbrecover to apply the forward-log. If this is not possible, use
 dblogreset to manually perform a volume recovery, then check the
 data volume with dbfsck. 
  Fixed a corner case incompatibility with TurboIMAGE (#4024).
  In TurboIMAGE a failed DBFIND call does not change the
  current chain. This behavior change does not apply to
  programs written in the Eloquence language.
 
  This change is only effective if this patch and the related
  client library patch PE81-1102251 (or newer) are installed.
 
 
 Database utility changes include
 
query3k
 
 
  Fixed a problem with the NOT MATCHING clause in a MULTIFIND
  command. Due to a bug the NOT negation had no effect unless it
  was the first condition in an expression (#3993).
  >MU orders.order-date=0621 &
 >>AND order-details.shipment-date NOT MATCHING "0628"
 USING SERIAL READ
 4 COMPOUND ENTRIES QUALIFIED
 >report
 >>d,SHIPMENT-DATE,10
 >>end
     0628
     0628
     0628
     0628
  Fixed a problem with the NOT MATCHING syntax parsing in a MULTIFIND
  command. Due to a bug the NOT MATCHING must be specified as the last
  condition or a syntax error is reported (#3993).
  For example:
  >MU order-details.shipment-date NOT MATCHING "0628" &
 >>AND orders.order-date=0621
 INVALID RELATIONAL OPERATORHowever, the following worked:  >MU order-details.shipment-date MATCHING "0628" &
 >>AND orders.order-date=0621
 USING SERIAL READ 
 CFORM
 
 
  Ordering FORM fields was limited to a maximum field length of 80.
  This limitation was removed.
 fwaudit
 
 
 Changes to the Eloquence programming language include
 
  Fixed a race condition obtaining a unique taskid. If multiple 
  eloqcore processes are started simultaneously, eloqcore could fail 
  with a message as below.
 Taskid already in use
 eloqcore: Unable to setup daemon session 
  The DEFSTRSZ and AUTOSTRSZ configuration options were added to
  eloq.config and the user/group specific configuration files.
  They may be used to configure the default dimension of string
  variables.
  AUTOSTRSZ specifies the dimension of string variables that are
  implicitly allocated upon use (auto variables).
  For example, A$="TEST" or A$(1)="HELLO".
 
  DEFSTRSZ specifies the dimension of string variables that were
  declared without specifying the dimension.
  For example, DIM A$(1:10) or COM A$.
 
  DEFSTRSZ defaults to a 18 characters. AUTOSTRSZ defaults to the
  DEFSTRSZ value.
 
  For example, the configuration below specifies that undeclared
  string variables are allocated with a size of 100 characters:
 
   option AUTOSTRSZ 100 
  Consequently, the following statement works without causing a
  string overflow error:
 
   A$=RPT$("X",100)
  PLEASE NOTE:
 
  Added support for DBINFO mode 114.
 
 Enhancements to the Eloquence JDLG include
 
  Add keepalive support for JDLG connections. This requires
  JDLG version 1.5.7-110429-1914 or newer.
   DLG SET ".keepalive",Seconds 
  If Seconds is nonzero, JDLG sends keepalive messages in the
  specified interval during a DLG DO or POPUP BOX instruction.
 
  This allows eloqcore to detect whether a JDLG connection is
  still active. The latter case is assumed if eloqcore does not
  receive any message from JDLG for five times the specified
  interval during a DLG DO or POPUP BOX instruction. If an
  interrupted JDLG connection is detected, the connection is
  closed and ERROR 684 is returned to the program.
 
  This function may also be useful to solve idle timeout problems
  caused by network router/firewall configuration. A network
  router might be configured to close a connection if it has been
  inactive for some time. To prevent this from affecting JDLG
  connections, a JDLG keepalive interval could be set.
 
  For example, assumed the router idle timeout is 30 minutes,
  DLG SET ".keepalive",900 would cause JDLG to send a keepalive
  message every 15 minutes so that the router idle timeout
  would not expire.
 
  Instead of using DLG SET ".keepalive", the keepalive interval
  may be configured using the JDLG eloquence.config.keepalive
  property, for example: eloquence.config.keepalive=900
 
  Add idle timeout support for DLG network connections.
  This may be used with JDLG or Windows DLG (DLGSRV32).
   DLG SET ".timeout",Seconds 
  If Seconds is nonzero and the specified timeout has expired
  during a DLG DO or POPUP BOX instruction, the DLG connection
  is terminated and ERROR 684 is returned to the program.
 
  This may be used to automatically terminate DLG sessions that
  have been idle for a long time. For example, a
  DLG SET ".timeout",28800 would terminate any DLG session that
  has been idle for more than 8 hours.
 
 
 The WEBDLG patch provides a substantially enhanced WebDLG from
Eloquence B.08.20 to Eloquence B.08.10 users. The following list
summarizes the major enhancements and new functionality.
 
For details on these enhancements refer to the
Eloquence B.08.20 release note section.
Dialogs are dynamically updated (not reloaded) using Ajax browser functionality.
The Dialog tab order is enforced, RETURN and ENTER keys are enabled for tab navigation.
Enhanced the support for CSS style definitions.
Added support for HTTP Basic Authentication against the eloqsd server (Apache version 2.2 only).
Added support for token and environment variable resolving in the mod_eloq command and environment configuration.
Added the PopText object class. 
Added the borderstyle attribute (Dialog, GroupBox, Image).
Added the ListBox ruleoverride and singleclick attributes.
Added the System authlogin and authpassword attributes.
Allow the browser to keep JavaScript functions in memory.
 
 Enhancements to eloq.cgi include
 
  The Content-Type character set, if specified, is now evaluated
  to determine whether or not eloq.cgi should apply an HP-ROMAN8
  to ISO-8859-1 or HP-ROMAN9 to ISO-8859-15 character conversion
  of the program output.
  By default, if the first line of the program output is one of
 Content-Type: text/html
Content-Type: text/plainwithout explicitly specifying a character set, ISO-8859-1 is
  assumed, so that eloq.cgi converts the program output from
  HP-ROMAN8 to ISO-8859-1. 
  In addition, a character set may be specified to activate the
  character conversion for content types other than text/html
  and text/plain, for example:
 Content-Type: text/richtext; charset=ISO-8859-1To activate the eloq.cgi character conversion of the program
  output, either the ISO-8859-1 or the ISO-8859-15 character set
  must be specified. Other character sets are not recognized. 
  Content type and character set are not case sensitive.
 
  POST request decoding has been enhanced.
  If the application/x-www-form-urlencoded or multipart/form-data
  content type is used, the POST request data is assumed to contain
  form items, which are stored into corresponding WWW_ prefixed
  environment variables.
 
  The form item values are converted to the HP-ROMAN8 character
  set, according to the content type character set, if specified.
  The ISO-8859-1 and ISO-8859-15 and UTF-8 character sets are
  recognized. If no character set is specified, ISO-8859-1 is
  assumed. An UTF-8 encoded item is first converted to ISO-8859-1
  and then converted to HP-ROMAN8.
 
  Any content type other than application/x-www-form-urlencoded
  or multipart/form-data is used to store the binary POST request
  data to a temporary file. The temporary file is removed by
  eloq.cgi after the program has ended. To prevent eloq.cgi from
  removing the temporary file, a program may move or rename the
  file.
 
  The environment variables below are provided by eloq.cgi to
  the program:
 
    POSTDATA_TYPE
      Contains the content type. If the request is not a
      POST request or the content type is not specified,
      this variable is not set.
      For example: application/x-www-form-urlencoded
    POSTDATA_CHARSET
      Contains the character set. If no character set is
      specified, this variable is not set.
      For example: ISO-8859-1
    POSTDATA_NAME
      Contains the temporary file name. If no temporary
      file is created, this variable is not set.
    POSTDATA_SIZE
      Contains the size of the POST request data in bytes.
      If a temporary file is created, this is equivalent
      to the temporary file size.
 
  In addition, if the content type is text/xml, the environment
  variables below are set for backward compatibility:
 
    XML_TEMPFILE
      Same as POSTDATA_NAME (see above).
    XML_TEMPFILE_SIZE
      Same as POSTDATA_SIZE (see above).
 
  Logging of error/informational/debug messages has been added.
  The EQCGI_LOGFILE environment variable may be set to specify
  a log file. If set, the log file directory must allow read/write
  access to the user running the web server process.
 
  If the EQCGI_LOGFILE environment variable is not set, messages
  are output to stderr, which is usually redirected to the web
  server error log file.
 
  The EQCGI_LOGLEVEL environment variable may be set to specify
  the log level. If not set or set to zero, only error messages
  are output. If set to 1, informational messages are output in
  addition. If set to 2, debug messages are output in addition.
  If set to 3, more verbose debug messages are output.
 
  Note: The EQCGI_DEBUG environment variable is no longer used.
 
 
 On Linux IA-64 the following additional manual procedure is required
 
 
 |  |