mirror of
https://github.com/tiennm99/thptqg.git
synced 2026-08-15 01:25:11 +00:00
Comments across the tree justified the code by pointing at a Rust implementation that is no longer in the repository, citing files and line numbers (config.rs:132, schema.rs:26-54, reader.rs:42) that cannot be opened, plus crates and datasets that are equally gone. A reader could not check any of it. Every invariant those comments carried is kept and restated so it stands on its own: the bytewise sort that decides which row survives a duplicate exam number, the literal U+0300..U+036F range that must match the site's toAscii, the trailing space in "SINH ", the BIFF and shared-string corrections, the VACUUM-after-COMMIT rule, the deploy-from-main guard. The reader's contract is now anchored to the frozen oracle in parser/testdata, which still exists and is still checked, rather than to the tool that originally produced it. TestDDLMatchesRust becomes TestDDLIsFrozen: it compares against a copy of the DDL inside the test and never read schema.rs, so both the name and the failure message were misleading. ToAscii no longer claims the d-replacement must precede lowercasing. Both cases map to 'd' and ToLower runs last, so the order has no effect.
25 lines
991 B
Go
25 lines
991 B
Go
// Package sqlitedb registers the SQLite driver the parser writes with and names
|
|
// it in one place.
|
|
//
|
|
// modernc.org/sqlite is a pure-Go SQLite, chosen so the whole module stays
|
|
// cgo-free — grate, excelize and yaml.v3 are pure Go too, so CI can compile with
|
|
// CGO_ENABLED=0 and no C toolchain.
|
|
//
|
|
// It is a machine-transpiled SQLite, not the upstream C amalgamation, which is
|
|
// acceptable only because the parser sticks to plain SQL: no CTEs, window
|
|
// functions, triggers or extensions. Adding any of those means re-verifying the
|
|
// driver.
|
|
//
|
|
// Verified on linux/arm64 with v1.56.0 (SQLite 3.53.3): the full DDL including
|
|
// the partial idx_ten_cum_thi index, INSERT OR REPLACE, and VACUUM.
|
|
//
|
|
// Fallback if the driver is ever implicated: mattn/go-sqlite3 is upstream C at
|
|
// the cost of cgo.
|
|
package sqlitedb
|
|
|
|
// Registers "sqlite" with database/sql.
|
|
import _ "modernc.org/sqlite"
|
|
|
|
// DriverName is the database/sql driver name to pass to sql.Open.
|
|
const DriverName = "sqlite"
|