Skip to content
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

[JS] Query with Syntax errors gets parsed successfully, when including \n or \r #67

Closed
proddata opened this issue Aug 7, 2024 · 1 comment
Assignees
Labels
bug Something isn't working javascript About the Javascript package

Comments

@proddata
Copy link
Member

proddata commented Aug 7, 2024

e.g.
'SELECT A FROM tbl1 \nwhere ;'
gets parsed to

[
  Statement {
    query: 'SELECT A FROM tbl1 \nwhere',
    originalQuery: 'SELECT A FROM tbl1 \nwhere ;',
    tree: '(statement (query (queryNoWith (queryTerm SELECT A FROM tbl1 where))))',
    type: 'SELECT',
    ctx: DefaultContext {
      parentCtx: [StatementsContext],
      invokingState: 250,
      children: [Array],
      start: [Pt],
      stop: [Pt],
      exception: null,
      parser: [_SqlBaseParser],
      ruleIndex: 3
    },
    exception: null,
    metadata: Metadata {
      tables: [],
      parameterizedProperties: {},
      withProperties: {}
    }
  }
]

while
'SELECT A FROM tbl1 where ;'
leads to

[
  Statement {
    query: 'SELECT A FROM tbl1 where',
    originalQuery: 'SELECT A FROM tbl1 where ;',
    tree: '(statement (query (queryNoWith (queryTerm SELECT A FROM tbl1 where))))',
    type: 'SELECT',
    ctx: DefaultContext {
      parentCtx: [StatementsContext],
      invokingState: 250,
      children: [Array],
      start: [Pt],
      stop: [Pt],
      exception: null,
      parser: [_SqlBaseParser],
      ruleIndex: 3
    },
    exception: ParseError: no viable alternative at input 'SELECT A FROM tbl1 where ;'
        at ExceptionCollectorListener.syntaxError (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:85513:19)
        at file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:1647:37
        at Array.map (<anonymous>)
        at Rt.syntaxError (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:1647:22)
        at _SqlBaseParser.notifyErrorListeners (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:3569:39)
        at Ae.reportNoViableAlternative (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:3122:10)
        at Ae.reportError (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:3088:94)
        at _SqlBaseParser.queryTerm (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:62301:26)
        at _SqlBaseParser.queryNoWith (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:62028:12)
        at _SqlBaseParser.query (file:///Users//sqlparsetest/node_modules/@cratedb/cratedb-sqlparse/dist/sqlparse.js:62007:12) {
      query: 'SELECT A FROM tbl1 where ;',
      msg: "no viable alternative at input 'SELECT A FROM tbl1 where ;'",
      offendingToken: [Pt],
      line: 1,
      column: 25,
      errorMessage: "[line 1:25 no viable alternative at input 'SELECT A FROM tbl1 where ;']",
      errorMessageVerbose: 'SELECT A FROM tbl1 where ;\n                         ^'
    },
    metadata: Metadata {
      tables: [],
      parameterizedProperties: {},
      withProperties: {}
    }
  }
]

same behaviour can be witnessed with other keywords:
'SELECT 1\n limit ' --> parses
'SELECT 1\r limit ' --> parses
'SELECT 1\t limit ' --> fails
'SELECT 1 limit ' --> fails

@surister surister added bug Something isn't working javascript About the Javascript package labels Aug 7, 2024
@surister
Copy link
Collaborator

surister commented Oct 6, 2024

Fixed in latest master, added tests in #94

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

No branches or pull requests

3 participants