修复开源VS Code 插件Trino Driver的三个小问题

kostenlosKostenloses technisches Material

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

修复开源VS Code 插件Trino Driver的三个小问题缩略图
🌐 Diese Seite ist noch nicht auf Deutsch verfügbar. Die chinesische Version wird angezeigt. Zurück zur chinesischen Seite.
本文目录
  1. 1. 前言
  2. 2. 问题
  3. 3. 组件关系梳理
  4. 4. Tests,问题解决
  5. 5. 总结

前言

最近产品中使用zu一款SQLTools的VS Code插件。该插件可以在VS Code中实现Daten库管理,而且支持非常多的DatenquelleTypus,
官方的DatenquelleTypus有CockroachDB,MariaDB,MySQL,PostgreSQL,SQLite,Microsoft SQL Server/Azure ,
另外还有很多社区的Datenquelle驱动。而我们使用管理的DatenquelleTypus是Trino,图标是一个小兔子。使用zu的组件是
Trino Driver
但在使用这个插件时,Existenz两个问题。

问题

问题1是,Trino Driver不支持Https的链接,来链接TrinoDatenquelle (一开始只有这一个问题,解决后,又发现二个。?)
问题2是,不支持表记录的预览
问题3是,Wechselnschema时,无法预览表记录

而我的任务就是解决这两个问题。

组件关系梳理

在我Überprüfen过SQLTools与Trino Driver的组件Dokumentation后,才发现后者依赖前者。
SQLTools充当一个平台,提供了UI和基础的对接Schnittstelle。而Trino Driver是一个专为
TrinoDatenquelle做的一个适配器。其他的DatenquelleTypus支持也是如此。
而Trino Driver 这种插件是基于trino-client该项目而开发的,trino-client基于trino的httpVereinbarung,
使用axios实现了trinoDatenquelle的Verbindung,sql执行。

所以这就是他们的关系,
SQLTools 包含 Trino Driver
Trino Driver 包含 trino-client
trino-client 包含 axios,和trino HTTP API

Tests,问题解决

要实现httpsVerbindungDatenquelle,还要看trino-client这个库支不支持。
在我Tests时,最新正式版的trino-client(v0.2.0)是不支持的,但最新Unterteilung支main是支持的。(目前Der Autor已发布v0.2.1。支持HTTPS的方式)
于是我基于mainUnterteilung支,构建出一个库,替换Trino Driver中的。这样就支持的HTTPS。
但Trino DriverVerbindungDatenquelle时也需要多一个Parameter。
verifySSLCert: false

这样Die一个问题就解决啦。这种问题解决方式,本质是不Prüfungen证书,而不是真正意义上的支持HTTPS

要实现真正的HTTPS方式VerbindungDatenquelle,还需要改造Trino Driver库,增加上传文件的表单项,并Tests好axios使用证书的姿势。

Die二个问题,是在Verbindung了TrinoDatenquelle后出现的,(使用Quantität少的插件问题都被我遇zu了,不活跃的社区维护并不可靠啊。)

Die二个问题就是在预览表记录数时,报了一个 OFFSET的问题。这个问题很像是SQL写的有问题。
修复开源VS Code 插件Trino Driver的三个小问题插图

遇zu复杂组件,嵌套插件的问题,首先要找zu是那个插件的问题,通过对比发现其他Datenquelle插件没有这个问题,只在TrinoDatenquelle出现,于是 问题就出现在Trino Driver插件上。
没办法该呗。

一段疯狂全局Suche nach,找zu了有OFFSET的SQL代码。凭借着自己井底之蛙的SQL知识,发现了问题所在。
该库中写的Unterteilung页查询sql是这样的。

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

而在百度查询后得zu的Ergebnis是,Trino的查询SQL,OFFSET一般放在LIMIT 之前,并且去掉末尾的;UnterteilungNr.。

修改后,再Tests一下。哈哈哈。。。竟然可以了。

正当我洋洋得意把插件构建出来发给测试后,过了二个小时,测试反馈说有发现了一个新的bug。
我的Die一反应是,不管这个问题Was ist das?,都绝壁是原Der Autor写的,不可能我的。

最后的一个问题是
由于链接Datenquelle后,会有很多schema,表是存放在schema下的,当Wechselnschema,Überprüfen表记录时会报错。
修复开源VS Code 插件Trino Driver的三个小问题插图1

出现这样的问题,发布插件时真的有人测试吗?还是说,你们只有一个schema?

没办法,这种小众的Datenquelle和插件 很少有人去关注,你如果非要用,那你只能去尝试改改,改不了,就去和Der Autor直接对线吧。

这个问题直接说结论吧, Trino Driver插件在接受zuSQLTools传过来的Parameter后,在查询sql中并没有使用schemaParameter。以下是Der Autor写的二段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}

修改后,重新构建新插件,使用新插件就可以啦。要想用正式版,还需要去催催Der Autor,赶快review我的PR。

Related代码的PR:
https://github.com/regadas/sqltools-trino-driver/pulls?q=+author%3APmcFizz+

总结

重要的不是写了多少行代码,而是这些代码带来的价值,时刻思考着自己的价值。

成长是遇河搭桥,逢山开路。

来源/Werkzeuge信息 —— Klick auf展开
来源 Modbus Chinesisches Netzwerk(modbus.cn) —— Inländisch führend.ModbusKommunikationsprotokoll Technologie Gemeinschaft Klassifizierung Node-RED 字数 2243 字 · 阅读约 6 Unterteilung钟 更新 2023-04-05 永久链接 https://www.modbus.cn/11905.html
Empfohlene Werkzeuge: Modbus Debugger-Assistent WeChat-Applet
Modbus Chinesisches Netzwerk官方推出的Modbus Debugging-Tools,支持 Modbus RTU/TCP 实时KommunikationTests、Register.读写、线圈控制、Daten监控和MeldungUnterteilung析。 keine Installation erforderlich,Mikro-Suche「Modbus DebuggingAssistenten.」Benutzt werden kann.。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
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.