aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2024-10-30 16:36:00 -0300
committerEuAndreh <eu@euandre.org>2024-11-02 04:21:28 -0300
commit1fdc3bc11a577e9b8180152554a8a48ce3f815bf (patch)
tree090afe69f43a34d36662fa0f2ba81f241f1c48ee
parentsrc/golite.go: Use IMMEDIATE transaction for db.Begin() (diff)
downloadgolite-1fdc3bc11a577e9b8180152554a8a48ce3f815bf.tar.gz
golite-1fdc3bc11a577e9b8180152554a8a48ce3f815bf.tar.xz
src/golite.go: Differentiate InMemory from InMemoryUnsafe
-rw-r--r--src/golite.go5
-rw-r--r--tests/golite.go87
2 files changed, 50 insertions, 42 deletions
diff --git a/src/golite.go b/src/golite.go
index 7153766..76e14f7 100644
--- a/src/golite.go
+++ b/src/golite.go
@@ -1053,8 +1053,9 @@ const (
columnTimestamp string = "timestamp"
)
-const InMemory = ":memory:"
-const DriverName = "acude"
+const InMemoryUnsafe = ":memory:"
+const InMemory = "file:mem?mode=memory&cache=shared"
+const DriverName = "golite"
func init() {
sql.Register(DriverName, &SQLiteDriver{})
}
diff --git a/tests/golite.go b/tests/golite.go
index 2c7fe6c..3b6c11e 100644
--- a/tests/golite.go
+++ b/tests/golite.go
@@ -123,6 +123,7 @@ func testBackup(t *testing.T, testRowCount int, usePerPageSteps bool) {
if err != nil {
t.Fatal("Failed to check the destination table count:", err)
}
+
if destTableCount != 0 {
t.Fatalf("The destination database is not empty; %v table(s) found.", destTableCount)
}
@@ -139,6 +140,7 @@ func testBackup(t *testing.T, testRowCount int, usePerPageSteps bool) {
if err != nil {
t.Fatal("Unable to perform an initial 0-page backup step:", err)
}
+
if isDone {
t.Fatal("Backup is unexpectedly done.")
}
@@ -148,10 +150,12 @@ func testBackup(t *testing.T, testRowCount int, usePerPageSteps bool) {
if initialPageCount <= 0 {
t.Fatalf("Unexpected initial page count value: %v", initialPageCount)
}
+
initialRemaining := backup.Remaining()
if initialRemaining <= 0 {
t.Fatalf("Unexpected initial remaining value: %v", initialRemaining)
}
+
if initialRemaining != initialPageCount {
t.Fatalf("Initial remaining value differs from the initial page count value; remaining: %v; page count: %v", initialRemaining, initialPageCount)
}
@@ -198,6 +202,7 @@ func testBackup(t *testing.T, testRowCount int, usePerPageSteps bool) {
if err != nil {
t.Fatal("Failed to perform a backup step:", err)
}
+
if !isDone {
t.Fatal("Backup is unexpectedly not done.")
}
@@ -208,6 +213,7 @@ func testBackup(t *testing.T, testRowCount int, usePerPageSteps bool) {
if finalPageCount != initialPageCount {
t.Fatalf("Final page count differs from the initial page count; initial page count: %v; final page count: %v", initialPageCount, finalPageCount)
}
+
finalRemaining := backup.Remaining()
if finalRemaining != 0 {
t.Fatalf("Unexpected remaining value: %v", finalRemaining)
@@ -235,6 +241,7 @@ func testBackup(t *testing.T, testRowCount int, usePerPageSteps bool) {
if err != nil {
t.Fatal("Failed to determine the rowcount of the \"test\" table in the destination database:", err)
}
+
if testRowCount != actualTestTableRowCount {
t.Fatalf("Unexpected destination \"test\" table row count; expected: %v; found: %v", testRowCount, actualTestTableRowCount)
}
@@ -276,7 +283,7 @@ func TestBackupError(t *testing.T) {
})
// Connect to the database.
- db, err := sql.Open(driverName, InMemory)
+ db, err := sql.Open(driverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open the database:", err)
}
@@ -448,7 +455,7 @@ func TestSqlLogicErrors(t *testing.T) {
}
defer os.RemoveAll(dirName)
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Error(err)
}
@@ -474,7 +481,7 @@ func TestExtendedErrorCodes_ForeignKey(t *testing.T) {
}
defer os.RemoveAll(dirName)
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Error(err)
}
@@ -514,7 +521,7 @@ func TestExtendedErrorCodes_NotNull(t *testing.T) {
}
defer os.RemoveAll(dirName)
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Error(err)
}
@@ -564,7 +571,7 @@ func TestExtendedErrorCodes_Unique(t *testing.T) {
}
defer os.RemoveAll(dirName)
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Error(err)
}
@@ -645,7 +652,7 @@ func TestError_SystemErrno(t *testing.T) {
}
func TestBeginTxCancel(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -704,7 +711,7 @@ func TestBeginTxCancel(t *testing.T) {
}
func TestStmtReadonly(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -745,7 +752,7 @@ func TestStmtReadonly(t *testing.T) {
}
func TestNamedParams(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -835,7 +842,7 @@ func initDatabase(t *testing.T, db *sql.DB, rowCount int64) {
}
func TestShortTimeout(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -980,7 +987,7 @@ func TestQueryRowContextCancelParallel(t *testing.T) {
}
func TestExecCancel(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -1161,7 +1168,7 @@ func TestFileCopyTruncate(t *testing.T) {
func TestColumnTableName(t *testing.T) {
d := SQLiteDriver{}
- conn, err := d.Open(InMemory)
+ conn, err := d.Open(InMemoryUnsafe)
if err != nil {
t.Fatal("failed to get database connection:", err)
}
@@ -1194,7 +1201,7 @@ func TestColumnTableName(t *testing.T) {
}
func TestFTS5(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -1788,7 +1795,7 @@ func TestDeferredForeignKey(t *testing.T) {
}
func TestClose(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -1812,7 +1819,7 @@ func TestClose(t *testing.T) {
}
func TestInsert(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -1853,7 +1860,7 @@ func TestUpsert(t *testing.T) {
if n < 3024000 {
t.Skip("UPSERT requires sqlite3 >= 3.24.0")
}
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -1896,7 +1903,7 @@ func TestUpsert(t *testing.T) {
}
func TestUpdate(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -1959,7 +1966,7 @@ func TestUpdate(t *testing.T) {
}
func TestDelete(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2018,7 +2025,7 @@ func TestDelete(t *testing.T) {
}
func TestBooleanRoundtrip(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2067,7 +2074,7 @@ func TestBooleanRoundtrip(t *testing.T) {
func timezone(t time.Time) string { return t.Format("-07:00") }
func TestTimestamp(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2167,7 +2174,7 @@ func TestTimestamp(t *testing.T) {
}
func TestBoolean(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2257,7 +2264,7 @@ func TestBoolean(t *testing.T) {
}
func TestFloat32(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2292,7 +2299,7 @@ func TestFloat32(t *testing.T) {
}
func TestNull(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2321,7 +2328,7 @@ func TestNull(t *testing.T) {
}
func TestTransaction(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2378,7 +2385,7 @@ func TestTransaction(t *testing.T) {
}
func TestWAL(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2512,7 +2519,7 @@ func TestTimezoneConversion(t *testing.T) {
// TODO: Execer & Queryer currently disabled
// https://github.com/mattn/go-sqlite3/issues/82
func TestExecer(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2530,7 +2537,7 @@ func TestExecer(t *testing.T) {
}
func TestQueryer(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2579,7 +2586,7 @@ func TestQueryer(t *testing.T) {
}
func TestStress(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2681,7 +2688,7 @@ func TestVersion(t *testing.T) {
}
func TestStringContainingZero(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2739,7 +2746,7 @@ func (t TimeStamp) Value() (driver.Value, error) {
}
func TestDateTimeNow(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2773,7 +2780,7 @@ func TestAggregatorRegistration(t *testing.T) {
return conn.RegisterAggregator("customSum", customSum, true)
},
})
- db, err := sql.Open("sqlite3_AggregatorRegistration", InMemory)
+ db, err := sql.Open("sqlite3_AggregatorRegistration", InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2840,7 +2847,7 @@ func TestAggregatorRegistration_GenericReturn(t *testing.T) {
return conn.RegisterAggregator("mode", newMode, true)
},
})
- db, err := sql.Open("sqlite3_AggregatorRegistration_GenericReturn", InMemory)
+ db, err := sql.Open("sqlite3_AggregatorRegistration_GenericReturn", InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2897,7 +2904,7 @@ func TestCollationRegistration(t *testing.T) {
},
})
- db, err := sql.Open("sqlite3_CollationRegistration", InMemory)
+ db, err := sql.Open("sqlite3_CollationRegistration", InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -2991,7 +2998,7 @@ func TestDeclTypes(t *testing.T) {
d := SQLiteDriver{}
- conn, err := d.Open(InMemory)
+ conn, err := d.Open(InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to begin transaction:", err)
}
@@ -3023,7 +3030,7 @@ func TestDeclTypes(t *testing.T) {
}
func TestPinger(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -3057,7 +3064,7 @@ func TestUpdateAndTransactionHooks(t *testing.T) {
return nil
},
})
- db, err := sql.Open("sqlite3_UpdateHook", InMemory)
+ db, err := sql.Open("sqlite3_UpdateHook", InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -3134,7 +3141,7 @@ func TestSetFileControlInt(t *testing.T) {
}
func TestNonColumnString(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -3154,7 +3161,7 @@ func TestNonColumnString(t *testing.T) {
}
func TestNilAndEmptyBytes(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -3209,7 +3216,7 @@ func TestNilAndEmptyBytes(t *testing.T) {
}
func TestInsertNilByteSlice(t *testing.T) {
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal(err)
}
@@ -3230,7 +3237,7 @@ func TestInsertNilByteSlice(t *testing.T) {
func TestNamedParam(t *testing.T) {
tempFilename := TempFilename(t)
defer os.Remove(tempFilename)
- db, err := sql.Open(DriverName, InMemory)
+ db, err := sql.Open(DriverName, InMemoryUnsafe)
if err != nil {
t.Fatal("Failed to open database:", err)
}
@@ -3585,7 +3592,7 @@ func testExecEmptyQuery(t *testing.T) {
func MainTest() {
- tests := []testing.InternalTest {
+ tests := []testing.InternalTest{
{ "TestBackupStepByStep", TestBackupStepByStep },
{ "TestBackupAllRemainingPages", TestBackupAllRemainingPages },
{ "TestBackupError", TestBackupError },