Search
Find where a table, a global or a string is actually used
Server-side search across every class and routine of a namespace, plus schema search by table, view and column name on any connection.
Unique to SQL DATA LENS
- Serverseitig, nichts wird heruntergeladen
- Einfacher Text oder regulärer Ausdruck
- Where is this used? auf Tabelle oder Global
- Schemasuche auf jeder Verbindung
- Strg+Umschalt+F von überall
„Was geht kaputt, wenn ich diese Tabelle ändere?" ist die Frage, an der eine Änderung stehen bleibt. Auf IRIS und Caché liegt die ehrliche Antwort im Klassen- und Routinencode des Namespace — und bisher hieß der Weg dorthin aus einem SQL-Client: den Namespace nach XML exportieren und darüber grepen, oder Studio öffnen, oder jemanden fragen, bei dem Studio noch offen ist.
Version 4.01 legt die Suche dorthin, wo das Schema schon ist. Sie läuft auf dem Server, über alle Klassen und Routinen eines Namespace, und lädt zum Durchsuchen nie Quellcode herunter.
Drei Wege hinein
- Das Suchfeld rechts in der Hauptsymbolleiste, oder Strg+Umschalt+F von überall.
- Rechtsklick auf einen Namespace im Server Navigator und Search… wählen.
- Where is this used? auf einer Tabelle oder auf
einem Global im Global Browser —
der Weg, der den Arbeitstag verändert. Er öffnet die Suche vorbelegt mit dem
Klassennamen hinter der Tabelle oder mit dem Global-Namen, führendes
^und Subscripts bereits entfernt.
Der letzte Weg schließt einen Kreis, den der Rest des Produkts bereits geöffnet hatte. Eine Tabelle nennt ihre Klasse und ihre Globals im Table Viewer; der Class Viewer zeigt, was die Klasse tut. Where is this used? beantwortet die verbleibende Frage: Wer fasst es sonst noch an?
Die Suchmaske
| Feld | Was es tut |
|---|---|
| Namespace | Wird beim Öffnen des Reiters vom Server geladen und ist immer editierbar — lässt sich die Liste nicht laden, sagt die Statuszeile warum, statt ein leeres Auswahlfeld zu zeigen, und Sie tippen den Namespace selbst. |
| Suchtext | Standardmäßig einfacher Text, der irgendwo in einer Zeile trifft. Die letzten 30 Suchen bleiben in einer Auswahlliste, die einen Neustart übersteht; eine einzelne mit Entf entfernen oder alle auf einmal löschen. |
| Regex | Den Suchtext als regulären Ausdruck behandeln. Ein ungültiger kommt als Klartextmeldung des Servers zurück, nicht als Stacktrace. |
| Case sensitive | Standardmäßig gesetzt, wie es der Server selbst hält. Abwählen, um DimDate, dimdate und DIMDATE gemeinsam zu finden. Wird über Suchen und Neustarts hinweg gemerkt. |
| Documents | Kommagetrennte Dateimasken mit Platzhaltern — Vorgabe *.cls, *.mac, *.int, *.inc. Auf Ens* einschränken, wenn nur Interoperability-Code zählt. |
| Systemcode einbeziehen | Auch %-Klassen und anderen systemeigenen Code durchsuchen. Standardmäßig aus. |
| Generierten Code einbeziehen | Auch vom Compiler erzeugten Code durchsuchen, etwa für eine persistente Klasse. Standardmäßig aus. |
| Max results | Ein hartes Limit, das an den Server übergeben wird, standardmäßig 200. Ein abgeschnittenes Ergebnis sagt das — eine gekürzte Liste sieht nie wie die vollständige Antwort aus. |
Die Ergebnisse listen eine Zeile je Treffer: das Dokument, das Klassenelement oder Routinenlabel, in dem der Treffer liegt, die Zeilennummer und die Trefferzeile. Wählen Sie eine Zeile aus, wird der Quelltext daneben schreibgeschützt vorgeschaut und auf diese Zeile gesprungen; klicken Sie durch mehrere Treffer, folgt die Vorschau, ohne etwas zu öffnen. Ein Doppelklick öffnet das Dokument stattdessen in einem eigenen Reiter, damit es geöffnet bleibt, während Sie den Rest ansehen.
Findet sie nichts, sagt sie, wonach sie gesucht hat
Ein bloßes „0 matches" ist das Nutzloseste, was eine Suche sagen kann, weil es sich nicht von einer Suche unterscheiden lässt, die gar nicht gelaufen ist. Eine Suche ohne Treffer meldet Ihnen deshalb die ganze Frage zurück — Suchtext, Namespace, Groß-/Kleinschreibung, Dokumentfilter und ob System- und generierter Code einbezogen waren:
No matches for 'SetHeader' in namespace 'USER' (documents: *.cls,*.mac,*.int,*.inc, case-sensitive, system code excluded, generated code excluded).
Die beiden üblichen Ursachen stehen in diesem Satz. Ein Trefferlimit funktioniert genauso: Ist das Limit des Servers erreicht, sagt das Banner, dass das Ergebnis abgeschnitten wurde — eine gekürzte Liste sieht nie wie die vollständige Antwort aus.
Die andere Hälfte: das Schema durchsuchen, auf jeder Verbindung
Dieselben Einstiegspunkte durchsuchen jetzt auch das Schema selbst — Tabellen, Views und Spalten nach Namen, über alle Schemata eines Namespace oder Katalogs — und diese Hälfte funktioniert auf jeder Verbindung: PostgreSQL, SQL Server, MariaDB, DuckDB und jede andere JDBC-Quelle, nicht nur InterSystems. Sie liest die JDBC-Metadaten der Verbindung, dieselbe Quelle, aus der auch der Server Navigator liest, und fasst die Datenzeilen nie an.
Auf einer IRIS- oder Caché-Verbindung bekommen Sie beides, als zwei Reiter: Metadata für das Schema und Source code für Klassen und Routinen. Auf einer generischen JDBC-Verbindung gibt es nur den ersten, weil es nichts gibt, worauf man umschalten könnte. Frühere Releases boten Search source code… auch dort an, wo sie nie etwas finden konnte; das hier hat es ersetzt.
Wo das hingehört
Eine Suche ist so viel wert wie das, was Sie mit der Antwort tun können. Wenn Sie wissen, welche Klasse eine Tabelle referenziert, liest der Class Viewer sie — und seit 4.01 funktionieren Export, Import, Kopieren und Kompilieren auf IRIS genauso wie auf Caché. Suchen Sie, um auf einem System etwas zu ändern, auf dem ein Fehler teuer ist, stufen Sie diese Verbindung vorher ein: siehe Umgebungen und Schreibschutz.
Fragen zur Suche
Wird der Quellcode zum Durchsuchen heruntergeladen?
Nein. Die Suche läuft auf dem Server, über die Klassen und Routinen, wie sie im Namespace liegen, und zurück kommen nur die Trefferzeilen. Auf Ihren Rechner wird nichts kopiert, kein Export geschrieben, kein Arbeitsverzeichnis läuft voll. Genau deshalb ist sie auch in einem Namespace mit tausenden Klassen schnell: Die Arbeit passiert dort, wo der Code ohnehin liegt.
Was braucht sie auf dem Server?
Einen erreichbaren Webserver auf der Instanz — denselben Atelier-REST-Endpunkt, den auch der Quellcode-Reiter und die Klassenaktionen verwenden, benannt über die Felder Webserver und Webserverport auf dem Reiter Server der Verbindung. Installiert wird nichts: kein Agent, keine Hilfsklassen, keine Routinen in einem Namespace. Ist dieser Endpunkt nicht erreichbar, lässt sich die Namespace-Liste nicht laden, und die Statuszeile sagt Ihnen das, statt stumm zu scheitern.
Warum findet meine Suche nichts?
Die Suche sagt es in einem vollständigen Satz statt in einem knappen „0 matches": Suchtext, Namespace, ob zwischen Groß- und Kleinschreibung unterschieden wurde, der Dokumentfilter und ob System- und generierter Code einbezogen waren. Die beiden üblichen Ursachen stehen genau dort — ein Namespace, der nicht der gemeinte war, und eine abweichende Schreibweise, denn die Suche unterscheidet standardmäßig Groß- und Kleinschreibung. Derselbe Satz ersetzt auch die Ergebnisliste, eine Suche ohne Treffer sieht also anders aus als ein Reiter, in dem noch keine Suche gelaufen ist.
Funktioniert die Suche auf PostgreSQL oder SQL Server?
Die Schemasuche ja, auf jeder Verbindung: Tabellen, Views und Spalten nach Namen, über alle Schemata des Katalogs. Die Quellcode-Suche nicht, weil es dort kein Gegenstück gibt — ein PostgreSQL-Server hat keinen Namespace voller Klassen- und Routinenquelltext. Vor 4.01 erschien der Menüeintrag auf diesen Verbindungen trotzdem und tat nichts, was schlechter war, als ihn gar nicht anzubieten.
Kann ich mehrere Suchen offen halten?
Ja. Jede Suche öffnet sich als eigener Reiter im Hauptbereich, wie ein Abfrageeditor, und der Reiter ist mit dem Namespace beschriftet, den er durchsucht — drei Suchen gegen drei Namespaces bleiben also auseinanderzuhalten, ohne über jede einzeln zu fahren. Der Rest der Anwendung bleibt währenddessen benutzbar, und Cancel bricht eine Suche ab.
Der nächste Schritt
Nehmen Sie die Tabelle, vor deren Änderung Sie am meisten Respekt haben, klicken Sie sie mit der rechten Maustaste an und wählen Sie Where is this used?. Laden Sie SQL DATA LENS herunter — die Antwort dauert etwa vier Sekunden, und genau darum geht es.
Explore your IRIS data from SQL down to globals
Download, unzip, connect. Your first namespace is on screen in about three minutes.
Windows 10, 11 and Windows Server (64-bit) · ~130 MB · version 4.01 · full 30-day Pro trial included