|
Overview
After the release of Eloquence B.07.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.07.10 release).
This document extends on the Eloquence
B.07.10 release notes and
reflects the changes in the Eloquence patch bundle
PE71-B070730.
Functional enhancements
-
A compatibility issue with the Linux glibc2.4 (and newer) was corrected.
The Linux glibc 2.4 library introduced a (deliberate) incompatibility that
was causing the eloqdb6 server process to crash.
-
The server was enhanced to support additional options for logging
server or individual session performance information.
The server also supports additional dbctl commands to allow dynamically
changing the logging of performance information.
For more information, please refer to the
Database server statistics documentation.
-
The message indicating a previous unclean shutdown was recovered is now written to
the server log (at all log levels).
Performance enhancements
-
The lock scheduler was revised to enhance scalability and
performance with a large number of competing locks.
-
The server process was enhanced to use a more efficient format
to record index and meta data changes.
This enhancement may result in a substantial reduction in disk space
for the forward-log files when index entries are changed frequently.
-
The internal locking strategy was revised to allow for additional concurrency.
This specifically improves performance in cases of a cache miss in the database
server cache.
-
Improve bimport performance on master sets and additional indexes.
The bimport performance for master sets is often dominated by
creating the associated index. This may also apply to detail sets
when an additional index is used. The eloqdb6 server was changed
to bypass the index transaction logic during bimport to improve
database load time.
Security enhancements
-
Forward-log files are now created with restrictive file
permissions. Only the user account configured to run the database
server may access these files.
-
The dbctl logfile command no longer accepts existing files.
-
If the server process is started from the root user, ownership of a
log file created during the server startup is changed to the user
that is configured to run the database.
Critical bug fixes
-
Aborting on-line backup mode recovery could result in data
corruption.
The server process (or the dblogreset utility) performs a recovery
from on-line backup on startup if the server was previously shut down
while in on-line backup. This recovery transfers any changes
temporarily stored in the log volume(s) during the on-line backup
mode to the data volume(s). Depending on the amount of data
that was saved in the log volume(s) and disk performance this
could take some time.
If this recovery was interrupted (or aborted for some reason) in
some cases this recovery could not be re-run afterwards because
the generation count of the data volume would differ from the
log volume(s) generation count.
In this case the data volume could be corrupted as the changes were
only partially transferred.
-
Aborting on-line backup mode recovery could result in data
corruption.
The server process (or the dblogreset utility) performs a recovery
from on-line backup on startup if the server was previously shut down
while in on-line backup. This recovery transfers any changes
temporarily stored in the log volume(s) during the on-line backup
mode to the data volume(s). Depending on the amount of data
that was saved in the log volume(s) and disk performance this
could take some time.
If this recovery was interrupted (or aborted for some reason) in
some cases this recovery could not be re-run afterwards because
the generation count of the data volume would differ from the
log volume(s) generation count.
In this case the data volume could be corrupted as the changes were
only partially transferred.
-
The dbrecover utility was enhanced to support incremental recovery.
The dbrecover utility may be restarted and should be able to continue
from the previous point.
The original dbrecover utility requires starting from the previous backup.
Please note: When using incremental recovery the server process
MUST NOT be started between dbrecover runs when configured in a
MASTER or STANDALONE role (default). The server may be started when
configured to function in a SLAVE role as this will not change
the data volumes.
-
The dbrecover utility was enhanced to support recovery up to a
specified point in time without previously switching the
forward-log file.
The new -T option may be used to specify a point-in-time up to
which dbrecover applies changes. Once this point is passed,
dbrecover will exit. Incomplete transactions are not applied.
The following syntax is supported to specify a timestamp:
YYYY-MM-DD [HH:MM:SS]
MM/DD/YYYY [HH:MM:SS]
DD.MM.YYYY [HH:MM:SS]
Any character may be used to separate date and time. Specifying
the time is optional (defaults to 00:00:00).
For example:
dbrecover -T "2007-02-22 16:53" ...
This specifies to apply transactions committed up to Feb 22, 2007,
16:53:00.
-
If the same item name is used with different types in different
databases, fwaudit could fail with an error message indicating
a wrong syntax was used.
item requires a string filter argument
This could happen when a numeric item value is used in a filter
expression. If an item with the same name exists in another
database that has a non-numeric item type (X, U or B), fwaudit
aborted on any record referring to that item.
item requires a numeric filter argument
This could happen if a string item value is used in a filter
expression and fwaudit encountered an item with the same name that
has a numeric item type.
As a solution, fwaudit now accepts both string and numeric values
on all item types. For numeric item types, if a string can be
converted to a numeric value, it will be used, otherwise the value
does not match and fwaudit continues. For string item types, a
numeric value will be used literally for an alphanumeric comparison.
-
The "id" session item was added to allow to filter by a specific
session identifier.
The syntax is:
id relational-op {integral-value}
id BETWEEN {integral-value} AND {integral-value}
relational-op:
< <= = <> >= >
integral-value:
session identifier to compare with
If using BETWEEN, the AND keyword may be omitted.
For example:
id = {42}
ID BETWEEN {108} AND {110}
-
The "conntime" session item was added to allow to filter by the
session connection timestamp.
The syntax is:
conntime relational-op {date-time-value}
conntime BETWEEN {date-time-value} AND {date-time-value}
relational-op:
< <= = <> >= >
date-time-value:
YYYY-MM-DD [HH:MM:SS]
MM/DD/YYYY [HH:MM:SS]
DD.MM.YYYY [HH:MM:SS]
In date-time-value, the time part is optional
(defaults to 00:00:00).
If using BETWEEN, the AND keyword may be omitted.
For example:
conntime >= {2005-07-26}
conntime between {07/26/2005 10:00} and {07/26/2005 12:00}
CONNTIME BETWEEN {26.07.2005 15:31:40} {26.07.2005 15:31:50}
-
The username and password argument supported by the DBLOGON call
was extended to 255 characters
-
A SORTORDER configuration option was added to eloq.config and the
user/group specific configuration files.
SORTORDER may be used to specify the sort order that is used for
string comparisons performed by the SORT BY statement and the LEX
function.
If SORTORDER is not defined, an OS specific collating sequence is
used as defined by the LANG, LC_COLLATE or ELOQLANG environment
variables. This is backwards compatible to previous eloqcore
versions.
If SORTORDER is present it specifies an Eloquence specific
collating sequence.
Syntax:
SORTORDER specifier
The collating sequence is defined as a language specifier
and either a "fold" or "nofold" modifier separated by a @
character, such as "french@nofold".
A "fold" sort order interleaves upper- and lowercase characters,
such as AaBbCc...Zz, where a "nofold" sort order separates upper-
and lowercase characters, such as "ABC...Z abc...z".
On HP-UX and Linux the available collating sequences are installed
in the /opt/eloquence6/lib/nls/collate directory. On Windows they
are installed in the lib/nls/collate subdirectory below the Eloquence
installation directory.
-
Eloqcore incorporates the database client library B.07.10.09.
This database client library version fixes some problems related to
database caching.
This library also changes the DBFIND behavior to reset the current
record number.
-
Handle segment total overflow more gracefully. A program that exceeds
the limit of the backwards compatible program format may fail to load.
This change attempts to work around the problem. For new programs it
is recommended to use the newer program file format introduced with A.06.00.
Platforms: HP-UX
Platforms: HP-UX and Linux
-
The EQ_SHELL environment variable may be used to specify the shell
that is used by the non-interactive COMMAND "!..." statement to
process system commands. By default the /bin/sh shell is used.
Platforms: Windows
-
The keyboard mapping was incomplete. The following keys and key combinations
are now correctly handled:
Alt+L | move to end of display |
Alt+S | halt / single step (also Shift+F1) |
Alt+G | advanced step (also Shift+F2) |
PAUSE | equivalent to Alt+S (halt / single step)
also in combination with Shift and/or Alt |
Ctrl+PAUSE | equivalent to Ctrl+Y (suspend program execution) |
-
The FORM SETS command was changed to suppress outputting the
MAXIMUM CAPACITY if the output would be the Eloquence default.
As all Eloquence data sets are considered to have a dynamic
"capacity" this would otherwise clutter the output without
providing any additional information.
-
QUERY3K was enhanced to improve support of the Eloquence
database limits that exceed the previous TurboIMAGE limits.
This release should now support
- a record size of up to 5120 bytes
- 2048 items per database
- 500 data sets
- 1024 items per set
- The item type 'B' (binary) is now mapped to 'X'.
String items with more than 255 bytes per subitem are not yet fully
supported and might result in undefined behavior. No such cases are
currently known.
-
Printing string items with a size beyond 255 characters
are currently not considered printable and will result in a message
like below:
ILLEGAL ITEM LENGTH X500, ITEM ID-DATA-500-1 IGNORED
This is a workaround for a previous buffer overflow problem.
-
The new mod_eloq22 WEBDLG module adds support for Apache 2.2.
The module interface of Apache 2.2 (libapr 1.x) is incompatible
with previous Apache 2.x versions, therefore the original mod_eloq2
WEBDLG module cannot be used with Apache 2.2.
-
The mod_eloq2 and mod_eloq22 WEBDLG modules for Apache 2.x are now
compatible with the threaded Apache 2.x multi-processing model
(Apache 2.x MPM worker). Previous versions of the mod_eloq2 module
could only be used with the non-threaded Apache 2.x multi-processing
model (Apache 2.x MPM prefork).
-
The Apache 2.x WEBDLG modules and the eloqwebd executable are available
for the Windows platform.
The mod_eloq2.so (for Apache 2.0) and mod_eloq22.so (for Apache 2.2)
files are installed in the Eloquence lib installation subdirectory
(for example C:\Programs\Eloquence\lib).
To install the WEBDLG module in Apache for Windows, please use a
LoadModule line as shown below:
LoadModule eloq_module "C:/Programs/Eloquence/lib/mod_eloq22.so"
Please note that Apache recommends to use forward slashes instead
of backslashes in Windows file paths, as shown in the example
above. Also, the path should be quoted in case it contains space
characters.
For the eloqwebd, the eloqwebd.cfg.sam template configuration file
is installed in the Eloquence etc installation subdirectory (for
example C:\Programs\Eloquence\etc). Please create an initial copy
of this file within the etc directory to the "eloqwebd.cfg" file
name to install the eloqwebd configuration file.
-
The Apache 2.x WEBDLG modules are available for the 64 bit Linux
x86_64 platform. To use these modules, please install the
PE71-0707060-linux-glibc2.3-x86_64.tar.gz patch archive which
contains both the 32 bit and 64 bit WEBDLG modules.
The 32 bit modules are installed in /opt/eloquence6/lib as usual,
while the 64 bit modules are installed in /opt/eloquence6/lib64.
-
A compatibility problem of the Eloquence Odbc.DLL and the FreeTDS ODBC
driver was resolved.
The FreeTDS ODBC does not support the SQLDescribeParam() ODBC function.
In this case the data type of an SQL query parameter is unknown.
The Odbc.DLL now handles this by binding the parameter at a later stage
when the application defines the data type.
As a consequence, the application should take care to provide
an appropriate parameter data type if the FreeTDS ODBC driver
is used, otherwise a data type mismatch error may result.
|
|