Skip to content

Release 2.6.0

Latest
Compare
Choose a tag to compare
@laurenz laurenz released this 08 Sep 17:29
· 28 commits to master since this release
33ea6a2

Note: This release will fail to build with minor releases below 13.10, 14.7 and 15.2. Other major versions are not affected. oracle_fdw binaries built with later minor releases won't load with older PostgreSQL binaries, complaining about undefined symbols.
Keep the PostgreSQL server updated!

Enhancements:

  • Skip Oracle savepoint management if the foreign server option isolation_level is set to read_only or if we are inside a read-only PostgreSQL transaction. This saves some round trips and avoids Oracle errors that might be thrown when entering a PL/pgSQL exception handler.
    Per suggestion from @math-g.

  • Use explicit bulk fetching into arrays rather than OCI prefetching for Oracle SELECT statements. This greatly improves performance for LOB and LONG columns, since OCI prefetching didn't work if these data types.
    The limitation still applies for SDO_GEOMETRY columns. A new option lob_prefetch is used to configure how much of the LOBs is fetched with the rows to reduce the number of round trips.
    This enhancement was generously sponsored by Mipih (https://www.mipih.fr/).
    Thanks for @philflorent for help and testing!

Bugfixes:

  • Inserting CLOBs with the server option nchar on can lead to the error

    ORA-24806: LOB form mismatch
    

    Report and patch by @jopoly.

  • Don't push down LIMIT with FOR SHARE or FOR UPDATE. That caused the error

    ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc.
    

    Reported by @intgr.

  • Fix BEFORE UPDATE triggers.
    If a BEFORE UPDATE trigger modified a column that was not updated, the changed column was not propagated to Oracle.
    Report and diagnosis by @jopoly.

  • Don't free() strings in the environment.
    This could lead to crashes and unpredictable behavior.

  • Conversions from TIMESTAMP WITH LOCAL TIME ZONE to timestamp without time zone were incorrect. To fix, set the Oracle session time zone from the PostgreSQL parameter timezone. Since not all time zones are accepted by all Oracle servers, this must be explicitly enabled by setting the set_timezone option on the foreign server.
    Thanks to @JamesInform for help with this.

  • Make auto_explain work with oracle_fdw. This used to cause an error:

    oracleQueryPlan internal error: statement handle is not NULL
    

    Report by @Jaisus and @JamesInform. @JamesInform provided the essential clue that the problem is related to auto_explain.

  • Fix "OCI-22061: invalid format text" errors when inserting some numbers with scientific notation into a foreign table.
    Report and analysis by @liubeck.

  • Support whole-row references in RETURNING clauses.
    Report and patch by @jopoly.

  • Make generated columns work correctly.
    This will fail to build with minor releases below 13.10, 14.7 and 15.2!
    Report and original patch by @jopoly.