Skip to content

Commit 1b27b1d

Browse files
committed
feat: run user startup script in DoAfterConnect call, which includes reconnects
Refs #1896
1 parent 1029657 commit 1b27b1d

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

source/dbconnection.pas

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3225,6 +3225,9 @@ procedure TDBConnection.DoAfterConnect;
32253225
var
32263226
SQLFunctionsFileOrder: String;
32273227
MajorMinorVer, MajorVer: String;
3228+
StartupScript: String;
3229+
StartupBatch: TSQLBatch;
3230+
SqlQuery: TSQLSentence;
32283231
begin
32293232
FSqlProvider.ServerVersion := ServerVersionInt;
32303233
AppSettings.SessionPath := FParameters.SessionPath;
@@ -3258,6 +3261,24 @@ procedure TDBConnection.DoAfterConnect;
32583261
else
32593262
SQLFunctionsFileOrder := '';
32603263
FSQLFunctions := TSQLFunctionList.Create(Self, SQLFunctionsFileOrder);
3264+
3265+
// Process startup script
3266+
StartupScript := Trim(FParameters.StartupScriptFilename);
3267+
if StartupScript <> '' then begin
3268+
StartupScript := ExpandFileName(StartupScript);
3269+
if not FileExists(StartupScript) then
3270+
Log(lcError, f_('Startup script file not found: %s', [StartupScript]))
3271+
else begin
3272+
StartupBatch := TSQLBatch.Create(FParameters.NetTypeGroup);
3273+
StartupBatch.SQL := ReadTextfile(StartupScript, nil);
3274+
for SqlQuery in StartupBatch do try
3275+
Query(SqlQuery.SQL);
3276+
except
3277+
// Suppress popup, errors get logged into SQL log
3278+
end;
3279+
StartupBatch.Free;
3280+
end;
3281+
end;
32613282
end;
32623283

32633284

source/main.pas

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4237,9 +4237,7 @@ procedure TMainForm.SessionConnect(Sender: TObject);
42374237
function TMainform.InitConnection(Params: TConnectionParameters; ActivateMe: Boolean; var Connection: TDBConnection): Boolean;
42384238
var
42394239
RestoreLastActiveDatabase: Boolean;
4240-
StartupScript, LastActiveDatabase: String;
4241-
StartupBatch: TSQLBatch;
4242-
Query: TSQLSentence;
4240+
LastActiveDatabase: String;
42434241
SessionNode, DBNode: PVirtualNode;
42444242
begin
42454243
Connection := Params.CreateConnection(Self);
@@ -4286,24 +4284,6 @@ function TMainform.InitConnection(Params: TConnectionParameters; ActivateMe: Boo
42864284
end;
42874285
end;
42884286

4289-
// Process startup script
4290-
StartupScript := Trim(Connection.Parameters.StartupScriptFilename);
4291-
if StartupScript <> '' then begin
4292-
StartupScript := ExpandFileName(StartupScript);
4293-
if not FileExists(StartupScript) then
4294-
ErrorDialog(f_('Startup script file not found: %s', [StartupScript]))
4295-
else begin
4296-
StartupBatch := TSQLBatch.Create(Connection.Parameters.NetTypeGroup);
4297-
StartupBatch.SQL := ReadTextfile(StartupScript, nil);
4298-
for Query in StartupBatch do try
4299-
Connection.Query(Query.SQL);
4300-
except
4301-
// Suppress popup, errors get logged into SQL log
4302-
end;
4303-
StartupBatch.Free;
4304-
end;
4305-
end;
4306-
43074287
if Params.WantSSL and not Connection.IsSSL then begin
43084288
MessageDialog(_('SSL not used.'),
43094289
_('Your SSL settings were not accepted by the server, or the server does not support any SSL configuration.'),

0 commit comments

Comments
 (0)