PostgreSQL JDBC 6.0.0
- Last Updated: May 8, 2026
- 10 minute read
- OpenAccess SDK
- Documentation
README
Progress(R) DataDirect(R)
Progress(R) DataDirect(R) for JDBC(TM) for PostgreSQL(TM) Driver
Release 6.0.0
February 2026
***********************************************************************
Copyright (C) 2026 Progress Software Corporation and/or its
subsidiaries or affiliates. All Rights Reserved.
***********************************************************************
CONTENTS
Post-GA Product Announcements
Requirements
Installation Directory
Data Source and Platform Support
Changes since 6.0.0 GA
Release 6.0.0 Features
Notes, Known Problems, and Restrictions
Documentation
Installed Files
Post-GA Product Announcements
The readme files will no longer be updated with product announcements and new
features after the General Availability (GA) of the product. For the latest
updates and enhancements, please refer to the release notes
(https://www.progress.com/datadirect-connectors/whats-new).
Requirements
* A supported Java Virtual Machine (JVM) must be defined on your system path.
* The installer program requires a JVM that is Java SE 11 or higher, including
Oracle JDK, OpenJDK, and IBM SDK (Java) distributions.
* The driver requires a JVM that is Java SE 8 or higher, including Oracle JDK,
OpenJDK, and IBM SDK (Java) distributions.
Installation Directory
The default installation directory for the driver is:
* Windows:
C:\Program Files\Progress\DataDirect\JDBC
* UNIX/Linux:
/opt/Progress/DataDirect/JDBC
Note: For UNIX/Linux, if you do not have access to "/opt", your user's home
directory will take the place of this directory.
Data Source and Platform Support
For the latest data source and platform support information, refer to the
Product Compatibility Guide:
https://docs.progress.com/bundle/datadirect-product-compatibility/resource/
datadirect-product-compatibility.pdf
Progress DataDirect for JDBC for PostgreSQL (PostgreSQL driver)
The PostgreSQL driver supports the JDBC API for SQL read-write access to the
PostgreSQL database. Also, it supports:
* All JDBC Core functions
* The core SQL-92 grammar
Changes since 6.0.0 GA
Enhancements
------------
* The driver supports the Geography and Geometry data types with the
getColumns() method.
Available: 6.0.0.001767 (F002919.U001917) | 05/06/2025
* The driver has been enhanced to comply with FIPS standards for data
encryption. As part of this enhancement, the driver was tested with
FIPS 140-3 enabled using a Red Hat OpenJDK 21 on a Red Hat Universal Base
Image 9 instance.
* The driver has been enhanced to support the SCRAM-SHA-256-PLUS password
hashing mechanism for user ID/password authentication. The SCRAM-SHA-256-PLUS
mechanism uses channel binding to establish a secure connection with
PostgreSQL.
* The driver has been enhanced to support Microsoft Entra ID authentication
(formerly Azure Active Directory Authentication). Entra ID authentication is
an alternate authentication type that allows administrators to centrally
manage user permissions to Azure SQL Database data stores. The driver
supports the following methods of Entra ID authentication:
- User and password authentication
- Service principal authentication
* The driver has been enhanced to support the TLSv1.3 cryptographic protocol.
For details, refer to the user's guide.
* The driver has been enhanced to support MERGE against PostgreSQL 15
and later. MERGE is a SQL command that modifies rows in the target
table using the data from the source table. It can conditionally
INSERT, UPDATE or DELETE rows in a single statement, eliminating
the need to write multiple procedural statements.
Feature details:
- Available: Driver version 6.0.0.001277 (F002097.U001111)
* The driver has been enhanced with the new EnablePrepareThreshold and
PrepareThreshold connection properties, which allow you to configure the
behavior of server-side prepared statements. Refer to the user's guide for
details.
Changed Behavior
----------------
* The connection property SpyAttributes has been updated to exclude the
attribute load=classname, which was previously used to load the driver
specified by the given class name. See SpyAttributes for details.
* The installer program now requires you to install a JRE that is Java SE 11 or
higher before running the installer. In earlier versions, the JRE used by the
installer program was included in the product. However, to avoid potential
security vulnerabilities, the installer program no longer includes a JRE.
Instead, the installer program uses the JRE in your environment to allow for
the most secure version of a JRE to be used.
Note: This change does not affect the JVM requirements for the driver. For the latest
driver requirements, refer to the Product Compatibility Guide:
https://docs.progress.com/bundle/datadirect-product-compatibility/resource/
datadirect-product-compatibility.pdf
Release 6.0.0 Features
Enhancements
------------
* The driver has been enhanced to support stored procedures for
PostgreSQL 11 and later.
* The CallEscapeBehavior connection property has been added to the driver.
It determines whether the driver calls a user-defined function or a stored
procedure when JDBC Call escape syntax is used in a SQL statement.
* The driver has been enhanced to support the following types of data types:
- Network address types
- Monetary types
- Date/time types
- Range types
* The driver has been enhanced to support the TXID_SNAPSHOT data type.
* The driver has been enhanced to support the SCRAM-SHA-256 authentication
method, which uses a hashing mechanism for encrypting passwords to establish
a secure connection with PostgreSQL (v10.0 and higher). This method requires
a Java Virtual Machine (JVM) that is Java SE 8 or higher.
* The driver has been enhanced to include timestamp in the Spy and JDBC packet
logs by default. If required, you can disable the timestamp logging by
specifying the following at connection: For Spy logs, set
spyAttributes=(log=(file)Spy.log;timestamp=no) and for JDBC packet logs,
set ddtdbg.ProtocolTraceShowTime=false.
* Interactive SQL for JDBC (JDBCISQL) is now installed with the product.
JDBCISQL is a command-line interface that supports connecting your driver
to a data source, executing SQL statements and retrieving results in a
terminal. This tool provides a method to quickly test your drivers in an
environment that does not support GUIs.
* The driver has been enhanced to support a customized version of the PostgreSQL
COPY command. It provides an additional keyword, LOCALFILE, to allow you to
copy data from or to standard file-system files that are stored anywhere on
your network, not just on the database server. For details, refer to the
user's guide.
* The driver has been enhanced to support the PostgreSQL COPY command for batch
inserts. When BatchMechanism is set to copy, the driver leverages the
PostgreSQL COPY command for substantial performance gains.
* The driver has been enhanced to support retrieving the values of
auto-generated keys.
* The driver has been enhanced to support the following data types:
Citext, JSON, JSONB, and UUID.
* The driver has been enhanced to support the Kerberos authentication protocol
with the following connection properties:
- AuthenticationMethod
- ServicePrincipalName
* The ExtendedColumnMetadata connection property has been added to the driver.
This property determines how the driver returns column metadata when
retrieving results with ResultSetMetaData methods.
* The RegisterStatementPoolMonitorMBean connection property has been added to
the driver. Note that the driver no longer registers the Statement Pool
Monitor as a JMX MBean by default. You must set
RegisterStatementPoolMonitorMBean to true to register the Statement Pool
Monitor and manage statement pooling with standard JMX API calls.
Changed Behavior
----------------
* The default value for the SupportsCatalogs connection property has been
changed to true. Now, for catalog calls, such as getTables and getColumns,
the driver returns the database as catalog by default.
* Java SE 7 has reached the end of its product life cycle and will no longer
receive generally available security updates. As a result, the drivers will no
longer support JVMs that are version Java SE 7 or earlier. Support for
distributed versions of Java SE 7 and earlier will also end, including
IBM SDK (Java Edition).
Notes, Known Problems, and Restrictions
The following are notes, known problems, and restrictions with release 6.0.0 of
the driver.
Escaping backslashes in JDBC metadata queries
---------------------------------------------
When retrieving metadata for a table whose name contains a backslash (\), you
must escape it using four backslashes (\\\\) in the JDBC call. For example, if
your table is named table\name, specify it as table\\\\name. This is necessary
because both Java and SQL treat backslashes as escape characters.
Using parameterized queries in a Prepared Statement
---------------------------------------------------
When the EnablePrepareThreshold property is set to true and the PrepareThreshold
property is set a value other than 1, the driver does not use the server-side
prepare operation during connection.prepareStatement() calls for parameterized
queries. As a result, the driver is unable to map the accurate data type for the
following types as they can be mapped to multiple native types in the
server.
- Bit varying
- Boolean
- JSON
- Time with time zone
- UUID
To use server-side prepare operation for mapping data types, do the following:
* Set EnablePrepareThreshold to true and PrepareThreshold to 1.
* Set EnablePrepareThreshold to false for parameterized queries.
* Use the resultset metadata call before any parameterized queries.
Using Multiple Statements in a Prepared Statement
-------------------------------------------------
The PostgreSQL driver encounters the following issues when it attempts to use
multiple statements in a prepared statement:
* When attempting to call executeBatch(), the driver returns the following
error:
"com.ddtek.jdbc.base.BaseBatchUpdateException: [DataDirect][PostgreSQL JDBC
Driver][PostgreSQL]cannot insert multiple commands into a prepared statement."
* When a function call is a part of any of the statements used in the prepared
statement, the driver returns an error.
* When attempting to execute an Insert or an Update statement against a BYTEA
type column in PostgreSQL versions before 9.0, the driver returns the
following error:
"java.sql.SQLSyntaxErrorException: [DataDirect][PostgreSQL JDBC Driver]
[PostgreSQL]column "c_binary" is of type bytea but expression is of type bit.
You will need to rewrite or cast the expression."
* When attempting to execute setBoolean() against a BOOLEAN type column, the
driver returns the following error:
"java.sql.SQLSyntaxErrorException: [DataDirect][PostgreSQL JDBC Driver]
[PostgreSQL]column "c_boolean" is of type boolean but expression is of type
bit. You will need to rewrite or cast the expression."
Note: To work around this issue, you can use other set methods, such as
setObject() and setString().
Using Bulk Load
---------------
If the driver returns the error "The specified connection object is not valid
for creation of a bulk load object" while you are attempting to use the
DataDirect Bulk Load API, ensure that postgresql.jar is listed before any other
DataDirect drivers on your classpath.
Executing DataDirect Shell Script
---------------------------------
For UNIX/Linux users: If you receive an error message when executing any
DataDirect for JDBC shell script, make sure that the file has EXECUTE
permission. To do this, use the chmod command. For example, to grant EXECUTE
permission to the testforjdbc.sh file, change to the directory containing
testforjdbc.sh and enter:
chmod +x testforjdbc.sh
JDBC Methods
------------
The following notes on JDBC methods apply generally to Progress DataDirect for
JDBC drivers.
* The driver allows PreparedStatement.setXXX methods and ResultSet.getXXX
methods on Blob/Clob data types, in addition to the functionality described in
the JDBC specification. The supported conversions typically are the same as
those for LONGVARBINARY/LONGVARCHAR, except where limited by database support.
* Calling CallableStatement.registerOutputParameter(parameterIndex, sqlType)
with sqlType Types.NUMERIC or Types.DECIMAL sets the scale of the output
parameter to zero (0). According to the JDBC specification, calling
CallableStatement.registerOutputParameter(parameterIndex, sqlType, scale) is
the recommended method for registering NUMERIC or DECIMAL output parameters.
* When attempting to create an updatable, scroll-sensitive result set for a
query that contains an expression as one of the columns, the driver cannot
satisfy the scroll-sensitive request. The driver downgrades the type of the
result returned to scroll-insensitive.
* The driver supports retrieval of output parameters from a stored procedure
before all result sets and/or update counts have been completely processed.
When CallableStatement.getXXX is called, result sets and update counts that
have not yet been processed by the application are discarded to make the
output parameter data available. Warnings are generated when results are
discarded.
* The preferred method for executing a stored procedure that generates result
sets and update counts is using CallableStatement.execute(). If multiple
results are generated using executeUpdate, the first update count is returned.
Any result sets prior to the first update count are discarded. If multiple
results are generated using executeQuery, the first result set is returned.
Any update counts prior to the first result set are discarded. Warnings are
generated when result sets or update counts are discarded.
* The ResultSet methods getTimestamp(), getDate(), and getTime() return
references to mutable objects. If the object reference returned from any of
these methods is modified, re-fetching the column using the same method
returns the modified value. The value is only modified in memory; the database
value is not modified.
Documentation
PROGRESS DATADIRECT FOR JDBC FOR POSTGRESQL DRIVER USER'S GUIDE
---------------------------------------------------------------
The user's guide is available as an HTML help system on the DataDirect
documentation web page:
https://docs.progress.com/category/datadirect-postgresql
Installed Files
When you extract the contents of the installation download package to your
installer directory, you will notice the following files that are required to
install the driver:
* Windows:
- PROGRESS_DATADIRECT_JDBC_INSTALL.exe
- DriverModules
- PROGRESS_DATADIRECT_JDBC_POSTGRESQL_6.0.0_INSTALL.iam.zip
- PROGRESS_DATADIRECT_JDBC_COMMON_6.0.0_INSTALL.iam.zip
* Non-Windows:
- PROGRESS_DATADIRECT_JDBC_INSTALL.jar
- DriverModules
- PROGRESS_DATADIRECT_JDBC_POSTGRESQL_6.0.0_INSTALL.iam.zip
- PROGRESS_DATADIRECT_JDBC_COMMON_6.0.0_INSTALL.iam.zip
When you install the driver, the installer creates the following directories and
files in the product installation directory in the default installation
directory or in an installation directory you specify, represented by
INSTALL_DIR.
INSTALL_DIR/:
-------------
LicenseTool.jar Product license file manager
ddprocinfo.exe Windows executable to start the Processor Information
Utility
ddprocinfo UNIX/Linux script to start the Processor Information
Utility
fixes.txt Information on resolved issues for Progress
DataDirect for JDBC drivers
INSTALL_DIR/Examples/Bulk/:
---------------------------
Load From File/bulkLoadFileDemo.java
Java source example for bulk loading from a CSV file
Load From File/load.txt Sample data for the example
Streaming/bulkLoadStreamingDemo.java
Java source example for bulk loading from a result
set
Threaded Streaming/bulkLoadThreadedStreamingDemo.java
Java source example for multi-threaded bulk loading
from a result set
Threaded Streaming/README.txt
Instructions on how to use the thread.properties file
Threaded Streaming/thread.properties
Properties file for the example
INSTALL_DIR/Examples/JNDI/:
---------------------------
JNDI_FILESYSTEM_Example.java
Example Java(TM) source file
JNDI_LDAP_Example.java Example Java source file
INSTALL_DIR/help/:
------------------
*.html HTML redirects to driver help systems
INSTALL_DIR/install/:
---------------------
.psc_dd_inst_reg.xml Support file for the installation logs
logs/*.* Log file generated upon installation
INSTALL_DIR/jdbcisql/:
----------------------
jdbcisql.bat Batch file to start JDBC iSQL
jdbcisql.jar Java program to start JDBC iSQL
jdbcisql.sh Shell script to start JDBC iSQL
INSTALL_DIR/lib/:
-----------------
JDBCDriverLogin.conf Kerberos configuration file used to specify the JAAS
login module
INSTALL_DIR/lib/60/:
--------------------
postgresql.jar PostgreSQL Driver and DataSource classes
INSTALL_DIR/NOTICES/:
---------------------
JDBC for PostgreSQL v6.0 notices.txt
Third party agreement information
INSTALL_DIR/pool manager/:
--------------------------
pool.jar All DataDirect Connection Pool Manager classes
INSTALL_DIR/READMES/:
---------------------
JDBC for PostgreSQL v6.0 readme.txt
This file
INSTALL_DIR/testforjdbc/:
-------------------------
Config.txt Configuration file for DataDirect Test
ddlogging.properties Logging properties file
testforjdbc.bat Batch file to start DataDirect Test
testforjdbc.sh Shell script to start DataDirect Test
lib/testforjdbc.jar DataDirect Test classes
INSTALL_DIR/uninstall/:
-----------------------
.com.zerog.registry.xml Support file for the uninstaller
.psc_dd_uninst_reg.xml Support file for the uninstaller
InstallScript.iap_xml Support file for the uninstaller
installvariables.properties
Support file for the Windows uninstaller
Uninstall_JDBC.exe Windows uninstaller
Uninstall_JDBC.lax Support file for the Windows uninstaller
uninstaller.jar Java uninstaller
postgresql/*.* Support files for the uninstaller
resource/*.* Resource files for the Windows uninstaller
February 2026
================
End of README