Progress DataDirect for JDBC for PostgreSQL Driver

    An asterisk (*) indicates support that was added in a hotfix or software patch subsequent to a release.

    Refer to the following resources for additional information:

    • Product Compatibility Guide: Provides the latest data source and platform support information. 
    • Fixes: Describes the issues resolved since general availability.  

    Version 6.0.0

    ENHANCEMENTS
    • The driver supports the Geography and Geometry data types with the getColumns() method.*
      Available: 5/06/2025 | 6.0.0.001767
    • 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. Refer to FIPS (Federal Information Processing Standard) for details.*
      Available: 1/31/2025 | 6.0.0.001659
    • 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.
      Available: 8/20/2024 | 6.0.0.001552
    • 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

      For details, refer to Microsoft Entra ID authentication.
      Available: 8/20/2024 | 6.0.0.001552

    • The driver has been enhanced to support the TLSv1.3 cryptographic protocol. Refer to CryptoProtocolVersion for details.
      Available: 7/2/2024 | 6.0.0.001479
    • 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.*
      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. Refer to EnablePrepareThreshold and PrepareThreshold for details.*
    • The driver has been enhanced to support stored procedures.
    • The CallEscapeBehavior connection property has been added to the driver. It determines whether the driver calls a user-defined function or a stored procedure. Refer to CallEscapeBehavior for details.
    • The driver has been enhanced to support the following types of data types:
      • Network address types
      • Monetary types
      • Date/time types
      • Range types
      Refer to Data types for details.
    • The driver has been enhanced to support the TXID_SNAPSHOT data type. Refer to Data types for details.
    • 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. 
    • 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 Using COPY command.
    • 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. For details, refer to Using COPY command.
    • The driver has been enhanced to support retrieving the values of auto-generated keys. For details, refer to Auto-generated keys support.
    • The driver has been enhanced to support the following data types: Citext, JSON, JSONB, and UUID. Refer to Data types for details
    • The driver has been enhanced to support the Kerberos authentication protocol with the following connection properties:
      • AuthenticationMethod
      • ServicePrincipalName
      Refer to Kerberos authentication for details.
    • 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. Refer to ExtendedColumnMetadata for details.
    • 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. Refer to RegisterStatementPoolMonitorMBean 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. If a log file name does not include the .log extension, the driver automatically appends it.*
      Available: 10/17/2025 | 6.0.0.001856
    • The driver has been updated to remove all sensitive values from the string returned by calling getURL(). You might be impacted if your applications or tests expect these values when calling the function.
    • 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.
      Available: 7/3/2024
    • The default value for the SupportsCatalogs connection property has been changed to true. Refer to SupportsCatalogs for details.
    NOTES, KNOWN ISSUES, AND LIMITATIONS
    • 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.

    Version 5.1.4

    ENHANCEMENTS
    • The CryptoProtocolVersion connection property has been added to the driver. This property can be used to avoid vulnerabilities associated with SSLv3 and SSLv2, including the POODLE vulnerability.
    • Support for result set holdability has been added to the driver.

    Version 5.1.2

    ENHANCEMENTS
    • Added SupportsCatalogs connection property, which enables driver support for catalog calls
    • Added four connection properties to handle VARCHAR, LONGVARCHAR, and NUMERIC data types: MaxVarcharSize, MaxLongVarcharSize, MaxNumericPrecision, and MaxNumericScale

    Version 5.1.1

    GA Release Features
    • Supports SQL access to PostgreSQL
    • Supports SSL protocol for sending encrypted data
    • Supports connection pooling
    • Supports the DataDirect Bulk Load API
    • Includes the TransactionErrorBehavior connection property which determines how the driver handles errors that occur within a transaction
    • Includes the LoginTimeout connection property which allows you to specify the amount of time the driver waits for a connection to be established before timing out the connection request

    Connect any application to any data source anywhere

    Explore all DataDirect Connectors

    A product specialist will be glad to get in touch with you

    Contact Us