Commit 334dfef16055ffaf9c704b7ad25ce7540cb6ce38 changed several files into executables. Commit f6e17887c998e7c7d460bfabb198ed5f53dd22a2 reverted the permission of parser_test.go from 755 to 644, but missed all other files. Later go.mod1/go.sum1 are removed. This commit fixed the permission of remaining affected files.
Parser - A MySQL Compatible SQL Parser
The goal of this project is to build a Golang parser that is fully compatible with MySQL syntax, easy to extend, and high performance. Currently, features supported by parser are as follows:
- Highly compatible with MySQL: it supports almost all features of MySQL. For the complete details, see parser.y and hintparser.y.
- Extensible: adding a new syntax requires only a few lines of Yacc and Golang code changes. As an example, see PR-680.
- Good performance: the parser is generated by goyacc in a bottom-up approach. It is efficient to build an AST tree with a state machine.
How to use it
Please read the quickstart.
Future
- Support more MySQL syntax
- Optimize the code structure, make it easier to extend
- Improve performance and benchmark
- Improve the quality of code and comments
Getting Help
If you have any questions, feel free to discuss in sig-ddl. Here are the steps to join:
- Join TiDB Slack community, and then
- Join sig-ddl Slack channel.
If you want to join as a special interest group member, see DDL Special Interest Group.
Users
These projects use this parser. Please feel free to extend this list if you found you are one of the users but not listed here:
Contributing
Contributions are welcomed and greatly appreciated. See CONTRIBUTING.md for details on submitting patches and the contribution workflow.
Here is how to update parser for TiDB.
Acknowledgments
Thanks cznic for providing some great open-source tools.
License
Parser is under the Apache 2.0 license. See the LICENSE file for details.