README Progress(R) DataDirect(R) Progress DataDirect for ODBC for PostgreSQL Wire Protocol Driver Windows Platforms (32- and 64-bit) Release 8.0.2 May 2022 *********************************************************************** Copyright (c) 2022 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved. *********************************************************************** This README file contains information for Progress(R) DataDirect(R) for ODBC for PostgreSQL(TM) Wire Protocol Driver. This README file contains information not included in the PROGRESS DATADIRECT FOR ODBC FOR POSTGRESQL WIRE PROTOCOL DRIVER USER'S GUIDE. CONTENTS Driver Requirements Installation Directory Changes Since 8.0.2 GA Release 8.0.2 Features Driver WorkAround Options Notes, Known Problems, and Restrictions Documentation Installed Files for the 32-bit Driver Installed Files for the 64-bit Driver Driver Requirements * IMPORTANT: You must have the Microsoft Data Access Components (MDAC) installed to use this product. - For 32-bit Windows systems, version 2.6 or higher is required. - For 64-bit Windows systems, version 2.8 or higher is required. Depending on the version of your Windows operating system, these components may already be installed. You can download a utility that determines whether MDAC is installed and its version from the following Microsoft site: http://msdn.microsoft.com/en-us/data/aa937730.aspx You can also download MDAC from the same site. Installation Directory * The default installation directory for the 32-bit driver on a 64-bit system is: C:\Program Files (x86)\Progress\DataDirect\ODBC * The default installation directory for all other installations is: C:\Program Files\Progress\DataDirect\ODBC Changes Since 8.0.2 GA Certifications -------------- * The driver has been certified with Yellowbrick Data Warehouse Driver version 08.02.0758 (B0937, U0688) Driver Enhancements ------------------- * The driver has been enhanced to support the Windows certificate store for TLS/SSL server authentication. Refer to the user's guide for details. * The default version of the OpenSSL library has been upgraded to version 1.1.1n, which fixes the following security vulnerabilities: - Infinite loop in BN_mod_sqrt() reachable when parsing certificates (CVE-2022-0778) - BN_mod_exp may produce incorrect results on MIPS (CVE-2021-4160) This upgrade is available in build 08.02.0216 of the following OpenSSL library files: ivtls28.dll (32-bit) and ddtls28.dll (64-bit). Version 1.1.1n also addresses vulnerabilities resolved by earlier versions of the library. For more information on OpenSSL vulnerabilities resolved by this upgrade, refer to the corresponding OpenSSL announcements at: https://www.openssl.org/news/vulnerabilities-1.1.1.html * The Batch Mechanism (BatchMechanism) connection option has been enhanced to support the native batch protocol for batch inserts. When BatchMechanism is set to 4 (NativeBatch), the driver uses the native batch protocol for the insert operation of all batched parameters. For update and delete batch operations, the driver uses the native batch mechanism by default to handle the request. * The driver has been enhanced to support TLS/SSL server authentication for the applications deployed in a serverless environment. The driver stores the TLS/SSL certificates in memory and lets applications use TLS/SSL server authentication without storing the truststore file on the disk. To use this enhancement, specify the content of the certificate in the refreshed Trust Store (Truststore) connection option or the new SQL_COPT_INMEMORY_TRUSTSTORECERT pre-connection attribute. Refer to the user's guide for details. * The curl library files that are installed with the product have been upgraded to version 7.80.0, which fixes a number of potential security vulnerabilities. For more information on the vulnerabilities resolved by this enhancement, refer to: https://curl.haxx.se/docs/vulnerabilities.html. This upgrade is available starting in build 08.02.0278 of the curl library files. * The Use Declare Fetch (UseDeclareFetch) and Fetch Size (FetchSize) connection options have been added to the driver. The Use Declare Fetch option determines whether the driver attempts to return a result set in a single fetch or across multiple fetches. If multiple fetches are used, the setting of the Fetch Size option determines the size of each fetch. For large result sets, retrieving rows in multiple fetches can improve response time and thereby prevent possible timeouts. Refer to the user's guide for details. Changed Behavior ---------------- * The default values for the Unbounded Numeric Precision (UnboundedNumericPrecision) and Unbounded Numeric Scale (UnboundedNumericScale) connection options have been changed to -1. Now, by default, the driver will return the values from the unbounded NUMERIC columns without modifying their precision and scale. Release 8.0.2 Features Certifications -------------- * The driver has been certified with PostgreSQL 14 Driver version 08.02.0740 (B0921, U0675) Driver Enhancements ------------------- * Note: OpenSSL library 1.1.1l has been replaced with version 1.1.1n. In addition to fixing multiple new vulnerabilities, version 1.1.1n also addresses the vulnerabilities resolved by version 1.1.1l. The default version of the OpenSSL library has been upgraded to version 1.1.1l, which fixes the following security vulnerabilities: * SM2 Decryption Buffer Overflow (CVE-2021-3711) * Read buffer overruns processing ASN.1 strings (CVE-2021-3712) This upgrade is available in build 08.02.0181 of the following OpenSSL library files: ivtls28.dll (32-bit) and ddtls28.dll (64-bit). * The driver has been enhanced to support stored procedures for PostgreSQL 11 and later. * The Call Escape Behavior (CallEscapeBehavior) connection option has been added to the driver. The driver determines whether to call a user-defined function or a stored procedure based on the value specified for this option. * The driver has been enhanced to support certificate-based authentication. It uses TLS/SSL protocol for authentication and authenticates the client to the server if the TLS/SSL client certificate is issued by a trusted Certificate Authority (CA) and the Common Name (cn) attribute of the TLS/SSL client certificate matches the database user name. Two new connection options, Client SSL Certificate and Client SSL Key, have been added to support this authentication method. Refer to the user's guide for details. * The Show Selectable Tables (ShowSelectableTables) connection option has been added to the driver. It determines whether the driver returns metadata for all tables or only for the tables for which the user has Select privileges. It can help the users with restricted Select privileges retrieve metadata for the required tables. * The driver has been enhanced to support the scram-sha-256-plus authentication method, which uses channel binding for establishing a secure connection with PostgreSQL (v11.0 and higher). * The driver has been enhanced with the new Batch Mechanism (BatchMechanism) connection option, which specifies the preferred mechanism for executing batch insert operations. By setting Batch Mechanism to 2 (MultiRowInsert) or 3 (Copy), the driver can achieve substantial performance gains when performing batch inserts. Refer to the user's guide for details. * The driver has been enhanced to support the following data types: Citext, Float, and Tinyint. Refer to the user's guide for details. * The drivers using base version B0649 and later have been enhanced to include timestamp in the internal packet logs by default. If you want to disable the timestamp logging in packet logs, set PacketLoggingOptions=1. The internal packet logging is not enabled by default. To enable it, set EnablePacketLogging=1. * The new AllowedOpenSSLVersions option determines which version of the OpenSSL library file the driver uses for data encryption when multiple versions are installed with the product. For example, when specifying a value of 1.1.1 (AllowedOpenSSLVersions=1.1.1) the driver uses the 1.1.1 version of the library that is installed with the driver. * A Power BI connector is now included with the product package. You can use this connector to access your PostgreSQL data with Power BI. Refer to the user's guide for details. * The driver has been enhanced to support Select queries with parameterized arrays. * The driver has been enhanced to support md5 and scram-sha-256 authentication methods. * The driver has been enhanced to support materialized views and foreign tables. Changed Behavior ---------------- * For PostgreSQL 9.0 and later, the driver behavior has been updated to support executing multiple prepared statements in a single query that contain inserts for BYTEA values. However, for versions earlier than PostgreSQL 9.0, this functionality is not supported and the driver returns an error. * The default value for the Batch Mechanism (BatchMechanism) connection option has been changed to 3 (Copy). The driver now, by default, uses the PostgreSQL COPY command to insert rows into the target table. It allows the driver to achieve substantial performance improvements over 1 (SingleRowInsert) when performing batch inserts. Refer to the user's guide for details. * The following Windows platforms have reached the end of their product lifecycle and are no longer supported by the driver: - Windows 8.0 (versions 8.1 and higher are still supported) - Windows Vista (all versions) - Windows XP (all versions) - Windows Server 2003 (all versions) Driver WorkAround Options Progress DataDirect has included non-standard connection options (workarounds) for the driver that enable you to take full advantage of packaged ODBC-enabled applications requiring non-standard or extended behavior. Refer to the chapter "WorkAround options" in THE PROGRESS DATADIRECT FOR ODBC DRIVERS REFERENCE for a description of these options. Notes, Known Issues, and Restrictions Character Limit of the Trust Store Field (Driver setup dialog) --------------------------------------------------------------- The Trust Store field on the Driver setup dialog supports content up to 8192 characters in length. For specifying certificate content longer than 8192 characters, edit the registry and manually add the entry to the DSN. Limitations of Use Declare Fetch (UseDeclareFetch) connection option -------------------------------------------------------------------- * The Use Declare Fetch server-side cursor is not supported with: - SELECT FOR UPDATE queries - SELECT INTO queries - Stored procedures - Batch queries (queries separated with semicolons) - Keyset cursors * When Use Declare Fetch is enabled (UseDeclareFetch=1), the Numeric field values are returned in textual format. * If you enable the Use Declare Fetch option (UseDeclareFetch=1) when connecting to a Yellowbrick server and attempt to execute a SQL query with aggregate functions, such as count() and groupby(), the driver will return the following error: "Unsupported node for serialization." Specifying values for the same connection option multiple times --------------------------------------------------------------- The driver does not support specifying values for the same connection option multiple times in a connection string or DSN. If a value is specified using the same attribute multiple times or using both long and short attributes, the connection may fail or the driver may not behave as intended. 126 Error When Modifying Data Sources on Windows 10 --------------------------------------------------- You may receive a 126 error when adding or configuring a data source stored on a network location. This is caused by the settings of the User Account Control (UAC) security feature on Windows 10. To work around this issue: Important: Implementing this fix disables security safeguards that are designed to protect your machine. Before starting, refer to the following Microsoft documentation for potential risks associated with disabling the UAC feature: http://windows.microsoft.com/en-us/ windows/what-are-user-account-control-settings 1. From the Start menu, type regedit in the search field; then, select regedit from the results list. The Registry Editor window opens. 2. Navigate to the following registry subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 3. Right-click on the subkey; then, select New > DWORD Value. 4. Rename the new value EnableLinkedConnections. 5. Right-click EnableLinkedConnections, and then click Modify. The Edit DWORD Value window opens. 6. In the Value data field, type 1. Click OK. 7. Close the Registry Editor; then, restart your computer. For SSL Users ------------- When trying to connect to a database using SSL encryption, you may receive an error message similar to: "PRNG not seeded". This is because certain versions of some operating systems do not generate truly random numbers necessary for encryption. For more information about this error and available patches, please refer to the Web site: http://www.openssl.org/support/faq.html#USER1 ODBC Development on Windows Platforms -------------------------------------- Please read the notices.txt file in the installation directory for licensing information regarding the ODBC Core Components. Contact your Progress DataDirect representative if you have any questions. SQLColAttribute(s) ------------------ The column attributes 1001 and 1002, which were assigned as DataDirect- specific attributes, were inadvertently used as system attributes by the Microsoft 3.0 ODBC implementation. Applications using those attributes must now use 1901 and 1902, respectively. SQL_C_NUMERIC ------------- Because of inconsistencies in the ODBC specification, users attempting to use SQL_C_NUMERIC parameters must set the precision and scale values of the corresponding structure and the descriptor fields in the Application Parameter Descriptor. For Developers Using IIS ------------------------ One of the most common connectivity issues encountered while using IIS (Microsoft's Internet Information Server) concerns the use and settings of the account permissions. If you encounter problems using DataDirect drivers with an IIS server, refer to KnowledgeBase document number 4274 on the Progress DataDirect web site: http://knowledgebase.datadirect.com. For Microsoft Access Users -------------------------- Some SQL implementations, such as PROGRESS, do not allow queries to contain the COUNT function without the DISTINCT set quantifier. For example, "SELECT COUNT(empid) FROM employees" is not a valid SQL query for PROGRESS. This type of query can be generated using Microsoft Access and results in an error. Documentation PROGRESS DATADIRECT FOR ODBC FOR POSTGRESQL WIRE PROTOCOL DRIVER DOCUMENTATION SET ----------------------------------------------------------------- The user's guide is available as an HTML help system on the DataDirect documentation web page: https://docs.progress.com/category/datadirect-postgresql You can also launch the help system by clicking Help (? button) in the Setup dialog box. Installed Files the 32-bit Driver This file list assumes a full installation of the driver and documentation. The installer copies the following file to the Windows system directory: ivtrc28.dll DataDirect trace library The installer copies the following files and subdirectories to the product installation directory, by default: For the 32-bit driver on 64-bit machines: C:\Program Files (x86)\Progress\DataDirect\ODBC For all other installations: C:\Program Files\Progress\DataDirect\ODBC \\: ---------------- license.txt Progress DataDirect license agreement \drivers\: --------- ivcurl28.dll Library used for HTTP connection ivicu28.dll Unicode conversion tables ivpsql28.dll PostgreSQL Wire Protocol Driver ivpsql28r.dll PostgreSQL Wire Protocol Driver resource file IVODBC.LIC DataDirect license file ivssl28.dll TLS/SSL support file (OpenSSL library file, version 1.0.2u) ivtls28.dll TLS/SSL support file (OpenSSL library file, version 1.1.1n) ivtrc28.dll DataDirect trace library qesqlext.h Header file for DataDirect-specific ODBC Definitions \drivers\OpenSSL\1.0.2d\: ------------------------ ivssl28.dll TLS/SSL support file (OpenSSL library file, version 1.0.2d) \drivers\OpenSSL\latest\: ------------------------ ivssl28.dll TLS/SSL support file (OpenSSL library file, version 1.0.2u) \FIXES\: -------- fixes8.0.txt List of fixes since last release \help\: ------ *.html HTML redirects to online connector help systems and documentation resources \install\: --------- *.* Files associated with the installer program \jre\: ----- *.* Files associated with the PostgreSQL WP driver \NOTICES\: --------- ODBC for PostgreSQL v8.0 notices.txt Third-party vendor license agreements \READMES\: --------- ODBC FOR PostgreSQL v8.0 readme.txt This file \samples\bulk\: -------------- bulk.c Bulk example source bulk.exe Bulk application bulk.mak Bulk example make file bulk.sln Bulk example solution file bulk.vcproj Bulk example project file ddlogging.properties Log configuration file for the PostgreSQL driver \samples\bulkstrm\: ------------------ bulk.cpp Bulk streaming example source bulk.hpp Bulk streaming example header bulk.rc Bulk streaming example resource file bulkstreaming.sln Bulk streaming example solution file bulkstreaming.vcproj Bulk streaming example project file bulkstrm.exe Bulk streaming example application bulkstrm.txt Bulk streaming description msgprintf.hpp Bulk streaming example header file ProgressDataDirect.bmp ProgressDataDirect.ico winmain.cpp Bulk streaming example source file ddlogging.properties Log configuration file for the PostgreSQL driver \samples\example\: ----------------- example.c Example source Example.exe Example application example.h Example header Example.mak Example make file Example.sln Example solution file Example.vcxproj Example project file ddlogging.properties Log configuration file for the PostgreSQL driver \samples\translat: ----------------- LIBMAIN.C README.TRN Translation Library example description TRANSLAT.C Translation Library example source file WINNT.MAK Translation Library example make file \TOOLS\: ------- ddextwin.exe License Extender utility ddprocinfo.exe Processor Information utility DSNConverterSIL.exe Data Source Converter utility XMLP.exe A GUI demo tool that persists a result set to an XML data file \TOOLS\Power BI: ---------------- DataDirectPostgreSQL.pqx PostgreSQL Power BI connector file install.bat Batch file to install Power BI connectors \TOOLS\Tableau: ---------------- DataDirect PostgreSQL.tdc Tableau data source file \UNINSTALL\: ----------- *.* Files used to uninstall the product Installed Files for the 64-bit Driver This file list assumes a full installation of the driver and its documentation. The installer copies the following file to the Windows system directory: ddtrc28.dll DataDirect trace library The installer copies the following files and subdirectories to the product installation directory, by default: C:\Program Files\Progress\DataDirect\ODBC: \\: ---------------- license.txt Progress DataDirect license agreement \drivers\: --------- ddcurl28.dll Library used for HTTP connection ddicu28.dll Unicode conversion tables ddpsql28.dll PostgreSQL Wire Protocol Driver ddpsql28r.dll PostgreSQL Wire Protocol Driver resource file DDODBC.LIC DataDirect license file ddssl28.dll TLS/SSL support file (OpenSSL library file, version 1.0.2u) ddtls28.dll TLS/SSL support file (OpenSSL library file, version 1.1.1n) ddtrc28.dll DataDirect trace library qesqlext.h Header file for DataDirect-specific ODBC Definitions \drivers\OpenSSL\1.0.2d\: ------------------------- ddssl28.dll TLS\SSL support file (OpenSSL library file, version 1.0.2d) \drivers\OpenSSL\latest\: ------------------------ ddssl28.dll TLS\SSL support file (OpenSSL library file, version 1.0.2u) \FIXES\: -------- fixes8.0.txt List of fixes since last release \help: ------ *.html HTML redirects to online connector help systems and documentation resources \install\: --------- *.* Files associated with the installer program \jre: ----- *.* Files associated with the PostgreSQL WP driver \NOTICES: --------- ODBC for PostgreSQL v8.0 notices.txt Third-party vendor license agreements \READMES: --------- ODBC for PostgreSQL v8.0 readme.txt This file \samples\bulk\: --------------- bulk.c Bulk example source bulk.exe Bulk application bulk.mak Bulk example make file bulk.sln Bulk example solution file bulk.vcproj Bulk example project file ddlogging.properties Log configuration file for the PostgreSQL driver \samples\bulkstrm\: ------------------- bulk.cpp Bulk streaming example source bulk.hpp Bulk streaming example header bulk.rc Bulk streaming example resource file bulkstreaming.sln Bulk streaming example solution file bulkstreaming.vcproj Bulk streaming example project file bulkstrm.exe Bulk streaming example application bulkstrm.txt Bulk streaming description msgprintf.hpp Bulk streaming example header file ProgressDataDirect.bmp ProgressDataDirect.ico winmain.cpp Bulk streaming example source file ddlogging.properties Log configuration file for the PostgreSQL driver \samples\example\: ------------------ example.c Example source Example.exe Example application example.h Example header Example.mak Example make file Example.sln Example solution file Example.vcxproj Example project file ddlogging.properties Log configuration file for the PostgreSQL driver \samples\translat: ----------------- LIBMAIN.C README.TRN Translation Library example description TRANSLAT.C Translation Library example source file WINNT.MAK Translation Library example make file \TOOLS: ------- ddextwin.exe License Extender utility ddprocinfo.exe Processor Information utility DSNConverterSIL.exe Data Source Converter utility XMLP.exe A GUI demo tool that persists a result set to an XML data file \TOOLS\Power BI: ---------------- DataDirectPostgreSQL.pqx PostgreSQL Power BI connector file install.bat Batch file to install Power BI connectors \TOOLS\Tableau: ---------------- DataDirect PostgreSQL.tdc Tableau data source file \UNINSTALL\: ------------ *.* Files used to uninstall the product ~~~~~~~~~~ May 2022 End of README