nickysn ea8f068817 * regenerated makefiles after sync with trunk 4 years ago
..
Makefile ea8f068817 * regenerated makefiles after sync with trunk 4 years ago
Makefile.fpc 4c7f9238c7 * SQL parser 15 years ago
README.txt 421139e77a * fcl-db: sql parser: update readme after previous commit 11 years ago
fpsqlparser.pas 809db09169 sql parser: support CASE with selector (CASE A WHEN 1 THEN B ELSE C END) 5 years ago
fpsqlscanner.pp 39c8d5c635 sql parser: identifier can start with the "_" character 5 years ago
fpsqltree.pp 809db09169 sql parser: support CASE with selector (CASE A WHEN 1 THEN B ELSE C END) 5 years ago

README.txt

SQL scanner/parser/Abstract Syntax Tree units

This can parse the complete Firebird dialect 3 SQL syntax (which should come pretty close to SQL-92) and builds a syntax tree from it. The Abstract Syntax Tree can re-create the SQL with limited formatting support.

It comes with extensive test suite (about 830 test cases; see the fcl-db\tests directory). It has been tested on almost 400,000 SQL statements. Nevertheless bugs may remain, so any test results you may produce are welcome. Especially the GRANT/REVOKE statements are tested only theoretically.

The scanner/parser have been designed so they should be able to cope with other SQL dialects (using a set of flags) such as MySQL, but this support is currently not implemented.


The purpose is 3-fold:
- Add SQL syntax checking to property editors in the Lazarus IDE.
- Add reverse engineering of database creation scripts to the
Lazarus Database Desktop (and change the SQL generation to use
the abstract syntax tree)
- Add the ability to reliably alter queries at runtime.
(adding fields, filters and whatnot).