June 17, 2024    Ver (beta2)

Received feedback from Beta1 users and made corrections.
Improved stability when handling errors.
Added support for geometry and geography types.
Migrated changes from

January 22, 2024    Ver

Fixed bugs when running reports with named parameters in SSRS; e.g. get_report(@month).
Fixed bugs in TRIM parameters processing, e.g. when FROM clause is wrapped in parens.
Fixed bug in processing WHEN-THEN-ELSE <subquery> clause.
Fixed bug in processing subquery in expressions.
Fixed bug in storing "Force Codepage" parameter in Data Link Properties dialog.
Fixed bug in handling INSERT-SELECT-UNION-SELECT statement.
Fixed bug in handling "row_number() over" clause.
Redshift: Added Extended Properties parameter XTABLES (default: ON) that enables external tables. The support could be disabled for performance.
PGNProfiler: Added the actual executed statement text along with the error occurred.

October 15, 2023    Ver (beta)

Federated Authentication (SSO) supported.
Multiple internal components optimized, new C++20 features used, Visual Studio 2022 compiler is used for all components.
Various enhancements: obtaining connection string parameters from Registry, tracking product status via tray application, etc.
Subscription model enabled.
Defects known in previous version of Product fixed.

August 12, 2023    Ver

Added support for custom user impersonation (to address issue in Kerberos+SSAS2019).
Fixed bug in parsing concat expression in LIKE operator, e.g.: ... LIKE t.col||'%'
Fixed bug in handling queries with CASE-WHEN-THEN(SUBQUERY) clause.
Fix for a bug in SSPI login (current user name was not processed correctly in some scenarios).

May 31, 2023    Ver

Fixed bug in handling table name longer than 63 symbols. Added extended property parameter NAMEDATALEN.
Fixed bug in processing results of commands batch with size larger than 16.
Fixed bug in returning rowset when CURSOR=SINGLEROW.

February 8, 2023    Ver

Added TYPES schema.
Fixed bug in handling recursive CTE query when it joins to itself.
Fixed bug in handling CTEs with list of columns.
Fixed bug in processing complex expressions with aggregate functions.
Fixed bug in processing Numeric fields that resulted in the following linked server error: Invalid data for type "numeric".
Fixed side-effect from changes in release 3672 related to handling stored procedures.
PGNProfiler: added global lock for better resources isolation.

October 11, 2022    Ver

Fixed bug in reporting errors to .Net: SqlState is now set correctly to HY000.
Fixed bug in processing command parameters with type BYTES.
Fixed bug in handling stored procedure call with name in double quote, e.g. call public."MixCase"().
Fixed parse error when SIMILAR TO clause is used.
Fixed parse error when VERSION=? is used in a statement (enabled VERSION keyword).
Fixed bug in processing queries with Set Aggregate Functions, e.g. select percentile_cont(0.5) within group (order by value) from percent_test group by name.

May 31, 2022    Ver

Fixed bug in handling 'string' type in the Redshift/Glue external tables.
Fixed bug in handling 'citext' type on insert.
Fixed bug in handling 'bytea' type resulting in memory corruption (side effect of optimization in build 3656).
Fixed bug when inserting Nulls and and handling columns with default values.
PGNProfiler: fixed issue when trace was not collected from Redshift OLEDB Provider.
PGNProfiler: fixed crash on startup when remote hosts configured without user password.

February 14, 2022    Ver

Fixed a side-effect from previous performance optimization for query results.
Fixed bug in handling bpchar column without specified size.

February 7, 2022    Ver

Performance optimizations for query results.
Fixed bug "An unexpected NULL was returned for column" when querying a column from subquery in linked server.
Fixed bug in determining expression type in some scenarios when function is used in the expression.
Fixed bug in processing expressions with OVERLAPS keyword.
PGNProfiler: Added parameter content printing for DBTYPE_BYTES.
PGNProfiler: Fixed coloration issues in Dark theme.

October 4, 2021    Ver

Fixed bug in processing query with WINDOW clause.
Fixed bug resulting in error "column not found" in some scenarios.
Fixed bug in ColumnsRowset resulting in error "Dynamic SQL generation for the UpdateCommand is not supported for a SelectCommand that does not return key column information."
Fixed bug in populating parameter alias, e.g.: SELECT @Parameter0 AS xyz.
Added trace messages for GSS/KRB connect.
PGNProfiler: minor UI enhancements.

June 9, 2021    Ver

Fixed bug in handling Schemata in Redshift.
Fixed bug in processing xmlelement function.
Fixed bug in handling some statements with T-sql syntax: e.g. drop Table [contact].
Fixed bug in handling comment "--PGNP:CURSOR=SINGLEROW;"
Fixed bug in handling STRING_AGG function.
Fixed bug in handling queries with FOR UPDATE/FOR SHARE (cursor cannot be scrollable).
Fixed issues in handling transactional replication when BULK_METHOD=PIPECOPY.
Fixed bug in PGNPUpdate that falsely showed that PGNP.dll is locked.
PGNProfiler: added Dark Theme.
PGNProfiler: fixed bug in displaying statements with Unicode symbols.
PGNProfiler: pick up trace as soon as Provider is loaded. Previously some initial messages might be missing from the trace.

February 8, 2021    Ver

Fixed bug in evaluating column information returned from some functions (BTRIM).
Fixed bug in retrieving column information the the pre-9.1 Postgresql.
Fixed bug in setting Syntax parameter in DataLink dialog.
Fixed scale calculated in expressions for date and time types.
Fixed bug in releasing unused rows.
Fixed bug resulting in Profiler crash when RemoteHosts configuration is very long.
Fixed minor bug in loading SSL certificate from a custom path (SSLCERT parameter).
Fixed bug in DataLink Advanced tab UI when handling SSLCERT and other parameters.
Changed allowed range for MIN_FETCH_ROWS to 100..20000.
Set permanent flag for msvcr120.
Improved stability of the OLEDB provider in VS2019 and other applications.
Made GSSENCMODE=disable parameter by default.
Disabled using scrollable cursors for Yellowbrick.

November 8, 2020    Ver

Fixed bug resulting in "undefined table" and "port number: 0".

October 8, 2020    Ver

Added handling of query comments as Extended Properties parameters, e.g.: --PGNP:CURSOR=OFF;MIN_FETCH_ROWS=543;
Added failover capability, and updated Developers Manual.
Added support for Extended Property parameter GSSENCMODE=disable; and for SSLCERT, SSLKEY, SSLROOTCERT, SSLCRL.
Enabled cross-db queries for Yellowbrick.
Recompiled with libpq12 and openssl-1.1.1h.
Fixed bug in handling an aggregation function filter-clause.
Fixed bug in handling CTE resulting in error "Undefined table xyz".
Fixed bug in handling mixed case catalog name in a 3-part identifier.
Fixed bug in handling 3-part function call, e.g. SELECT * FROM postgres.public.testproc().
PGNProfiler: fixed minor misalignment for selected line.
PGNPUpdate: removed dependency on Windows Server 2008. Now utility can be used on Win Server 2003 and later.
PGNPUpdate: fixed error "Could not determine the installation location" when 32-bit msi is installed on 64-bit OS.

May 13, 2020    Ver

Added support for jsonb[] type.
Fixed bug in handling multiple type modifiers, e.g. 20191219::TEXT::DATE.
Fixed bug in handling function return alias.
Fix: affected rows count were not returned from ExecuteNonQuery in C#.
Fixed bugs in the columns information schema.
Fixed bug "Cannot map the lookup column, because the column data type is a binary large object block (BLOB)" when TEXT_AS_LONGVARCHAR=OFF.

Introduced Extended Properties parameter REPLACEUSC. When ON it substitutes _ with ~ in query tables schema commands, and substitutes ~ back to _ for tables name in SQL commands.

February 6, 2020    Ver

Added support for remote tables.
Fixed issue in querying materialized views in Postgres 9.3 and later.
Fixed bug returning Output parameter(s) of stored procedure.
Fixed bugs when querying void stored procs.
Fixed bug in turning cursor on for prepared queries.
Fixed exception in columns schema retrieval in 64-bit mode.
PGNProfiler: populated AppName when copying trace message to clipboard.

December 4, 2019    Ver

Implemented support for Postgres 12.
Fixed method of temporary schema name determination that resulted in errors in read-only DBs.
Changed libpq10 to verify the root certificate only in "verify-ca" or "verify-full" modes.
In those modes files root.crt, .crl and postgresql.key are verified in the folder C:\Users\uname\AppData\Roaming\postgresql.

October 16, 2019    Ver

Fixed bug in handling database names with space.
Fixed bug in importing data into xml field.
Fixed bugs in handling system columns xmin, cmin, etc.
Fixed bug in MapColumnIDs method on command object.
Fixed bug in handling property change for CURRENT_CATALOG.
Fixed bug in internal buffers handling when bulk-inserting large number of records.
Added bookmarks support to the schema rowsets.
Redshift: fixed bugs when inserting Unicode chars and multi-line text.

August 22, 2019    Ver

Fixed error in retrieving procedures metadata in Postgres 11 (proisagg undefined).
Fixed bug in handling materialized views (undefined table error).
Fixed crash when releasing the metadata dictionary (scenario with linked servers).
Fixed bug "identifier too long" when retrieving index with name longer than 63 characters.
Fixed bug in handling DBTYPE_BYTES: parameter size was returned as 0.
Fixed bug in handling PRIMARY TABLE after column type.
Fixed version stamping for PGNPUpdate.
Fixed bug in handling inserting bytea data from Image in ETL.
Redshift: fixed bug in handling "no schema" views (added call to pg_get_late_binding_view_cols).
Fixed bug in handling queries with DISTINCT ON (expr).
PGNProfiler/Optimizer: Added hints for literal values.
Fixed several issues in Denodo Provider (columns metadata, procedures with parameters in columns list, etc.)

November 8, 2018    Ver

Stability improved in VS2017/SSIS.
Fixed bug resulting in Error: Invalid ColumnID when processing tables in SSAS 2017 Tabular.
Fixed bug in handling TFD in square brackets, e.g. CREATE TABLE [t] ([id] [int]), when SYNTAX=T-Sql.
Fixed bug in mapping columns in FastLoad mode (it was visible as ERROR:  cannot cast type integer to timestamp without time zone).
PGNPUpdate: added console parameters support.

October 4, 2018    Ver

Added Extended Properties parameter BULK_METHOD=TEXTCOPY for faster data import from text files in SSIS.
Added support for Redshift external tables.
Optimized performance of execution trace logging (checking connected pipes every 50ms).
Enabled connection string parameter SYNTAX for Postgres and T-Sql.
Sorted properties names in the Advanced pane of the Data Link Properties.
Implemented several stability enhancements.
Fixed bug in handling bit(1) fields.
Fixed bug: missing 'n' character when handling CREATE TABLE statement.
Fixed sorting in tables schema.
Fixed bug in returning query result when DDL statement is specified before the query. E.g.:
      CREATE TEMP TABLE test1(col1 INT NOT NULL PRIMARY KEY, col2 varchar(100));
      INSERT INTO test1 SELECT 111112, 'misc1';
      SELECT * FROM test1;
PGNPUpdate: Added dialog to enable access to provider for non-standard users (i.e. special accounts used by SSAS or SQL Server).

June 21, 2018    Ver

Added support for querying very large rowsets via "single row mode" cursor.
Fixed bug in handling Postgres 10 "partitioned" tables.
Profiler: Added code to display filtration progress.
Profiler: Enabled cancellation of filtration.

March 31, 2018    Ver

Installer: Added checkbox that enables launching PGNPUpdate utility after the installation completion.
Upgraded openssl to version 1.0.2n, and made SSL=prefer mode default.
Enabled support for LATERAL keyword.
Fixed bug in SSL verify-ca/verify-full handling.
Fixed bug in handling Korean symbols during FastLoad.
Fixed bug: provider should not send NOTIFY when handling schema altering statement and EVENTS=NONE.
Fixed bug in handling TRIM function parameters.
Fixed bug in handling CTEs resulting in error "Undefined column".
Profiler: Added options to not truncate parameters and to format statements for pgAdmin (no param type in square brackets).

November 27, 2017    Ver

Added support for Statistics and Table Statistics schema.
Added support for Postgres 10.
Fixed a bug that prevented the "Script Table as" from working correctly in a linked server.
Fixed bug in handling prepared queries resulting in the error "cursor already exists".
Fixed defect in returning column info when cursors are disabled.
Fixed defect in indexing column information when multiple queries used in a single statement.
Fixed defect in handling temporary tables in INSERT and UPDATE statements.
Fixed bug in fields data conversion when CURSOR=OFF.
Fixed parsing issues when t-sql syntax for identifiers with special characters is used, e.g. [item#].[allow>0].
Fixed parsing issues caused by some unreserved keywords,e.g. Returns, Row.
Fixed bug in processing arrays when multiple results returned (from queries separated by semicolons).
Added C++ sample: MultipleResults.
Improved errors reporting and profiler logging during process of connecting to a database.

July 10, 2017    Ver

Fixed bug in RowsetFastLoad resulting in errors when inserting NULL values and some special characters in Redshift and Greenplum.
Fixed bug: incorrect bytea length returned.
Fixed bug in returning tables schema in Redshift when called from VS2017.
Improved stability of deferred updates.
Added more profiler comments for the Redshift bulk import.
PGNPUpdate: added code to set product version correctly after a successful update (in the Programs and Features).
PGNPUpdate: fixed bug that resulted in inability to update product from some recent releases.

February 17, 2017    Ver

Performance optimizations for queries.
Fixes for better compatibility and stability when working with SQL Server 2016.
Redshift: added support for the AWS Signature Version 4.
Fixed bug in TRIM function handling resulting in syntax error.
Added connection string parameter REFRESH_META, and the "auto-refresh" feature for the internal metadata cache.
PGNProfiler: fixed a minor defect in restoring panes sizes on start.

August 29, 2016    Ver

Added Windows time zones support, configurable via tznames.csv file. The provider can display timestamps in any specified time zone.
Redshift: added support for the S3 server side encryption (connection string parameter AWS_S3_HEADER).
Added connection string parameter SQL_PROLOG.
Fixed bug in handling SELECT col AT TIME ZONE 'UTC'.
Fixed bug "Failed to parse" for query containing TIMESTAMP 'Str' AT TIME ZONE 'Str'.
Fixed bug "timestamptz was not converted to local time zone".
Fixed bug in refreshing metadata.
Fixed bug in updates for BLOB type.
Fixed exception/crash when connection is configured in Excel.

June 12, 2016    Ver

Added Extended Properties parameter STREAM.
Optimized metadata loading when table with the same name exists in multiple schema.
Stability and performance improvement for bulk load.
Fixed bug in FastLoad to Redshift - symbol "!" was replaced with \041.
Fixed memory leak when querying Redshift and cursors enabled.
Fixed side effect from prev change resulting in "undefined table" when querying schema.table.
Profiler: allowed passing .pgl files as command line parameters. Fixed bug in the explorer refresh: if more than a single .pgl file is open then the list of open file can start duplicating entries.
Profiler: fixed bug - could not open .csv file as command line parameter.

March 8, 2016    Ver

Fixed bugs in SSPI and Kerberos authentication.
Fixed bugs in handling WITH ORDINALITY clause, and in handling array indexes.
Fixed issue with "::" typecasting syntax. For example, previously did not determine the column type from SELECT ('123')::int.
Fixed bug in processing multiple CTEs.
Added support for SET parameters in the Extended Properties.
Profiler: added comments logging for SSPI functions.
Profiler: when new process starts, it gets logging level correctly from the parent host.

February 5, 2016    Ver (update 1)

Refreshed Redshift and Denodo modules to address installation issue in the new MSI files.

February 3, 2016    Ver

Changed installation module from EXE to MSI. Updated libpq library.
Renamed "Greenplum OLEDB Provider" into "Intellisoft OLE DB Provider for Greenplum"; "Redshift OLEDB Provider" into "Intellisoft OLE DB Provider for Redshift".
Added support for Application Name parameter in connection string.
Added code to look for Location parameter in the connection string if Initial Catalog is not provided (fix for SAP PowerBuilder).
Implemented profiling on remote hosts. The PGNP Profiler can now inject itself to a remote computer and collect execution trace.
Completed implementation of ITableDefinition interface.
Fixed bug: Execution of multi-statements SQL Task did not return error if any statement except first one failed.
Fixed bug: column name 'position' was recognized as keyword.
Fixed bug in handling Null accessor: provider ignores parameters data.
Fixed bug in types substitution by making types comparisons in CREATE TABLE case insensitive.
Enable handling IF NOT EXISTS clause. If the clause is used in Greenplum, the provider strips it and interprets error 42P07 as OK. This allows using CREATE TABLE IF NOT EXISTS in Greenplum, and is needed for "hinting" feature.

September 30, 2015    Ver

Added code to handle "dual" table (requirement from EnterpriseDB).
Fixed bug in an internal buffer size calculation in FastLoad. In some scenarios, buffer could overflow.
Fixed bug "cursor already exists" when executing command multiple times without resetting the command text.
Added name of the currently selected log to the PGNP Profiler title.
Fixed bug in processing identifiers in double quotes containing dots.
Fixed bug in passing parameters: when data pointer is NULL pass NULL parameters.

August 24, 2015    Ver

Fixed bug in IColumnsRowset implementation that potentially could result in crash when cursor is enabled.
Fixed bug in returning column names from a stored procedure.
Fixed bug in Redshift COLUMNS rowset (columns were not ordered by ordinal_position) resulting in error when querying a linked server table: "inconsistent metadata for a column. The name was changed at execution time."
Fixed bug in the Redshift Provider: LISTEN command is no longer sent as not supported.
Fixed bug: extra LIMIT clause added when querying TOP N rows from SQL Server view based on a linked server query with LIMIT.
Added LONG flag for the string field returned from stored procedure.

August 4, 2015    Ver

Added the installation module parameter "/activate <key>" to support unattended installation (together with "/silent" parameter).
Added support for jsonb.
Fixed bug in handling output parameters of stored procedures.
Fixed bug in the Two Phase Commit protocol (2PC) implementation: in some scenarios transaction was not committed, and connection to database was not closed at the end of transaction.
Fixed bugs in handling multiple results.
Fixed bug in money processing in FastLoad.
Fixed scaling bug when handling money.
Fixed bug: Optimizer did not transform statements generated in Two Phase Commit protocol.
Fixed bug that could have resulted in memory corruption in some scenarios when cursors enabled.
Fixed bug in handling array of decimal values.
Fixed bug in querying arrays by enforced binary format for returned columns.
Profiler: added code to log Extended Properties in comments.
Profiler: fixed formatting of some parameters types in the trace.
Revisited and updated samples.

June 13, 2015    Ver

Fixed bug when preparing query from a function with parameter(s). Previously "function not found" error was returned because parameters types were not passed correctly in the Prepare call.
Added ability to convert procedure parameters to the required type. For example, a stored procedure has parameter of type "timestamp", but the ADO/OLEDB parameter is "string". The PGNP provider will automatically convert the parameter to "timestamp".
Fixed bug in handling command parameters when their ordinal positions are not sequential.
Fixed bug in handling CASE clause: "order of WHEN items was reversed".
Fixed bug in handling of very large numeric values when reading from Postgres DB (47317.234320284904539357876164946677632000).
Fixed bug in CTE handling that could result in crash due to double memory deallocation.
Fixed bug in processing of information_schema.columns when accessed from a linked server.
Slightly rearranged connection initialization code to display DB name and User in the profiler trace. Previously the fields were empty in some trace messages.
Profiler: added code to keep selection after filter is turned off. And fixed bug: a process falsely marked as terminated while is still running.

May 11, 2015    Ver

Fixed error: invalid byte sequence for encoding "UTF8": 0x00.
Fixed bug in bulk insert when BULK_METHOD=VALUES.
Fixed bug in handling parameters marked with flag DBSTATUS_S_IGNORE.
Fixed bug in handling bitwise operators '&' and '|' in expressions.
Optimized FindColumn procedure for faster metadata handling.

April 1, 2015    Ver

Fixed bug in handling OLEDB property MAXROWS. When client application sets the property to a non-zero value, the OLEDB provider appends LIMIT clause to the query.
Fixed bug in handling parameters for columns of type timestamptz. Previously timezone information was not processed correctly.
Fixed bug: XML fields where not returned correctly in queries.
Fixed bug: cursor was not used in some scenarios even when enabled. This could potentially overflow memory on large sets.
Enabled T-SQL like Unicode literals, e.g. SELECT * FROM tbl WHERE col1=N'value'
Fixed bug: Denodo OLEDB Alias was not registered correctly.
Made types adjustment for Denodo 5.5.

February 9, 2015    Ver

Fixed bug: The column was reported to have a "PRECISION" of 10 at compile time and 19 at run time.
Added code to match Postgres timezone names to Windows timezones, and fixed bugs in handling time with timezone.
Fixed bug in tables and indexes schema with restrictions in SQL Server 20012.
Fixed bug in returning columns information from a prepared statement (in some scenarios bookmark was not returned from prepared statement).
Fixed bug in parameters handling in stored procedures calls.
Added support for time with precision (DBTIME2). Introduced new connection string parameter USE_TIME2=ON/OFF. By default, the parameter is set to ON (enables time with precision). When USE_TIME2=OFF, legacy ADO time type is used (no second fractions allowed). The time with precision is working similarly for Postgres time and timetz types.
Denodo: changed FETCH command to resolve "syntax error"; fixed bugs in determining some field types.
Denodo: altered syntax for declare cursor/fetch; turned events off by default; eliminated transaction start for cursor commands; fixed SCHEMA_CATALOGS.
Profiler: added owner-draw menus with icons; enabled fonts scaling in all panes by Ctrl+MouseWheel, or -+ keys.

December 15, 2014 SERVICES!!! Data Warehouses/Business Intelligence solutions

In addition to our popular set of OLE DB Providers, we now offer several new services:
  • Data Warehouse / Data Mart
    • MS SQL Server 2008/2012/2014
  • ETL
    • SSIS - SQL Server Integration Services
  • Reports / Dashboards / Scorecards
    • SSRS - SQL Server Reporting Services
    • IBM Cognos Reporting System
    • Tableau
  • Data Analysis
    • SSAS Cubes - SQL Server Analysis Services
    • IBM Cognos Framework
  • Various databases, including PostgreSQL, Oracle, Greenplum, Redshift, Cassandra, Vertica, Denodo, etc.
Cost-saving analysis/design/development/support of Business Intelligence (BI) solutions of various complexity (self service BI, data visualization, data warehousing, single version of the truth, etc.). For more details see the Data Warehouse/BI page.

December 8, 2014    Ver

Fixed bug when cursors were not turned on by default.
Fixed data corruption in an INSERT with SMALLINT parameter.
Added support for Postgres 'money' type. Query, insert, update, FastLoad work now.
Resolved potential issue in assigning column ordinals when tables with same name exist in different schema.
Redshift OLEDB: Fixed bug in BI Alias data source: "AWS_SECRET_KEY and AWS_ACCESS_KEY connection string parameters were not passed".
Denodo OLEDB: Fixed COLUMNS and TABLES schema to pass restrictions as literal parameters to the CATALOG_METADATA_VIEWS().
Denodo OLEDB: Fixed INDEXES and PRIMARY_KEYS schema. Fixed PROCEDURES schema to return names of procedures in lower case.

October 27, 2014    Ver

Denodo OLE DB Provider is officially released!
Fixed bug when transforming xml fields from SQL Server to Postgres in SSIS.
Changed grammar to handle identifiers in negative accent marks (`).
Added NUM_PRECISION and NUM_SCALE connection string parameters, and pgnp_getnumericproperties/pgnp_setnumericproperties.
Added "Optional id" to the activation request-response as convenience to the end-user who wants to match requests and responses.

September 8, 2014    Ver

Fixed bug in determining expression type when ISNULL function is used.
Fixed bugs in handling dynamic queries in Redshift. Example: CREATE TABLE #tmp...; SELECT ... FROM #tmp; DROP TABLE #tmp;
Fix: Comment-only statement execution returned error, e.g. /* test */.
Changed column type returned from NULL to INT4.
Multiple statement did not execute or returned data in some scenarios.
Calculated column alias was not returned correctly, e.g. Select Sum(case when A>0 then X else Y end) as CalcColumn.
Fixed memory leaks.
Added new C# sample (MultipleResultsets).
Profiler: Added 64-bit applications indicator.
Profiler: Fixed missing columns on first launch after the installation.

July 7, 2014    Ver

Replaced connection string parameter FORCEUTF8 with FORCECP. Updated documentation for the FORCECP, and the out-of-proc registration script.
Fixed bug in some symbols coding when using FastLoad into Greenplum.
Fixed grammar to allow column names Start, End, Transaction, etc.
Fixed bug in bulk-inserting data via linked server when default/serial column is not specified. Example:
   INSERT [LNK]...[table](col1,col2) SELECT [col1], [col2] FROM [tbl];
where table DDL:
   CREATE TABLE table (id serial, col1 int, col2 varchar[50]);
Fixed bug in returning data: SELECT DATA_TYPE, CHARACTER_MAXIMUM_LENGTH FROM LNK..information_schema.columns (ntext was not returned correctly).
Fixed bug when a linked server is configured to connect to DB1, and query is issued to DB2: SELECT * FROM OPENQUERY (LNK_DB1,'SELECT e1.* FROM DB2.public.tbl')
Fixed bug "incorrect column names from querying a stored procedure returning record".
Fixed bugs in decimal/numeric values conversion: for a zero numeric use a non-zero precision; scale was not processed correctly and it resulted into zero.

June 9, 2014    Ver

Fixed exception when handling SELECT INTO statements.
Fixed bug in processing multiple statements when could not parse on of them.
Fixed bug in characters encoding in RowsetFastLoad (Greenplum).
Fixed bug when ETL handling ntext/nvarchar.

May 9, 2014    Ver

Fixed crashes in Cassandra OLEDB provider.
Fixed error "cannot locate row" in DeleteRows function.
Fixed bug "Undefined stored procedure" when stored procedure name is in mixed case, e.g. "Date_Range(...)".
Fixed bug in handling queries with CROSS JOIN.
Included a bugfix for openssl "HeartBleed Bug" (now using openssl-1.0.1g).
Enabled optimization of errored statements.
Various fixes for SQL Server to Redshift replication.
Fixed bug in PIPECOPY mode used for replication acceleration. The mode is only used when number of parameters and ordinals coincide with all columns in a table. Previously, it could cause incorrect work of INSERT.
Fixed bug in handling parameter sets. If more than one parameter set was used, the only first was passed to DBMS.
Fixed bug in handling multiple statements concatenated with semicolon. If two DDL statements used, only first one was sent to DBMS.
Fixed bug "Invalid parameter type" - no need to calculate parameters types after SetParamInfo was called.
Enabled single quotes in N strings, e.g. N'Rock''n''Roll'.
Profiler: Optimizer dialog was not displaying.
Profiler: enabled menu auto-hiding. Menu can be brought up by pressing ALT button.

March 31, 2014    Ver

Fixed bug in determining types of expressions using now() function and count(bigint).
Fixed crash when getting index schema on very long names.
Fixed bug: CTE can use full SELECT, e.g. WITH... (SELECT ... ORDER BY 1) ...
Fixed bug: unnecessary 'AS' was inserted into query, e.g. SELECT * FROM crosstab('...', '...') AS tbl(...). Result: AS tbl AS.
Fixed bug: column information was returned in lower case, e.g. SELECT 1 as "My Test" from tbl.
Fixed casing bug in output column, e.g. SELECT date_part(...) was returning column name as DATE_PART.
Improved parameters and return types handling for stored procedure.

March 17, 2014    Ver

Fixed bug in conversion of very long numeric strings.
Fixed bug in license check when the cluster node name case varies between activation and launch.
Redshift: fixed bugs in schema handling (upper/lower case).
Redshift: changed default port to 5439.
Redshift Profiler: added code to log rows count into the profiler's trace; changed instance guard id for Redshift; changed application icon.

January 2, 2014    Ver

Enabled using cursors in Redshift.
Added logging of the internal Provider's trace as comments in the Profiler. Changed PGNP Profiler to allow selecting commentaries level (from "SQL Statements Only" to "Comment Level 3").
Added new stored procedure pgnp_comment.
Fixed minor connection leak.

November 19, 2013    Ver

Fixed bug resulting in error: "cursor "pgnpcsrN" already exists". The error occurred when application executed a command, and did not request the rowset (riid=NULL).
Fixed bug in DECIMAL numbers conversion procedure. Previously some numbers could be returned incorrectly, e.g. 10000 as 10.
Fixed bug in pgnp_refreshmetadata when the stored procedure is called from SSMS; it did not send metadata refresh notification. Example: EXEC ('pgnp_refreshmetadata('''',''test_table'')') AT PGNPTEST.
Added connection string parameter OPTIMIZER=ON/OFF. By default optimizer if not enabled (OFF).

November 4, 2013    Ver

Fixed connection leak when closing data source.
Fixed bug in handling table names as reserved words, e.g. SELECT * FROM [date].
Profiler: enabled the filter pane on startup.

October 23, 2013    Ver

Fixed connections leak when handling distributed transactions.
Fixed bug "...linked server supplied inconsistent metadata for a column. The name was changed at execution time."

September 23, 2013    Ver

Fixed bug in parser when handling some subqueries, e.g. select * from ( (select * from trade t ) as thing1 inner join (select * from booking b) as thing2 on thing1.id=thing2.tradeid )
Greenplum: Added connstr parameters HIDE_GPFDIST, LOG_PATH and VERBOSE. Fixed bug in gpfdist bulk import.
Redshift: Made Redshift provider to be able to work side-by-side with PGNP. Connection string: "Provider=RSNP;".

August 2, 2013    Ver

Resolved the error on WinXP and Win2003: "The procedure entry point InitializeCriticalSectionEx could not be located..."
Fixed bug in reading procedure schema.
Fixed bug: select * from pgnp_getlicenseinfo() did not return any rows.
Fixed bug resulting in "Inconsistent metadata" error when querying COUNT(*) from a linked server.
More fixes/changes for Redshift.

July 7, 2013    Ver

New OLEDB Provider for Amazon Redshift is released. Trial build and documentation are available from the Download page.

June 25, 2013    Ver

Added connection string parameter CURSOR=ON/OFF to allow turning cursor usage off.
Fixed bug: query with all aggregate columns returned NULLs.

June 7, 2013    Ver

Fixed bug in the EVENTS connection string parameter, and added code to convert SSLMode parameter into lower case.
Fixed memory overflow in FastLoad in some cases.
Fixed connectivity issue in Excel x64 caused by an uninitialized DataSource property (HWND).

May 15, 2013    Ver

More changes made to fix error: "COPY file signature not recognized".

May 14, 2013    Ver

Fixed bug that caused the error during bulk insert: "COPY file signature not recognized".
Fixed bug when execution of some queries resulted in the error "Cannot insert multiple commands into a prepared statement".
Made stability fix in Profiler, and added logging for Guid parameter.

April 26, 2013    Ver

Resolved "SSL renegotiation issue" when connection was breaking after large volume of data transferred.
Fixed bug in FastLoad causing "incorrect binary data format" error for types date and time.
Fixed bug in FastLoad when the bound type is different from the column type, e.g. when ETL transforming I8 into I4 field.
Fixed bug in processing Decimal parameter from C#.

April 15, 2013    Ver

Added support for COPY WITH BINARY to FastLoad and BULK_METHOD=COPY (PG only).
If all columns in a query are aggregate do not open cursor (an optimization).
If stored procedure does not return result (void), call it with "SELECT Proc()". Previously generated call as "SELECT * FROM Proc()".
Fixed error "Non-nullable field cannot have NULL" for "character variable" fields.
Fixed internal exception in some scenarios when not connected to DB ($NO_CATALOG mode).
Fixed connection failure when password starts with '='.
Profiler: fixed potential crash when clearing trace.

February 25, 2013    Ver

Geometry fields and unknown types are exposed as long strings, previously they were as varchar(4000).
Added "EVENTS" extended property to control events subscription.
Fixed exception when handling statements of size 1MB or larger.
Fixed license activation issue on a SQL Cluster.
Fixed bug in handling columns of type "character varying".
Fixed exception in a linked server query when no columns are available, e.g.: SELECT * FROM OPENQUERY(PGSVR, 'ALTER TABLE...').
Fixed exception when closing Connection Wizard in QlikView.
Fixed exception when executing some functions "SELECT func(n)".
Optimizer: added ability to optimize internal statements such as schema queries.
Optimizer: added support for re-initialization when pgnp_optimizer event is triggered.
Optimizer: added support for enabling/disabling the optimizer.
Profiler: enabled optimizer UI.
Profiler: Details View can now display more than 30000 characters.

November 26, 2012    Ver

Enabled BULK_METHOD=PIPECOPY for fast replication. Updated documentation.
Added support for True and False boolean constants.
Fixed bug: not all rows returned to some .NET applications (side effect introduced in 3056).
Fixed bug in expression type evaluation when functions TO_DATE, TO_TIMESTAMP and TO_NUMBER are used.
Fixed memory leak when importing data and BULK_METHOD=COPY.

November 12, 2012    Ver

Fixed memory leak when loading CSV file in SSIS.
Fixed bug in expression type evaluation when DATE_PART function is used, and aggregate function with CASE expression as a parameter.
Fixed bugs in processing stored_proc AS (typ1, ...).
Fixed bug: Unnecessary 'AS' added when processing query:
Fixed bug causing .Net Exception when getting DataSourceInformation from ADO.NET:
  OleDbConnection connection = new OleDbConnection();
  connection.ConnectionString = "Provider=PGNP.1;Initial Catalog=...";
  DataTable table = connection.GetSchema("DataSourceInformation");
Fixed bug: values for DBMSVER, DBMSNAME, CONNECTIONSTATUS and DATASOURCENAME datasource properties were not returned correctly.
Fixed bug: invalid byte sequence for encoding "UTF8", when performing bulk import/fast load into DB.
Fixed bug: provider sends 'unknown' message to profiler after processing a erroneous statement.
Enabled newline in string literals.
Profiler: Fixed horizontal scroll reset after the trace view refresh.
Profiler: Added ability to save/load profiler's log to/from CSV files.
Profiler: fixed bug in displaying messages counter after clearing trace.

August 12, 2012    Ver

Implemented IRowsetFastLoad, and added "BI Alias" provider registration (SE only).
Implemented DISTINCT_VALUES and FORCE_SORTED_LOV connection string parameters for Greenplum provider.
Fixed bug in handling some domain types.
Fixed bug in handling parameters in expressions: WHERE (id BETWEEN ? + 1 AND ? + ?).
Fixed bug in handling query with "table from function", e.g. select * from get_ids(...) as (id integer).
Fixed bug when ETL-transferring rows with NULL fields.
Fixed an issue in joining distributed transaction for some 32-bit applications on 64-bit systems.
Fixed bug resulting in the error "Provider returned data that does not match expected data length..." when querying column defined as a single character.
Fixed internal exception when querying data via linked server with server name misspelled.

March 23, 2012    Ver

Fixed bug when inserting data via linked server in SQL Server 2005.
Fixed bug when inserting VARBINARY column data into BYTEA field via linked server.
Added new stored procedures for internal diagnostics: pgnp_workplaceid and pgnp_checklicense.
Enabled IIndexDefinition and ITableDefinition interfaces.
Changed links to new products in the trial reminder dialog.

March 1, 2012

New PGNP Provider version, 1.4, is released!
More power, more features, automated updates, etc. Read Developer's Manual and Forum for more details.

February 22, 2012

Release Candidate 3 ( is available from Downloads page.
* Fixed bug that prevented querying of an array element, e.g. SELECT col[1] FROM tbl.
* Extended grammar to allow querying of multi-dimentional array elements, e.g. SELECT "tbl"."col"[1][1][1] FROM "tbl".
* Fixed bug in querying internal stored procedures, e.g.: SELECT * FROM pgnp_getlicenseinfo().
* Fixed bugs in handling function table element list, e.g.: SELECT col1 FROM func('prm') AS ftal(col1 varchar(8)).
* Added code to replace COUNT_BIG to COUNT in SSAS queries.
* Fixed bug in handling double quoted identifiers in some statements.
* Made minor performance optimizations.

January 9, 2012

Release Candidate 2 ( is available from Downloads page.
It includes fixes for the following defects:
* "Invalid License" reported after installation on some systems;
* Provider "Alias" for better integration with SSIS is no longer registered; it will be available again in future builds;
* eliminated some connection leaks in distributed transactions; however, additional fix is still needed for some scenarios.

January 2, 2012

Release of v1.4 is postponed for another few weeks due to couple of critical bugs.

December 24, 2011  Ver

PGNP 1.4 Release Candidate update:
Fixed bug that resulted in "DECLARE CURSOR can only be used in transaction blocks" in some scenarios.
Fixed bug resulting in exception when handling distributed transaction.
Fixed bugs in handling CASE <expr>, some complex expressions with OR operand, POSITION(...IN...) function.

November 9, 2011  Ver

Added more detailed diagnostics to the PGNP Profiler when failed to open connection.
Fixed bug when handling command parameters of type "datetime" (previously the Provider added value of milliseconds as seconds to the time).
Fixed bug in unsigned parameters processing in IRowsetChange interface.
Fixed bug in handling SUBSTRING(... FROM n FOR n).

November 7, 2011  Ver 1.4 Beta

Beta build is available in Download section. The new major version of the PGNP OLEDB Provider for PostgreSQL and Greenplum has several new features and improvements:
- Optimizations for very large data sets (1 billion rows and more).
- Better support for PostgreSQL 9.x and Greenplum 4.x.
- Deferred updates support (IRowsetUpdate).
- Automated updates utility (not included in trial build).
- Various defects fixes.

August 28, 2011  Ver

Additional changes for better reliability when a connection is accessed from multiple threads.

August 15, 2011  Ver

Improved reliability of provider when a connection is accessed from multiple threads.
Fixed bug of premature committing of an inline transaction. It fixed "ERROR: cursor nnn does not exists".
Added code to report a command ID to the PGNP Profiler.
Minor fixes in grammar (added support for "IS TRUE", "IS FALSE", etc.).

July 11, 2011  Ver

Enabled OLEDB SCHEMATA. Added custom schema DOMAINS. Added code for better support of PostgreSQL domains.
Fixed bug when application transfers NULL value for a field with default ("ERROR: bind message supplies 14 parameters, but prepared statement requires 15").
Fixed bug in column type evaluation for queries with CAST.
Fixed bug when inserting/updating time fields via linked server resulting in "Insufficient date left in the message".
Made additional fix to build 2230: executing stored procedure via linked server did not work correctly (select general.test_oledb(1)).
Fixed bug of converting <tab> into \t when BULK_METHOD=COPY and transferring data from SQL Server to PostgreSQL.
Fixed bugs in populating PrimaryKeySchema and ForeignKeySchema.

May 24, 2011  Ver

Fixed the Expression Type Evaluator to be able to correctly determine expressions types with PostgreSQL functions such as current_date.
Fixed issue when stored procedure did not execute properly (eliminated unnecessary DECLARE CURSOR when a procedure does not return dataset).
Fixed bug in updating a table via linked server "Row cannot be located. Make sure the table has primary key" when the linked server is pointing to one database but the statement is using another database. There was a bug in loading indexes metadata.
Fixed bug "Failed to parse..." when LIMIT clause uses a parameter or a complex expression.
PGNP Profiler: Fixed issue of messages list blinking when "Applications List Auto-Refresh" occurs.

March 7, 2011  Ver

Fixed bug in processing query with HAVING clause, e.g.
   SELECT col1,COUNT(col1) AS count1 FROM tab1 GROUP BY col1 HAVING COUNT(col1)>1 AND col<2.

Fixed bug in handling queries with CROSS JOIN.
Fixed bug in handling syntax such as Table.Count (here Count is a column name).
Fixed bug when reading client-side certificate (path to postgresql.crt was determined incorrectly).
Optimized IRowsetChange to not use RETURNING clause when inserting a row and primary key value(s) present.

February 7, 2011  Ver

Fixed error "Undefined column a.test1d" when executing command:
  INSERT INTO arrays (id, test1d)
  SELECT NEXTVAL('arrays_id_seq'), a.test1d
  FROM (SELECT * FROM pgnp_samples.arrays WHERE id >= 1 ORDER BY id) a
Fixed a few issues in handling identifiers in square brackets, e.g.
   SELECT * FROM [display] ORDER BY [display].[userid].
Fixed defect in Indexes schema when a table with the same name exists in multiple schema. It could result in issues returning rows via Linked Server.

January 3, 2011  Ver

Added an OLEDB command property for obtaining number of affected rows per-query (see DBPROP_PGNPQRYAFFECTEDROWS in Developer Manual).
Fixed bug when querying temporary table, e.g. SELECT * FROM pg_temp.test.
Fixed bug in handling queries with CAST to array, e.g. CAST (array(tbl.col) AS bigint[]).
Fixed bug in parsing clauses "LIKE lower(col)" and "NOT LIKE lower(col)".
Fixed bug in parsing clause "UNION (SELECT...)"
Changed behavior when provider cannot parse a query: now it returns error "Failed to parse ..."
Fixed parse error when parsing Escape Literals, e.g. Lower(col) LIKE E'domain%'.
Changed grammar for multiple commands. Added code to handle BEGIN;...;COMMIT;END; (Oracle style).

November 11, 2010  Ver

Fixed bug in IRowsetChange::InsertRow when inserting a duplicate row. According to OLEDB specification it must return DB_E_INTEGRITYVIOLATION. Previously returned E_FAIL.
Fixed bug in determining length of a concatenated string in a subquery, e.g.:
Fixed bug in determining complex expression type with COALESCE and some aggregate functions.
Fixed bug resulting in “insufficient data left in message” error when executing UPDATE via linked server.
Fixed bug when transferring varbinary(n) field from SQL Server to Postgres: destination field was empty.
PGNP Profiler: Added automatic discovery of system services using the provider. Refresh timer added and can be configured in Options dialog.

September 27, 2010  Ver

Fixed bug when processing sub-queries with multiple columns (see forum http://www.pgoledb.com/forum/viewtopic.php?f=6&t=219).
Fixed defect in calculation of expression type when the expression contains CAST operator, e.g.:
   SELECT CAST(col_a as numeric) - CAST(col_b as numeric) AS val FROM testtable;
Fixed VIEWS schema to display view definition columns correctly.
Fixed bug in a sequence querying, e.g.:
   SELECT * FROM mix_seq;
or via linked server:
   SELECT * FROM openquery(PGNP_SAMPLES, 'SELECT * FROM mix_seq');
Fixed bug when inserting rows with composite primary key in IRowsetChange.

August 23, 2010  Ver

Fixed bug when a linked server connected to Postgres catalog A and user is querying table from catalog B: SELECT * FROM PGNP_TEST.B.[public].tbl. Previously the error returned "Undefined table tbl". After the fix data is returned correctly.
Fixed bug "The select list for the INSERT statement contains more items than the insert list. The number of SELECT values must match the number of INSERT columns. [SQLSTATE 07008] (Error 121)".
Added code to analyze DBPROP_UNIQUEROWS property on command. If the property is not set to TRUE, do not insert hidden key column.
Fixed memory leak during DTS transformation (introduced in build 2171).
Fixed bugs in the Expression Type Evaluation engine for complex expressions using functions calls and the numeric type.
Fixed bug in parsing statements using cast to "timestamp without time zone".

July 20, 2010  Ver

Enabled using ODBC functions in a query columns list, e.g.
  SELECT {fn left(lname, 3) }, lname FROM table
will be executed as
  SELECT substring(lname, 1, 3), lname FROM table
Added formatting for date/time parameters for messages logged into the PGNP Profiler.
Fixed bug in setting a session reference in connection returned from the OLEDB pool.
GetCommandText now returns the command that will be executed, not the original one.
Fixed bug in handling CREATE INDEX command: now it sends notification to refresh metadata caches in all connected providers.
OpenRowset now returns DB_E_NOTABLE when opening non-existing table (previously returned DB_E_ERRORSOCCURRED).
Fixed bug when parsing "typed strings", e.g. TIMESTAMP '2010-01-02  00:00:00.000'INTERVAL '3 minutes', etc.
Extended expression type evaluator to handle "typed strings" ('DATE' String | 'TIME' String | 'TIMESTAMP' String | 'INTERVAL' String | 'INTEGER' String | 'DOUBLE' 'PRECISION' String)

June 30, 2010  Ver

Fixed bug "Undefined table pg_tables" when querying pg_tables.
Fixed bug that prevented inserting default values (previously inserted NULL if a column was not specified).
Fixed bugs when inserting/updating data through an ADO recordset via AddNew, GetField('name')->Value = v, Update().
Changed type returned by COUNT() aggregate function from int8 to int4.
Resolved issue of not using prepared SELECT (because of the cursor).
Eliminated usage of SAVEPOINTs when preparing commands.
Changed parser to support geometric operators.
Improved PGNP Profiler messages from IRowsetChange::DeleteRows and when executing prepared commands.

May 5, 2010  Ver

Fixed bug "Undefined procedure" when executing statement 'vacuum table' via a linked server.
Fixed bug in processing stored procedures calls with following syntax: {? = CALL ContactsLike(?)}.
Fixed bug in handling stored procedures parameters of type uuid.
Fixed bug in processing a recordset (table) returned from a function.
Fixed bug in retrieving data from call to PostgreSQL function returning refcursor.
Tweaked types schema for better support of SQL Server 2008 types in DTS conversion.
Fixed bug in parsing statements with syntax having func()::type.
Implemented support for two-phase commit protocol. Please read the Developer's Manual for more details.

March 9, 2010  Ver

Several memory leaks were fixed.
Fixed bug: unable to update timestamp field with year value larger than 2079 (e.g. 9999-12-31 23:59:59).
Fixed bug when inserting data into text field via linked server (see http://pgoledb.com/forum/viewtopic.php?f=4&t=42).
Fixed potential crash if network connection is closed during a rowset reading.
Fixed bug in parameters handling when a prepared command is called the second time.
Added code to handle DBDATE fields when inserting rows using Linked Server:
  INSERT INTO [PGNP_SAMPLE]... SELECT ... FROM [SASRPT].[dbo].[glt_view]
Added code to allow calls to internal stored procedures via linked server, e.g.:
  EXEC('select * from pgnp_getlicenseinfo()') AT PGNP_SAMPLE
  EXEC('pgnp_getlicenseinfo()') AT PGNP_SAMPLE
  EXEC('pgnp_refreshmetadata('''',''test'')') AT PGNP_SAMPLE

Changes in PGNP Profiler:
* added high-color toolbar buttons;
* added options support for hiding and displaying columns;
* added filtering of ExecutedSQL when ClientSQL is empty, e.g. now following filters work: ClientSQL ilike 'COPY (.)+';
* fixed crash when filter is "SQLType = USER".

January 27, 2010  Ver

Added code to handle Common Table Expressions (CTE) and Window Functions (OVER clause) syntax correctly, e.g.
  WITH RECURSIVE subdepartment AS (SELECT * FROM department WHERE name = 'A'
    UNION ALL SELECT d.* FROM department AS d JOIN subdepartment AS sd ON (d.parent_department = sd.id))
  SELECT * FROM subdepartment ORDER BY name;

Fixed bug: missing quotes in column identifier when DTS transformation is performed from SQLServer to PostgreSQL and BULK_METHOD=COPY.
Fixed memory leak in RowsetChange class when inserting rows (BULK_METHOD=COPY).
Added extended property SQLSERVER (default 2005). When SQLSERVER=2005 SQL types date and time are shown as datetime during DTS transformation.

December 22, 2009  Ver

Fixed bug in processing SELECT CASE col WHEN NULL...
Fixed bugs in handling substr function (too few symbols were returned) and substring function ('foobar' FROM 'o.b' syntax supported).
Fixed bug that resulted in 'Non-nullable column cannot be updated to Null' error when using RIGHT OUTER JOIN in an ADO query.
Fixed bugs in rowset object when BULK_METHOD=COPY used.
Various fixes and enhancements in the PGNP Profiler: eliminated flickering; deprecated SCHEMA_* messages and replaced them with new SYS_SCHEMA message; better reporting for table/procedure undefined, prepare failed errors, etc.;
Fixed bug in processing SELECT...INTO... statements.
Fixed bug in SSIS when "Parse Query" is clicked on INSERT statement with uuid parameter.
Fixed bug for statements where subquery column names can be non-unique, i.e. added _N suffix for duplicate column names.

November 30, 2009  Ver

Fixed bugs when using the provider in BI Development Studio (SSIS 2008):
* "Parameters..." did not display with the SQL command containing "WHERE CAST(...) > ?";
* Datetime parameter was not passed correctly in command such as "INSERT INTO Tbl(...) VALUES(?, localdatetime)";
* Bulk import in SSIS using BULK_METHOD=COPY had some formatting issues;
Fixed bugs in an ADO application migrated from ODBC:
* "Operator does not exists: boolean >= character varying" in the query "SELECT * FROM Tbl WHERE IsActive >= ?", IsActive is boolean field,the parameter is passed by the application as boolean;
Introduced PropertyGrid control for the Advanced property page in DataLink dialog.
Extended grammar production rule for Extract function (added support for EPOCH, DOY, DOW, etc.).
Fixed bug in displaying interval value obtained from an expression in SSRS.
Fixed bug in updating rows in very large table via linked server. This defect was introduced in 1.3.0 recently.
Added new Extended Properties parameter of connection string: ZERO_TS_FRACTION. When the parameter is set to ON, the Provider zeroes timestamp fraction during query. This addresses Datetime overflow issue when transforming databases in SSIS.
Fixed expression type evaluator to handle timestamp(0) in expressions.
Added new options to PGNP Profiler:
* "Profile all application" - to automatically begin profiling after the PGNProfiler startup;
* "Delete work files on exit" - if unchecked, the PGNP Profiler application leaves the working files on disk after exit; the files can be opened later in the application;
* "Work Log Path" - location for the work files;
Fixed bug in OLE DB COLUMNS schema that potentially could cause "Inconsistent metadata" issue when querying tables via linked server using 4-part identifier.

October 26, 2009  Ver

Version 1.3.0 is released!

September 21, 2009  Ver

Fixed bug in determining an aggregate column flag in SELECT COALESCE(SUM(col)) .... It resulted in insertion of a hidden key and the query failure.

Fixed bug in handling queries with non-default SQL dialect, e.g. when working with QlikView.

August 23, 2009  Ver

Added support for SELECT ... FOR UPDATE/FOR SHARE syntax.

Fixed bug in DTS conversion of MSSQL bit field into Postgres boolean field (previously, result was always false).

Extended lexeme definition for Real number.


July 26, 2009 Ver

Fixed bug when mixed case column is used in WHERE clause in update via linked server (added double quotes).
Added support for SHOW command, e.g.:
Fixed duplicate quote issue when executing insert into a linked server's table.
Fixed a few bugs in replication with LOWERCASESCHEMA=ON. Added replication configuration description to the Developer's Guide.

June 14, 2009 Ver

Fixed errors when parsing and processing non-ANSI functions, e.g. "extract (hour from updated)".
Fixed bugs in processing of some commands via linked servers, e.g.
   INSERT INTO OPENQUERY(...) SELECT val1, val2, ...

Added productions to recognize type qualifiers with length, e.g. '::varchar(100)'.

Added code to handle ORDER BY, LIMIT and OFFSET clauses in a sub-query.
Fixed bugs when adding hidden key and a table name uses Capital characters, e.g.
  SELECT Name FROM Customer
previously resulted in:
  SELECT Name, "Customer"."customerid" from Customer

Fixed bug when determining field size returned by a function; for boolean type size was 1, should be 2; for timestamp and timestamptz types size was 8, should be 16.
Added code to set columns flags correctly (some fields did not have FIXEDLENGTH flags set when it must be set).

Fixed some minor bugs in processing of CASE statement.

May 03, 2009 Ver

Fixed bug in determining aggregate function return type, e.g.
    "SELECT max(create_date) FROM events"
where create_date is timestamp".
Fixed bug in DTS transformation of types numeric(19) and character(3) from PostgreSQL.
Migrated parts of expression evaluation engine from PGNP 1.3 for better types evaluation.
Enabled using some keyword and aggregate functions names as column aliases, e.g.
    "SELECT my_column AS min FROM table1".

April 16, 2009 Ver

Fixed bug in updates via linked server connection (side effect from introducing BULK_INSERT).
Max parameter value for bulk insert increased to 1000000.
Enabled strings with N prefix.
Enabled support for the following PostgreSQL types: cardinal_number, character_data, sql_identifier, and time_stamp.
Refined provider_types schema.
Added code to alter data returned from information_schema for better support of DTS transformation from PostgreSQL.

March 16, 2009 Ver

Fixed bug when column alias is used in single quotes.
Fixed "Connection failed" bug when host name or user name contains spaces.
Fixed bug in columns ordinals in INDEXES schema.
Fixed "invalid data for column" bug in Linked Servers when reading Infinity and other special floating point values by introducing a new "extended property" CNV_SPECIAL_FLTVAL (convert special floating value). If enabled (CNV_SPECIAL_FLTVAL=ON) the following conversion rules will apply:
      +Infinity will convert into  MAX_FLOAT/MAX_REAL,
      -Infinity will convert into -MAX_FLOAT/-MAX_REAL,
      NaN will convert into zero.
Provider verified working with Greenplum database.  
Added "extended property" SEARCH_PATH. When set it enables provider metadata dictionary to resolve schema the same way as used in PostgreSQL, i.e. "SET search_path". By default search_path="$user", public.
Added "extended property" BULK_INSERT (for accelerated DTS conversion). It combines number (specified by BULK_INSERT) of separate inserts generated by the DTS engine into one bulk insert. Any positive number can be specified (m+1 in the example below). The larger the number the faster the data insertion into the database because of reduced number of round trips. The parameter specifies the number of value sets in the SQL command:

     INSERT INTO table (col1, col2, ... colN)
      ($1, $2, ... $N),
      ($N+1, $N+2, ... $2N),
      ($mN+1, $mN+2, ... $mN+N)

For our configuration of Greenplum database performance of DTS conversion increased more than 15 times using BULK_INSERT=100.

January 25, 2009 Ver

Fixed bug "Undefined procedure..." when call is made to a procedure with name in double quotes, e.g. "SELECT * FROM public."getClientsInfo"('EMP1004', 1)".
Fixed "Parse failed" error when processing a query with multiple joins grouped with parenthesis: 
"SELECT ... FROM TBL1 A JOIN ((TBL2 B JOIN TBL3 C ON ...) ON ...) ..."

January 18, 2009 Ver

Added automatic metadata refresh on ALTER or DROP command.
Allowed zero-length SequentialStreams.
Fixed memory corruption bug in GetKeywords method that prevented the Provider to work correctly with Visual Studio and some other applications.
Fixed bug in handling aliases specified with square brackets.
Fixed bug ("Unknown error") when Commit/Abort called from Oledbpro.
Fixed bug in lexeme scanning of some Unicode symbols (bug in GoldParser's symbol tables).
Fixed parser error when joined tables grouped with parenthesis.
Fixed possible memory corruption when multiple commands created simultaneously from a single session.

Nov 28, 2008 Ver

Fixed "Undefined column name" bug when a column owner is in double quotes: SELECT "OWNER"."COLNAME", ... 
Fixed bug in querying of boolean fields. 
Fixed bug in the provider properties that resulted in the following error: "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done."
Fixed bug in handling bookmarks in "IRowsetLocate::GetRowsAt" method. 
Fixed bug in processing of parameter type "UI1"
Fixed bug in retrieving data in "ServerSideCursor" mode. 
Fixed one more bug in parsing of international symbols. 
Implemented better support for querying of blobs (exposing a blob as "ISequentialStream"). 
Added code to eliminate column owner in "UPDATE" statements since PostgreSQL does not allow the syntax, e.g. "UPDATE TBL SET TBL.COL1=..." 
Added GIS InGEO support: http://www.integro.ru/projects/gis/main_gis.htm

Oct 26, 2008 Ver

Fixed bug in releasing/refreshing Metadata Dictionary.
Fixed bug in handling "SET" statement with "ON" and "OFF".
Fixed bug in "SELECT" when a table alias is in capital.
Fixed bug in ColumnInfo flags when aggregate function used in subselect.
Fixed bug in selecting a literal with alias.
Fixed bug in joining subselects.
Fixed bug in formatting "... IS NOT ..." predicate.
Fixed handling of "ISNULL" and "NOTNULL" in statements.
Enabled single line and multi-line comments in user statements.

Sep 28, 2008 Ver

Fixed field format for foreign keys schema.
Fixed Visual Studio 2005 Server Explorer data retrieve error. 

Sep 21, 2008 Ver

Fixed bug in handling "CREATE TABLE ... WITH OIDS" statements.
Fixed Foreign Keys (FK) metadata retrieving using "GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys, ...)" method.
Fixed bug in DTS transformation into a table with non-default schema. Now transformation can be customized in the wizard so destination can be for example: "mysch"."tblname".
Fixed bugs in statement generation for:
  •    sub queries with "ORDER BY" clause;
  •    type modifiers for string literals, e.g. "adate - '2 weeks'::interval";
  •    type modifiers for integers and NULL, e.g. "NULL::timestamp";
Fixed a few memory leaks.
Fixed bug in using "DELETE" statement in linked servers with "OPENQUERY".
Added code to enable tracing statements coming to and executed by the PGNP.
Added code to publish and subscribe events for tables and procedures schema modifications. This allows to refresh internal metadata cache (aka Dictionary) in PGNP on HostX when a schema is changed on HostY.
Added support for "INSERT" syntax with multiple values sets, e.g.
        (val_1_1, val_1_2, ..., val_1_N),
        (val_2_1, val_2_2, ..., val_2_N),
        (val_M_1, val_M_2, ..., val_M_N)

Optimized IRowsetChange implementation to use prepared "INSERT" and "UPDATE" statements. This increased replication performance by 20-25%.
Added TraceManager.exe to enable/disable internal PGNP tracing.
Added C# sample showing usage of "GetOleDbSchemaTable" method.

Jul 22, 2008 Ver 1.2.8 RC4

Fixed several bugs in statements parsing/building (NOT IN, BETWEEN, COALESCE etc.)
Fixed bug in calculation of scale in SCHEMA_COLUMNS.
Fixed memory corruption in code related to boolean type processing.
Fixed bug in processing TIMESTAMP WITH TIMEZONE.
Fixed bug ColumnsRowset that resulted in issues in supporting Update Criteria.
Fixed bug in retrieving list of databases or connecting using non-default port (other than 5432).
Fixed bug in querying Date fields (oid=1082).
Minor fixes for data using international symbols.
Reorganized statements preparation to reduce number of server roundtrips and to eliminate error messages in the server log.
Added properties to support automatic replication with MSSQL2000.
Extended grammar to support POSIX pattern matching.
Added "FORCEUTF8" property to DataLink Advanced tab to allow either default database or UTF8 encoding. 

Jun 09, 2008 Ver 1.2.8 RC3

Fixed several issues in editing ADO recordset from Delphi DBGrid;
Fixed issues in data replication via linked servers;
Fixed several bugs in SQL parser;
Fixed bugs in determining field length when sending data via linked servers. 

May 17, 2008 Ver 1.2.8 RC2

Fixed bug in reporting errors (ISupportErrorInfo).
Fixed bug for varchar fields when used with linked server (field length bug).
Fixed bug in handling 'LIMIT' and 'OFFSET' clauses in a PoststgreSQL query.
Fixed bug in parsing 'CREATE DATABASE' and 'CREATE INDEX' statements. 

May 15, 2008 Ver 1.2.6 HotFix1

Fixed a bug for DBNull.Value parameters.
Fixed a bug for ColumnsSchema (after table schema changed).

May 13, 2008 Ver 1.2.8 RC

Fixed bug in 'DELETE' statement when executing with linked server.
Fixed bug in ColumnsRowsetSchema (the provider failed to retrieve information about columns after a table schema changed).
Fixed bug in prepared statement name (length exceeded 64 characters).
Added internal checks and validation in code related to Columns Information processing.
Added 2 new C# samples (UUID and XML data types). 

Apr 30, 2008 Ver 1.2.8 BETA2

Fixed creating of empty tables "CREATE TABLE xyz ()".
Fixed "Range Check Error" resulted from using Delphi DBGrid.
Fixed bug in IRowsetChange implementation when table name used in double quotes.
Fixed minor bugs when using non-"OLEDB compliant" types as a statement parameter.
Fixed bug in linked server update with composite keys.
Added support for SQLState return code in exceptions. 

 Apr 13, 2008 Ver 1.2.8 BETA

Added support for linked servers.
Added support for additional schemas (PROCEDURES, PROCEDURE_COLUMNS, PROCEDURE_PARAMETERS, etc.).
Added support for Postgres 8.3 (new types xml and uuid).
Added implementation for IColumnsRowset.
Added ability to handle any non-OLEDB comliant type; non-standard types represented as text fields.
Added reminder about trial version limitations; the reminder dialog will show up once a day if context allows UI.
Added bookmarks support and implemented IRowsetLocate interface.
Added support for Postgres functions/stored procedures with output parameters.
Fixed bugs when working with Analysis Services (OLAP cubes).
Added 17 C# samples
Added Borland Delphi 7.0 TDBGrid sample. 

Jan 24, 2008 Ver 1.2.7

Released 64-bit version. 

Jan 17, 2008 Ver 1.2.6

Introduce libpqnp.dll - libpq build for PostgreSQL OLEDB Native Provider. 
This version is built out of 8.2.4 source base and has the following changes: PQexec, PQexecParams and PQexecPrepared functions argument list extended to allow caller to specify format of each returning row (BINARY or TEXT). The changes in libpqnp made towards support of any Postgres standard and custom types and future 64-bit version.
Fixed bug in IDBInfo::GetLiteralInfo.
Fixed issue in reporting number of affected rows.
Added support for Extended Error Lookup.
Windows Install is down to 469KB from 1,531KB 

Dec 14, 2007 Ver 1.2.4

Fixed a bug in code responsible for querying from a table with Unicode name.
Fixed a reference count bug when Test Connection button is clicked in Data Link dialog. 

Nov 25, 2007 Ver 1.2.2

Fixed a few minor coding issues.
First public release of commercial version. 

Oct 11, 2007 Ver 1.2.1

Added support for grid paging in server cursor mode.  

Aug 19, 2007 Ver 1.2.0

Switched to a different SQL parser engine. 

Jul 20, 2007 Ver 1.1.6

Code refactored to eliminate most of x86 assembler functions. 

 Jul 04, 2007 Ver 1.1.5

Fixed representation issue with DTS/SSIS transformation of MSSQL Server GUID data type. 

May 14, 2007 Ver 1.1.4

Memory management changes to improve performance. 

Apr 25, 2007 Ver 1.1.3

Fixed memory leaks during transformation when PGResult was not released.
Minor code enhancements in connection pooling. 

Mar 08, 2007 Ver 1.1.2

Fixed bugs in DBDATE transformation and in negative numerics transformation.
Added support for "varbinary" type. 

Jan 10, 2007 Ver 1.1.1

Added support in PROVIDER_TYPES schema for the following types: "unique identifier", "ntext", "nchar" and "nvarchar"

Nov 23, 2006 Ver 1.1.0

Implemented database transformation support in DTS/SSIS Wizard for most types. 

Sep 06, 2006 Ver 1.0.2

Fixed bugs in CommandPrepare when parameters used in commands. 

Jul 29, 2006 Ver 1.0.1

Fixed bugs in Property Page dialogs, memory leaks in column information. 

Jul 17, 2006 Ver 1.0.0

Initial basic version written in ATL.