<feed xmlns='http://www.w3.org/2005/Atom'>
<title>go-oblast/benchmark, branch v0.10.0</title>
<subtitle>A small ORM library for Go, focused on type safety and performance
</subtitle>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/'/>
<entry>
<title>replace Wrap with NewDB/NewConn/NewTx</title>
<updated>2026-05-18T21:09:08+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-05-18T21:09:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=743a9f457b1682ee6a2883753102f5cf579ea9ae'/>
<id>743a9f457b1682ee6a2883753102f5cf579ea9ae</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>return a concrete type from Wrap() to enable non-Oblast DB operations</title>
<updated>2026-05-12T23:13:17+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-05-12T23:11:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=a561ebb42148c72638f943e44191da07c16df7f6'/>
<id>a561ebb42148c72638f943e44191da07c16df7f6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>add PostgreSQL benchmark, comparing lib/pq against pgx both with and w/o Oblast</title>
<updated>2026-05-12T21:32:28+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-05-12T21:32:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=a86a346ecceb7ad409f116474c1593b201012cf2'/>
<id>a86a346ecceb7ad409f116474c1593b201012cf2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>change Handle to a generic interface without explicit dep on database/sql</title>
<updated>2026-05-12T11:11:41+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-05-12T11:11:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=7bdc14a145c4b5c380921abf1db3f2c00a9c66cc'/>
<id>7bdc14a145c4b5c380921abf1db3f2c00a9c66cc</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>allow both None or ErrNoRows in SelectOne{,Where}</title>
<updated>2026-05-08T14:52:46+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-05-08T14:52:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=f79d61a9eef42a05aca6f4ddb8d95192549036a5'/>
<id>f79d61a9eef42a05aca6f4ddb8d95192549036a5</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>return None instead of ErrNoRows from SelectOne{,Where}</title>
<updated>2026-05-04T14:23:24+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-05-04T14:23:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=f2d6d6f2f24e7e7d594296b77fa044ccd547321d'/>
<id>f2d6d6f2f24e7e7d594296b77fa044ccd547321d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix benchmark calling the wrong test function</title>
<updated>2026-04-29T23:19:20+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-04-29T23:19:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=651fb229ce9dba18fe076a8a33b904c74e1b7c6f'/>
<id>651fb229ce9dba18fe076a8a33b904c74e1b7c6f</id>
<content type='text'>
I should have been suspicious of the Gorm/Gorp numbers matching exactly :)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I should have been suspicious of the Gorm/Gorp numbers matching exactly :)
</pre>
</div>
</content>
</entry>
<entry>
<title>benchmark: provide a handwritten N=1 implementation for InsertAndDelete</title>
<updated>2026-04-29T23:09:48+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-04-29T23:02:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=ea9464fccd26783564e852f10212fc9ce850c5ff'/>
<id>ea9464fccd26783564e852f10212fc9ce850c5ff</id>
<content type='text'>
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
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
```
</pre>
</div>
</content>
</entry>
<entry>
<title>add ctx arguments to most methods</title>
<updated>2026-04-29T22:56:38+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-04-29T22:56:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=71d4c873bd12233b585637404115cfea9462c904'/>
<id>71d4c873bd12233b585637404115cfea9462c904</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>benchmark: compare InsertAndDelete to plain SQLite using QueryRow for INSERT</title>
<updated>2026-04-29T21:36:28+00:00</updated>
<author>
<name>Stefan Majewsky</name>
<email>majewsky@gmx.net</email>
</author>
<published>2026-04-29T21:36:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.xyrillian.de/go-oblast/commit/?id=b0c7e5a3bd1e590d49f793da65a74d646eadb538'/>
<id>b0c7e5a3bd1e590d49f793da65a74d646eadb538</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
