Skip to content

orapglink v0.1.0-preview.2

Pre-release
Pre-release

Choose a tag to compare

@krokozyab krokozyab released this 17 Aug 18:46
· 8 commits to master since this release

orapglink v0.1.0-preview.2

This preview refreshes the public compatibility reporting while preserving the
same tested Oracle-client and PostgreSQL behavior as preview.1.

Public compatibility summary

orapglink --profiles now reports only information useful to operators:

  • supported client families and dialects;
  • protocol-version ranges;
  • support grades and available feature groups.

Implementation-specific verification details are no longer included in the
binary output or the packaged documentation. Test scale remains public and
auditable through the release verification matrix below.

What this release supports

  • Oracle clients connect to a TNS listener and run read-only SELECT queries
    against PostgreSQL 16.
  • Tested clients include python-oracledb, go-ora, SQL*Plus, ojdbc/SQL
    Developer/DBeaver, ODP.NET managed, and Oracle 19c/26ai DATABASE LINK.
  • The documented Oracle SQL subset is translated to PostgreSQL, including
    DUAL, ROWNUM, NVL/NVL2, DECODE, BITAND, SYSDATE,
    SYS_CONTEXT, legacy outer join (+), MINUS, LISTAGG, selected
    CONNECT BY forms, and other constructs.
  • ALL_*, USER_*, and DBA_* dictionary views are derived from
    pg_catalog; no separate metadata database is required.
  • Writes are blocked by read-only PostgreSQL transactions and a dedicated
    PostgreSQL role without write privileges.
  • Limits cover connections, cursors, rows, response size, cell size, and query
    duration.

Unsupported or ambiguous SQL is rejected with an ORA- error instead of being
executed approximately. See KNOWN_LIMITATIONS.md inside each archive.

Release verification

The validated client matrix contains 722 passing cases out of 722:

Client Result
python-oracledb thin 125 / 125
go-ora 123 / 123
SQL*Plus 97 / 97
ojdbc 123 / 123
ODP.NET managed 123 / 123
Oracle 26ai DATABASE LINK 129 / 129
Oracle 19c DATABASE LINK 2 / 2

All seven client flows reported connect=OK, with no warnings. The release
also passes the complete Go test suite, static analysis, race checks for the
wire package, translator coverage gates, PostgreSQL differential checks, and a
packaged-binary smoke test against PostgreSQL 16.

The Oracle wire behavior is unchanged from the validated preview.1 code path;
this release changes public reporting, packaged documentation, and release
automation only.

Artifacts

  • orapglink_0.1.0-preview.2_linux_amd64.tar.gz
  • orapglink_0.1.0-preview.2_linux_arm64.tar.gz
  • orapglink_0.1.0-preview.2_darwin_arm64.tar.gz
  • orapglink_0.1.0-preview.2_windows_amd64.tar.gz
  • SHA256SUMS

Each archive contains an obfuscated binary, ready-to-use configuration,
English and Russian Quick Starts, PostgreSQL setup scripts, the support matrix,
known limitations, and license texts. Source code and PostgreSQL data files are
not included.

The binaries are obfuscated, not encrypted. Builds use garble
-tiny -literals and Go linker flags -s -w.

Important limitations

  • Oracle Net encryption and TCPS are not implemented. Use loopback, a trusted
    network, VPN, or TLS tunnel; never expose the listener directly to the
    Internet.
  • The server uses one logical schema and one shared password; the supplied
    username is not validated as a PostgreSQL identity.
  • PostgreSQL 16 with the orafce extension is required.
  • ROWID is approximated using PostgreSQL ctid.
  • Operation is read-only; DDL and DML are rejected.
  • DBeaver is the recommended GUI. SQL Developer worksheets work, but its
    internal object browser is not fully supported.

Quick start

The ready-to-run PostgreSQL demo and Docker Compose setup are in
krokozyab/postgres-oracle-tns-proxy.

Report issues at https://github.com/krokozyab/postgres-oracle-tns-proxy/issues.