HyriseSQLParser/README.md

72 lines
3.1 KiB
Markdown
Raw Normal View History

2014-12-16 02:23:56 +01:00
C++ SQL Parser for Hyrise
=========================
2014-10-24 17:37:03 +02:00
This is a SQL Parser for C++. It parses the given SQL query into C++ objects.
2014-11-10 01:48:33 +01:00
It is developed for integration in hyrise (https://github.com/hyrise/hyrise), but can be used in other environments as well.
2014-10-31 18:54:00 +01:00
2015-12-23 16:39:59 +01:00
In March 2015 we've also written a short paper outlining discussing some development details and the integration into our database Hyrise. You can find the paper [here](http://torpedro.com/paper/HyriseSQL-03-2015.pdf).
2015-05-27 22:24:22 +02:00
2015-12-23 16:57:59 +01:00
2015-12-23 16:39:59 +01:00
### Usage
2015-05-27 22:24:22 +02:00
2016-02-27 18:39:16 +01:00
**Note:** You can also find a detailed usage description at this [blog post](http://torpedro.github.io/tech/c++/sql/parser/2016/02/27/c++-sql-parser.html).
2016-02-27 16:58:51 +01:00
**Requirements:**
* gcc 4.8+
To use the SQL parser in your own projects you simply have to follow these few steps. The only requirement for is gcc 4.8+. Older versions of gcc might also work, but are untested.
2015-05-27 22:37:46 +02:00
2015-12-23 17:00:09 +01:00
1. Download the [latest release here](https://github.com/hyrise/sql-parser/releases)
2015-12-23 16:39:59 +01:00
2. Compile the library `make` to create `libsqlparser.so`
2016-02-27 16:58:51 +01:00
3. *(Optional)* Run `make install` to copy the library to `/usr/local/lib/`
2015-12-23 16:39:59 +01:00
3. Run the tests `make test` to make sure everything worked
2016-02-27 16:58:51 +01:00
4. Take a look at the [example project here](https://github.com/hyrise/sql-parser/tree/master/example)
2015-12-23 16:57:59 +01:00
5. Include the `SQLParser.h` from `src/` and link the library in your project
2015-08-28 13:50:53 +02:00
2015-12-23 16:39:59 +01:00
### Development
2014-10-31 18:54:00 +01:00
2016-02-27 16:58:51 +01:00
**Requirements for development:**
* gcc 4.8 (or newer)
* [bison](https://www.gnu.org/software/bison/) (tested with v3.0.2)
* [flex](http://flex.sourceforge.net/) (tested with v2.5.5)
2014-10-31 18:54:00 +01:00
2015-12-23 16:57:59 +01:00
First step to extending this parser is cloning the repository `git clone git@github.com:hyrise/sql-parser.git` and making sure everything works by running the following steps:
2015-04-15 09:18:40 +02:00
2015-12-23 16:57:59 +01:00
```
make parser # builds the bison parser and flex lexer
make library # builds the libsqlparser.so
make test # runs the tests with the library
```
Rerun these steps whenever you change part of the parse. To execute the entire pipeline automatically you can run:
```
make cleanall # cleans the parser build and library build
make test # build parser, library and runs the tests
```
2015-04-15 09:18:40 +02:00
2015-08-28 13:50:53 +02:00
#### How to contribute
We strongly encourage you to contribute to this project! If you want to contribute to this project there are several options. If you've noticed a bug or would like an improvement let us know by creating a [new issue](https://github.com/hyrise/sql-parser/issues). If you want to develop a new feature yourself or just improve the quality of the system, feel free to fork the reposistory and implement your changes. Open a pull request as soon as your done and we will look over it. If we think it's good then your pull request will be merged into this repository.
2015-12-23 16:57:59 +01:00
2016-02-27 16:58:51 +01:00
### Resources
2015-12-23 16:39:59 +01:00
2016-02-27 16:58:51 +01:00
* [Working Syntax Examples](docs/syntax.md)
* [Developer Documentation](docs/dev-docs.md)
2015-08-28 13:50:53 +02:00
2015-12-23 16:57:59 +01:00
2015-04-15 09:18:40 +02:00
### License
HYRISE sql-parser is licensed as open source after the OpenSource "Licence of the Hasso-Plattner Institute" declared in the LICENSE file of this project.
2015-12-23 16:57:59 +01:00
### Contributers
The following people contributed to HYRISE sql-parser in various forms.
* Pedro Flemming ([@torpedro](https://github.com/torpedro))
* David Schwalb ([@schwald](https://github.com/schwald))