From 97d7538a07a99d85bcf4ff825982f4dc3426d845 Mon Sep 17 00:00:00 2001 From: Neil Macneale IV Date: Wed, 12 Nov 2025 20:58:26 +0000 Subject: [PATCH 1/6] First pass on disabling branch activity stats --- go/cmd/dolt/commands/engine/sqlengine.go | 3 ++- .../dolt/commands/sqlserver/command_line_config.go | 7 +++++++ go/cmd/dolt/commands/sqlserver/server.go | 1 + go/libraries/doltcore/doltdb/branch_activity.go | 8 +++++--- go/libraries/doltcore/servercfg/serverconfig.go | 5 +++++ .../servercfg/testdata/minver_validation.txt | 1 + go/libraries/doltcore/servercfg/yaml_config.go | 13 +++++++++++++ go/libraries/doltcore/servercfg/yaml_config_test.go | 3 +++ .../doltcore/sqle/enginetest/dolt_harness.go | 2 +- 9 files changed, 38 insertions(+), 5 deletions(-) diff --git a/go/cmd/dolt/commands/engine/sqlengine.go b/go/cmd/dolt/commands/engine/sqlengine.go index f1723f92ef..1daf2811f1 100644 --- a/go/cmd/dolt/commands/engine/sqlengine.go +++ b/go/cmd/dolt/commands/engine/sqlengine.go @@ -85,6 +85,7 @@ type SqlEngineConfig struct { AutoGCController *sqle.AutoGCController BinlogReplicaController binlogreplication.BinlogReplicaController EventSchedulerStatus eventscheduler.SchedulerStatus + BranchActivityTracking bool } type SqlEngineConfigOption func(*SqlEngineConfig) @@ -250,7 +251,7 @@ func NewSqlEngine( engine.Analyzer.Catalog.StatsProvider = statsPro - branchActivityTracker := doltdb.NewBranchActivityTracker(ctx) + branchActivityTracker := doltdb.NewBranchActivityTracker(ctx, config.BranchActivityTracking) engine.Analyzer.ExecBuilder = rowexec.NewOverrideBuilder(kvexec.Builder{}) sessFactory := doltSessionFactory(pro, statsPro, mrEnv.Config(), bcController, gcSafepointController, config.Autocommit, branchActivityTracker) diff --git a/go/cmd/dolt/commands/sqlserver/command_line_config.go b/go/cmd/dolt/commands/sqlserver/command_line_config.go index 988f4c2274..8a4fc055a7 100755 --- a/go/cmd/dolt/commands/sqlserver/command_line_config.go +++ b/go/cmd/dolt/commands/sqlserver/command_line_config.go @@ -42,6 +42,7 @@ type commandLineServerConfig struct { cfgDir string autoCommit bool doltTransactionCommit bool + branchActivityTracking bool maxConnections uint64 maxWaitConnections uint32 maxWaitConnsTimeout time.Duration @@ -86,6 +87,7 @@ func DefaultCommandLineServerConfig() *commandLineServerConfig { logLevel: servercfg.DefaultLogLevel, logFormat: servercfg.DefaultLogFormat, autoCommit: servercfg.DefaultAutoCommit, + branchActivityTracking: servercfg.DefaultBranchActivityTracking, maxConnections: servercfg.DefaultMaxConnections, maxWaitConnections: servercfg.DefaultMaxWaitConnections, maxWaitConnsTimeout: servercfg.DefaultMaxWaitConnectionsTimeout, @@ -282,6 +284,11 @@ func (cfg *commandLineServerConfig) DoltTransactionCommit() bool { return cfg.doltTransactionCommit } +// BranchActivityTracking enables or disables the tracking of branch activity for the dolt_branch_activity table. The default is false. +func (cfg *commandLineServerConfig) BranchActivityTracking() bool { + return cfg.branchActivityTracking +} + // MaxConnections returns the maximum number of simultaneous connections the server will allow. The default is 1 func (cfg *commandLineServerConfig) MaxConnections() uint64 { return cfg.maxConnections diff --git a/go/cmd/dolt/commands/sqlserver/server.go b/go/cmd/dolt/commands/sqlserver/server.go index 036bfc386d..4b3142292f 100644 --- a/go/cmd/dolt/commands/sqlserver/server.go +++ b/go/cmd/dolt/commands/sqlserver/server.go @@ -245,6 +245,7 @@ func ConfigureServices( ServerHost: cfg.ServerConfig.Host(), Autocommit: cfg.ServerConfig.AutoCommit(), DoltTransactionCommit: cfg.ServerConfig.DoltTransactionCommit(), + BranchActivityTracking: cfg.ServerConfig.BranchActivityTracking(), JwksConfig: cfg.ServerConfig.JwksConfig(), SystemVariables: cfg.ServerConfig.SystemVars(), ClusterController: clusterController, diff --git a/go/libraries/doltcore/doltdb/branch_activity.go b/go/libraries/doltcore/doltdb/branch_activity.go index 578e9c0bff..ae716aa421 100644 --- a/go/libraries/doltcore/doltdb/branch_activity.go +++ b/go/libraries/doltcore/doltdb/branch_activity.go @@ -72,15 +72,17 @@ type BranchActivityTracker struct { writeTimes map[branchActivityKey]time.Time systemStartTime time.Time activityChan chan branchActivityEvent + trackingEnabled bool } // NewBranchActivityTracker creates a new branch activity tracker instance -func NewBranchActivityTracker(ctx context.Context) *BranchActivityTracker { +func NewBranchActivityTracker(ctx context.Context, trackingEnabled bool) *BranchActivityTracker { tracker := &BranchActivityTracker{ readTimes: make(map[branchActivityKey]time.Time), writeTimes: make(map[branchActivityKey]time.Time), systemStartTime: time.Now(), activityChan: make(chan branchActivityEvent, 64), + trackingEnabled: trackingEnabled, } // Start background processor, we ignore the cancel function as the tracker doesn't have a lifecycle. @@ -117,7 +119,7 @@ func (t *BranchActivityTracker) processEvents(ctx context.Context) { // RecordReadEvent records when a branch is read/accessed func (t *BranchActivityTracker) RecordReadEvent(ctx context.Context, database, branch string) { - if ignoreEvent(ctx, branch) { + if !t.trackingEnabled || ignoreEvent(ctx, branch) { return } @@ -135,7 +137,7 @@ func (t *BranchActivityTracker) RecordReadEvent(ctx context.Context, database, b // RecordWriteEvent records when a branch is written/updated func (t *BranchActivityTracker) RecordWriteEvent(ctx context.Context, database, branch string) { - if ignoreEvent(ctx, branch) { + if !t.trackingEnabled || ignoreEvent(ctx, branch) { return } diff --git a/go/libraries/doltcore/servercfg/serverconfig.go b/go/libraries/doltcore/servercfg/serverconfig.go index ce83342328..e6559d6894 100644 --- a/go/libraries/doltcore/servercfg/serverconfig.go +++ b/go/libraries/doltcore/servercfg/serverconfig.go @@ -61,6 +61,7 @@ const ( DefaultAutoCommit = true DefaultAutoGCBehaviorEnable = true DefaultDoltTransactionCommit = false + DefaultBranchActivityTracking = false DefaultMaxConnections = 1000 DefaultMaxWaitConnections = 50 DefaultMaxWaitConnectionsTimeout = 60 * time.Second @@ -160,6 +161,8 @@ type ServerConfig interface { // DoltTransactionCommit defines the value of the @@dolt_transaction_commit session variable that enables Dolt // commits to be automatically created when a SQL transaction is committed. DoltTransactionCommit() bool + // BranchActivityTracking enables or disables the tracking of branch activity for the dolt_branch_activity table + BranchActivityTracking() bool // DataDir is the path to a directory to use as the data dir, both to create new databases and locate existing ones. DataDir() string // CfgDir is the path to a directory to use to store the dolt configuration files. @@ -248,6 +251,7 @@ func defaultServerConfigYAML() *YAMLConfig { ReadOnly: ptr(DefaultReadOnly), AutoCommit: ptr(DefaultAutoCommit), DoltTransactionCommit: ptr(DefaultDoltTransactionCommit), + BranchActivityTracking: ptr(DefaultBranchActivityTracking), AutoGCBehavior: &AutoGCBehaviorYAMLConfig{ Enable_: ptr(DefaultAutoGCBehaviorEnable), ArchiveLevel_: ptr(DefaultCompressionLevel), @@ -326,6 +330,7 @@ const ( LogFormatKey = "log_format" AutoCommitKey = "autocommit" DoltTransactionCommitKey = "dolt_transaction_commit" + BranchActivityTrackingKey = "branch_activity_tracking" DataDirKey = "data_dir" CfgDirKey = "cfg_dir" MaxConnectionsKey = "max_connections" diff --git a/go/libraries/doltcore/servercfg/testdata/minver_validation.txt b/go/libraries/doltcore/servercfg/testdata/minver_validation.txt index e700316ce2..0baf1c9780 100644 --- a/go/libraries/doltcore/servercfg/testdata/minver_validation.txt +++ b/go/libraries/doltcore/servercfg/testdata/minver_validation.txt @@ -15,6 +15,7 @@ BehaviorConfig servercfg.BehaviorYAMLConfig 0.0.0 behavior,omitempty -AutoGCBehavior *servercfg.AutoGCBehaviorYAMLConfig 1.50.0 auto_gc_behavior,omitempty --Enable_ *bool 1.50.0 enable,omitempty --ArchiveLevel_ *int 1.52.1 archive_level,omitempty +-BranchActivityTracking *bool TBD branch_activity_tracking,omitempty UserConfig servercfg.UserYAMLConfig 0.0.0 user,omitempty -Name *string 0.0.0 name,omitempty -Password *string 0.0.0 password,omitempty diff --git a/go/libraries/doltcore/servercfg/yaml_config.go b/go/libraries/doltcore/servercfg/yaml_config.go index 9dd2e41acc..c0da52e3ad 100644 --- a/go/libraries/doltcore/servercfg/yaml_config.go +++ b/go/libraries/doltcore/servercfg/yaml_config.go @@ -68,6 +68,8 @@ type BehaviorYAMLConfig struct { EventSchedulerStatus *string `yaml:"event_scheduler,omitempty" minver:"1.17.0"` AutoGCBehavior *AutoGCBehaviorYAMLConfig `yaml:"auto_gc_behavior,omitempty" minver:"1.50.0"` + + BranchActivityTracking *bool `yaml:"branch_activity_tracking,omitempty" minver:"TBD"` } // UserYAMLConfig contains server configuration regarding the user account clients must use to connect @@ -202,6 +204,7 @@ func ServerConfigAsYAMLConfig(cfg ServerConfig) *YAMLConfig { AutoCommit: ptr(cfg.AutoCommit()), DisableClientMultiStatements: ptr(cfg.DisableClientMultiStatements()), DoltTransactionCommit: ptr(cfg.DoltTransactionCommit()), + BranchActivityTracking: ptr(cfg.BranchActivityTracking()), EventSchedulerStatus: ptr(cfg.EventSchedulerStatus()), AutoGCBehavior: autoGCBehavior, }, @@ -275,6 +278,7 @@ func ServerConfigSetValuesAsYAMLConfig(cfg ServerConfig) *YAMLConfig { AutoCommit: zeroIf(ptr(cfg.AutoCommit()), !cfg.ValueSet(AutoCommitKey)), DisableClientMultiStatements: zeroIf(ptr(cfg.DisableClientMultiStatements()), !cfg.ValueSet(DisableClientMultiStatementsKey)), DoltTransactionCommit: zeroIf(ptr(cfg.DoltTransactionCommit()), !cfg.ValueSet(DoltTransactionCommitKey)), + BranchActivityTracking: zeroIf(ptr(cfg.BranchActivityTracking()), !cfg.ValueSet(BranchActivityTrackingKey)), EventSchedulerStatus: zeroIf(ptr(cfg.EventSchedulerStatus()), !cfg.ValueSet(EventSchedulerKey)), }, ListenerConfig: ListenerYAMLConfig{ @@ -663,6 +667,15 @@ func (cfg YAMLConfig) DoltTransactionCommit() bool { return *cfg.BehaviorConfig.DoltTransactionCommit } +// BranchActivityTracking enables or disables the tracking of branch activity for the dolt_branch_activity table +func (cfg YAMLConfig) BranchActivityTracking() bool { + if cfg.BehaviorConfig.BranchActivityTracking == nil { + return DefaultBranchActivityTracking + } + + return *cfg.BehaviorConfig.BranchActivityTracking +} + // LogLevel returns the level of logging that the server will use. func (cfg YAMLConfig) LogLevel() LogLevel { if cfg.LogLevelStr == nil { diff --git a/go/libraries/doltcore/servercfg/yaml_config_test.go b/go/libraries/doltcore/servercfg/yaml_config_test.go index d50f615cea..fc989bad72 100644 --- a/go/libraries/doltcore/servercfg/yaml_config_test.go +++ b/go/libraries/doltcore/servercfg/yaml_config_test.go @@ -37,6 +37,7 @@ behavior: auto_gc_behavior: enable: true archive_level: 1 + branch_activity_tracking: false listener: host: localhost @@ -89,6 +90,8 @@ jwks: expected := ServerConfigAsYAMLConfig(DefaultServerConfig()) expected.BehaviorConfig.DoltTransactionCommit = &trueValue + falseValue := false + expected.BehaviorConfig.BranchActivityTracking = &falseValue expected.CfgDirStr = nillableStrPtr("") expected.PrivilegeFile = ptr("some other nonsense") expected.BranchControlFile = ptr("third nonsense") diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_harness.go b/go/libraries/doltcore/sqle/enginetest/dolt_harness.go index 788ebc8758..476719306d 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_harness.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_harness.go @@ -133,7 +133,7 @@ func newDoltHarness(t *testing.T) *DoltHarness { t: t, skippedQueries: defaultSkippedQueries, parallelism: 1, - branchActivityTracker: doltdb.NewBranchActivityTracker(context.Background()), + branchActivityTracker: doltdb.NewBranchActivityTracker(context.Background(), false), // Default to disabled for tests } return dh From 5f9b3fcf9d7ca8f012e88f73c6979810fe404f35 Mon Sep 17 00:00:00 2001 From: macneale4 Date: Wed, 12 Nov 2025 21:07:15 +0000 Subject: [PATCH 2/6] [ga-format-pr] Run go/utils/repofmt/format_repo.sh and go/Godeps/update.sh --- go/libraries/doltcore/servercfg/serverconfig.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/go/libraries/doltcore/servercfg/serverconfig.go b/go/libraries/doltcore/servercfg/serverconfig.go index e6559d6894..04b70c2673 100644 --- a/go/libraries/doltcore/servercfg/serverconfig.go +++ b/go/libraries/doltcore/servercfg/serverconfig.go @@ -248,9 +248,9 @@ func defaultServerConfigYAML() *YAMLConfig { MaxQueryLenInLogs: ptr(DefaultMaxLoggedQueryLen), EncodeLoggedQuery: ptr(DefaultEncodeLoggedQuery), BehaviorConfig: BehaviorYAMLConfig{ - ReadOnly: ptr(DefaultReadOnly), - AutoCommit: ptr(DefaultAutoCommit), - DoltTransactionCommit: ptr(DefaultDoltTransactionCommit), + ReadOnly: ptr(DefaultReadOnly), + AutoCommit: ptr(DefaultAutoCommit), + DoltTransactionCommit: ptr(DefaultDoltTransactionCommit), BranchActivityTracking: ptr(DefaultBranchActivityTracking), AutoGCBehavior: &AutoGCBehaviorYAMLConfig{ Enable_: ptr(DefaultAutoGCBehaviorEnable), From c41a856796b42bfb1a991869445162cf5cdf0acf Mon Sep 17 00:00:00 2001 From: Neil Macneale IV Date: Wed, 12 Nov 2025 21:29:19 +0000 Subject: [PATCH 3/6] Fix test harness to enable branch activity tracking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The test harness was disabling branch activity tracking by default, which caused TestBranchActivity tests to fail. Branch activity tracking should be enabled by default in tests since existing tests expect it to be available. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- go/libraries/doltcore/sqle/enginetest/dolt_harness.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/libraries/doltcore/sqle/enginetest/dolt_harness.go b/go/libraries/doltcore/sqle/enginetest/dolt_harness.go index 476719306d..2d1015ac6b 100644 --- a/go/libraries/doltcore/sqle/enginetest/dolt_harness.go +++ b/go/libraries/doltcore/sqle/enginetest/dolt_harness.go @@ -133,7 +133,7 @@ func newDoltHarness(t *testing.T) *DoltHarness { t: t, skippedQueries: defaultSkippedQueries, parallelism: 1, - branchActivityTracker: doltdb.NewBranchActivityTracker(context.Background(), false), // Default to disabled for tests + branchActivityTracker: doltdb.NewBranchActivityTracker(context.Background(), true), // Default to enabled for tests } return dh From 44ba402768e29b87b512085dde93e9210b6ae2ec Mon Sep 17 00:00:00 2001 From: Neil Macneale IV Date: Wed, 12 Nov 2025 23:14:51 +0000 Subject: [PATCH 4/6] Add error handling for disabled branch activity tracking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Modified branch-activity.bats to use config file that enables tracking - Added IsTrackingEnabled() method to BranchActivityTracker - Added error check in branch_activity_table to return helpful error message when tracking is disabled - Added new test case to verify error is shown when tracking is disabled - Error message instructs users to enable via config: 'behavior.branch_activity_tracking: true' 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../doltcore/doltdb/branch_activity.go | 5 +++ .../sqle/dtables/branch_activity_table.go | 10 ++++++ integration-tests/bats/branch-activity.bats | 31 +++++++++++++++---- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/go/libraries/doltcore/doltdb/branch_activity.go b/go/libraries/doltcore/doltdb/branch_activity.go index ae716aa421..2d2246fc19 100644 --- a/go/libraries/doltcore/doltdb/branch_activity.go +++ b/go/libraries/doltcore/doltdb/branch_activity.go @@ -75,6 +75,11 @@ type BranchActivityTracker struct { trackingEnabled bool } +// IsTrackingEnabled returns whether branch activity tracking is enabled +func (t *BranchActivityTracker) IsTrackingEnabled() bool { + return t.trackingEnabled +} + // NewBranchActivityTracker creates a new branch activity tracker instance func NewBranchActivityTracker(ctx context.Context, trackingEnabled bool) *BranchActivityTracker { tracker := &BranchActivityTracker{ diff --git a/go/libraries/doltcore/sqle/dtables/branch_activity_table.go b/go/libraries/doltcore/sqle/dtables/branch_activity_table.go index 517a13e253..15b8ef770b 100644 --- a/go/libraries/doltcore/sqle/dtables/branch_activity_table.go +++ b/go/libraries/doltcore/sqle/dtables/branch_activity_table.go @@ -76,6 +76,16 @@ type BranchActivityItr struct { } func NewBranchActivityItr(ctx *sql.Context, table *BranchActivityTable) (*BranchActivityItr, error) { + // Check if branch activity tracking is enabled + if provider, ok := ctx.Session.(doltdb.BranchActivityProvider); ok { + tracker := provider.GetBranchActivityTracker() + if tracker == nil || !tracker.IsTrackingEnabled() { + return nil, fmt.Errorf("branch activity tracking is not enabled; enable it in the server config with 'behavior.branch_activity_tracking: true'") + } + } else { + return nil, fmt.Errorf("branch activity tracking is not enabled; enable it in the server config with 'behavior.branch_activity_tracking: true'") + } + sessionCounts, err := countActiveSessions(ctx) if err != nil { return nil, err diff --git a/integration-tests/bats/branch-activity.bats b/integration-tests/bats/branch-activity.bats index 7d9f5ecb17..b9fa0c4142 100644 --- a/integration-tests/bats/branch-activity.bats +++ b/integration-tests/bats/branch-activity.bats @@ -4,7 +4,7 @@ load $BATS_TEST_DIRNAME/helper/query-server-common.bash setup() { setup_no_dolt_init - + # Create first database mkdir repo1 cd repo1 @@ -15,9 +15,9 @@ setup() { dolt branch feature1 dolt branch feature2 dolt branch feature3 - + cd ../ - + # Create second database for multi-database testing mkdir repo2 cd repo2 @@ -27,9 +27,14 @@ setup() { dolt commit -Am "Initial commit" dolt branch dev dolt branch staging - + cd ../ - start_sql_server + + # Create config file to enable branch activity tracking + echo "behavior: + branch_activity_tracking: true" > server.yaml + + start_sql_server_with_config "" server.yaml } teardown() { @@ -119,7 +124,7 @@ start_idle_connection() { # Same for repo2, should result in read on dev dolt --use-db "repo2/dev" sql -q "SELECT SLEEP(60)" & sleep 1 - + run dolt --use-db repo1 sql -q "SELECT branch FROM dolt_branch_activity WHERE last_read IS NOT NULL" [ $status -eq 0 ] [[ "$output" =~ "main" ]] || false @@ -134,3 +139,17 @@ start_idle_connection() { [[ ! "$output" =~ "staging" ]] || false # staging should have no activity [[ ! "$output" =~ "feature1" ]] || false # feature1 should not appear (it's in repo1) } + +@test "branch-activity: error when tracking disabled" { + # Stop the server that has tracking enabled + stop_sql_server 1 + + # Start a new server without branch activity tracking (default config) + start_sql_server + + cd repo1 + # Attempt to query dolt_branch_activity should result in an error + run dolt sql -q "SELECT * FROM dolt_branch_activity" + [ $status -eq 1 ] + [[ "$output" =~ "branch activity tracking is not enabled" ]] || false +} From 237fe89968506294f1bc1f3a4d29efef518559a1 Mon Sep 17 00:00:00 2001 From: Neil Macneale IV Date: Wed, 12 Nov 2025 23:27:50 +0000 Subject: [PATCH 5/6] Fix bats test config to avoid duplicate YAML keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The start_sql_server_with_config function creates a config with a 'behavior:' section and appends the provided config file. This caused a YAML parse error when our config also had a 'behavior:' key. Fixed by creating a complete config file and using start_sql_server_with_args instead, which avoids the duplicate key issue. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- integration-tests/bats/branch-activity.bats | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/integration-tests/bats/branch-activity.bats b/integration-tests/bats/branch-activity.bats index b9fa0c4142..fafc7d3d35 100644 --- a/integration-tests/bats/branch-activity.bats +++ b/integration-tests/bats/branch-activity.bats @@ -30,11 +30,20 @@ setup() { cd ../ - # Create config file to enable branch activity tracking - echo "behavior: - branch_activity_tracking: true" > server.yaml + # Create complete config file with branch activity tracking enabled + cat > server.yaml < Date: Wed, 12 Nov 2025 23:49:02 +0000 Subject: [PATCH 6/6] Fix bats test to properly configure server port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The issue was that start_sql_server_with_args appends --port after --config, but the config file was resetting to defaults. Fixed by: 1. Calling definePORT to get an available port 2. Including the port in the config file under listener.port 3. Using start_sql_server_with_args_no_port which expects PORT to be set All 6 branch-activity tests now pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- integration-tests/bats/branch-activity.bats | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/integration-tests/bats/branch-activity.bats b/integration-tests/bats/branch-activity.bats index fafc7d3d35..238adb9e9f 100644 --- a/integration-tests/bats/branch-activity.bats +++ b/integration-tests/bats/branch-activity.bats @@ -30,20 +30,19 @@ setup() { cd ../ - # Create complete config file with branch activity tracking enabled + # Define port and create complete config file + # Can't use start_sql_server_with_config because it hardcodes behavior.autocommit: false + # and we can't override it without duplicate YAML keys + PORT=$( definePORT ) cat > server.yaml <