Skip to content

LSP doesn't work (in a strange way) #328

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
psteinroe opened this issue Apr 11, 2025 · 4 comments
Closed

LSP doesn't work (in a strange way) #328

psteinroe opened this issue Apr 11, 2025 · 4 comments
Assignees
Labels
bug Something isn't working

Comments

@psteinroe
Copy link
Collaborator

Discussed in #325

Originally posted by DaviDevMod April 10, 2025
I'm on Ubuntu 24.04.2 LTS.
The CLI is installed through node with npm i -D @postgrestools/postgrestools.
Using VSCode, with a seemingly working extension where running PostgresTools: Get Current Version yelds: "Currently installed PostgresTools version is 0.3.1."

This is my postgrestools.jsonc

{
// #319
"$schema": "https://pgtools.dev/schemas/latest/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignore": []
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"db": {
"host": "127.0.0.1",
"port": 5432,
"username": "postgres",
"password": "postgres",
"database": "postgres",
"connTimeoutSecs": 10
}
}

I have a simple .sql file with two tables.
-- Create the company table
CREATE TABLE company (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL
);

-- Create the business table
CREATE TABLE business (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    company_id UUID REFERENCES company(id) NOT NULL,
    INDEX (company_id)
);

After reloading the editor, I get squiggling lines in the entire second table, with a pg(syntax) error saying Invalid statement: syntax error at or near "(".

After running PostgresTools: Restart the error goes away, but now I can also get away with writing gibberish.

Here's the postgrestools server output

2025-04-09 23:41:43.418 [info] PostgresTools extension 1.1.5 activated
2025-04-09 23:41:43.418 [info] Starting with config…
config={"enabled":true,"allowDownloadPrereleases":false,"configFile":"","bin":null}
2025-04-09 23:41:43.418 [info] User-facing commands registered
2025-04-09 23:41:43.418 [info] User did not specify path to config file. Using default.
2025-04-09 23:41:43.418 [info] Found config file.
path="/home/censored/Desktop/censored/postgrestools.jsonc"
2025-04-09 23:41:43.418 [info] Binary not found with strategy
strategy="VSCode Settings Strategy"
2025-04-09 23:41:43.419 [info] Searching for node_modules package
postgrestoolsPackageNameJson="@postgrestools/postgrestools/package.json"
2025-04-09 23:41:43.419 [info] Copying binary to temp location
currentLocation="/home/censored/Desktop/censored/node_modules/@postgrestools/cli-x86_64-linux-gnu/postgrestools"
2025-04-09 23:41:43.714 [info] Server Options:
serverOptions={"command":"/home/censored/.config/Code/User/globalStorage/supabase.postgrestools/tmp-bin/postgrestools-0.3.1","transport":0,"options":{"cwd":"/home/censored/Desktop/censored"},"args":["lsp-proxy","--config-path=/home/censored/Desktop/censored/postgrestools.jsonc"]}
2025-04-09 23:41:45.352 [info] Created a global LSP session
2025-04-09 23:41:45.352 [info] PostgresTools extension started
2025-04-09 23:41:45.353 [info] Started listening for configuration changes
2025-04-09 23:41:45.353 [info] Started listening for active text editor changes

Running PostgresTools: Restart just adds the line 2025-04-09 23:42:57.073 [info] PostgresTools extension restarted

And here's the log took from ~/.cache/pgt/pgt-logs/server.log.2025-04-09-22

┐pgt_cli::commands::daemon::Running Server{pid=107497}
├─2025-04-09 22:16:17.96371738 0ms INFO pgt_cli::service::unix Trying to connect to socket /home/cersored/.cache/pgt/pgt-socket-0.3.1
├─2025-04-09 22:16:17.963753409 0ms INFO pgt_cli::service::unix Remove socket folder /home/cersored/.cache/pgt/pgt-socket-0.3.1
├─2025-04-09 22:16:18.009494502 45ms INFO pgt_cli::service::unix Accepted connection
├─2025-04-09 22:16:18.009633112 46ms INFO pgt_cli::service::unix Accepted connection
└─┐pgt_lsp::server::initialize{root_uri=file:///home/cersored/Desktop/my%20packages/censored, capabilities=ClientCapabilities { workspace: Some(WorkspaceClientCapabilities { apply_edit: Some(true), workspace_edit: Some(WorkspaceEditClientCapabilities { document_changes: Some(true), resource_operations: Some([Create, Rename, Delete]), failure_handling: Some(TextOnlyTransactional), normalizes_line_endings: Some(true), change_annotation_support: Some(ChangeAnnotationWorkspaceEditClientCapabilities { groups_on_label: Some(true) }) }), did_change_configuration: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), did_change_watched_files: Some(DidChangeWatchedFilesClientCapabilities { dynamic_registration: Some(true), relative_pattern_support: Some(true) }), symbol: Some(WorkspaceSymbolClientCapabilities { dynamic_registration: Some(true), symbol_kind: Some(SymbolKindCapability { value_set: Some([File, Module, Namespace, Package, Class, Method, Property, Field, Constructor, Enum, Interface, Function, Variable, Constant, String, Number, Boolean, Array, Object, Key, Null, EnumMember, Struct, Event, Operator, TypeParameter]) }), tag_support: Some(TagSupport { value_set: [Deprecated] }), resolve_support: Some(WorkspaceSymbolResolveSupportCapability { properties: ["location.range"] }) }), execute_command: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), workspace_folders: Some(true), configuration: Some(true), semantic_tokens: Some(SemanticTokensWorkspaceClientCapabilities { refresh_support: Some(true) }), code_lens: Some(CodeLensWorkspaceClientCapabilities { refresh_support: Some(true) }), file_operations: Some(WorkspaceFileOperationsClientCapabilities { dynamic_registration: Some(true), did_create: Some(true), will_create: Some(true), did_rename: Some(true), will_rename: Some(true), did_delete: Some(true), will_delete: Some(true) }), inline_value: Some(InlineValueWorkspaceClientCapabilities { refresh_support: Some(true) }), inlay_hint: Some(InlayHintWorkspaceClientCapabilities { refresh_support: Some(true) }), diagnostic: None }), text_document: Some(TextDocumentClientCapabilities { synchronization: Some(TextDocumentSyncClientCapabilities { dynamic_registration: Some(true), will_save: Some(true), will_save_wait_until: Some(true), did_save: Some(true) }), completion: Some(CompletionClientCapabilities { dynamic_registration: Some(true), completion_item: Some(CompletionItemCapability { snippet_support: Some(true), commit_characters_support: Some(true), documentation_format: Some([Markdown, PlainText]), deprecated_support: Some(true), preselect_support: Some(true), tag_support: Some(TagSupport { value_set: [Deprecated] }), insert_replace_support: Some(true), resolve_support: Some(CompletionItemCapabilityResolveSupport { properties: ["documentation", "detail", "additionalTextEdits"] }), insert_text_mode_support: Some(InsertTextModeSupport { value_set: [AsIs, AdjustIndentation] }), label_details_support: Some(true) }), completion_item_kind: Some(CompletionItemKindCapability { value_set: Some([Text, Method, Function, Constructor, Field, Variable, Class, Interface, Module, Property, Unit, Value, Enum, Keyword, Snippet, Color, File, Reference, Folder, EnumMember, Constant, Struct, Event, Operator, TypeParameter]) }), context_support: Some(true), insert_text_mode: Some(AdjustIndentation), completion_list: Some(CompletionListCapability { item_defaults: Some(["commitCharacters", "editRange", "insertTextFormat", "insertTextMode", "data"]) }) }), hover: Some(HoverClientCapabilities { dynamic_registration: Some(true), content_format: Some([Markdown, PlainText]) }), signature_help: Some(SignatureHelpClientCapabilities { dynamic_registration: Some(true), signature_information: Some(SignatureInformationSettings { documentation_format: Some([Markdown, PlainText]), parameter_information: Some(ParameterInformationSettings { label_offset_support: Some(true) }), active_parameter_support: Some(true) }), context_support: Some(true) }), references: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), document_highlight: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), document_symbol: Some(DocumentSymbolClientCapabilities { dynamic_registration: Some(true), symbol_kind: Some(SymbolKindCapability { value_set: Some([File, Module, Namespace, Package, Class, Method, Property, Field, Constructor, Enum, Interface, Function, Variable, Constant, String, Number, Boolean, Array, Object, Key, Null, EnumMember, Struct, Event, Operator, TypeParameter]) }), hierarchical_document_symbol_support: Some(true), tag_support: Some(TagSupport { value_set: [Deprecated] }) }), formatting: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), range_formatting: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), on_type_formatting: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), declaration: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), definition: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), type_definition: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), implementation: Some(GotoCapability { dynamic_registration: Some(true), link_support: Some(true) }), code_action: Some(CodeActionClientCapabilities { dynamic_registration: Some(true), code_action_literal_support: Some(CodeActionLiteralSupport { code_action_kind: CodeActionKindLiteralSupport { value_set: ["", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports"] } }), is_preferred_support: Some(true), disabled_support: Some(true), data_support: Some(true), resolve_support: Some(CodeActionCapabilityResolveSupport { properties: ["edit"] }), honors_change_annotations: Some(true) }), code_lens: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), document_link: Some(DocumentLinkClientCapabilities { dynamic_registration: Some(true), tooltip_support: Some(true) }), color_provider: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), rename: Some(RenameClientCapabilities { dynamic_registration: Some(true), prepare_support: Some(true), prepare_support_default_behavior: Some(Identifier), honors_change_annotations: Some(true) }), publish_diagnostics: Some(PublishDiagnosticsClientCapabilities { related_information: Some(true), tag_support: Some(TagSupport { value_set: [Unnecessary, Deprecated] }), version_support: Some(false), code_description_support: Some(true), data_support: Some(true) }), folding_range: Some(FoldingRangeClientCapabilities { dynamic_registration: Some(true), range_limit: Some(5000), line_folding_only: Some(true), folding_range_kind: Some(FoldingRangeKindCapability { value_set: Some([Comment, Imports, Region]) }), folding_range: Some(FoldingRangeCapability { collapsed_text: Some(false) }) }), selection_range: Some(SelectionRangeClientCapabilities { dynamic_registration: Some(true) }), linked_editing_range: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), call_hierarchy: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), semantic_tokens: Some(SemanticTokensClientCapabilities { dynamic_registration: Some(true), requests: SemanticTokensClientCapabilitiesRequests { range: Some(true), full: Some(Delta { delta: Some(true) }) }, token_types: [SemanticTokenType("namespace"), SemanticTokenType("type"), SemanticTokenType("class"), SemanticTokenType("enum"), SemanticTokenType("interface"), SemanticTokenType("struct"), SemanticTokenType("typeParameter"), SemanticTokenType("parameter"), SemanticTokenType("variable"), SemanticTokenType("property"), SemanticTokenType("enumMember"), SemanticTokenType("event"), SemanticTokenType("function"), SemanticTokenType("method"), SemanticTokenType("macro"), SemanticTokenType("keyword"), SemanticTokenType("modifier"), SemanticTokenType("comment"), SemanticTokenType("string"), SemanticTokenType("number"), SemanticTokenType("regexp"), SemanticTokenType("operator"), SemanticTokenType("decorator")], token_modifiers: [SemanticTokenModifier("declaration"), SemanticTokenModifier("definition"), SemanticTokenModifier("readonly"), SemanticTokenModifier("static"), SemanticTokenModifier("deprecated"), SemanticTokenModifier("abstract"), SemanticTokenModifier("async"), SemanticTokenModifier("modification"), SemanticTokenModifier("documentation"), SemanticTokenModifier("defaultLibrary")], formats: [TokenFormat("relative")], overlapping_token_support: Some(false), multiline_token_support: Some(false), server_cancel_support: Some(true), augments_syntax_tokens: Some(true) }), moniker: None, type_hierarchy: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), inline_value: Some(DynamicRegistrationClientCapabilities { dynamic_registration: Some(true) }), inlay_hint: Some(InlayHintClientCapabilities { dynamic_registration: Some(true), resolve_support: Some(InlayHintResolveClientCapabilities { properties: ["tooltip", "textEdits", "label.tooltip", "label.location", "label.command"] }) }), diagnostic: Some(DiagnosticClientCapabilities { dynamic_registration: Some(true), related_document_support: Some(false) }) }), window: Some(WindowClientCapabilities { work_done_progress: Some(true), show_message: Some(ShowMessageRequestClientCapabilities { message_action_item: Some(MessageActionItemCapabilities { additional_properties_support: Some(true) }) }), show_document: Some(ShowDocumentClientCapabilities { support: true }) }), general: Some(GeneralClientCapabilities { regular_expressions: Some(RegularExpressionsClientCapabilities { engine: "ECMAScript", version: Some("ES2020") }), markdown: Some(MarkdownClientCapabilities { parser: "marked", version: Some("1.1.0"), allowed_tags: None }), stale_request_support: Some(StaleRequestSupportClientCapabilities { cancel: true, retry_on_content_modified: ["textDocument/semanticTokens/full", "textDocument/semanticTokens/range", "textDocument/semanticTokens/full/delta"] }), position_encodings: Some([PositionEncodingKind("utf-16")]) }), experimental: None }, client_info=ClientInfo { name: "Visual Studio Code", version: Some("1.98.2") }, workspace_folders=[WorkspaceFolder { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored", query: None, fragment: None }, name: "rotime" }]}
├─2025-04-09 22:16:18.085504461 0ms INFO pgt_lsp::server Starting Language Server...
┌─┘
└─┐pgt_lsp::server::initialized{}
├─2025-04-09 22:16:19.316699855 0ms INFO pgt_lsp::server Attempting to load the configuration from 'postgrestools.jsonc' file
└─┐pgt_fs::fs::os::OsFileSystem::open_with_options{path="/home/cersored/Desktop/censored/postgrestools.jsonc", options=OpenOptions { read: true, write: false, truncate: false, create: false, create_new: false }}
┌─┘
└─┐pgt_fs::fs::os::OsFile::read_to_string{}
┌─┘
├─2025-04-09 22:16:19.316912539 0ms INFO pgt_lsp::session Configuration loaded successfully from disk.
├─2025-04-09 22:16:19.316926038 0ms INFO pgt_lsp::session Update workspace settings.
├─2025-04-09 22:16:19.316985385 0ms INFO pgt_workspace::workspace::server Updating settings in workspace
├─2025-04-09 22:16:19.317013924 0ms INFO pgt_workspace::workspace::server Updated settings in workspace
├─2025-04-09 22:16:19.317262229 0ms WARN sqlx_postgres::options::pgpass Failed to open .pgpass file: Os { code: 2, kind: NotFound, message: "No such file or directory" }, path=/home/cersored/.pgpass
├─2025-04-09 22:16:19.317340232 0ms INFO pgt_workspace::workspace::server Updated Db connection settings
└─┐pgt_lsp::handlers::text_document::did_open{params=DidOpenTextDocumentParams { text_document: TextDocumentItem { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None }, language_id: "sql", version: 1, text: "-- Create the company table\nCREATE TABLE company (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n name VARCHAR(255) NOT NULL,\n email VARCHAR(255) UNIQUE NOT NULL\n);\n\n-- Create the business table\nCREATE TABLE business (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n name VARCHAR(255) NOT NULL,\n email VARCHAR(255) UNIQUE NOT NULL,\n company_id UUID REFERENCES company(id) NOT NULL,\n INDEX (company_id)\n);" } }}
└─┐pgt_workspace::workspace::server::open_file{path="/home/cersored/Desktop/censored/src/lib/supabase/schemas/wip.sql"}
├─2025-04-09 22:16:19.434486287 2ms INFO pgt_workspace::workspace::server::pg_query invalid statement, adding diagnostics.
┌─┘
├─2025-04-09 22:16:19.43762011 5ms INFO pgt_workspace::workspace::server Pulled 1 diagnostic(s)
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 2, character: 50 }, end: Position { line: 2, character: 50 } }, context: CodeActionContext { diagnostics: [], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 2, character: 50 }, end: Position { line: 2, character: 50 } }, context: CodeActionContext { diagnostics: [], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
├─2025-04-09 22:16:20.027526498 710ms INFO pgt_lsp::session Unregister capabilities "workspace/didChangeConfiguration, workspace/didChangeWatchedFiles"
├─2025-04-09 22:16:20.441745621 1s INFO pgt_lsp::session Register capabilities "workspace/didChangeConfiguration, workspace/didChangeWatchedFiles"
├─2025-04-09 22:16:20.444812423 1s INFO pgt_workspace::workspace::server Pulled 1 diagnostic(s)
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 2, character: 50 }, end: Position { line: 2, character: 50 } }, context: CodeActionContext { diagnostics: [], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 2, character: 50 }, end: Position { line: 2, character: 50 } }, context: CodeActionContext { diagnostics: [], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 2, character: 50 }, end: Position { line: 2, character: 50 } }, context: CodeActionContext { diagnostics: [], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 14, character: 2 }, end: Position { line: 14, character: 2 } }, context: CodeActionContext { diagnostics: [Diagnostic { range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, severity: Some(Error), code: Some(String("syntax")), code_description: None, source: Some("pg"), message: "Invalid statement: syntax error at or near "("", related_information: None, tags: None, data: None }], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::server::did_change_configuration{}
└─┐pgt_fs::fs::os::OsFileSystem::open_with_options{path="/home/cersored/Desktop/censored/postgrestools.jsonc", options=OpenOptions { read: true, write: false, truncate: false, create: false, create_new: false }}
┌─┘
└─┐pgt_fs::fs::os::OsFile::read_to_string{}
┌─┘
├─2025-04-09 22:16:23.978684763 0ms INFO pgt_lsp::session Configuration loaded successfully from disk.
├─2025-04-09 22:16:23.978703509 0ms INFO pgt_lsp::session Update workspace settings.
├─2025-04-09 22:16:23.978711895 0ms INFO pgt_workspace::workspace::server Updating settings in workspace
├─2025-04-09 22:16:23.978725946 0ms INFO pgt_workspace::workspace::server Updated settings in workspace
├─2025-04-09 22:16:23.978817105 0ms WARN sqlx_postgres::options::pgpass Failed to open .pgpass file: Os { code: 2, kind: NotFound, message: "No such file or directory" }, path=/home/cersored/.pgpass
├─2025-04-09 22:16:23.979611638 1ms INFO pgt_workspace::workspace::server Updated Db connection settings
├─2025-04-09 22:16:24.00239522 23ms INFO pgt_lsp::session Unregister capabilities "workspace/didChangeConfiguration, workspace/didChangeWatchedFiles"
├─2025-04-09 22:16:24.005493875 27ms INFO pgt_lsp::session Register capabilities "workspace/didChangeConfiguration, workspace/didChangeWatchedFiles"
├─2025-04-09 22:16:24.00586167 27ms INFO pgt_workspace::workspace::server Pulled 1 diagnostic(s)
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 14, character: 2 }, end: Position { line: 14, character: 2 } }, context: CodeActionContext { diagnostics: [Diagnostic { range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, severity: Some(Error), code: Some(String("syntax")), code_description: None, source: Some("pg"), message: "Invalid statement: syntax error at or near "("", related_information: None, tags: None, data: None }], only: None, trigger_kind: Some(Automatic) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, context: CodeActionContext { diagnostics: [Diagnostic { range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, severity: Some(Error), code: Some(String("syntax")), code_description: None, source: Some("pg"), message: "Invalid statement: syntax error at or near "("", related_information: None, tags: None, data: None }], only: Some([CodeActionKind("quickfix")]), trigger_kind: Some(Invoked) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, context: CodeActionContext { diagnostics: [Diagnostic { range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, severity: Some(Error), code: Some(String("syntax")), code_description: None, source: Some("pg"), message: "Invalid statement: syntax error at or near "("", related_information: None, tags: None, data: None }], only: Some([CodeActionKind("quickfix")]), trigger_kind: Some(Invoked) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, context: CodeActionContext { diagnostics: [Diagnostic { range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, severity: Some(Error), code: Some(String("syntax")), code_description: None, source: Some("pg"), message: "Invalid statement: syntax error at or near "("", related_information: None, tags: None, data: None }], only: Some([CodeActionKind("quickfix")]), trigger_kind: Some(Invoked) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
└─┐pgt_lsp::handlers::code_actions::get_actions{params=CodeActionParams { text_document: TextDocumentIdentifier { uri: Url { scheme: "file", cannot_be_a_base: false, username: "", password: None, host: None, port: None, path: "/home/cersored/Desktop/my%20packages/censored/src/lib/supabase/schemas/wip.sql", query: None, fragment: None } }, range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, context: CodeActionContext { diagnostics: [Diagnostic { range: Range { start: Position { line: 8, character: 0 }, end: Position { line: 14, character: 2 } }, severity: Some(Error), code: Some(String("syntax")), code_description: None, source: Some("pg"), message: "Invalid statement: syntax error at or near "("", related_information: None, tags: None, data: None }], only: Some([CodeActionKind("quickfix")]), trigger_kind: Some(Invoked) }, work_done_progress_params: WorkDoneProgressParams { work_done_token: None }, partial_result_params: PartialResultParams { partial_result_token: None } }}
┌─┘
├─2025-04-09 22:19:18.957123867 3m INFO tower_lsp::service::layers shutdown request received, shutting down
└─┐pgt_lsp::server::shutdown{}
┌─┘
├─2025-04-09 22:19:18.959704093 3m INFO tower_lsp::service::layers exit notification received, stopping
2025-04-09 22:19:18.960535378 INFO pgt_cli::commands::daemon Received shutdown signal

Any insight on what's going on?

@psteinroe psteinroe added the bug Something isn't working label Apr 11, 2025
@psteinroe
Copy link
Collaborator Author

I checked your logs and it reports a syntax error because … well there is one 😅

the INDEX as part of the CREATE TABLE is not supported in Postgres.

CREATE TABLE business (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    company_id UUID REFERENCES company(id) NOT NULL,
    INDEX (company_id)
);

reference: https://www.postgresql.org/docs/current/sql-createtable.html

I could not find other issues, but please let me know if I missed something. :)

@psteinroe psteinroe self-assigned this Apr 12, 2025
@DaviDevMod
Copy link

Sorry about that 😅 I'm new to sql and had (an hallucinating) gemini 2.0 help me with the schema.
What about PostgresTools: Restart? Why does it break LSP functionalities?

@psteinroe
Copy link
Collaborator Author

No problem!

I believe @juleswritescode fixed restarts in the latest release of the vscode extension. Can you check that you are using that?

@DaviDevMod
Copy link

Yes, I checked and the restart works as expected. Thank you so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants