Comments (5)
Alternative idea:
type causer interface {
Cause() error
}
func ErrCode(err error) ErrorCode {
if ce, ok := err.(causer); ok {
return ErrCode(ce.Cause())
}
// ... current ErrCode code
}
This would support github.com/pkg/errors
without creating a dependency.
Just two data points:
- https://github.com/pkg/errors is currently imported by 12131 packages
- https://github.com/go-errors/errors is currently imported by 387 packages
from sqlite.
Your second alternative is not so bad, but I wonder if this belongs in the sqlite package. I think a user can write their own ErrCode wrapper function and use that instead of sqlite.ErrCode, which can do any kind of handling they want. Is that not the case?
from sqlite.
Your second alternative is not so bad, but I wonder if this belongs in the sqlite package. I think a user can write their own ErrCode wrapper function and use that instead of sqlite.ErrCode, which can do any kind of handling they want. Is that not the case?
Well, ErrCode()
is used in sqliteutil to determine whether to RELEASE
or ROLLBACK
at the end of a savepoint so.. yes and no.
(The err
that Save()'s releaseFn
analyzes would definitely be wrapped)
I suppose I could reimplement Save
myself, but as we've seen today, it is tricky to get right :)
from sqlite.
sqliteutil.Save
is a good argument. If you want to send a PR that looks for a causer interface I'll take it.
from sqlite.
Oh you did already. :-)
from sqlite.
Related Issues (20)
- Per-connection pragmas (synchronous) HOT 6
- Build fails on 386 HOT 2
- Further simplification of sqlitex.Pool.Get is not correct HOT 4
- Code generation? HOT 1
- doubled quoted key names as argument to json_object cause Prepare to fail HOT 1
- Multiple sqlitex.Pools giving off by 1 values HOT 2
- sqlitex.ExecScript fails to run scripts that include statements that cannot be executed within a transaction HOT 2
- API to retrieve column blob into slice of arbitrary length HOT 2
- BindBytes stores empty blobs as NULL HOT 2
- Pool.Close leaves behind WAL files HOT 8
- The state of the project. HOT 8
- No way to write blob in custom function
- Compile Time error HOT 5
- Compilation warning about memcpy with gcc 11.2.0 HOT 8
- sqlite.Stmt.Finalize should panic if called on a Stmt returned from Conn.Prepare HOT 5
- Running PRAGMA statments in sqlitex.OpenInit script
- sqlite3 math extension HOT 4
- Unable to build on Windows
- Build failure when using gcc 12. HOT 1
- ExecScript and Save panic on corrupt database
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqlite.