Skip to content

Commit eb5a3a5

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

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
@@ -3375,6 +3375,9 @@ procedure TDBConnection.DoAfterConnect;
33753375
var
33763376
SQLFunctionsFileOrder: String;
33773377
MajorMinorVer, MajorVer: String;
3378+
StartupScript: String;
3379+
StartupBatch: TSQLBatch;
3380+
SqlQuery: TSQLSentence;
33783381
begin
33793382
FSqlProvider.ServerVersion := ServerVersionInt;
33803383
AppSettings.SessionPath := FParameters.SessionPath;
@@ -3408,6 +3411,24 @@ procedure TDBConnection.DoAfterConnect;
34083411
else
34093412
SQLFunctionsFileOrder := '';
34103413
FSQLFunctions := TSQLFunctionList.Create(Self, SQLFunctionsFileOrder);
3414+
3415+
// Process startup script
3416+
StartupScript := Trim(FParameters.StartupScriptFilename);
3417+
if StartupScript <> '' then begin
3418+
StartupScript := ExpandFileName(StartupScript);
3419+
if not FileExists(StartupScript) then
3420+
Log(lcError, f_('Startup script file not found: %s', [StartupScript]))
3421+
else begin
3422+
StartupBatch := TSQLBatch.Create(FParameters.NetTypeGroup);
3423+
StartupBatch.SQL := ReadTextfile(StartupScript, nil);
3424+
for SqlQuery in StartupBatch do try
3425+
Query(SqlQuery.SQL);
3426+
except
3427+
// Suppress popup, errors get logged into SQL log
3428+
end;
3429+
StartupBatch.Free;
3430+
end;
3431+
end;
34113432
end;
34123433

34133434

source/main.pas

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4336,9 +4336,7 @@ procedure TMainForm.SessionConnect(Sender: TObject);
43364336
function TMainform.InitConnection(Params: TConnectionParameters; ActivateMe: Boolean; var Connection: TDBConnection): Boolean;
43374337
var
43384338
RestoreLastActiveDatabase: Boolean;
4339-
StartupScript, LastActiveDatabase: String;
4340-
StartupBatch: TSQLBatch;
4341-
Query: TSQLSentence;
4339+
LastActiveDatabase: String;
43424340
SessionNode, DBNode: PVirtualNode;
43434341
begin
43444342
Connection := Params.CreateConnection(Self);
@@ -4381,24 +4379,6 @@ function TMainform.InitConnection(Params: TConnectionParameters; ActivateMe: Boo
43814379
end;
43824380
end;
43834381

4384-
// Process startup script
4385-
StartupScript := Trim(Connection.Parameters.StartupScriptFilename);
4386-
if StartupScript <> '' then begin
4387-
StartupScript := ExpandFileName(StartupScript);
4388-
if not FileExists(StartupScript) then
4389-
ErrorDialog(f_('Startup script file not found: %s', [StartupScript]))
4390-
else begin
4391-
StartupBatch := TSQLBatch.Create(Connection.Parameters.NetTypeGroup);
4392-
StartupBatch.SQL := ReadTextfile(StartupScript, nil);
4393-
for Query in StartupBatch do try
4394-
Connection.Query(Query.SQL);
4395-
except
4396-
// Suppress popup, errors get logged into SQL log
4397-
end;
4398-
StartupBatch.Free;
4399-
end;
4400-
end;
4401-
44024382
if Params.WantSSL and not Connection.IsSSL then begin
44034383
MessageDialog(_('SSL not used.'),
44044384
_('Your SSL settings were not accepted by the server, or the server does not support any SSL configuration.'),

0 commit comments

Comments
 (0)