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

这篇具有很好参考价值的文章主要介绍了修复开源VS Code 插件Trino Driver的三个小问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

问题

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

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

组件关系梳理

在我查看过SQLTools与Trino Driver的组件文档后,才发现后者依赖前者。
SQLTools充当一个平台,提供了UI和基础的对接接口。而Trino Driver是一个专为
Trino数据源做的一个适配器。其他的数据源类型支持也是如此。
而Trino Driver 这种插件是基于trino-client该项目而开发的,trino-client基于trino的http协议,
使用axios实现了trino数据源的连接,sql执行。

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

调试,问题解决

要实现https连接数据源,还要看trino-client这个库支不支持。
在我调试时,最新正式版的trino-client(v0.2.0)是不支持的,但最新分支main是支持的。(目前作者已发布v0.2.1。支持HTTPS的方式)
于是我基于main分支,构建出一个库,替换Trino Driver中的。这样就支持的HTTPS。
但Trino Driver连接数据源时也需要多一个参数。
verifySSLCert: false

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

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

第二个问题,是在连接了Trino数据源后出现的,(使用量少的插件问题都被我遇到了,不活跃的社区维护并不可靠啊。)

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

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

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

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

而在百度查询后得到的结果是,Trino的查询SQL,OFFSET一般放在LIMIT 之前,并且去掉末尾的;分号。

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

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

最后的一个问题是
由于链接数据源后,会有很多schema,表是存放在schema下的,当切换schema,查看表记录时会报错。
修复开源VS Code 插件Trino Driver的三个小问题

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

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

这个问题直接说结论吧, Trino Driver插件在接受到SQLTools传过来的参数后,在查询sql中并没有使用schema参数。以下是作者写的二段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}

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

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

总结

其实遇到这种开源插件自身的bug时,我原本可以推脱说,涉及到SQL,不懂,我还有其他事要做,我已经给作者提issues。
但我并没有,我把它当做一次试炼,成长的阶梯。
只要给我时间,月亮我也给你造出来。文章来源地址https://www.toymoban.com/news/detail-414225.html

到了这里,关于修复开源VS Code 插件Trino Driver的三个小问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【VS Code插件开发】Webview面板(三)

    🐱 个人主页: 不叫猫先生 ,公众号: 前端舵手 🙋‍♂️ 作者简介:前端领域优质作者、阿里云专家博主,共同学习共同进步,一起加油呀! 📢 资料领取:前端进阶资料可以找我免费领取 🔥 摸鱼学习交流: 我们的宗旨是在「工作中摸鱼,摸鱼中进步」,期待大佬一起

    2024年02月12日
    浏览(43)
  • 基于VS Code的插件开发(基础篇)

    VSCode 采用了 Electron,在语言上,VSCode 使用了自家的 TypeScript 语言开发。Electron是基于 Chromium 和 Node.js,使用 JavaScript, HTML 和 CSS 构建跨平台的桌面应用,它兼容 Mac、Windows 和 Linux,可以构建出三个平台的应用程序。 从实现上来看,Electron = Node.js + Chromium + Native API 接下来看下

    2024年02月07日
    浏览(43)
  • 一个强大的 VS Code 的AI代码插件:Fitten Code

    AI 代码助手有  GitHub Copilot ,一直想用,但是要爬梯子,还要收费。 一款国产AI写代码神器 Fitten Code ,满足了我对AI写代码的幻想。它在功能上基本和 GitHub Copilot 差不多。 重要是的是,免费,免费,完全免费!啊啊啊啊啊~~~~ 官网:免费好用的AI编程助手 - Fitten Code Fitten Co

    2024年04月12日
    浏览(52)
  • VS Code 下载安装以及非常好用的插件

    给他家也准备好了安装包:快捷直达 一、下载 进入VS Code官网:地址直达,点击 DownLoad for Windows 下载windows版本 当然也可以点击旁边的箭头,下载Windows版本 或 Mac OS 版本 Stable:稳定版 Insiders:内测版 二、安装 双击安装包,选择 我同意此协议 ,再点击 下一步 选择安装路径

    2024年02月09日
    浏览(47)
  • VS code 插件之中英文间自动添加空格

    不知道大家在开发过程中是不是会遇到写代码注释或者文本内容时中英文之间没有空格的情况,很多时候在写代码尤其是写注释的时候容易忘记加空格,但回过头来看又难以忍受,于是我就想着自己写一个 vscode 插件来解决这个问题,希望能帮到大家。 我自己写了一个 vscod

    2024年02月02日
    浏览(52)
  • 电脑蓝屏按哪三个键恢复?怎么修复蓝屏问题

    最近有人在咨询小编,说电脑蓝屏按哪三个键恢复?我一脸懵逼,还有这操作么?其实如果发你的电脑一开机就蓝屏,一开机就蓝屏,没办法进入系统的话,那么你就需要用另外的方法进去系统了,而不是按三个键恢复,下面我们一起来看看。 有硬件故障,也有软件故障 首

    2024年02月09日
    浏览(43)
  • 修改『Visual Studio Code(VS Code)』插件默认安装路径的方法

    提示:文章中“『』”符号“加粗”都为着重说明,此二者同时使用一般为输入内容。 作者希望将『Visual Studio Code(以下简称为“ VS Code ”)』的插件安装在 数据盘 (D盘),用于统一管理,因此需要修改VS Code插件 安装路径 。 VS Code插件默认的安装位置为: C:Users{个人用户名

    2024年02月07日
    浏览(66)
  • VS Code——koroFileHeader插件:生成头部注释、函数注释

     1、安装插件  2、CTRL + , 打开设置,输入 fileheader ,进入 setting.json 配置相关信息 3、 将下方代码,插入 setting.json,有不需要的字段,可以删掉 4、保存设置,重启vscode,就可以使用了         (1)文件头部注释: CTRL+Win+i (Ctrl + Alt + i) (Windows)、 CTRL+cmd+i (mac)         (

    2024年02月10日
    浏览(53)
  • 原地起飞!VS Code 最好用的 10 款 AI 插件

    你好,我是 EarlGrey,喜欢翻译点东西,偶尔写写代码。 点击下方卡片关注我,一起向上进击,提升自我。 后台回复“ 电子书 ”,送你一份我收藏的电子书合集。 开发人员的工具箱每年都在增加。最近,AI 工具受到热捧,质量和数量都在不断提高。 今天,我将为大家

    2024年02月03日
    浏览(48)
  • 全文高能!提高工作效率的9个VS Code扩展插件

    1/ Path Intellisense 这个扩展会自动补全文件名。就像在 HTML 中使用标签一样,它会自动补全标签。 2/ Live Server 这个扩展允许你在浏览器上启动本地项目并进行实时重载,这样你就不必在每次更改后不停地刷新了。 3/ CodeGeeX CodeGeeX 是一个使用AI技术的辅助编程工具,帮助开发人员

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包