Skip to content

v4.2.1

Choose a tag to compare

@tom-dyar tom-dyar released this 11 Oct 01:56
· 384 commits to main since this release
7da7928

v4.2.1 (2026-10-10)

Fixed

  • initialize_schema() deployed nothing from a process inside IRIS (irispython, EmbeddedConnection):
    deploy_packaged_classes called iris.createIRIS, which does not exist there, and the error was
    swallowed, so BFS, PageRank, BM25 and the vector index quietly ran their fallbacks. It now uses
    EmbeddedIRIS, which gained get / set for the deploy marker global, and spells % system
    methods the way irispython needs (%New is _New). Measured under irispython in a scratch
    namespace: 57 classes compiled, no errors, and a second deploy was a no-op. Reported by Mindwalk.

  • The first store_embedding failed on a fresh database inside IRIS: initialize_schema adopts the
    embedding tables into embedding_registry with no recorded width, the embedded cursor returns that
    NULL as '', and four registry reads did int('') (ValueError); embedding_inventory did the same
    with float('') for the measured recall. An empty width or recall now reads as none.
    Measured under irispython: the first write after the fix stores the row, and
    tests/e2e/test_embedded_irispython_e2e.py now runs a fresh namespace through initialize_schema,
    store_embedding, embedding_inventory and delete_node inside the container's own irispython
    (it fails on the 4.2.0 tag). Reported by Mindwalk.

  • EmbeddedCursor.execute raised SQLError (SQLCODE 100, empty message) for an UPDATE or DELETE that
    matched no row, which stopped upgrade_to_4_0_0 at its first statement on a database that had been
    through initialize_schema(). A no-row statement is now an empty result (rowcount 0), as on a
    client cursor; every other error still raises. executemany tolerates it the same way and keeps
    its one prepared statement.

  • EmbeddedIRIS gained nextSubscript, getString, kill and isDefined, the Native API calls
    migrations/kg_node_stores.py makes. Measured on real globals under irispython. Reported by Mindwalk.

Documented

  • store_edge writes SQL only, so ^KG (what ShortestPathJson and BFS read) is stale until sync();
    create_edge writes both. This is by design, now said in the docstring.