- Notifications
You must be signed in to change notification settings - Fork77
SQL language server written in Go.
License
sqls-server/sqls
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
An implementation of the Language Server Protocol for SQL.
This project is currently under development and there is no stable release. Therefore, destructive interface changes and configuration changes are expected.
sqls aims to provide advanced intelligence for you to edit sql in your own editor.
- MySQL(Go-MySQL-Driver)
- PostgreSQL(pgx)
- SQLite3(go-sqlite3)
- MSSQL(go-mssqldb)
- H2(pgx)
- Vertica(vertica-sql-go)
- DML(Data Manipulation Language)
- SELECT
- Sub Query
- INSERT
- UPDATE
- DELETE
- SELECT
- DDL(Data Definition Language)
- CREATE TABLE
- ALTER TABLE
If the tables are connected with a foreign key sqls can completeJOIN
statements
- Execute SQL
- Explain SQL
- Switch Connection(Selected Database Connection)
- Switch Database
go install github.com/sqls-server/sqls@latest
The connection to the RDBMS is essential to take advantage of the functionality provided bysqls
.You need to set the connection to the RDBMS.
There are the following methods for RDBMS connection settings, and they are prioritized in order from the top.Whichever method you choose, the settings you make will remain the same.
- Configuration file specified by the
-config
flag workspace/configuration
set to LSP client- Configuration file located in the following location
$XDG_CONFIG_HOME
/sqls/config.yml ("$HOME
/.config" is used instead of$XDG_CONFIG_HOME
if it's not set)
# Set to true to use lowercase keywords instead of uppercase.lowercaseKeywords:falseconnections: -alias:dsn_mysqldriver:mysqldataSourceName:root:root@tcp(127.0.0.1:13306)/world -alias:individual_mysqldriver:mysqlproto:tcpuser:rootpasswd:roothost:127.0.0.1port:13306dbName:worldparams:autocommit:"true"tls:skip-verify -alias:mysql_via_sshdriver:mysqlproto:tcpuser:adminpasswd:Q+ACgv12ABx/host:192.168.121.163port:3306dbName:worldsshConfig:host:192.168.121.168port:22user:sshuserpassPhrase:ssspassprivateKey:/home/sqls-server/.ssh/id_rsa -alias:dsn_verticadriver:verticadataSourceName:vertica://user:pass@host:5433/dbname
- setting example with vim-lsp.
ifexecutable('sqls')augroupLspSqlsautocmd!autocmdUserlsp_setupcalllsp#register_server({\'name':'sqls',\'cmd': {server_info->['sqls']},\'whitelist': ['sql'],\'workspace_config': {\'sqls': {\'connections': [\ {\'driver':'mysql',\'dataSourceName':'root:root@tcp(127.0.0.1:13306)/world',\ },\ {\'driver':'postgresql',\'dataSourceName':'host=127.0.0.1 port=15432 user=postgres password=mysecretpassword1234 dbname=dvdrental sslmode=disable',\ },\ ],\ },\ },\})augroupENDendif
- setting example with coc.nvim.
Incoc-settings.json
opened by:CocConfig
{"languageserver": {"sql": {"command":"sqls","args": ["-config","$HOME/.config/sqls/config.yml"],"filetypes": ["sql"],"shell":true } }}
- setting example withnvim-lspconfig.
require'lspconfig'.sqls.setup{on_attach=function(client,bufnr)require('sqls').on_attach(client,bufnr)-- require sqls.nvimendsettings= {sqls= {connections= { {driver='mysql',dataSourceName='root:root@tcp(127.0.0.1:13306)/world', }, {driver='postgresql',dataSourceName='host=127.0.0.1 port=15432 user=postgres password=mysecretpassword1234 dbname=dvdrental sslmode=disable', }, }, }, },}
Setting example for Sublime Text 4
Install the LSP Client by Opening the command palette and run
Package Control: Install Package
, then selectLSP
.Open
Preferences > Package Settings > LSP > Settings
and add the"sqls"
client configuration to the"clients"
:
{ "show_diagnostics_count_in_view_status": true, "clients": { "sqls": { "enabled": true, "command": ["/path/to/sqls binary"], "selector": "source.sql" } }}
I'm sorry. Please wait a little longer for other editor settings.
The first setting inconnections
is the default connection.
Key | Description |
---|---|
connections | Database connections |
dataSourceName
takes precedence over the value set inproto
,user
,passwd
,host
,port
,dbName
,params
.
Key | Description |
---|---|
alias | Connection alias name. Optional. |
driver | mysql ,postgresql ,sqlite3 ,mssql ,h2 . Required. |
dataSourceName | Data source name. |
proto | tcp ,udp ,unix . |
user | User name |
passwd | Password |
host | Host |
port | Port |
path | unix socket path |
dbName | Database name |
params | Option params. Optional. |
sshConfig | ssh config. Optional. |
Key | Description |
---|---|
host | ssh host. Required. |
port | ssh port. Required. |
user | ssh user. Optional. |
privateKey | private key path. Required. |
passPhrase | passPhrase. Optional. |
See also.
- https://github.com/go-sql-driver/mysql#dsn-data-source-name
- https://pkg.go.dev/github.com/jackc/pgx/v4
- https://github.com/mattn/go-sqlite3#connection-string
This project exists thanks to all the people who contribute.
I created sqls inspired by the following OSS.
- dbcli Tools
- non-validating SQL parser
About
SQL language server written in Go.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.