From 9abb71e5afd48bc8ce038f6093057bef52a25079 Mon Sep 17 00:00:00 2001 From: Vincent Behar Date: Fri, 27 Sep 2024 17:50:54 +0200 Subject: [PATCH] fix(sqlite): support all sqlite pragma statement fixes https://github.com/temporalio/cli/issues/681 - remove the extra underscore in the key - remove the pragma key check - let's support any pragma --- temporalcli/commands.server_test.go | 27 +++++++++++++++++++++++++++ temporalcli/devserver/server.go | 8 +------- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/temporalcli/commands.server_test.go b/temporalcli/commands.server_test.go index 02935845..40ca8962 100644 --- a/temporalcli/commands.server_test.go +++ b/temporalcli/commands.server_test.go @@ -3,6 +3,8 @@ package temporalcli_test import ( "context" "net" + "os" + "path/filepath" "strconv" "sync" "sync/atomic" @@ -41,6 +43,31 @@ func TestServer_StartDev_IPv4Unspecified(t *testing.T) { ) } +func TestServer_StartDev_SQLitePragma(t *testing.T) { + port := strconv.Itoa(devserver.MustGetFreePort("0.0.0.0")) + dbFilename := filepath.Join(os.TempDir(), "devserver-sqlite-pragma.sqlite") + defer func() { + _ = os.Remove(dbFilename) + _ = os.Remove(dbFilename + "-shm") + _ = os.Remove(dbFilename + "-wal") + }() + startDevServerAndRunSimpleTest( + t, + []string{ + "server", "start-dev", + "-p", port, "--headless", + "--db-filename", dbFilename, + "--sqlite-pragma", "journal_mode=WAL", + "--sqlite-pragma", "synchronous=NORMAL", + "--sqlite-pragma", "busy_timeout=5000", + }, + "0.0.0.0:"+port, + ) + assert.FileExists(t, dbFilename, "sqlite database file not created") + assert.FileExists(t, dbFilename+"-shm", "sqlite shared memory file not created") + assert.FileExists(t, dbFilename+"-wal", "sqlite write-ahead log file not created") +} + func TestServer_StartDev_IPv6Unspecified(t *testing.T) { _, err := net.InterfaceByName("::1") if err != nil { diff --git a/temporalcli/devserver/server.go b/temporalcli/devserver/server.go index c79287bc..60effbb4 100644 --- a/temporalcli/devserver/server.go +++ b/temporalcli/devserver/server.go @@ -321,13 +321,7 @@ func (s *StartOptions) buildSQLConfig() (*config.SQL, error) { conf.DatabaseName = s.DatabaseFile } for k, v := range s.SqlitePragmas { - // Only some pragmas allowed - switch k { - case "journal_mode", "synchronous": - default: - return nil, fmt.Errorf("unrecognized pragma %q, only 'journal_mode' and 'synchronous' allowed", k) - } - conf.ConnectAttributes["_"+k] = v + conf.ConnectAttributes[k] = v } // Apply migrations to sqlite if using file but it does not exist