Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/slaclab/lacquer
SQL Parser derived from Presto, written in Python with the PLY framework
https://github.com/slaclab/lacquer
presto presto-parser python sql sql-parser
Last synced: about 1 month ago
JSON representation
SQL Parser derived from Presto, written in Python with the PLY framework
- Host: GitHub
- URL: https://github.com/slaclab/lacquer
- Owner: slaclab
- License: apache-2.0
- Created: 2017-01-12T18:36:43.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-08-18T03:12:54.000Z (over 7 years ago)
- Last Synced: 2024-11-11T01:42:28.311Z (2 months ago)
- Topics: presto, presto-parser, python, sql, sql-parser
- Language: Python
- Size: 241 KB
- Stars: 30
- Watchers: 12
- Forks: 18
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lacquer [![Build Status](https://travis-ci.org/slaclab/lacquer.svg?branch=master)](https://travis-ci.org/slaclab/lacquer)
lacquer is a python port of Presto's SQL Parser.
Currently, it doesn't support all the same features as Presto's parser,
but it can parse most SELECT queries and produce the python-equivalent
syntax tree, as well as write the tree back out to SQL.It was written for [LSST](http://lsst.org) to support the Astronomical
Data Query Language, which is roughly equivalent to SQL-92.## Advantages
* Only two dependencies, PLY and future. Runs on Python 2 and 3 (tested on 2.7 and 3.5).
* Uses the Presto AST IR and Visitor patterns
* Code can easily be ported to lacquer from Python## Known issues
**Only SELECT statements are currently supported.** This is mostly the case with
Presto as well.In the porting, the grammar was ported from LL (ANTLRv4) to LALR (PLY).
There's a few shift/reduce errors, but most queries parse just fine, but you
may run across a few errors, for example:```sql
select 1 from foo where bar in ((select 1 from baz), 2)
```### License
This work is licensed under Apache 2.0, the same as Presto.