Skip to content

pgSaci 0.0.2

Choose a tag to compare

@Levyks Levyks released this 31 Aug 23:45
· 87 commits to main since this release

Alpha. Very early — do not point it at data you care about.

Container

docker pull levyks/pgsaci:0.0.2

~10 MB static-musl image on scratch. See the docs.

Since 0.0.1 — IDE schema-browser compatibility

DataGrip / IntelliJ (the reference client) now introspects a pgSaci connection end to end and can browse and query the schema tree.

  • SYS.ALL_* / SYS.USER_* data-dictionary facade over pg_catalog — tables, columns, objects, constraints, indexes, sequences, comments, triggers, users — returning UPPERCASE identifiers like a real Oracle database, so Oracle tooling stops seeing public and PUBLIC as two schemas.
  • DBMS_METADATA.GET_DDL (TABLE / VIEW / MATERIALIZED VIEW / INDEX / SEQUENCE / TRIGGER / FUNCTION) for the "copy DDL" action, rendered as PostgreSQL DDL. Plus DBMS_UTILITY.GET_HASH_VALUE, USER_TABLESPACES, sys.session_roles / session_privs.
  • DECODE now compares its operands as text — Oracle coerces them to one type; PostgreSQL's = does not, so DECODE(sys_context(...), 0, ...) no longer fails.
  • Translator: SELECT-list aliases now resolve inside ORDER BY expressions (ORDER BY decode(alias, ...)), matching Oracle.

Fixes

  • Connect-storm deadlock. The catalog facade (CREATE OR REPLACE VIEW, ACCESS EXCLUSIVE) was re-applied on every connect; an IDE client idle in a transaction would freeze a wave of new connections behind it. It's now applied once per deploy, guarded by a version marker and an advisory lock.

Verified

cargo test --lib 30/0 · --test corpus 638/0 · --test translate_golden · python-oracledb thin 31/31 · ODP.NET 13/13 · abstraction.mdc Spring/ojdbc suite 32/32.