Skip to content

Releases: HeliosDatabase/Any2HeliosDB

v1.3.0 — Oracle thick-mode + SYSDBA (NNE servers)

Choose a tag to compare

@danimoya danimoya released this 29 Jun 16:54
cd18513

Oracle thick-mode + SYSDBA connection options — unblocks Oracle sources that mandate Native Network Encryption (NNE).

Added

  • [source] thick = true — connect via the Oracle Instant Client (thick mode), required for servers mandating NNE (thin mode raises DPY-3001). Optional client_dir for the Instant Client lib dir; env $A2H_ORACLE_THICK / $ORACLE_CLIENT_DIR honored.
  • [source] sysdba = true — connect with SYSDBA (for the SYS user).
  • Actionable connect-failure hints for the NNE / SYS cases.

Thin mode (pure-Python, no client, no external deps) stays the default — only NNE servers need thick.

pip install -U any2heliosdb

v1.2.0 — a2h mcp auth (private Bearer token file)

Choose a tag to compare

@danimoya danimoya released this 29 Jun 09:04
6ae9c8d

a2h mcp auth — generate a private Bearer token file for the MCP server.

Added

  • a2h mcp auth — generates a cryptographically-strong Bearer token straight into a 0600 token file the MCP server reads (--tokens-file / $A2H_MCP_TOKENS_FILE, default ~/.config/a2h/mcp-tokens), keeping the secret off the command line and out of the project config. Flags: --role (viewer|operator|admin), append (default) vs --rotate, --show.

The MCP server was already HTTP + Bearer + RBAC (and refuses to start on HTTP with zero tokens); this adds secure token-file generation. 243 unit tests.

pip install -U any2heliosdb

v1.1.0 — PostgreSQL logical CDC + Nano concurrency

Choose a tag to compare

@danimoya danimoya released this 28 Jun 16:13
1393bd5

PostgreSQL logical-decoding CDC + HeliosDB-Nano concurrency. Validated end-to-end against HeliosDB-Nano 3.60.7.

Added

  • PostgreSQL logical-decoding CDC source (test_decoding): true log-based capture with native deletes → zero-downtime PostgreSQL → HeliosDB CDC.
  • Parallel load on HeliosDB-Nano ≥ 3.60.7 (older Nano/Lite serialize automatically).
  • asciinema demo casts in docs/demos/ — Pagila & Oracle, migrate + CDC.

Fixed

  • Parallel loader serializes instead of hanging on targets that block concurrent writes.
  • delete_keys reports rows actually deleted (real rowcount), so silent target no-ops surface.

Re-validated against Nano 3.60.7, which fixes five engine issues surfaced by a2h (concurrent-write stall, multi-table DROP, timestamptz→TIMESTAMP cast, DECIMAL-PK DELETE, BYTEA NUL). 240 unit tests.

pip install -U any2heliosdb

v1.0.0 — Oracle/PostgreSQL → HeliosDB-Nano + stock PostgreSQL

Choose a tag to compare

@danimoya danimoya released this 26 Jun 17:34

Any2HeliosDB v1.0.0 — first stable release

A modern, Python successor to Ora2Pg that migrates Oracle / MySQL / PostgreSQL / SQL Server → HeliosDB (Nano / Lite / Full) or stock PostgreSQL.

The v1.0.0 primary target — fully migrate Oracle → (PostgreSQL + HeliosDB-Nano) — is validated end-to-end: schema, data, sequences, views, PK/FK/CHECK constraints, and FK-indexes, including a million-row chunked/parallel load with crash-resume, and hardened through a three-round gpt-5.5 (xhigh) adversarial review (final verdict: safe to tag).

Highlights since 0.9.x

  • Oracle procedural & advanced objects surfaced (routines, triggers, materialized views, partitioned tables): counted in a2h assess, gap-reported, and written to a <schema>.review.sql companion for manual porting. (Auto-translation of PL/SQL → PL/pgSQL is the v2.0.0 roadmap — see docs/reference/oracle-object-support.md.)
  • Consistent read snapshot for chunked load + resume (AS OF SCN, captured once and reused across resume; graceful fallback with a warning if a table was just altered).
  • Oracle seq.NEXTVAL defaultsnextval('seq') (preserve-case aware) so sequence-default columns migrate with a working auto-increment.
  • PostgreSQL-source sequences migrate with correct resume points (validated Pagila → Nano: 15 tables / 49,636 rows, all validators green).
  • Robustness: safe identifier quoting, real-CHECK preservation (metadata-aware), collision-free TEST_DATA checksums, atomic native load_range, config-fingerprinted resume.

Install

pip install -U any2heliosdb

Apache-2.0. See CHANGELOG.md for the full list.

v0.9.5 — PostgreSQL-source sequences + native TIMESTAMP fractional

Choose a tag to compare

@danimoya danimoya released this 26 Jun 05:41

PostgreSQL → HeliosDB-Nano is now fully operational — tables, data, FKs, indexes, sequences, and views all migrate and validate.

Added

  • PostgreSQL-source sequence migration. The PG source adapter now introspects sequences (pg_sequences, falling back to information_schema.sequences) and preserves each SERIAL/IDENTITY column's DEFAULT nextval('seq') (normalized to a bare, schema-unqualified reference). Each target sequence's START is set to the next value the source would produce (from live last_value/is_called) so post-migration inserts resume past the loaded rows instead of colliding. Sequences are created before tables so a DEFAULT nextval resolves at CREATE TABLE time, and the emitter carries the source CACHE size. The Oracle/MySQL emitters skip a PG nextval() default (those dialects spell auto-increment differently), so migrate-back is unaffected.
    • Validated Pagila → HeliosDB-Nano 3.60.0: 15 tables / 49,636 rows, all 13 sequences created with correct resume points (actor 200→201, customer 599→600), DEFAULT nextval functional (insert without the PK auto-increments), and TEST_COUNT / TEST_DATA / TEST_INDEX 15 / 15 / 15.

Fixed

  • Native (Oracle-wire) TIMESTAMP fractional seconds dropped. python-oracledb defaults a datetime bind to DB_TYPE_DATE (7-byte, no fractional seconds), truncating sub-second precision client-side before it reaches HeliosDB. The native driver now binds datetime positions as DB_TYPE_TIMESTAMP (setinputsizes), so TIMESTAMP(6) values round-trip exactly — completing the native Oracle → HeliosDB-Full path (TEST_DATA 0 mismatches incl. BLOB / RAW / fractional TIMESTAMP).
pip install -U any2heliosdb

v0.9.4 — native close-handshake resilience + source-case validators

Choose a tag to compare

@danimoya danimoya released this 25 Jun 18:49

Native (Oracle-wire) Oracle → HeliosDB-Full migration is now end-to-end.

Fixed

  • Native target no longer hangs on close. A successful, committed native migrate previously blocked in oracledb's Protocol._reset waiting on HeliosDB-Full's unanswered logoff handshake. close() is now best-effort (5s cap + swallow), and connect() sets a generous 300s per-call timeout so a stalled bulk array-INSERT fails fast instead of blocking forever.
  • Validators read native-target data. test-count / test-data / test-index now render identifiers in the same case the migration created them (keep_source_case = preserve_case OR oracle-dialect), instead of folding to lowercase and querying an empty, wrong-cased relation. TEST_COUNT and TEST_INDEX now pass on a native Oracle → HeliosDB-Full migrate.
  • a2h test-index false positive on HeliosDB-Nano removed — rewritten to a portable, fail-safe GROUP-BY ground-truth form (no nested cast-subquery, no bind params; an unrenderable probe is DEGRADED-skipped, never failed). Validated on Oracle → HeliosDB-Nano 3.58.5 and Oracle → stock PostgreSQL.

Note: TEST_DATA on DATE/TIMESTAMP/RAW columns over the native path is gated on a HeliosDB-Full TTC read-path type-tagging fix (target-side) — the data is stored correctly; only the read-back column metadata is currently wrong.

pip install -U any2heliosdb