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

無料無料技术资料

这篇内容可直接阅读,适合用于基础学习和検索引流。

オープンソース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+

概要まとめ

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

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

この資料を実際のプロジェクトに活用しませんか?

ツールセンターで電文解析、CRCチェック、デバイスデバッグを行うか、要件を送信して選定と接続のアドバイスを受けましょう。

エンジニア会員

この記事を実行可能なデバッグ資料に

登録すると、高度な電文解析、資料パックのダウンロード、コード例、エンジニアリングケース、優先技術サポートが利用可能に。実際のプロジェクト納品に最適です。

高度なツール無制限
資料パックとコードパック
完全なエンジニアリングケースライブラリ
優先技術サポート窓口

发表回复

あなたのメールアドレスアドレス不会被公开。 必須項目已用 * 标注