オープンソースVS CodeプラグインTrino Driverの3つの小さな問題を修正

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

オープンソースVS CodeプラグインTrino Driverの3つの小さな問題を修正

前の記事

最近の製品で使用したものSQLTools用VS Codeプラグイン。このプラグインはVS Code内のデータベース管理を可能にし、非常に多くのデータソースタイプをサポートします。
公式のデータソースタイプは、CockroachDB、MariaDB、My SQL、Postgre SQL、SQLite、Microsoft SQL Server/Azure、
多くのコミュニティデータソースがあります。管理に使用しているデータソースタイプはTrinoで、アイコンはウサギです。使用したコンポーネントは
Trino Driver
しかし、このプラグインを使用する場合、2つの問題があります。

問題は

问题1,Trino Driver不支持Https的link,来link Trinoデータソース最初はこの1つのだけで、后、また2つを発见しました。
問題2:テーブルレコードのプレビューがサポートされていない
問題3は,スキーマ切り替え時にテーブルレコードをプレビューできないこと

私の仕事はこの2つを解決することです

アセンブリ関連のコーミング

SQLToolsとTrino Driverのコンポーネントドキュメントを見てみると、後者が前者に依存していることがわかりました。
SQLToolsは、UIと基本的なドッキングインターフェイスを提供するプラットフォームとして機能します。Trino Driverは特別です。
Trinoデータソースはアダプターとして機能します。他のデータソースタイプのサポートも同様です。
Trino Driverは、このプラグインに基づいています。trino-clientこのプロジェクトで開発されたtrino-clientはtrinoのHTTPプロトコルに基づいている。
Axiosを使用してTrinoデータソースへの接続を実装し、SQL実行。

それが彼らの関係であり、
Trinoドライバを含むSQLTools
Trino-Clientを含むTrino-Client
trino-clientはaxiosとtrino HTTP APIを含む

デバッグ、問題解決

https接続データソースを実装するには、trino-clientライブラリがサポートしていないことも確認します。
デバッグ時には、trino-clientの最新バージョン(v 0.2.0)はサポートされていませんが、最新のmainブランチはサポートされています。(現在はv 0.2.1をリリースしている。HTTPSのサポート)
そこで、メインブランチに基づいてTrino Driverのライブラリを置き換えるライブラリを構築しました。HTTPSをサポートします。
ただし、Trino Driverはデータソースに接続するために追加のパラメータを必要とします。
verifySSLCert: false

これで最初の問題は解決しました。この問題解決策は、本質的に証明書を検証しないことであり、HTTPSの真のサポートではない。

データソースへの真のHTTPS接続を実現するには、Trino Driverライブラリを再構築し、ファイルをアップロードするためのテーブルを追加し、axiosが証明書を使用する姿勢をデバッグする必要があります。

2つ目の問題は、Trinoデータソースを接続した後に発生します(プラグインの使用量が少ない問題は私が経験しており、非アクティブなコミュニティメンテナンスは信頼できません)。

2つ目の問題は、テーブルレコードの数をプレビューするときにOFF SETの問題を報告することです。これはSQLで書かれた問題と同じです。
オープンソースVS CodeプラグインTrino Driverの3つの小さな問題を修正插图

複雑なコンポーネント、ネストされたプラグインの問題が発生し、最初にプラグインの問題を見つける必要があります。比較を通じて、他のデータソースプラグインはこの問題を持っていないことがわかり、Trinoデータソースにのみ表示されるので、問題はTrino Driverプラグインに表示されます。
仕方がない。

クレイジーなグローバル検索は、OFF SETを持つSQLコードを見つけました。自分の井戸の中のカエルのSQL知識で、問題を発見しました。
このライブラリに書かれているページングクエリSQLはこんな感じです。

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

Baiduクエリの後、TrinoクエリSQL、OFFSETは通常LIMITの前に置かれ、最後のを削除します。;セミコロン。

変更後、再調整します。ハハハ...。それは可能です。

私がプラグインをビルドしてテストに送ったとき、2時間後に新しいバグが見つかったというフィードバックがありました。
私の最初の反応は、この問題が何であれ、崖は原作者によって書かれ、私のものではないということです。

最後の質問は
データソースをリンクすると、多くのスキーマがあるため、テーブルはスキーマの下に格納され、スキーマを切り替えてテーブルレコードを表示するとエラーが報告されます。
オープンソースVS CodeプラグインTrino Driverの3つの小さな問題を修正插图1

このような問題が発生し、プラグインをリリースするときに本当にテストする人がいますか?または計画は1つだけですか?

方法はありません、このようなニッチなデータソースとプラグインはほとんど注意を払う人がいません、使用しなければならない場合は、変更しようとすることができます、変更できない、著者と直接ラインに行きます。

この問題は、Trino DriverプラグインがSQL Toolsから引数を受け取った後、SQLクエリでスキーマパラメータを使用しないという結論に直接つながります。以下は著者が書いた2つの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};

変更した。

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}

変更後、新しいプラグインを再構築し、新しいプラグインを使用してください。公式版を使用するには、著者を促し、私のPRをレビューする必要があります。

関連コードのPR:
https://github.com/regadas/sqltools-trino-driver/pulls?q=+author%3APmcFizz+

概要まとめ

重要なのはコードを何行書くかではなく、コードがもたらす価値、常に自分の価値を考えることです。

成長は川に架かる橋であり、山に架かる。

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.