sql icon indicating copy to clipboard operation
sql copied to clipboard

[BUG] Multiplication in queries are treated as an alias

Open ghost opened this issue 3 years ago • 2 comments

Describe the bug Multiplication in queries are treated as an alias if there is no space between * and the value.

Or for query issues:

  1. 'SELECT 1*1'
  2. See result of 1 with alias *1

Expected behavior The result should be 1 similar to result of the query 'SELECT 1/1'

Screenshots image image image

Additional context 'SELECT 1 * 1' works however when TDVT testing, generated queries do not include a space between * and the second value.

ghost avatar Nov 04 '21 22:11 ghost

Thanks for reporting this issue, this seems due to unhandled corner cases for the parsers. We will give it a fix once we have resources.

chloe-zh avatar Nov 14 '21 23:11 chloe-zh

@dai-chen @penghuo @GabeFernandez310 has pushed changes to the parser to accommodate index names that included non-SQL characters: https://github.com/Bit-Quill/opensearch-project-sql/pull/128

The current strategy uses state to save whether we're in a FROM clause or not (all other clauses use the default state... more on this below). The state is exited when the index name token is parsed. So, only in this state can we accept non-sql characters in the identifier. A cleaner solution would be to save states for each clause, but that's a major change.

The parser only fails in unique cases where the test has sub-queries. We need to find out how to accommodate sub-queries, and it seems like the best strategy would be to save state in modes as a stack (push state when entering the sub-query, exit state when we exit the sub-query).

See test output for review: https://github.com/Bit-Quill/opensearch-project-sql/actions/runs/3268789572

acarbonetto avatar Oct 18 '22 17:10 acarbonetto