When upgrading from an older version of oracle_fdw, make sure to run
ALTER EXTENSION oracle_fdw UPDATE;
after installing the extension.
Support PostgreSQL v13. Support for 9.2 and 9.1 is dropped.
Add a function
oracle_executeto execute arbitrary SQL statements on Oracle. The statements must not return a result (e.g. DDL statements).
Add an option
dblinkfor Oracle database links.
The option can be used on foreign tables or with
IMPORT FOREIGN SCHEMA.
Patch by @nboullis.
Add a column option
strip_zerosthat automatically strips ASCII 0 characters from strings.
Per request from @Sascha8a.
IMPORT FOREIGN SCHEMAoptions
prefetch. These set the corresponding options on imported tables.
Suggested by @ferfebles.
Add support for isolation levels other than
This is mostly because Oracle's implementation of
SERIALIZABLEis so buggy.
Patch by @ThinkJ001.
Fix bad results with uncorrelated subqueries.
This affects queries have a foreign scan with a filter based on a subplan.
Reported by @srakazmus.
Internal oracle_fdw error: encountered unknown node type 144.
This can happen in plans involving tables with identity columns.
Reported by @todoubaba.
Don't throw an error if DML statements modify no rows.
This might be caused by a trigger on the Oracle side.
Reported by @radist-nt.
With single-byte Oracle character sets, this bug led to replacement characters being used for characters not in the database character set.
Reported by @srakazmus, and @chrullrich helped with the fix.
Report a proper error for
INSERT ... ON CONFLICTon partitioned tables.
Report and fix by @ibarwick.
INSERT ... RETURNINGif a table partition is a foreign table.
It used to return NULL values by mistake.
Report and analysis by @ibarwick.
Add support for Oracle
This makes it easier to identify the session on the Oracle side.
Fix crash or bad results with pushed down join queries.
The query target list can change during query planning, but oracle_fdw relied on the one from before.
This bug only manifests in PostgreSQL v11.
Bug found by @Jaime2ndQuadrant and fixed by @yamatattsu.
Fix push-down of foreign scan conditions with variables belonging to other tables.
This can lead to wrong results and warnings like:
WARNING: column number x of foreign table "y" does not exist in foreign Oracle table, will be replaced by NULL
Fix crash or bad results in queries with IN or
= ANYwhere the element type on the right-hand side is different from the left-hand side type.
Add support for reading infinite
Oracle NUMBER has infinite values, which are represented as
numericdoes not know infinity, map these values to
NaNin this case. For
double precisionwe can use the normal infinity values.
Add support for the "json" PostgreSQL data type. On the Oracle side,
VARCHAR2can be used.
Suggested by @bsislow.
Add support and documentation for building with Microsoft Visual Studio.
Patch by @chrullrich.
Enable delayed loading of the Oracle DLL on Windows. This allows better diagnostic messages if the library cannot be loaded.
Patch by @chrullrich.
Report the correct SQLSTATE for constraint violation and deadlock errors.
Idea by "omistler".
Push down outer joins to Oracle.
Patch by @yamatattsu, courtesy of NTT OSS Center.
Missing check if Oracle data types can be converted to PostgreSQL types.
This bug was introduced in 2.0.0.
When oracle_fdw is loaded, initializing background workers (e.g. for parallel query) failed with:
ERROR: invalid cache ID: 41
Don't try to push down
IS [NOT] DISTINCT FROMexpressions. Oracle does not support this standard SQL syntax.
Don't push down
IS [NOT] NULLtests on boolean expressions. This caused
ORA-00907: missing right parenthesis
Allow foreign tables to be defined on Oracle queries that contain double quotes. This caused an error message due to a sanity check that has become obsolete when this feature was introduced.
Noted by @Bpapman.
Disable push-down of foreign joins in queries with
These used to be pushed down before, but without the
FOR UPDATEclause, leading to incorrect behavior in the face of concurrency.
Noted and fixed by @yamatattsu.
Remove the deprecated option
plan_costs, since it is not very useful and is a maintenance burden.
After an upgrade, tables with this option set should be updated with:
ALTER FOREIGN TABLE ... OPTIONS (DROP plan_costs);
- Push down 2-way inner joins in
SELECTstatements if all conditions can be pushed down.
Patch by Tatsuro Yamada (@yamatattsu), courtesy of NTT OSS Center.
oracle_fdw crashed on Windows if queries use a
NULLparameter or an empty subselect.
Report by PAscal Lemoy (@legrandlegrand).
Don't push down expressions with
Because of Oracle's inability to use
CLOBin SQL expressions, this could lead to errors like
ORA-00932: inconsistent datatypes: expected - got CLOB
Fix bug in
SIGTERM) was not handled correctly, since neither was the Oracle query canceled nor did the backend terminate.
Reported by Dmitry Chirkin (@josser).
- Add table option
ANALYZEvery large tables
This can speed up
Idea by @legrandlegrand.
- Introduce a table option
prefetchfor the Oracle row prefetch count
This can speed up foreign table scans.
Per discussion with by @legrandlegrand and @3kkani.
- Push down arbitrary
Up to now, only lists with constants were considered.
Per request from @volkmarbuehringer.
- Push down
ORDER BYexpressions to Oracle from PostgreSQL 9.2 on
Only expressions of numeric, date and timestamp datatypes are pushed down, since the string collations in PostgreSQL and Oracle cannot be guaranteed to be the same.
Courtesy of NTT OSS Center, patch by @yamatattsu.
- Fix errors with
now()and date/timestamp parameters in queries
This bug was introduced in 1.3.0 and caused errors like
ERROR: error executing query: OCIDateTimeFromText failed to convert parameter
DETAIL: ORA-01843: not a valid month
current_timestampand friends or date/timestamp parameters were used.
Report by Li Hailong.
- Fix errors when updating date/timestamp columns
This bug was also introduced in 1.3.0 and caused errors like
ORA-01856: BC/B.C. or AD/A.D. required
if the Oracle and PostgreSQL types were different.
Report by @sttachoires.
IMPORT FOREIGN SCHEMAsometimes didn't import primary keys
Report by @JMLessard, fix by @legrandlegrand.
- Fix memory leaks during
This caused out of memory errors when large tables were analyzed.
Report by @acheccuc.
IMPORT FOREIGN SCHEMAshould not tolerate missing remote schema
It used to cause a warning, but the SQL standard requires an error.
Report by @JMLessard.
- Fix crash when
UPDATEing non-existent columns
If a foreign table has more columns than the underlying Oracle table, these additional columns are treated as containing
However, oracle_fdw crashed on an attempt to change such a column with an
UPDATEstatement, which should not happen.
Reported by @fnicollet.
- Fetch all columns from Oracle when the whole row is referenced
This problem could lead to wrong
NULLvalues in trigger functions or when the whole column is used in an expression.
Reported by @fnicollet.
- Add option readonly for IMPORT FOREIGN TABLE that sets the foreign table option readonly to true on all imported foreign tables.
Idea by @jgoux.
- Allow foreign tables based on arbitrary Oracle queries.
The query, enclosed in parentheses, can be supplied as option table.
Requested by @tsykes, @cirix81 and @jgoux.
- Selecting timestamps with lc_messages other than English caused errors like
ORA-01406: la valeur de la colonne extraite a été tronquée
Report by @dszczyt.
- Complicated queries could lead to an error like
Internal oracle_fdw error: encountered unknown node type 524.
Report by @bartonjd.
- PostGIS type geometry cannot be found if ArcGIS is installed.
Report by @dtoller.
- Add support for
IMPORT FOREIGN SCHEMAfor PostgreSQL 9.5 and higher.
- Improve cost estimates by using the row count estimate.
Inspiration by Daniele Sevegnani.
- Support two-dimensional geometries with an additional measure dimension.
Idea by Paul Dziemiela.
- Throw an error if
oracle_close_connections()is called inside a transaction that modified Oracle data.
- The server crashed for the constructs like
<column> = ANY (NULL).
Report and patch by dreckard.
- oracle_fdw sometimes failed to recognize the SDO_GEOMETRY data type.
Per report from Bevan Jenkins.
- Some point geometries were not translated properly.
Per report from Bevan Jenkins.
- Ignore SDO_GEOMETRY elements with zero SDO_ETYPE.
According to Oracle, that is the correct behaviour.
Per report from Bevan Jenkins.
EXPLAIN (VERBOSE)for queries containing current_timestamp.
This caused "ORA-30081: invalid data type for datetime/interval arithmetic".
Noticed by "kkwhite".
- Oracle TIMESTAMP(0) fields caused errors like:
ERROR: invalid input syntax for type timestamp: "1977-06-09 18:00:00."
Also, handling of dates and timestamps before Christ was broken.
Report by "abiuan".
- Add support for a file "srid.map" to translate SRIDs between Oracle and PostGIS.
- If the Oracle session has been terminated outside of a transaction, try to reconnect once.
Idea by AVEN.
- Prepared statements with parameters can crash.
Because of custom plans, this does not manifest until the query has been executed several times in PostgreSQL 9.2 and higher.
Per report from Krzysztof Gorczyński and others.
This bug was introduced in 1.1.0.
- Add efficient support for translating between Oracle SDO_GEOMETRY and PostGIS geometry.
Supported geometry types are POINT, LINE, POLYGON, MULTIPOINT, MULTILINE and MULTIPOLYGON.
Courtesy of Oslandia, implemented by Vincent Mora.
- Add regression tests for improved quality.
- Bind LOB data instead of LOB locators for INSERT and UPDATE.
This simplifies the code and makes Oracle triggers on LOB columns behave as expected.
- Fix a bug introduced in 1.0.0 that leads to crashes when LOB columns are modified.
- Fix several crashes when the foreign table has fewer or more columns than the Oracle table.
- Fix a bug that caused
RETURNING <expression>to return NULL for complex expressions.
- Writing date or timestamp columns failed when DateStyle was not ISO.
- Reading or writing negative INTERVAL DAY TO SECOND resulted in bad values because the string formats in PostgreSQL and Oracle differ.
- Add function oracle_diag(name) for diagnostic purposes.
ATTENTION: Use “ALTER EXTENSION oracle_fdw UPDATE” when upgrading from a previous version of oracle_fdw.
- Avoid unnecessary local filtering for pushed down WHERE clauses with
- Add support for triggers on foreign tables for PostgreSQL 9.4.
- Fix logic error that keeps Oracle connections from closing.
- Fix “cache lookup failed for type 0” in queries with string parameters.
Per report from Adolfho Lopes.