In shared-cache mode SQLite locks per table and answers a blocked write with
SQLITE_LOCKED, which busy_timeout does not wait out. The block write then
failed outright and every other write in indexBlock was dropped unseen.
Lux Partners Limited is not the entity behind this work. Every place the
old name stood — copyright lines, site footers, brand config, legal and
compliance text — now names the company that actually holds it.
lux.fund is the exception and is not renamed to match: that site belongs
to Lux Assets Management LLC, a different company, and it says so.
Two kinds of line were left for a person rather than rewritten. A dated
news item recording that Lux Partners Limited was established in the Isle
of Man is a historical fact, and renaming it would falsify the record. And
a sentence asserting that the company is domiciled in the Isle of Man is a
claim about a jurisdiction, not a name — an Inc or an LLC is not an Isle
of Man company, so swapping the name there would assert something untrue.
Co-authored-by: Hanzo Dev <[email protected]>
The wrapper this reached for registers the driver as "sqlite", and so does
modernc.org/sqlite, which arrives here with hanzoai/replicate. Two packages
under one name is a panic in init, before main runs.
csqlite is the same house C under "sqlite3" — the name every sql.Open here
already names, and one nothing else in this graph takes.
Co-authored-by: Hanzo Dev <[email protected]>
Two packages compiled the same amalgamation: upstream mattn/go-sqlite3 here,
and hanzoai/csqlite by way of hanzoai/sqlite, which luxfi/graph moved to. A
binary linking both — the explorer links all three of us — defines every
sqlite3_* symbol and every cgo trampoline twice and fails at link. It fails on
darwin; linux is laxer about duplicates, which is the only reason a build ever
got through.
hanzoai/sqlite is the house driver and csqlite registers both "sqlite" and
"sqlite3", so nothing but the import line changes: every sql.Open here still
names the driver it always named.
Co-authored-by: Hanzo Dev <[email protected]>
- Replace AUTOINCREMENT with BIGSERIAL for PostgreSQL
- Replace INSERT OR IGNORE with ON CONFLICT DO NOTHING
- Add DATABASE_URL environment variable support in unified storage
- Add schema helper functions to postgres.go query backend
Add a pluggable storage interface to support multiple backends:
- PostgreSQL: Full SQL support for Blockscout compatibility
- BadgerDB: Using luxfi/database for embedded key-value storage
- Dgraph: Graph database for cross-chain queries (future G-Chain)
The storage layer is designed to be lightweight and embeddable,
allowing the indexer to run either standalone or integrated
natively into chain code.
Key changes:
- storage/storage.go: Core Store interface and data types
- storage/postgres.go: PostgreSQL implementation
- storage/badger.go: BadgerDB via luxfi/database
- storage/dgraph.go: Dgraph graph database implementation