aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* v0.6.0v0.6.0Stefan Majewsky2026-05-081-1/+1
|
* add type RuntimeIndexStefan Majewsky2026-05-083-0/+135
|
* v0.5.0v0.5.0Stefan Majewsky2026-05-081-1/+1
|
* allow both None or ErrNoRows in SelectOne{,Where}Stefan Majewsky2026-05-084-25/+141
| | | | | | | | | The None-returning style is more convenient when the application needs to genuinely behave differently in this case, e.g. returning 404 from an HTTP API endpoint (instead of 500 for a generic database error). The ErrNoRows-returning style is more convenient when control flow is not different for this case vs. other error cases.
* v0.4.0v0.4.0Stefan Majewsky2026-05-041-1/+1
|
* return None instead of ErrNoRows from SelectOne{,Where}Stefan Majewsky2026-05-048-33/+66
|
* run tests when a PR is posted on GitHubStefan Majewsky2026-05-031-0/+68
|
* README: adjust contribution notes, acknowledge the non-ORM-nessStefan Majewsky2026-05-021-3/+6
|
* v0.3.0v0.3.0Stefan Majewsky2026-04-301-1/+1
|
* shave an allocation and memcpy from Select() and SelectWhere()Stefan Majewsky2026-04-302-11/+42
|
* fix benchmark calling the wrong test functionStefan Majewsky2026-04-301-1/+1
| | | | I should have been suspicious of the Gorm/Gorp numbers matching exactly :)
* benchmark: provide a handwritten N=1 implementation for InsertAndDeleteStefan Majewsky2026-04-301-0/+29
| | | | | | | | | | | | | | | | As I had expected, this removes an unfair disadvantage for Oblast, which had to maintain two differently-typed slices for Insert() and Delete(). This is not really a fair comparison since usually you would not be doing both operations in one go. For Gorp, this rewrite is neutral. But in a shocking twist, Gorm somehow does _significantly_ worse with a specialized N=1 implementation: ``` BenchmarkInsertAndDelete/N=1/via_Gorm-24 before: 11508 B/op 157 allocs/op after: 12840 B/op 172 allocs/op ```
* add ctx arguments to most methodsStefan Majewsky2026-04-308-132/+154
|
* shave off some more allocationsStefan Majewsky2026-04-301-5/+5
|
* one more TODOStefan Majewsky2026-04-301-0/+4
|
* benchmark: compare InsertAndDelete to plain SQLite using QueryRow for INSERTStefan Majewsky2026-04-291-7/+41
|
* note to self: bad memory usage stats for Insert()Stefan Majewsky2026-04-241-0/+1
|
* add Store.Upsert()Stefan Majewsky2026-04-244-11/+188
|
* exclude testhelpers from coverage testingStefan Majewsky2026-04-249-11/+11
|
* remove support for SQL dialects that rely on LastInsertId()Stefan Majewsky2026-04-246-338/+122
| | | | | | | | | | While researching for Upsert(), I noticed that both SQLite and MariaDB support INSERT with RETURNING clause, which is objectively better than LastInsertId() and cuts out a lot of useless crap from the codebase (esp. from monomorphization-relevant methods). The only tangible downside is that this drops support specifically for MySQL, but you know what? Fuck Oracle.
* add query planning for Upsert()Stefan Majewsky2026-04-233-4/+99
|
* change Store.Insert() to take arguments by pointerStefan Majewsky2026-04-194-42/+52
| | | | | | | | This increases memory overhead slightly, but when converting Gorp uses into Oblast, I saw that there is a legitimate risk of just ignoring the result value and continuing with the unupdated records. So according to the design priorities that I myself laid down, I'm sacrificing some performance for safety of use.
* notes from trying Oblast in https://github.com/sapcc/castellumStefan Majewsky2026-04-181-0/+2
|
* README: refer to GitHub mirrorStefan Majewsky2026-04-181-0/+6
|
* v0.2.0v0.2.0Stefan Majewsky2026-04-181-1/+1
|
* add StructTagKeyIsStefan Majewsky2026-04-184-10/+31
| | | | | Forgot this in 0.1.0. Without this, I cannot migrate existing Gorp users because Gorp does not understand `db:",auto"`.
* v0.1.0v0.1.0Stefan Majewsky2026-04-181-0/+9
|
* add type PreparedSelectQueryStefan Majewsky2026-04-184-24/+205
|
* update repo descriptionStefan Majewsky2026-04-181-1/+1
|
* write out a proper READMEStefan Majewsky2026-04-182-5/+38
|
* fix Store.Insert() failing on tables without auto columnsStefan Majewsky2026-04-182-15/+68
|
* more test coverage, forbid non-zero auto columns during Insert()Stefan Majewsky2026-04-184-24/+264
|
* add TODOs for the remaining things that I want for 1.0Stefan Majewsky2026-04-172-0/+4
|
* benchmark: add GormStefan Majewsky2026-04-174-37/+126
|
* minimize function bodies for generic Insert function(s)Stefan Majewsky2026-04-171-37/+78
|
* Makefile: add benchmark targetStefan Majewsky2026-04-171-0/+3
|
* remove more instances of defer()Stefan Majewsky2026-04-172-12/+8
|
* reduce function body size for Update(), Delete()Stefan Majewsky2026-04-171-49/+54
|
* add type preparedStatement to simplify write opsStefan Majewsky2026-04-171-60/+65
|
* basic test coverage for Insert, Update, DeleteStefan Majewsky2026-04-173-3/+155
|
* improve test coverage, error reporting for Select()Stefan Majewsky2026-04-177-106/+242
|
* fix lintsStefan Majewsky2026-04-171-1/+1
|
* add Store.Update()Stefan Majewsky2026-04-163-7/+181
|
* add PrepareThreshold tuning parameterStefan Majewsky2026-04-162-16/+49
|
* benchmark: compare batches of prepared vs. one-off statementsStefan Majewsky2026-04-161-57/+103
|
* take non-pointer records on Insert()Stefan Majewsky2026-04-162-11/+13
|
* increase test coverage for planningStefan Majewsky2026-04-154-18/+156
|
* before scanning, spawn member structs within pointers as necessaryStefan Majewsky2026-04-154-5/+106
|
* clarify behavior around recursing into struct type membersStefan Majewsky2026-04-154-56/+137
|
* add MysqlDialectStefan Majewsky2026-04-142-0/+75
|