Ryan Malloy 6b59816f9a Add Phase 0 wire captures (override global *.log gitignore)
The user's global ~/.gitignore_global excludes *.log universally, which
silently dropped our docs/CAPTURES/*.socat.log files from the previous
Phase 0 commit. Add explicit negation rules in the project .gitignore
so the spike capture deliverables are tracked.

Captured under socat MITM relay (host:9090 → container:9088, hex-dump
both directions), driven by tests/reference/RefClient.java:
- 01-connect-only.socat.log: bare login + disconnect (~1.7 KB)
- 02-select-1.socat.log: SELECT 1 round-trip (~6.7 KB)
- 02-dml-cycle.socat.log: CREATE TEMP + INSERT + SELECT (~9.9 KB)

These are referenced from PROTOCOL_NOTES.md §12 as the canonical
ground-truth for the wire-format claims.
2026-05-02 16:10:56 -06:00
2026-05-02 13:22:28 -06:00

informix-db

Pure-Python driver for IBM Informix IDS, speaking the SQLI wire protocol over raw sockets. No IBM Client SDK. No JVM. No native libraries.

Status

🚧 Phase 0 — Spike. Characterizing the SQLI wire protocol. No library code yet.

The protocol has never been published byte-for-byte by IBM. Every existing Informix driver in every language wraps either IBM's CSDK or the JDBC JAR. This project closes that gap.

Phase 0 deliverables

  • docs/PROTOCOL_NOTES.md — byte-level wire-format reference, derived from packet captures + JDBC decompilation
  • docs/JDBC_NOTES.md — index into the decompiled IBM JDBC driver's wire-protocol classes
  • docs/DECISION_LOG.md — running rationale for protocol/auth/type decisions
  • docs/CAPTURES/*.pcap — annotated packet captures of reference exchanges

If Phase 0's exit criteria are met, library implementation begins in Phase 1.

Test target

icr.io/informix/informix-developer-database (port 9088, native SQLI). See tests/docker-compose.yml once Phase 1 lands.

License

MIT.

Description
Pure-Python driver for IBM Informix IDS — speaks the SQLI wire protocol over a raw socket. No CSDK, no JVM, no native libraries.
https://informix-db.warehack.ing
Readme MIT 716 KiB
Languages
Python 85.6%
MDX 8.1%
CSS 2.1%
Java 1.7%
Astro 1%
Other 1.4%