diff --git a/go/cmd/dolt/commands/sqlserver/server.go b/go/cmd/dolt/commands/sqlserver/server.go index 0627a116d8..1e7d54fe23 100644 --- a/go/cmd/dolt/commands/sqlserver/server.go +++ b/go/cmd/dolt/commands/sqlserver/server.go @@ -455,6 +455,7 @@ func getConfigFromServerConfig(serverConfig ServerConfig) (server.Config, error, serverConf.TLSConfig = tlsConfig serverConf.RequireSecureTransport = serverConfig.RequireSecureTransport() serverConf.MaxLoggedQueryLen = serverConfig.MaxLoggedQueryLen() + serverConf.EncodeLoggedQuery = serverConfig.ShouldEncodeLoggedQuery() return serverConf, nil, nil } diff --git a/go/cmd/dolt/commands/sqlserver/serverconfig.go b/go/cmd/dolt/commands/sqlserver/serverconfig.go index bed2f3dc02..d0dcdbb3b8 100644 --- a/go/cmd/dolt/commands/sqlserver/serverconfig.go +++ b/go/cmd/dolt/commands/sqlserver/serverconfig.go @@ -60,6 +60,7 @@ const ( defaultAllowCleartextPasswords = false defaultUnixSocketFilePath = "/tmp/mysql.sock" defaultMaxLoggedQueryLen = 0 + defaultEncodeLoggedQuery = false ) const ( @@ -129,6 +130,10 @@ type ServerConfig interface { // If this value is 0 then the query is not truncated and will be written to the logs in its entirety. If the value // is less than 0 then the queries will be omitted from the logs completely MaxLoggedQueryLen() int + // ShouldEncodeLoggedQuery determines if logged queries are base64 encoded. + // If true, queries will be logged as base64 encoded strings. + // If false (default behavior), queries will be logged as strings, but newlines and tabs will be replaced with spaces. + ShouldEncodeLoggedQuery() bool // PersistenceBehavior is "load" if we include persisted system globals on server init PersistenceBehavior() string // DisableClientMultiStatements is true if we want the server to not @@ -186,6 +191,7 @@ type commandLineServerConfig struct { tlsCert string requireSecureTransport bool maxLoggedQueryLen int + shouldEncodeLoggedQuery bool persistenceBehavior string privilegeFilePath string branchControlFilePath string @@ -279,6 +285,13 @@ func (cfg *commandLineServerConfig) MaxLoggedQueryLen() int { return cfg.maxLoggedQueryLen } +// ShouldEncodeLoggedQuery determines if logged queries are base64 encoded. +// If true, queries will be logged as base64 encoded strings. +// If false (default behavior), queries will be logged as strings, but newlines and tabs will be replaced with spaces. +func (cfg *commandLineServerConfig) ShouldEncodeLoggedQuery() bool { + return cfg.shouldEncodeLoggedQuery +} + // DisableClientMultiStatements is true if we want the server to not // process incoming ComQuery packets as if they had multiple queries in // them, even if the client advertises support for MULTI_STATEMENTS. diff --git a/go/cmd/dolt/commands/sqlserver/yaml_config.go b/go/cmd/dolt/commands/sqlserver/yaml_config.go index b83954b9d0..86d10ae395 100644 --- a/go/cmd/dolt/commands/sqlserver/yaml_config.go +++ b/go/cmd/dolt/commands/sqlserver/yaml_config.go @@ -131,6 +131,7 @@ type UserSessionVars struct { type YAMLConfig struct { LogLevelStr *string `yaml:"log_level"` MaxQueryLenInLogs *int `yaml:"max_logged_query_len"` + EncodeLoggedQuery *bool `yaml:"encode_logged_query"` BehaviorConfig BehaviorYAMLConfig `yaml:"behavior"` UserConfig UserYAMLConfig `yaml:"user"` ListenerConfig ListenerYAMLConfig `yaml:"listener"` @@ -442,6 +443,14 @@ func (cfg YAMLConfig) MaxLoggedQueryLen() int { return *cfg.MaxQueryLenInLogs } +func (cfg YAMLConfig) ShouldEncodeLoggedQuery() bool { + if cfg.EncodeLoggedQuery == nil { + return defaultEncodeLoggedQuery + } + + return *cfg.EncodeLoggedQuery +} + // PersistenceBehavior is "load" if we include persisted system globals on server init func (cfg YAMLConfig) PersistenceBehavior() string { if cfg.BehaviorConfig.PersistenceBehavior == nil {