summaryrefslogtreecommitdiff
path: root/databases/heidisql/files/patch-source_dbconnection.pas
diff options
context:
space:
mode:
Diffstat (limited to 'databases/heidisql/files/patch-source_dbconnection.pas')
-rw-r--r--databases/heidisql/files/patch-source_dbconnection.pas127
1 files changed, 127 insertions, 0 deletions
diff --git a/databases/heidisql/files/patch-source_dbconnection.pas b/databases/heidisql/files/patch-source_dbconnection.pas
new file mode 100644
index 000000000000..bf2637ad4a58
--- /dev/null
+++ b/databases/heidisql/files/patch-source_dbconnection.pas
@@ -0,0 +1,127 @@
+--- source/dbconnection.pas 2025-12-16 22:09:54.829290000 -0800
++++ source/dbconnection.pas 2025-12-16 22:11:26.512363000 -0800
+@@ -231,10 +231,10 @@
+ end;
+ TDatabaseCache = class(TObjectList<TDBObjectList>); // A list of db object lists, used for caching
+ TDBObjectComparer = class(TComparer<TDBObject>)
+- function Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
++ function Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
+ end;
+ TDBObjectDropComparer = class(TComparer<TDBObject>)
+- function Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
++ function Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer; override;
+ end;
+
+ TOidStringPairs = TDictionary<POid, String>;
+@@ -1911,7 +1911,7 @@
+ {$If defined(WINDOWS) OR defined(DARWIN)}
+ DllPath, DllFile: String;
+ Dlls: TStringList;
+- {$ElseIf defined(LINUX)}
++ {$ElseIf defined(LINUX) OR defined(FREEBSD)}
+ LibMapOutput, LibMap: String;
+ LibMapLines: TStringList;
+ {$EndIf}
+@@ -1926,9 +1926,11 @@
+ rx.ModifierI := True;
+ case NetTypeGroup of
+ ngMySQL:
+- {$IfDef LINUX}
++ {$If defined(LINUX)}
+ // libmariadb.so.0 (libc,...) => /lib/x86_64-linux-gnu/libmariadb.so
+ rx.Expression := '^\s*lib(mysqlclient|mariadb|perconaserverclient)\.[^=]+=>\s*(\S+)$';
++ {$ElseIf defined(FREEBSD)}
++ rx.Expression := '(mysqlclient|mariadb|perconaserverclient)[^=]+=>\s*(\S+)$';
+ {$Else}
+ rx.Expression := '^lib(mysql|mariadb).*\.' + SharedSuffix;
+ {$EndIf}
+@@ -1939,14 +1941,18 @@
+ rx.Expression := '^(dblib|libsybdb).*\.' + SharedSuffix;
+ {$EndIf}
+ ngPgSQL:
+- {$IfDef LINUX}
++ {$If defined(LINUX)}
+ rx.Expression := '^\s*(libpq)[^=]+=>\s*(\S+)$';
++ {$ElseIf defined(FREEBSD)}
++ rx.Expression := '(lpq)[^=]+=>\s*(\S+)$';
+ {$Else}
+ rx.Expression := '^libpq.*\.' + SharedSuffix;
+ {$EndIf}
+ ngSQLite: begin
+- {$IfDef LINUX}
++ {$If defined(LINUX)}
+ rx.Expression := '^\s*(libsqlite3)[^=]+=>\s*(\S+)$';
++ {$ElseIf defined(FREEBSD)}
++ rx.Expression := '(lsqlite3)[^=]+=>\s*(\S+)$';
+ {$Else}
+ if NetType = ntSQLite then
+ rx.Expression := '^(lib)?sqlite.*\.' + SharedSuffix
+@@ -1959,9 +1965,13 @@
+ end;
+ case NetTypeGroup of
+ ngMySQL, ngMSSQL, ngPgSQL, ngSQLite, ngInterbase: begin
++ {$if defined(LINUX) or defined(FREEBSD)}
+ {$IfDEF LINUX}
+ // See https://serverfault.com/a/513938
+ Process.RunCommandInDir('', '/sbin/ldconfig', ['-p'], LibMapOutput);
++ {$Else}
++ Process.RunCommandInDir('', '/sbin/ldconfig', ['-r'], LibMapOutput);
++ {$EndIf}
+ LibMapLines := Explode(sLineBreak, LibMapOutput);
+ for LibMap in LibMapLines do begin
+ if rx.Exec(LibMap) and FileExists(rx.Match[2]) then begin
+@@ -3301,6 +3311,11 @@
+ begin
+ // Init libmysql before actually connecting.
+ LibraryPath := GetLibDir + Parameters.LibraryOrProvider;
++{$IF DEFINED(LINUX) OR DEFINED(FREEBSD)}
++ LibraryPath := Parameters.LibraryOrProvider;
++{$ELSE}
++ LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryOrProvider;
++{$ENDIF}
+ Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
+ // Throws EDbError on any failure:
+ FLib := TMySQLLib.Create(LibraryPath, Parameters.DefaultLibrary);
+@@ -3315,7 +3330,11 @@
+ msg: String;
+ begin
+ // Init lib before actually connecting.
+- LibraryPath := GetLibDir + Parameters.LibraryOrProvider;
++{$IF DEFINED(LINUX) OR DEFINED(FREEBSD)}
++ LibraryPath := Parameters.LibraryOrProvider;
++{$ELSE}
++ LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryOrProvider;
++{$ENDIF}
+ Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
+ try
+ FLib := TPostgreSQLLib.Create(LibraryPath, Parameters.DefaultLibrary);
+@@ -3346,7 +3365,11 @@
+ LibraryPath: String;
+ begin
+ // Init lib before actually connecting.
+- LibraryPath := GetLibDir + Parameters.LibraryOrProvider;
++{$IF DEFINED(LINUX) OR DEFINED(FREEBSD)}
++ LibraryPath := Parameters.LibraryOrProvider;
++{$ELSE}
++ LibraryPath := ExtractFilePath(ParamStr(0)) + Parameters.LibraryOrProvider;
++{$ENDIF}
+ Log(lcDebug, f_('Loading library file %s ...', [LibraryPath]));
+ // Throws EDbError on any failure:
+ if Parameters.NetType = ntSQLite then
+@@ -10238,14 +10261,14 @@
+
+ { TDBObjectComparer }
+
+-function TDBObjectComparer.Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
++function TDBObjectComparer.Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
+ begin
+ // Simple sort method for a TDBObjectList
+ Result := CompareAnyNode(Left.Schema+'.'+Left.Name, Right.Schema+'.'+Right.Name);
+ end;
+
+
+-function TDBObjectDropComparer.Compare({$IF FPC_FULLVERSION<30204}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
++function TDBObjectDropComparer.Compare({$IF FPC_FULLVERSION<30203}constref{$ELSE}const{$ENDIF} Left, Right: TDBObject): Integer;
+ begin
+ // Sorting a TDBObject items so that dropping them does not trap in SQL errors
+ if (Left.NodeType = lntTrigger) and (Right.NodeType <> lntTrigger) then