-
c85aaf2ecb
Docs: put named row access where someone leaving IfxPy will find it
main
Ryan Malloy
2026-09-03 16:06:34 -06:00
-
acc21b8b81
Docs: row_factory reference, and the write-path corruption warning
Ryan Malloy
2026-09-03 16:00:53 -06:00
-
9fbb97199f
Release 2026.09.03 — placeholder rewriter, and named row access
v2026.09.03
Ryan Malloy
2026-09-03 15:59:26 -06:00
-
ce5a582048
Testing Row found the same mistake I keep making
Ryan Malloy
2026-09-03 15:51:46 -06:00
-
805fa58eb2
Rows can answer to a column name, if you ask for it
Ryan Malloy
2026-09-03 15:42:56 -06:00
-
088171325d
The placeholder rewriter could not see a string literal
Ryan Malloy
2026-09-03 12:45:58 -06:00
-
7ffc148112
Docs: cover the 2026.09.02 review, and drop every em-dash
Ryan Malloy
2026-09-02 10:36:44 -06:00
-
8f341c4b2a
Release 2026.09.02 — a systematic review, and eleven bugs it found
v2026.09.02
Ryan Malloy
2026-09-02 10:28:27 -06:00
-
429a3910e4
The async layer borrowed a thread pool belonging to the whole process
Ryan Malloy
2026-09-02 01:03:12 -06:00
-
5ad296419c
Two readers shared a stream without agreeing, and a length was taken on trust
Ryan Malloy
2026-09-02 00:54:12 -06:00
-
c67bbc4766
Statement classification guessed from the first word and got five forms wrong
Ryan Malloy
2026-09-02 00:38:31 -06:00
-
2eb5ac8f0f
The finalizer's lock probe couldn't see its own thread
Ryan Malloy
2026-09-02 00:29:04 -06:00
-
ac00a25cb7
A session has one statement slot and the driver acted as if it had many
Ryan Malloy
2026-09-02 00:24:09 -06:00
-
0d8bd57ba9
The last two doors out of a statement didn't release it
Ryan Malloy
2026-09-02 00:10:23 -06:00
-
66120cf6f3
Rows never checked that they consumed their own payload
Ryan Malloy
2026-09-02 00:04:26 -06:00
-
2e30ceacfb
Regenerate uv.lock for 2026.09.01
v2026.09.01
Ryan Malloy
2026-09-01 22:32:33 -06:00
-
2896f7e93e
TLS traffic fuzzed; no bugs found (2026.09.01)
Ryan Malloy
2026-09-01 22:32:10 -06:00
-
488773f078
Regenerate uv.lock for 2026.08.31.3
v2026.08.31.3
Ryan Malloy
2026-08-31 19:13:32 -06:00
-
ac9075ca9a
An encoding failure inside executemany leaked the statement (2026.08.31.3)
Ryan Malloy
2026-08-31 19:11:05 -06:00
-
3d19ca0f1b
Regenerate uv.lock for 2026.08.31.2
v2026.08.31.2
Ryan Malloy
2026-08-31 17:17:30 -06:00
-
4af1c90c6f
Failed statements bricked the connection; cancelled acquires starved the pool (2026.08.31.2)
Ryan Malloy
2026-08-31 17:13:43 -06:00
-
4e186bb890
Regenerate uv.lock for 2026.08.31.1
Ryan Malloy
2026-08-31 16:01:34 -06:00
-
15d75dd052
Type-matrix fuzzer, and the three bugs it found (2026.08.31.1)
v2026.08.31.1
Ryan Malloy
2026-08-31 15:48:48 -06:00
-
5c6991efba
Regenerate uv.lock for 2026.08.31
Ryan Malloy
2026-08-31 14:32:50 -06:00
-
9616ddbc0a
Fix LVARCHAR tuple framing; DATETIME fractions on bind (2026.08.31)
v2026.08.31
Ryan Malloy
2026-08-31 14:26:17 -06:00
-
85d3a8f7d7
Docs site: correct APIs that don't exist, document what does
Ryan Malloy
2026-08-27 09:29:02 -06:00
-
f5a539d4a8
Add py.typed marker (PEP 561)
v2026.08.27
Ryan Malloy
2026-08-27 02:51:23 -06:00
-
aa51ee82e0
Regenerate uv.lock after the distribution rename
Ryan Malloy
2026-08-27 02:49:36 -06:00
-
36478f02c4
Decode the SQ_PROTOCOLS capability negotiation (2026.08.27)
Ryan Malloy
2026-08-27 02:18:08 -06:00
-
783b2bec97
Verify Informix 14.10 and 12.10; make the version matrix reproducible
Ryan Malloy
2026-08-27 00:36:35 -06:00
-
87b5b7c354
Fix three tuple-framing bugs: BOOLEAN, NCHAR, INT8/SERIAL8 (2026.05.08.2)
Ryan Malloy
2026-08-26 23:40:39 -06:00
-
2d83ed7b45
Wire-dump: lift overflow-x: auto to base rule (tablet-portrait fix)
Ryan Malloy
2026-05-08 06:07:43 -06:00
-
dc7b9bfd94
Mobile: fix hero overflow at ≤640px, shrink wire-dump, hide ASCII column
Ryan Malloy
2026-05-08 06:01:47 -06:00
-
ab5be68738
Hero CTA: 'GitHub' button text → 'Source' (link already pointed at Gitea)
Ryan Malloy
2026-05-08 05:44:11 -06:00
-
21c47385ae
Prose rebrand: informix-db → informix-driver across docs site
Ryan Malloy
2026-05-08 05:43:07 -06:00
-
b67e6d008b
Homepage frontmatter title: informix-db → informix-driver (browser tab consistency)
Ryan Malloy
2026-05-08 05:01:22 -06:00
-
073c7ed513
Site header: informix-db → informix-driver
Ryan Malloy
2026-05-08 05:00:36 -06:00
-
9af0a4cec9
Rename docs domain: informix-db.warehack.ing → informix-driver.warehack.ing
Ryan Malloy
2026-05-08 04:29:08 -06:00
-
24feabd21b
Rename PyPI distribution: informix-db → informix-driver
Ryan Malloy
2026-05-08 04:17:57 -06:00
-
1582a5295d
Prepare 2026.05.08 for first PyPI publish
Ryan Malloy
2026-05-08 04:13:09 -06:00
-
86070e4688
Add docs-site: Astro + Starlight at informix-db.warehack.ing
Ryan Malloy
2026-05-08 03:23:22 -06:00
-
ad55391bf1
Phase 39: Connection-scoped read-ahead buffer (2026.05.05.12)
Ryan Malloy
2026-05-08 01:40:54 -06:00
-
a5e6cf1ae3
Phase 38: exec()-based row decoder codegen (2026.05.05.11)
Ryan Malloy
2026-05-05 14:19:26 -06:00
-
7f729b3a38
Phase 37: Pre-baked per-column reader strategy (2026.05.05.10)
v2026.05.05.10
Ryan Malloy
2026-05-05 13:50:40 -06:00
-
5825d5c55e
Extend scaling benches: 100-column case + 100k memory profile + 1M gating
Ryan Malloy
2026-05-05 13:10:32 -06:00
-
270155d2de
Phase 36: IfxPy scaling comparison + honest comparison numbers (2026.05.05.9)
v2026.05.05.9
Ryan Malloy
2026-05-05 12:44:52 -06:00
-
8eb19f7534
Phase 34: Scaling benchmarks (1k/10k/100k rows; 5/20/50 cols) (2026.05.05.8)
v2026.05.05.8
Ryan Malloy
2026-05-05 12:38:07 -06:00
-
1282893412
Phase 35: CRITICAL fix - NFETCH loop for large result sets (2026.05.05.7)
v2026.05.05.7
Ryan Malloy
2026-05-05 12:37:22 -06:00
-
362ecb3d63
Phase 33: Pipelined executemany - 2.85x faster bulk insert (2026.05.05.6)
v2026.05.05.6
Ryan Malloy
2026-05-05 12:26:15 -06:00
-
01757415a5
Phase 32: Benchmark improvements (Tier 1 + Tier 2)
v2026.05.05.5
Ryan Malloy
2026-05-05 12:01:11 -06:00
-
a9e1f17bae
Phase 31: Head-to-head benchmark vs IfxPy (the C-bound PyPI driver)
Ryan Malloy
2026-05-05 11:41:47 -06:00
-
eb8d15d204
README + classifier polish for PyPI launch
Ryan Malloy
2026-05-05 11:06:49 -06:00
-
0b13acb13d
Phase 30: Final hardening pass (2026.05.05.4)
v2026.05.05.4
Ryan Malloy
2026-05-05 10:52:39 -06:00
-
8e8b81fe8d
Phase 29: Deferred-cleanup queue (2026.05.05.3)
v2026.05.05.3
Ryan Malloy
2026-05-05 10:47:49 -06:00
-
fdb9ba32d5
Phase 28: Resource leak hardening (2026.05.05.2)
v2026.05.05.2
Ryan Malloy
2026-05-05 03:56:24 -06:00
-
6afdbcabb3
Phase 27: Wire lock + async cancellation eviction (2026.05.05.1)
v2026.05.05.1
Ryan Malloy
2026-05-05 03:40:39 -06:00
-
5c4a7a57f1
Phase 26: Pool rollback-on-release - CRITICAL data-correctness fix (2026.05.05)
v2026.05.05
Ryan Malloy
2026-05-05 03:22:18 -06:00
-
e9aed6ce59
Phase 25: Branch reorder + invariant tripwires (2026.05.04.10)
v2026.05.04.10
Ryan Malloy
2026-05-04 23:34:05 -06:00
-
dfa60ea501
Phase 24: Decoder dispatch split + struct precompilation (2026.05.04.9)
v2026.05.04.9
Ryan Malloy
2026-05-04 19:31:21 -06:00
-
f3e589c5bf
Phase 23: Hot-path optimization for parse_tuple_payload (2026.05.04.8)
v2026.05.04.8
Ryan Malloy
2026-05-04 17:52:20 -06:00
-
0e0dfcba26
Phase 22: User-facing documentation refresh (2026.05.04.7)
v2026.05.04.7
Ryan Malloy
2026-05-04 17:33:37 -06:00
-
495128c679
Phase 21.1: executemany perf - it was the autocommit cliff (2026.05.04.6)
v2026.05.04.6
Ryan Malloy
2026-05-04 17:26:16 -06:00
-
90ce035a00
Phase 21: Performance benchmarks (2026.05.04.5)
v2026.05.04.5
Ryan Malloy
2026-05-04 17:21:12 -06:00
-
bea1a1cd0c
Phase 20: UTF-8/multibyte locale support (2026.05.04.4)
v2026.05.04.4
Ryan Malloy
2026-05-04 17:13:19 -06:00
-
9703279bc8
Phase 19: resilience tests via fault injection (v2026.05.04.3)
v2026.05.04.3
Ryan Malloy
2026-05-04 16:57:06 -06:00
-
a42dc5c5de
Phase 18: server-side scrollable cursors via SQ_SFETCH (v2026.05.04.2)
v2026.05.04.2
Ryan Malloy
2026-05-04 16:41:25 -06:00
-
461c62c8d3
Phase 17: scroll cursor API (v2026.05.04.1)
v2026.05.04.1
Ryan Malloy
2026-05-04 15:51:24 -06:00
-
0c856372a6
v2026.05.04: bump CalVer + polish docs
v2026.05.04
Ryan Malloy
2026-05-04 15:38:09 -06:00
-
300e1bf7b4
Phase 16: async API (informix_db.aio)
Ryan Malloy
2026-05-04 14:58:19 -06:00
-
5e26b34564
Phase 15: connection pool
Ryan Malloy
2026-05-04 14:50:27 -06:00
-
345838fe2d
Phase 14: TLS / SSL transport
Ryan Malloy
2026-05-04 14:46:53 -06:00
-
fa3ab751f9
Phase 13: SQ_FPROUTINE / SQ_EXFPROUTINE fast-path RPC
Ryan Malloy
2026-05-04 14:36:21 -06:00
-
9048335462
Phase 12: ROW / COLLECTION type recognition
Ryan Malloy
2026-05-04 14:30:44 -06:00
-
dc91084d71
Phase 11: smart-LOB BLOB/CLOB write via SQ_FILE / filetoblob
Ryan Malloy
2026-05-04 14:14:37 -06:00
-
a9a3cfc38e
Phase 10: smart-LOB BLOB read via SQ_FILE / lotofile
Ryan Malloy
2026-05-04 13:46:18 -06:00
-
389c32434c
Phase 9: smart-LOB BLOB/CLOB locator decoding (Phase 10 deferred for fetch)
Ryan Malloy
2026-05-04 13:26:15 -06:00
-
52259f0152
Phase 8: BYTE/TEXT bind+read via SQ_BBIND/SQ_BLOB/SQ_FETCHBLOB
Ryan Malloy
2026-05-04 13:13:55 -06:00
-
1c19c71cb6
Phase 7: real transaction semantics on logged databases
Ryan Malloy
2026-05-04 12:54:02 -06:00
-
f546f951c8
Phase 6.f: BYTE/TEXT/BLOB/CLOB protocol research (deferred to Phase 8+)
Ryan Malloy
2026-05-04 12:37:46 -06:00
-
888b8079d3
Phase 6.e: INTERVAL parameter encoding
Ryan Malloy
2026-05-04 12:30:48 -06:00
-
4dafbf8ce9
Phase 6.d: INTERVAL decoding (both qualifier families)
Ryan Malloy
2026-05-04 12:22:07 -06:00
-
10863a9337
Phase 6.c: DATE / DATETIME / DECIMAL parameter encoding
Ryan Malloy
2026-05-04 12:09:16 -06:00
-
6819dd4cb0
Phase 6.b: DATETIME decoding for all qualifier ranges
Ryan Malloy
2026-05-04 12:02:40 -06:00
-
d04000dfc3
Phase 5.a: real error messages with PEP 249 exception classification
Ryan Malloy
2026-05-04 11:59:03 -06:00
-
2bacbc4e53
Phase 6.a: DECIMAL/MONEY row decoding works (COUNT/SUM/AVG return Decimal)
Ryan Malloy
2026-05-04 11:17:59 -06:00
-
d508a489fd
Phase 4.x: parameterized SELECT, NULL row decoding, executemany()
Ryan Malloy
2026-05-04 11:11:50 -06:00
-
509af9efa4
Phase 4: parameter binding (SQ_BIND) — int, float, str, bool, None
Ryan Malloy
2026-05-04 10:54:32 -06:00
-
92c4fdbcbf
Phase 3: DDL + DML + commit/rollback wire machinery
Ryan Malloy
2026-05-04 08:02:48 -06:00
-
34ad04a872
Phase 2.x: VARCHAR row decoding works — three byte-level fixes
Ryan Malloy
2026-05-04 07:55:13 -06:00
-
a1bd52788d
Phase 2: SELECT works end-to-end — pure-Python Informix fully reads data
Ryan Malloy
2026-05-03 15:37:10 -06:00
-
e2c48f855e
Phase 2 progress: cursor scaffolding + protocol findings (SELECT path WIP)
Ryan Malloy
2026-05-02 21:04:30 -06:00
-
ddac40ff0b
Phase 2 foundations: _types.py, converters.py, post-login protocol notes
Ryan Malloy
2026-05-02 20:24:25 -06:00
-
ea00990774
Phase 1 polish: PDU match test catches a real capability-int bug
Ryan Malloy
2026-05-02 20:18:03 -06:00
-
9b1fd8af2c
Phase 1: pure-Python SQLI login works end-to-end
Ryan Malloy
2026-05-02 19:10:24 -06:00
-
6b59816f9a
Add Phase 0 wire captures (override global *.log gitignore)
Ryan Malloy
2026-05-02 16:10:56 -06:00
-
2f3cababfa
Phase 0: capture wire traffic and cross-reference against JDBC
Ryan Malloy
2026-05-02 16:10:25 -06:00
-
1a149074d4
Phase 0: populate PROTOCOL_NOTES and JDBC_NOTES from clean-room JDBC reading
Ryan Malloy
2026-05-02 16:00:30 -06:00
-
f202dbce0c
Initialize Phase 0 spike scaffold
Ryan Malloy
2026-05-02 13:22:28 -06:00