TurboBird weiterentwickelt

Forum für Fragen rund um Firebird-Software von Drittanbietern.

Moderator: martin.koeditz

vr2
Beiträge: 269
Registriert: Fr 13. Apr 2018, 00:13

Hallo Maurog,
„Um in der Garderobe Platz zu sparen, entsorgt man nicht die Krawatten...“
Es geht mir bei solchen Dingen nur um ein möglichst ruhiges GUI, weil man ohnehin schon ständig andere Details betrachtet. Das hat nicht top-Prio und kann ja auch konfigurierbar gemacht werden, wie bspw bei DBeaver.
• Mehrere Query-Windows:
Schon in der bisherigen Version vorhanden – das war also kein neues Feature.
Das Symbol dafür befindet sich im QueryWindow 1 auf der Toolbar.
Ich vermute, das ist einfach leicht zu übersehen, weil es recht unscheinbar war.
Ich sehe in der 1262 kein Query Window 1. Da ist oben ein Tab namens "SQL".
Die Hints waren versehentlich deaktiviert – jetzt wieder eingeschaltet.
super
• Kennwortspeicherung:
Das Verhalten ist so vorgesehen und bleibt auch so.
Die Anmeldung beim Server und bei einer Datenbank sind zwei unterschiedliche Vorgänge.
In einer produktiven Umgebung würde ich Server-Kennwörter grundsätzlich nicht speichern,
weil das erhebliche Sicherheitsrisiken birgt.
Das ist ein Missverständnis. Es ging mir nicht um ob Speicherung von Kennwörtern. Sondern dass ich es zweimal eingeben muss, das kenne ich von keinem anderen DBA-Tool, dass man sich beim Server anmelden muss, ohne DB-Bezug. Das Connect zum Server wird implizit durch Connect zur DB gemacht. Seit FB3 kann jede DB eine abweichende security-fdb haben, mit jeweils anderen Usern, welche nimmst Du dann, um zum Server zu connecten? Die default-security.fdb, oder falls es die nicht gibt, die erstbeste, die Du findest, kannst Du nehmen, um etwa die Serverversion abzufragen. Aber bereits für die Userverwaltung musst Du über eine konkrete DB einsteigen, weil Du sonst die Zuordnung nicht hast.
• UDR-Knoten / TreeNode-Fehler:
Den Fehler “TTreeNode 1 out of bounds 0..0” konnte ich bisher nicht reproduzieren,
werde mir den Bereich aber noch genauer ansehen.
Hast Du denn unterschiedliche Typen von UDRs in der DB registriert? Evtl liegt es daran.

Viele Grüße, vr
Zuletzt geändert von vr2 am So 2. Nov 2025, 01:01, insgesamt 1-mal geändert.
bfuerchau
Beiträge: 616
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Vielen Dank. Dann kommt dein Tool leider noch nicht in Frage, denn 99% unserer Tabellen sind case sensitive. Und der alte IBExpert unterstützt dies halt auch mit entsprechenden Prompts (intellisense).
Ich wünsche weiterhin viel Erfolg, ich folge dem Thema aber weiterhin und bin gespannt.
maurog
Beiträge: 51
Registriert: Di 13. Mai 2025, 21:50

@bfuerchau
Danke dir für dein Feedback und dein ehrliches Fazit.
Das ist absolut nachvollziehbar – wenn man mit vielen case-sensitiven Tabellen arbeitet,
ist die Unterstützung dafür natürlich ein Muss.

Ich kann gut verstehen, dass der alte IBExpert da aktuell noch besser passt.
Vielleicht wird sich das in Zukunft ändern – das Thema steht jedenfalls auf meiner Beobachtungsliste,
und falls es umgesetzt wird, sage ich hier im Forum Bescheid.

Freut mich sehr, dass du das Projekt trotzdem weiterverfolgst – danke für dein Interesse und deine freundliche Rückmeldung!

Viele Grüße
Maurog
TurboBird – Firebird Admin Tool
YouTube: https://www.youtube.com/channel/UCKIsYs ... 6K3_j26faQ
maurog
Beiträge: 51
Registriert: Di 13. Mai 2025, 21:50

@vr2:

Es hat ein bisschen länger gedauert, deine Anregungen zu beantworten – dafür möchte ich mich entschuldigen.
Ich wollte zuerst das Login-Verfahren vollständig klären und mich danach wieder melden.

**Mehrere Query-Windows:
Wenn man ein Query-Window öffnet, hat man oben in der Toolbar das erste Icon — damit kann man direkt ein weiteres Query-Window öffnen.

*UDR-Bug: (Hast Du denn unterschiedliche Typen von UDRs in der DB registriert?)
Ja, tatsächlich erwischt.
Ich hatte verschiedene UDRs und Packages in einer älteren TurboBird-Windows-Version getestet, und da lief alles stabil (ich glaube, hier im Forum gibt’s sogar noch ein paar Screenshots davon).

Unter Linux habe ich später die Lucine.UDR-Bibliothek kompiliert und auf dem Server registriert.
Da mir auf meinem System einige ältere Bibliotheken fehlten, habe ich die UDRs wieder entfernt.
Ich richte in den nächsten Tagen wieder eine frische Windows-VM ein und teste das sauber durch – versprochen.

*Login-Verfahren:
Ich habe das Thema jetzt wirklich gründlich untersucht. Der Login auf den Service Manager (Server) und der Login auf eine Datenbank sind unterschiedliche Vorgänge – und genauso behandelt TurboBird sie auch.

Beim Registrieren eines neuen Servers stellt TurboBird kurzzeitig eine Verbindung zum Service Manager her, um zu prüfen,
--ob der Server überhaupt erreichbar ist,
--ob Firebird antwortet,
--und um ggf. die Firebird-Version abzufragen.

Für diesen Vorgang reicht ein Benutzer ohne besondere Rechte völlig aus.

Darum läuft es jetzt so:
Beim ersten Registrieren eines Servers wird einmalig der Benutzer SYSDBA abgefragt, um die Verbindung herzustellen und den internen service_user anlegen zu können.Wenn die Verbindung steht, legt TurboBird automatisch einen Benutzer service_user ohne besondere Rechte an.

Gespeichert wird danach nicht der SYSDBA, sondern dieser service_user – optional mit Passwort, wenn der Nutzer das möchte.

Wenn man den Server später bearbeitet, erscheint also nicht mehr der Benutzer SYSDBA, sondern der harmlose Service-User.
Da dieser keine besonderen Rechte besitzt, kann man sein Kennwort speichern (denke ich)
So wird die doppelte Passwortabfrage vermieden.

Außergewöhnlich? Ja
TurboBird soll ja auch außergewöhnlich werden 😊.


*Unruhige GUI:
Ehrlich gesagt, das habe ich nicht verstanden.

Mehr habe ich heute leider nicht anzubieten –
jetzt ist es wieder Zeit für ein Bier :-)
Prost auf die Community!

Viele Grüße,
Maurog-
Dateianhänge
TurboBird_ServiceUser.png
TurboBird_ServiceUser.png (117.39 KiB) 178546 mal betrachtet
TurboBird – Firebird Admin Tool
YouTube: https://www.youtube.com/channel/UCKIsYs ... 6K3_j26faQ
bfuerchau
Beiträge: 616
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Unruhige GUI:

Mein Eindruck der GUI ist da die fehlende Ausrichtung, bezogen auf das obere Bild als Beispiel:
Label-Text nicht vertikal zentriert zum Feld. Somit ist der Text im Editor und der Text vor dem Editor nicht auf einer Linie. Dies schafft die Unruhe.
Der untere Block der Felder "Connection timeout" bis "Version Minor" ist ein wenig durcheinander.
Normalerweise ordnet man Felder auf einem Formular in ein Raster "Table Layout".
Hier können Felder durchaus mal mehr als 1 Zeile oder mehr als 1 Spalte haben, aber insgesamt schafft das trotzdem ein ruhiges und vor allem professionelles Bild. Auch wenn es manchmal wenig sinnig erscheint, helfen gleich breite Felder da schon mal.
Zeichenfelder sind linksbündig, numerische Felder rechtsbündig, Datumfelder häufig auch zentriert.
Bei Microsoft gibt's da z.B. ein TableLayout-Control, mit dem man eben Formulare gestalten kann.
maurog
Beiträge: 51
Registriert: Di 13. Mai 2025, 21:50

Danke dir für die präzise und hilfreiche Rückmeldung!
Ich werde die Masken entsprechend überarbeiten.

Grüße,
Maurog.
TurboBird – Firebird Admin Tool
YouTube: https://www.youtube.com/channel/UCKIsYs ... 6K3_j26faQ
vr2
Beiträge: 269
Registriert: Fr 13. Apr 2018, 00:13

Hallo maurog,

kein Thema, wenn Du mal ein paar Tage für Antworten brauchst - ich finde es super, dass hier ein weiteres Firebird-Tool entsteht.
*UDR-Bug: (Hast Du denn unterschiedliche Typen von UDRs in der DB registriert?)
Ja, tatsächlich erwischt.
Ich hatte verschiedene UDRs und Packages in einer älteren TurboBird-Windows-Version getestet, und da lief alles stabil (ich glaube, hier im Forum gibt’s sogar noch ein paar Screenshots davon).

Unter Linux habe ich später die Lucine.UDR-Bibliothek kompiliert und auf dem Server registriert.
Da mir auf meinem System einige ältere Bibliotheken fehlten, habe ich die UDRs wieder entfernt.
So hatte ich es zwar nicht gemeint, sondern ob Du in der DB externe SPs und SFs (UDRs) hast, aber gut, dass trotzdem die Ursache jetzt klar ist.
Ich dachte, Du benutzt im TurboBird IBX und dessen fbintf für UDRs, da ist doch alles drin an Framework für UDRs und Du kannst es auch nach linux kompilieren.
Ah, jetzt hab ichs, Du meinst lucene: https://github.com/IBSurgeon/lucene_udr.

Zum Login-Verfahren: Ich verstehe schon, was Du machen willst, aber ich glaube, es geht einfacher, ohne an Funktionalität einzubüßen.

Du musst keinen Account "service_user" anlegen, damit die Anwendung pur mit dem Server (service_mgr) reden kann. Bzw kannst Du auch nicht, denn dadurch erzeugst Du woanders Schwierigkeiten. Ein DBA-Tool darf die Liste der User nicht für eigene Zwecke verändern. Es gibt Anwendungen, die fragen die DB-User ab und präsentieren sie in einer Liste, um ihnen zb Ressourcen der Anwendung zuzuordnen. Dort erscheint dann auch "service_user", der mit der Anwendung nichts zu tun hat und zu irritierten Nachfragen führen wird und daher rausgefiltert werden muss.

Das Problem der Doppelanmeldung entsteht nur dadurch, dass Turbobird beim Aufklappen des Serverknotens grundsätzlich zuerst den Server (service_mgr) kontaktieren will. Das ist aber nicht nötig. Selbst bei der Registrierung eines neuen Servers nicht. Man kann einfach erstmal Serveralias, Host und Port entgegennehmen und im Serverknoten speichern - und Tests, ob der Server existiert/antwortet usw als separate Aktion anbieten, zb im Kontextmenu des Serverknotens. Dann erst werden Zugangsdaten für die Kommunikation mit dem service_mgr gebraucht.

Ist das so umgesetzt, kann man nun einfach den Serverknoten aufklappen, ohne dass der Server kontaktiert wird, und kommt an die Knotenliste der registrierten DBs ran. Das Ganze funktioniert mit und ohne gespeicherte Zugangsdaten.

Grüße, vr
maurog
Beiträge: 51
Registriert: Di 13. Mai 2025, 21:50

Hallo,

ich habe TurboBird Version 1.2.1.1263 (IBX) hochgeladen.

Da ich derzeit Probleme mit meinem GitHub-Account habe, habe ich die Release-Binaries vorübergehend auf meiner Homepage bereitgestellt.
Die Quellcodes und Changelogs können wie gewohnt direkt von GitHub heruntergeladen werden: https://github.com/mdadali/TurboBird
Linux Release (x86_64, GTK2):
https://www.hackcad.com/maindownloads/T ... 1.1263.zip
Windows Release (x86_64):
https://www.hackcad.com/maindownloads/T ... 63.exe.zip

Zuerst die Einschränkungen, damit man nicht den ganzen Beitrag lesen muss,
falls diese Version für jemanden nicht brauchbar ist:

--Version 1.2.1.1263 ist nicht abwärtskompatibel.
Das bedeutet, dass die Server und Datenbanken neu registriert werden müssen.

--Rechtlich gesehen ist die bisherige MIT-Lizenz von TurboBird vermutlich nicht mehr gültig, da ich GPL-Code von Tony Whyman (MWA Software) – mit seiner sehr
freundlichen Genehmigung – in TurboBird integriert habe.

--Embedded Connections werden in dieser Version (1.2.1.1263) nicht unterstützt.
(Möglicherweise ändere ich das in zukünftigen Versionen.)

--Server-Aliase werden weiterhin nicht unterstützt.

--Nicht alle Knoten im TreeView sind bereits implementiert.
Diese werde ich sicher noch implementieren – es ist hauptsächlich viel Schreibarbeit,
nichts technisch Komplexes.

--Transaktionskonfiguration und Monitoring sind noch nicht implementiert.

--Ich konnte die Anwendung unter MS Windows leider nicht ausreichend testen,
da ich keinen echten Windows-Rechner habe.
Ich habe zwar Windows 7 (ohne Updates) + Firebird 3.0 in einer VM installiert,
jedoch werden dort z. B. UDRs nicht geladen.
Neuere Windows-Versionen kann ich auf meinem Rechner aktuell nicht installieren
(Ressourcen reichen nicht aus). Eventuell lege ich mir dafür einen zweiten Rechner zu.


Was ist neu / erledigt

--Die Anwendung wurde komplett von SQLDB (Lazarus/FPC DB-Bibliothek) auf IBX umgestellt.

--Mehrere Firebird-Serverversionen
Innerhalb einer TurboBird-Instanz können jetzt Firebird-Server der Versionen
2.5, 3.x, 4.x, 5.x und 6.0 konfiguriert werden.
(Bitte dazu auch den Hinweis zu Mehrserver-Instanzen weiter unten lesen.)

--Case-sensitive Objektnamen werden jetzt unterstützt
(Anregung von bfuerchau, danke).
Die Anwendung erkennt nun case-sensitive Objekt­namen korrekt.
Tabellen- und Feldnamen werden im QueryWindow über ein Kontextmenü angeboten.

Im QueryWindow-Codeeditor öffnet Ctrl+Space ein Kontextmenü.
Tabellennamen erscheinen als Hauptmenüeinträge, die zugehörigen Felder als Untermenüs.
Dies funktioniert unabhängig davon, ob Objektnamen case-sensitiv sind oder nicht.
Mit Enter oder Mausklick werden die Namen in den QueryEditor eingefügt.
Case-sensitive Namen werden dabei automatisch in doppelte Anführungszeichen gesetzt.

(Alias-, Punkt- usw. Erkennung ist noch nicht implementiert – derzeit eher ein
„UnIntelliSense“ 🙂.)

--Skripte mit und ohne Terminatoren (Anregung von Volker)
Durch die IBX-Umstellung hat sich dieses Thema praktisch von selbst erledigt.

Auszug aus der IBX-Dokumentation:

“Procedure Bodies (BEGIN .. END blocks) are self-delimiting
and do not need an extra terminator. If a terminator is present,
this is treated as an empty statement. The result is ISQL compatible,
but does not require the use of SET TERM.”

Beim Zurücklesen von Datenbankobjekten in das QueryWindow füge ich jedoch weiterhin
Terminatoren hinzu, um die Kompatibilität mit anderen Tools zu wahren.
Falls das stört:
Erste und letzte Zeile des Skripts löschen
Terminator-Zeichen in der vorletzten Zeile entfernen
In einer der nächsten Versionen wird das optional konfigurierbar sein.

--Login-Verfahren wurde geändert, genau wie von Volker beschrieben.

--Tonys (Tony Whyman, MWA Software) IBX-Scripter wurde in die Anwendung integriert.

--Backup/Restore wurde durch Tonys Code ersetzt.
Dieser bietet mehr Optionen, u. a. die Auswahl zwischen server- und clientseitigen
Backups und Restores.

--TreeView überarbeitet (siehe Screenshots):
Umstellung auf Lazy-Load
Knoten werden erst beim ersten Öffnen aus der DB geladen
Danach erfolgt kein weiterer DB-Zugriff
Das Verhalten ist über die INI-Datei steuerbar:
[MainTreeView]
AlwaysRefresh=1 // 1 = Knoteninhalt wird jedes Mal neu aus der DB geladen


--Das TreeView ist jetzt besser strukturiert und bietet mehr Informationen.

--Im QueryWindow können Code- oder Ergebnisansicht optional maximiert werden
(Hinweis von Volker, mehr Platz im Codefenster).
Links neben dem TreeView wurde ein Button eingefügt, um das TreeView ein- und
auszublenden – praktisch, um mehr Platz für das Codefenster zu schaffen.
Navigator im QueryWindow kann per INI-Datei ein- oder ausgeblendet werden
(Anregung von Volker):
[QueryWindow]
ShowNavigator=0


--Export nach Clipboard verbessert (Anregung von Volker):
Rechtsklick auf DataGrid → Export to → Clipboard
Hinweise zum Clipboard-Export siehe weiter unten.

--Serverregistrierung ist jetzt Pflicht
Servernamen werden nicht mehr aus dem Connection-String abgeleitet.
Die Servernamen müssen entweder in der hosts-Datei stehen oder per DNS auflösbar sein.

In der hosts-Datei können (bei entsprechenden Rechten) mehrere Aliase pro Server
definiert werden – so lässt sich die aktuelle Alias-Einschränkung von TurboBird
eventuell umgehen, bis eine echte Alias-Unterstützung implementiert ist.

--Sortierung durch Klick auf Feldnamen (Anregung von Volker):
Dafür wird jetzt RXDBGrid verwendet.
Mehrspaltige Sortierung muss noch selbst implementiert werden
(RXDBGrid kann IBX-Datasets nicht automatisch sortieren).
Die Komponente ist trotzdem bereits aktiv, da sie viele weitere Features bietet,
z. B. komfortable Suche in Daten und mehrere Exportformate.

Mit RXDBGrid sind außerdem zwei neue Exportformate (PDF, Spreadsheet) sowie
Druckausgabe hinzugekommen.

--Im SQLHistory-Fenster wurde das Feld Description hinzugefügt
(Anregung von Gerd – sorry, dass es so lange gedauert hat).

--Fast alle Menüeinträge haben jetzt Icons (Anregung von Volker).

--Eigene Komponente SQLDbExt wurde aus dem Projekt entfernt
(durch IBX nicht mehr notwendig).

Hinweis zu Mehrserver-Instanzen
Das Laden und Entladen von Client-Libraries übernimmt jetzt vollständig IBX.
Im TurboBird-Code kommen LoadLibrary, UnloadLibrary usw. nicht mehr vor.

Trotzdem bin ich über das bekannte Problem mit ODS-Versionskonflikten gestolpert,
das hier im Forum (zwischen Martin und bfuerchau) diskutiert wurde.

Workaround:
Beim Programmstart wird eine initiale Client-Library (höchste Version) geladen.
Ich lade derzeit die Client-Library von Firebird 6, und habe bisher keine Konflikte beobachtet.

Außerdem ist auf folgende Zeile in der firebird.conf zu achten:

Providers = Remote,Engine13,Engine12,Loopback

Die Reihenfolge ist wichtig – höchste Version zuerst.

Wichtig:
Wenn Firebird-4- und Firebird-5-Server innerhalb einer TurboBird-Instanz konfiguriert werden:

Für Firebird 4 sollte ebenfalls die Client-Library von Firebird 5 verwendet werden,
da FB4 und FB5 unterschiedliche ICU-Versionen nutzen.

Alternativ kann man auf Firebird 4 verzichten und die FB4-Datenbanken
unter einem Firebird-5-Server registrieren.

Hinweis zum Clipboard-Export
In der INI-Datei kann ein Limit für die Anzahl der zu exportierenden Zeilen gesetzt werden,
um zu verhindern, dass versehentlich sehr große Tabellen in die Zwischenablage kopiert werden.

Standardwert im Quellcode: 200 Zeilen (hart codiert).

[ClipboardExport]
MaxExportRows=0 // 0 = kein Limit (riskant!)

Wenn kein gültiger INI-Eintrag gefunden wird, werden maximal die ersten 200 Zeilen exportiert.

Ich wünsche allen angenehme Weihnachten
Grüße
Maurog.
Dateianhänge
AboutTurboBird.gif
AboutTurboBird.gif (877.86 KiB) 4091 mal betrachtet
CaseSensitive.gif
CaseSensitive.gif (265.49 KiB) 4091 mal betrachtet
TurboBird – Firebird Admin Tool
YouTube: https://www.youtube.com/channel/UCKIsYs ... 6K3_j26faQ
Gerd
Beiträge: 269
Registriert: Di 1. Okt 2019, 17:13

Hallo Maurog.

Ich dachte, dass dieses Weihnachten nicht mehr zu übertreffen ist. Jetzt sehe ich die Bereitstellung des überarbeiteten TurboBird v1263 (IBX) vom 25.12.2025. Das hast Du ja auf den Punkt genau hinbekommen. :D
Es hat sich wirklich viel getan und Du hast eine Anzahl von Anregungen, die von Forum-Nutzern (bfuerchau, vr2, Gerd, ...) stammen, umgesetzt. Das finde ich toll. DANKE.

Habe mir die kompilierte Version geholt:
TurboBird v1263 (IBX) vom 25.12.2025 startet hier unter Linux Mint v22.2 genauso zügig wie die v1262 (SQLDB).

Die von Dir oben beschriebenen Änderungen in dieser Version kann ich nachvollziehen und es passiert dabei so weit alles erwartungsgemäß. Ich muss aber noch einiges prüfen.


Viele Grüße
Gerd
ISQL Version: LI-V5.0.3.1683
Linux Mint 22.2 Cinnamon 6.4.8
maurog
Beiträge: 51
Registriert: Di 13. Mai 2025, 21:50

Vielen Dank Gerd.

Ich habe mich wirklich sehr bemüht, diese Version noch am 24. hochzuladen.
Leider war die Umstellung auf IBX hartnäckiger, als ich ursprünglich gedacht hatte.

Obwohl mir noch einige Bugs bekannt sind, habe ich mich entschieden, die Version dennoch hochzuladen, damit es noch einen Bezug zu Weihnachten gibt.

Ich wünsche allen nochmals wunderschöne Weihnachten.

Viele Grüße
Maurog.
TurboBird – Firebird Admin Tool
YouTube: https://www.youtube.com/channel/UCKIsYs ... 6K3_j26faQ
Antworten