mozilla/moz-sql-parser

Using clause not supported

Closed this issue · 1 comments

There exists a clause called using that can ease the query writing:
https://lornajane.net/posts/2012/sql-joins-with-on-or-using
If we write the following query:
select owners.name, pets.name, pets.animal from owners join pets on (pets.owners_id = owners.owners_id),
as both tables have the same column name we could just write :
select owners.name as owner, pets.name as pet, pets.animal from owners join pets using (owners_id)

If you try to execute this on the moz_sql_parser,it returns the following:

from moz_sql_parser import format, parse
format(parse('select owners.name as owner, pets.name as pet, pets.animal from owners join pets using (owners_id)'))
Traceback (most recent call last):
File "", line 1, in
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/init.py", line 59, in format
return Formatter(**kwargs).format(json)
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/formatting.py", line 153, in format
return self.query(json)
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/formatting.py", line 293, in query
for clause in self.clauses
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/formatting.py", line 294, in
for part in [getattr(self, clause)(json)]
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/formatting.py", line 315, in from_
parts.append(self.dispatch(token))
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/formatting.py", line 170, in dispatch
return self.op(json)
File "/home/victoria/.local/lib/python3.6/site-packages/moz_sql_parser/formatting.py", line 190, in op
raise Exception('Operators should have only one key!')
Exception: Operators should have only one key!

this is now fixed