1
0
Fork 0

190 Commits (b3ba19c0bdb509962ca2e34495fd9a8088861d4a)

Author SHA1 Message Date
Philip O'Toole db1768c63f Initial implementation of two database connections 3 years ago
Philip O'Toole 90a0d397c6 Switch from mode=memory to vfs=memdb for in-mem DB 3 years ago
Philip O'Toole 791a1b0b72 Remove obsolete references to DSN 3 years ago
Philip O'Toole e0da96dd55 Remove support for specifying SQLite DSN
This is a breaking change. However this feature hasn't been tested and
allows end-users to break the system too easily. Low-level control over
the SQLite database is better done with PRAGMA commands where possible.
3 years ago
Philip O'Toole 028419af0f Fix race in in-memory database testing 3 years ago
Philip O'Toole 1ee7a9eb17 Limit in-memory connection pool to 1 connection
https://github.com/mattn/go-sqlite3/issues/959#issuecomment-890283264
3 years ago
Philip O'Toole 911df4c03b Don't leak a database if deserialization fails
Fixes https://github.com/rqlite/rqlite/issues/837.
3 years ago
Philip O'Toole 8693694d14 Add current SQLite journal mode to status output 3 years ago
Philip O'Toole 503825dbaf Remove Abort functionality
No longer relevant since each Exec and Query gets its own connection.
3 years ago
Philip O'Toole 561bb47a14 Port DB layer to sql/database
Empty statements now cause panic.
3 years ago
Philip O'Toole eb8dcf74ff Start moving to SQL layer
Builds.
3 years ago
Philip O'Toole 5f5f7dbbea Sync use of DB connection
Possible, albeit simple, fix for https://github.com/rqlite/rqlite/issues/830
3 years ago
Philip O'Toole 665d9913bb Add top-level Deserialize() to db layer 4 years ago
Philip O'Toole b83b2b241d Merge branch 'master' into no-disk-during-restore 4 years ago
Philip O'Toole 18a4f38701 Add Copy() method to db layer 4 years ago
Philip O'Toole ce7a3a6912 Merge branch 'master' into no-disk-during-restore 4 years ago
Philip O'Toole 535d690d7c Tigthen up Store-level locking
Previous locking didn't look quite correct, and with the advent of the
Serialize functionality, it needs to be more precise.
4 years ago
Philip O'Toole 7900adbf53 Add Deserialize to DB layer 4 years ago
Philip O'Toole 93a78f09a0 Add call to Serialize function 4 years ago
Philip O'Toole 488a9554ea Switch to rqlite fork of go-sqlite3 4 years ago
Philip O'Toole 011bc00784
Add SQLite database page-centric size to status output 4 years ago
Philip O'Toole 6575de779d
Use Protobuf for encoding Raft Log commands
This PR changes Raft Log Entry encoding from JSON to Protobuf. Furthermore, larger Raft commands (which can result from batching SQL statements, or individually long SQL statements) are compressed before encoding.

This primary reason for this change is to reduce IO load since that is one of the largest performance bottlenecks. It will also reduce internode traffic.

Legacy JSON-encoded commands are still handled by this code, so this change is backwards-compatible with previous releases in the v5 series.
4 years ago
Philip O'Toole b4867713e4 Better variable name, Query -> SQL 4 years ago
Philip O'Toole ee9f929735 ABL 4 years ago
Philip O'Toole f961bb4e44 Fix typos and comments 4 years ago
Philip O'Toole 1075315a11 DB Query now accepts complex Statements 4 years ago
Philip O'Toole db992d1dce DB Execute now accepts complex Statements 4 years ago
Philip O'Toole 3cfb0c3910 JSON types are also text 5 years ago
Philip O'Toole b283ecc86d Ensure backup is correctly closed
Also catch any error that occurs during close.
5 years ago
Philip O'Toole 0e69be3949 Store layer supports generating SQL format backups
Port PR453.
5 years ago
Philip O'Toole 43ea24fb82 DB layer supports generating SQL format backups
Port of PR451.
5 years ago
Philip O'Toole 0471877f26 Abort transaction if load operation fails 5 years ago
Philip O Toole 6bbdc88c1d ABL
Always be linting.
7 years ago
Philip O Toole b0e7432dc3 Check for nil row from Execer 8 years ago
Philip O'Toole 9a7ff4c979 Handle "" types
Add unit test for concatenated queries. This deals with issue #240 but
this may be a hack. I need to dig into this issue more.
8 years ago
Philip O'Toole 75417f6d1e Start handling the various SQLite TEXT types
This is the start of a code change to handle this comprehensively.
8 years ago
Philip O'Toole d140b1e8c7 More database-level stats 8 years ago
Philip O'Toole 48f7bb2c50 Add low-level DB expvar stats 8 years ago
Philip O Toole 6815f09873 Database can return FK constraint state 8 years ago
Philip O'Toole cb12dc17bf Reduce cyclo complexity of query code 8 years ago
Philip O'Toole acb592aa0b Tighten logic for FK constraint control 8 years ago
Philip O'Toole c40fff4d46 Support controlling FK constraints at startup
This was possible previously, but would need to be set everytime on
startup via the API. This change allows it to set at startup AND enables
foreign constraint checking by default.
8 years ago
Philip O'Toole b248b0f4e1 Trivial formatting changes 8 years ago
Benjamen Keroack 3f064afc31 db: only convert row value to string if the column type is text 8 years ago
Philip O Toole bf2047b45b 'go lint' fixes 8 years ago
Philip O'Toole 6405dc01a8 Add function for loading in-memory db from file 9 years ago
Philip O'Toole 31cda32a38 'go fmt' fixes 9 years ago
Philip O'Toole f4c9ff0c3b Start with new DB layer 9 years ago
Philip O'Toole 721445acd0 Update db.go 9 years ago
Philip O'Toole 9b4f0d409e More package doc for db 9 years ago
Philip O'Toole 2b08c194ea Update db.go 9 years ago
Philip O'Toole 7b628686bf Add SQLite version to diagnostics 9 years ago
Philip O Toole 1554934e88 'go fmt' fixes 9 years ago
Zac Medico 285c8d4be6 Use sqlite3.SQLiteDriver directly, fix issue #73 9 years ago
Philip O Toole 300d58cfd3 'go fmt' fixes 9 years ago
Zac Medico 9f348a6171 Use SQLiteRows.DeclTypes() to fix issue #52 9 years ago
Zac Medico f62787624c
Bypass sql.DB for queries (for direct SQLiteRows access)
It's necessary to bypass sql.DB in order to gain access to SQLiteRows
instances, which is the first step toward inclusion of result column
type declarations in query results for issue #52.
9 years ago
Philip O'Toole 3f1a3b3777 Fix Raft snapshots of in-memory databases
The snapshot code assumed all databases were disk-based.
9 years ago
Philip O Toole f1963221ca Small fixes and formatting 9 years ago
Philip O Toole 3ffed779f8 Move to POST for bulk queries
Backup endpoint also added, but not fully-functional.
9 years ago
Philip O Toole 524e6170bf Final tests of backup 9 years ago
Philip O Toole 8b3c4202cc Work for database backup
Tests are failing.
9 years ago
Philip O Toole fac68c3cdd Return time in seconds 9 years ago
Philip O Toole 170a916dd5 fmt and lint fixes 9 years ago
Philip O Toole 4ff67c2c90 Support in-memory databases 9 years ago
Philip O Toole 2ba973d7b7 Allow control of time display from db layer
This is not a great solution, and somewhat of a hack to make
unit-testing easier. However, it will allow control over "time"
in the response in the future.
9 years ago
Philip O Toole f33ffc2936 Measure time per statement 9 years ago
Philip O Toole 1b41f789b8 Remove debug panic() 9 years ago
Philip O Toole 297479bc4e Make multi-SELECT work 9 years ago
Philip O Toole ee4ffe1d15 Comment cleanups 9 years ago
Philip O Toole a6cb950ff4 Allow DSN config at command line
It might still need to be richer, so end-users could specify an
in-memory SQLite database. Specifying a DSN would require the user
to supply the full path to the SQLite database. This is OK. However,
the code then needs to be able to parse out the path to the database
so it can remove it before start up.
9 years ago
Philip O Toole 2ebec9b973 Start adding support for snapshots
This shows that passing the database into the Raft module is probably
not going to work, since the database could be opened in two ways -
 directly at startup, and be completely restored from the log, or with
a combination of restoring from a snapshot, followed by the remaining
log entries. In both cases the database must be opened using the
requested DSN settings.

A detailed config object for controlling SQLite behaviour, is probably
best, and it should be passed to the Raft store on start up.

Finally, file-level copying of the SQLite file can only take place if
no transaction is in effect. This might be handled by the use of a
RWLock. The write-lock is taken during Execute() and Snapshot, but
the Read lock is taken during Query(). Unfortunately this may reduce
the concurrency of inserts and updates. Perhaps the Backup call on
the Go SQLite library might be better, but it might be slow.
9 years ago
Philip O'Toole 1bbff9d53a Lowest-layer database tests completed 9 years ago
Philip O'Toole e047d9e9d9 Test_SimpleFailingStatements ported 9 years ago
Philip O'Toole 1855f2d541 Fix up use of interface{} and *interface{} 9 years ago
Philip O'Toole e8490b842e Query in db package almost there
It's the handling of the types, and ensuring they can be cast correctly,
which is what is next.
9 years ago
Philip O'Toole 63c74cabea Fully build with new db package 9 years ago
Philip O'Toole f6984f4134 Small wrapper around sqlite3 9 years ago
Philip O'Toole 08c310400a No need for db package 9 years ago
Philip O'Toole b95c84d16e Add database interface to Store
CREATE TABLE now works.
9 years ago
Philip O'Toole e43b0bc421 Initialize SQLite store 9 years ago
Philip O'Toole 12aef34625 Start integrating actual SQLite support
Builds without error.
9 years ago
Fernando Álvarez 022b536ade Revert "Revert "Merge pull request #25 from oscillatingworks/deprecate-log4go""
This reverts commit fe415e6452.
10 years ago
Philip O'Toole fe415e6452 Revert "Merge pull request #25 from oscillatingworks/deprecate-log4go"
This reverts commit f2de6cc26e, reversing
changes made to cdc6021ae7.

The change causes a panic when the server is started like so:

$GOPATH/bin/rqlite ~/node.1
10 years ago
Fernando Álvarez 48f9b8bfd4 gometalinter: rqlite/db
db/db.go:14:1⚠️ dbName is unused
db/db.go:30:11⚠️ error return value not checked (os.Remove(dbPath))
db/db.go:63:18⚠️ error return value not checked (defer rows.Close())
db/db.go:15:⚠️ unused global variable dbName
10 years ago
Fernando Álvarez eba40187a9 Deprecate code.google.com/p/log4go
- Add new internal `rqlite/log` package
- Replace `log4go` with `rqlite/log`
- Adapt log formatting in existing logs

Fixes #21
10 years ago
Philip O'Toole b91f275d1b Enhance logging 10 years ago
Philip O'Toole 4758106e53 Log a warning if a query might change the database 10 years ago
Philip O'Toole 1629c63987 Construct some log strings more idiomatically 10 years ago
Philip O'Toole e69218ef4a Layout source in a more conventional style 10 years ago