1. Release Notes

The following are the release notes for HammerDB v4.7.

1.1. Nomenclature Change

From version 4.0 In the database.xml file and the User Interface the workload names have changed to TPROC-C and TPROC-H. This is a nomenclature change only to represent that the workloads are fair use implementations derived from the TPC specifications and the nomenclature does not change the functionality of the workload compared to prior versions using the TPC-C and TPC-H terminology.

1.2. Stored Procedure Refactoring and Performance

From version 4.0 the stored procedures for the Oracle and PostgreSQL TPROC-C workloads have been refactored. From version 4.5 the stored procedures for the SQL Server TPROC-C have been refactored and MySQL, MariaDB and Db2 modified. This increases the expected performance between versions and consequently the performance from HammerDB v4.5 & HammerDB v4.0 cannot be compared directly to the performance of v3.3 or previous releases dependent on the database being tested. Additionally for some workloads HammerDB v45/v4.0 changed the relationship between the NOPM and TPM metrics compared to previous versions. As a result of the stored procedure refactoring using bulk operations more work is processed per commit and therefore in these cases the NOPM has increased whilst the TPM remains the same. This indicates a real measure of increased throughput by doing more work per database transaction and consequently NOPM is now listed first as the primary metric in reporting output. However as raised in HammerDB GitHub Issue #111 there may be cases where there is a dependency on the wording of the HammerDB log. For this reason a configuration option in the generic.xml file of first_result is given. If this option is set to NOPM then the v4.0 format is used if set to TPM then the output is compatible with v3.3.

<benchmark>
<rdbms>Oracle</rdbms>
<bm>TPC-C</bm>
<first_result>NOPM</first_result>
</benchmark>

1.3. MariaDB Columnstore and MySQL Heatwave Support

From v4.7 the TPROC-H workloads from MariaDB and MySQL have been updated to run against MariaDB Columnstore and MySQL Heatwave environments.

1.4. Transaction Counter Update and Deprecated Ribbon effect

From HammerDB v4.7 the ribbon effect transaction counter has been deprecated. However if preferred it can be manually enabled through the setting tc_graph_ribbon in generic.xml as shown. Note that this should be at installation as at first startup the setting will be made in the SQLite storage and subsequent changes to the xml file will not be detected. For later changes to the xml to be detected you can delete the generic.db file in the SQLite storage area and then the settings in generic.xml will be applied for future use. It is not planned to have a setting to enable/disable the ribbon effect during use and may be fully deprecated in a future release.

<settings>
    <tc_refresh_rate>10</tc_refresh_rate>
    <tc_log_to_temp>0</tc_log_to_temp>
    <tc_unique_log_name>0</tc_unique_log_name>
    <tc_log_timestamps>0</tc_log_timestamps>
    <tc_graph_ribbon>true</tc_graph_ribbon>
</settings>

1.5. Removed Trafodion Support

From HammerDB v4.7 the previously deprecated Trafodion support has been removed from HammerDB because the Trafodion project itself is no longer in development.

1.6. Shell and Powershell scripts

From HammerDB v4.7 Linux shell and Windows powershell driver scripts as well as build, run, delete, and report scripts for all databases have been added to the main directory under the scripts folder. These scripts are examples in both Python and Tcl to use as a template for modifying and running scripts under the HammerDB CLI to fully automate test workloads.

1.7. Known Third-Party Driver Issues

HammerDB has a dependency on 3rd party driver libraries to connect to the target databases. The following are known issues with some of the 3rd party drivers that HammerDB uses.

1.7.1. Oracle on Windows: Oracle Bug 12733000 OCIStmtRelease crashes or hangs if called after freeing the service context handle

If you are running HammerDB against Oracle on Windows there is long established bug in Oracle that can cause application crashes for multi-threaded applications on Windows.This bug can be investigated on the My Oracle Support website with the following reference. Bug 12733000 OCIStmtRelease crashes or hangs if called after freeing the service context handle. To resolve this Oracle issue add the following entry to the SQLNET.ORA file on your HammerDB client.

SQLNET.AUTHENTICATION_SERVICES = (NTS)
DIAG_ADR_ENABLED=OFF 
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE

1.7.2. SQL Server on Linux: unixODBC's handle validation may become a performance bottleneck

Using the HammerDB client for SQL Server on Linux can be slower than the same client on Windows when using the default installed unixODBC drivers on many Linux distributions. As described in the SQL Server Programming Guidelines "When using the driver with highly multithreaded applications, unixODBC's handle validation may become a performance bottleneck. In such scenarios, significantly more performance may be obtained by compiling unixODBC with the --enable-fastvalidate option. However, beware that this may cause applications which pass invalid handles to ODBC APIs to crash instead of returning SQL_INVALID_HANDLE errors." Recompiling unixODBC with the --enable-fastvalidate option has been measured to improve client performance by 2X. Example configure options used to build unixODBC are shown as follows:

./configure --prefix=/usr/local/unixODBC --enable-gui=no --enable-drivers=no --enable-iconv 
--with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --enable-threads=yes --enable-fastvalidate

1.7.3. Db2 driver is not included in the HammerDB Docker image or build

When running the HammerDB Docker image, drivers for all databases are pre-installed except for Db2. This is because the required redistributable IBM® Data Server Driver for ODBC and CLI is not available to be pulled automatically within the build and the IBM documentation lacks clarity on the conditions for whether a copy of the redistributable package can be made available by HammerDB "royalty-free". Therefore any user of Db2 must download and install their own Db2 client after installing Docker. This issue is tracked in Issue #404.

1.7.4. Db2 interface will not load under Python CLI

When running a Db2 workload from the Python CLI on Linux the following error is received:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
RuntimeError: couldn't load file "./lib/db2tcl2.0.1/libdb2tcl.so": 
./lib/db2tcl2.0.1/libdb2tcl.so: undefined symbol: Tcl_GetChannel

This only impacts the Python CLI on Linux and does not impact Tcl on Linux or Python or Tcl on Windows where the Db2 interface loads successfully.

The workaround for the CLI on Linux is to run the Tcl interface directly and not to use the example Db2 Python scripts at the current release.

1.8. Linux Xft Font and Cairo Graphics Pre-Installation Requirements

On Linux the HammerDB GUI requires the Xft FreeType-based font drawing library for X installed as follows:

Ubuntu:

$ sudo apt-get install libxft-dev

Red Hat:

$ yum install libXft

On Linux HammerDB GUI requires Cairo Graphics installed to support the graphical transaction counter and can be installed as follows:

Ubuntu:

sudo apt-get install libcairo2-dev

Red Hat:

ymu install cairo-devel