joe-re / sql-language-server

SQL Language Server
MIT License
695 stars 64 forks source link

No completions offered for tables inside a CTE #240

Open joshbode opened 9 months ago

joshbode commented 9 months ago

When working with tables inside a CTE (aka WITH) no column completions are generated.

e.g. when the cursor is here (at the |)

SELECT
  x.|   -- completions generated correctly
FROM
  some_table x

however this doesn't work for me:

WITH v as (
  SELECT
    x.|   -- no completions generated
  FROM
    some_table x
)
SELECT
  v.*
FROM
  v

Possibly relevant log messages when the completions are not generated:

[2024-02-09T17:55:47.774] [DEBUG] default - WITH
[2024-02-09T17:55:47.774] [DEBUG] default - complete: WITH
[2024-02-09T17:55:47.774] [DEBUG] default - target: WITH

which may mean the completions aren't targeted to the SELECT.

Additionally, an exception is often being thrown here (even when the completions work and the SELECT is the target):

      if (_e.name !== 'SyntaxError') {
        throw _e
      }

since the exception that is coming from the PEG parser is named peg$SyntaxError, I think.

I am using: