{"id":16687112,"url":"https://github.com/paralin/modernc-sqlite","last_synced_at":"2026-04-25T15:35:08.223Z","repository":{"id":247773251,"uuid":"815323039","full_name":"paralin/modernc-sqlite","owner":"paralin","description":"Mirror of modernc.org/sqlite - a Cgo-free sqlite implementation for Go.","archived":false,"fork":false,"pushed_at":"2024-06-14T21:56:01.000Z","size":247165,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-25T15:35:07.708Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gitlab.com/cznic/sqlite","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paralin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-14T21:24:20.000Z","updated_at":"2025-02-13T08:58:38.000Z","dependencies_parsed_at":"2024-07-10T14:45:00.558Z","dependency_job_id":null,"html_url":"https://github.com/paralin/modernc-sqlite","commit_stats":null,"previous_names":["paralin/modernc-sqlite"],"tags_count":112,"template":false,"template_full_name":null,"purl":"pkg:github/paralin/modernc-sqlite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paralin%2Fmodernc-sqlite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paralin%2Fmodernc-sqlite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paralin%2Fmodernc-sqlite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paralin%2Fmodernc-sqlite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paralin","download_url":"https://codeload.github.com/paralin/modernc-sqlite/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paralin%2Fmodernc-sqlite/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32267710,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T15:07:48.218Z","updated_at":"2026-04-25T15:35:08.161Z","avatar_url":"https://github.com/paralin.png","language":"Go","readme":"# sqlite\n\nPackage sqlite is a cgo-free port of SQLite. Although you could see mattn's driver (`github.com/mattn/go-sqlite3`) in go.mod file, we import it for tests only.\n\nSQLite is an in-process implementation of a self-contained, serverless,\nzero-configuration, transactional SQL database engine.\n\n## Thanks\n\nThis project is sponsored by Schleibinger Geräte Teubert u. Greim GmbH by\nallowing one of the maintainers to work on it also in office hours.\n\n## Installation\n\n    $ go get modernc.org/sqlite\n\n## Documentation\n\n[pkg.go.dev/modernc.org/sqlite](https://pkg.go.dev/modernc.org/sqlite)\n\n## Builders\n\n[modern-c.appspot.com/-/builder/?importpath=modernc.org%2fsqlite](https://modern-c.appspot.com/-/builder/?importpath=modernc.org%2fsqlite)\n\n## Speedtest1\n\nNumbers for the pure Go version were produced by\n\n     ~/src/modernc.org/sqlite/speedtest1$ go build \u0026\u0026 ./speedtest1\n\nNumbers for the pure C version were produced by\n\n     ~/src/modernc.org/sqlite/testdata/sqlite-src-3410200/test$ gcc speedtest1.c ../../sqlite-amalgamation-3410200/sqlite3.c -lpthread -ldl \u0026\u0026 ./a.out\n\nThe results are from Go version 1.20.4 and GCC version 10.2.1 on a\nLinux/amd64 machine, CPU: AMD Ryzen 9 3900X 12-Core Processor × 24, 128GB\nRAM. Shown are the best of 3 runs.\n\n     Go\t\t\t\t\t\t\t\t\t\t\tC\n\n     -- Speedtest1 for SQLite 3.41.2 2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69\t-- Speedtest1 for SQLite 3.41.2 2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69\n      100 - 50000 INSERTs into table with no index......................    0.071s            100 - 50000 INSERTs into table with no index......................    0.077s\n      110 - 50000 ordered INSERTS with one index/PK.....................    0.114s            110 - 50000 ordered INSERTS with one index/PK.....................    0.082s\n      120 - 50000 unordered INSERTS with one index/PK...................    0.137s            120 - 50000 unordered INSERTS with one index/PK...................    0.099s\n      130 - 25 SELECTS, numeric BETWEEN, unindexed......................    0.083s            130 - 25 SELECTS, numeric BETWEEN, unindexed......................    0.091s\n      140 - 10 SELECTS, LIKE, unindexed.................................    0.210s            140 - 10 SELECTS, LIKE, unindexed.................................    0.120s\n      142 - 10 SELECTS w/ORDER BY, unindexed............................    0.276s            142 - 10 SELECTS w/ORDER BY, unindexed............................    0.182s\n      145 - 10 SELECTS w/ORDER BY and LIMIT, unindexed..................    0.183s            145 - 10 SELECTS w/ORDER BY and LIMIT, unindexed..................    0.099s\n      150 - CREATE INDEX five times.....................................    0.172s            150 - CREATE INDEX five times.....................................    0.127s\n      160 - 10000 SELECTS, numeric BETWEEN, indexed.....................    0.080s            160 - 10000 SELECTS, numeric BETWEEN, indexed.....................    0.078s\n      161 - 10000 SELECTS, numeric BETWEEN, PK..........................    0.080s            161 - 10000 SELECTS, numeric BETWEEN, PK..........................    0.078s\n      170 - 10000 SELECTS, text BETWEEN, indexed........................    0.187s            170 - 10000 SELECTS, text BETWEEN, indexed........................    0.169s\n      180 - 50000 INSERTS with three indexes............................    0.196s            180 - 50000 INSERTS with three indexes............................    0.154s\n      190 - DELETE and REFILL one table.................................    0.200s            190 - DELETE and REFILL one table.................................    0.155s\n      200 - VACUUM......................................................    0.180s            200 - VACUUM......................................................    0.142s\n      210 - ALTER TABLE ADD COLUMN, and query...........................    0.004s            210 - ALTER TABLE ADD COLUMN, and query...........................    0.005s\n      230 - 10000 UPDATES, numeric BETWEEN, indexed.....................    0.093s            230 - 10000 UPDATES, numeric BETWEEN, indexed.....................    0.080s\n      240 - 50000 UPDATES of individual rows............................    0.153s            240 - 50000 UPDATES of individual rows............................    0.137s\n      250 - One big UPDATE of the whole 50000-row table.................    0.024s            250 - One big UPDATE of the whole 50000-row table.................    0.019s\n      260 - Query added column after filling............................    0.004s            260 - Query added column after filling............................    0.005s\n      270 - 10000 DELETEs, numeric BETWEEN, indexed.....................    0.278s            270 - 10000 DELETEs, numeric BETWEEN, indexed.....................    0.263s\n      280 - 50000 DELETEs of individual rows............................    0.188s            280 - 50000 DELETEs of individual rows............................    0.180s\n      290 - Refill two 50000-row tables using REPLACE...................    0.411s            290 - Refill two 50000-row tables using REPLACE...................    0.359s\n      300 - Refill a 50000-row table using (b\u00261)==(a\u00261).................    0.175s            300 - Refill a 50000-row table using (b\u00261)==(a\u00261).................    0.151s\n      310 - 10000 four-ways joins.......................................    0.427s            310 - 10000 four-ways joins.......................................    0.365s\n      320 - subquery in result set......................................    0.440s            320 - subquery in result set......................................    0.521s\n      400 - 70000 REPLACE ops on an IPK.................................    0.125s            400 - 70000 REPLACE ops on an IPK.................................    0.106s\n      410 - 70000 SELECTS on an IPK.....................................    0.081s            410 - 70000 SELECTS on an IPK.....................................    0.078s\n      500 - 70000 REPLACE on TEXT PK....................................    0.174s            500 - 70000 REPLACE on TEXT PK....................................    0.116s\n      510 - 70000 SELECTS on a TEXT PK..................................    0.153s            510 - 70000 SELECTS on a TEXT PK..................................    0.117s\n      520 - 70000 SELECT DISTINCT.......................................    0.083s            520 - 70000 SELECT DISTINCT.......................................    0.067s\n      980 - PRAGMA integrity_check......................................    0.436s            980 - PRAGMA integrity_check......................................    0.377s\n      990 - ANALYZE.....................................................    0.107s            990 - ANALYZE.....................................................    0.038s\n            TOTAL.......................................................    5.525s                  TOTAL.......................................................    4.637s\n\nThis particular test executes 16.1% faster in the C version.\n\n## Troubleshooting\n\n* Q: **How can I write to a database concurrently without getting the `database is locked` error (or `SQLITE_BUSY`)?**\n     * A: You can't. The C sqlite implementation does not allow concurrent writes, and this libary does not modify that behaviour. You can, however, use [DB.SetMaxOpenConns(1)](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns) so that only 1 connection is ever used by the `DB`, allowing concurrent access to DB without making the writes concurrent. More information on issues [#65](https://gitlab.com/cznic/sqlite/-/issues/65) and [#106](https://gitlab.com/cznic/sqlite/-/issues/106).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparalin%2Fmodernc-sqlite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparalin%2Fmodernc-sqlite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparalin%2Fmodernc-sqlite/lists"}