Drei kleine Probleme mit dem Open-Source - VS-Code - Plugin Trino Driver behoben

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Drei kleine Probleme mit dem Open-Source - VS-Code - Plugin Trino Driver behoben

Vorwort

Ein VS Code-Plug - InSQLTools wurde in jüngsten Produkten verwendet. Das Plugin ermöglicht die Datenbankverwaltung in VS Code und unterstützt eine Vielzahl von Datenquelltypen,für
Offizielle Datenquelltypen sind CockroachDB, MariaDB, MySQL, PostgreSQL, SQLite, Microsoft SQL Server / Azure,
sowie viele Community-Datenquelltreiber. Und der Datenquelle-Typ, den wir verwalten, ist Trino, und das Symbol ist ein kleines Kaninchen. Die verwendete Komponente ist
Trino Driver
Bei der Nutzung dieses Plugins gibt es jedoch zwei Probleme.

Problem

Problem 1: Der Trino-Treiber unterstützt keine Https-Links, um Trino-Datenquellen zu verknüpfen (das war zunächst nur ein Problem, nachdem es gelöst wurde, wurden zwei weitere entdeckt.)
Problem 2 ist, dass die Vorschau von Tabellenprotokollen nicht unterstützt wird.
Problem 3 ist, dass ich die Vorschau von Tabellenprotokollen

Meine Aufgabe ist es, diese beiden Probleme zu lösen.

Komponentenbeziehung zu klären

Ich habe die Komponenten-Dokumentation von SQLTools und Trino-Treiber gesehen, dass letzteres von ersteren abhängt.
SQLTools fungiert als Plattform und bietet die Benutzeroberfläche und die grundlegende Docking-Schnittstelle. Der Trino-Treiber ist ein Adapter, der für die
Trino-Datenquelle entwickelt wurde. Das gleiche gilt für die Unterstützung anderer Datenquelltypen.
Der Trino Driver basiert auf diesem Plugin.trino-clientProjekt basiert, der auf dem Trino-http - Protokoll basiert,
Die Verbindung zur Trino-Datenquelle wurde mit Axios implementiert und SQL ausgeführt.

Das ist ihre Beziehung,
SQLTools enthält Trino Driver
Trino Driver enthält trino-client
trino-client enthält axios und trino HTTP API

Debugging, Problemlösung

Um eine https-Verbindung zur Datenquelle zu implementieren, muss man auch sehen, dass die Bibliothek trino-client nicht unterstützt.
Zum Zeitpunkt meines Debugging wurde die neueste offizielle Version von trino-client (v0.2.0) nicht unterstützt, aber der neueste Zweig main wurde unterstützt. (Der Autor hat bereits Version 0.2.1 veröffentlicht.) HTTPS-Unterstützung)
Also habe ich eine Bibliothek erstellt, die auf dem main-Verzweig basiert, um den Trino-Treiber zu ersetzen. HTTPS wird unterstützt.
Trino Driver benötigt jedoch auch einen zusätzlichen Parameter, um eine Datenquelle zu verbinden.
verifySSLCert: false

Das erste Problem ist damit gelöst. Diese Problemlösung ist im Wesentlichen nicht Zertifikate überprüfen, nicht wirklich HTTPS-Unterstützung.

Um eine echte HTTPS-Verbindung an Datenquellen zu implementieren, müssen Sie auch die Trino Driver-Bibliothek umwandeln, Formular-Elemente für hochgeladenen Dateien hinzufügen und Axios für die Verwendung von Zertifikaten debuggen.

Das zweite Problem tritt auf, nachdem ich die Trino-Datenquelle angeschlossen habe (ich habe Probleme mit wenig verwendeten Plug-Ins, und die inaktiven Community-Wartungen sind nicht zuverlässig.)

Das zweite Problem ist, dass ein OFFSET-Problem bei der Vorschau der Anzahl der Datensätze gemeldet wird. Das Problem ist ähnlich wie ein Problem mit SQL.
Drei kleine Probleme mit dem Open-Source - VS-Code - Plugin Trino Driver behobenAbbildung

Komplexe Komponenten, verschachtelte Plug-in - Problem, zuerst das Problem, das Plugin zu finden, durch den Vergleich zu anderen Datenquellen Plug-ins nicht dieses Problem, nur in der Trino Datenquelle erscheint, so dass das Problem auf Trino Treiber-Plug - in.
Das kann man nicht.

Eine verrückte globale Suche fand SQL-Code mit OFFSET Mit dem eigenen SQL-Wissen des Frosches hat er das Problem entdeckt.
Die in der Bibliothek geschriebene Seite-Abfrage SQL ist so.

SELECT *
FROM ${(p) => p.table.label || p.table}
LIMIT ${(p) => p.limit || 50}
OFFSET ${(p) => p.offset || 0};

Das Ergebnis nach der Baidu-Abfrage ist, dass Trino-Abfrage SQL, OFFSET im Allgemeinen vor LIMIT platziert und am Ende entfernt wird.;Unternummern.

Nach der Änderung noch einmal ausprobieren. Ja, ja, ja, ja. Und das kann es.

Nachdem ich das Plug-in erstellt hatte und es für die Tests geschickt hatte, gab es zwei Stunden später Feedback, dass ein neuer Bug entdeckt wurde.
Meine erste Reaktion war, dass, was auch immer das Problem war, die Klippe vom ursprünglichen Autor geschrieben wurde und nicht von mir.

Ein letztes Problem ist
Da es viele Schema gibt, nachdem die Datenquelle verknüpft ist, werden Tabellen unter Schema gespeichert, wenn Schema wechseln, wenn Tabelle Aufzeichnungen angezeigt werden, wird ein Fehler gemeldet.
Drei kleine Probleme mit dem Open-Source - VS-Code - Plugin Trino Driver behobenAbbildung1

Auftritt ein solches Problem, wurde das Plugin wirklich von jemandem getestet, wenn es veröffentlicht wurde? Oder habt ihr nur ein Schema?

Keine Möglichkeit, diese Nische Datenquelle und Plug-Ins sind nur wenige Leute, um Aufmerksamkeit zu schenken, wenn Sie verwenden müssen, dann können Sie nur versuchen, sich zu ändern, nicht ändern, gehen Sie direkt an den Autor.

Diese Frage kommt direkt zu dem Schluss, dass das Trino Driver-Plug - in keine Schema-Parameter in der SQL-Abfrage verwendet, nachdem es die Argumente von SQLTools übergeben hat. Hier ist der zweite Text von SQL

SELECT *
FROM ${(p) => p.table.label || p.table}
OFFSET ${(p) => p.offset || 0}
LIMIT ${(p) => p.limit || 50}

SELECT count(1) AS total
FROM ${(p) => p.table.label || p.table};

vom Autor.

SELECT *
FROM ${(p) => p.table.schema+'.'+p.table.label}
OFFSET ${(p) => p.offset || 0}
LIMIT ${(p) => p.limit || 50}

SELECT count(1) AS total
FROM ${(p) => p.table.schema+'.'+p.table.label}

Nach der Änderung erstellen Sie das neue Plugin und verwenden Sie das neue Plugin. Um die offizielle Version zu verwenden, muss ich auch den Autor drängen, meine PR zu überprüfen.

PR-Codes für den Code:
https://github.com/regadas/sqltools-trino-driver/pulls? q=+author%3APmcFizz+

Zusammenfassung

Wichtig ist nicht, wie viele Zeilen Code geschrieben werden, sondern der Wert, den dieser Code mitbringt, indem man immer über seinen eigenen Wert nachdenkt.

Das Wachstum ist eine Brücke über den Fluss und ein Weg über die Berge.

Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.