# FiveSql2 — SQL Engine for Harbour DBF/NTX/CDX **Pratt parser + SQL:1992-2023 full standard support** **Supports both NTX (Clipper) and CDX (FoxPro/ADS) indexes** ## Architecture ``` five_SQL("SELECT ...") │ ├── TSqlLexer Tokenizer ├── TSqlParser2 Pratt parser (data-driven operators) ├── TSqlExecutor Query executor (Volcano model) │ ├── TSqlAlias Central alias manager (no collisions) │ ├── TSqlIndex NTX/CDX index optimization (auto-detect) │ ├── TSqlAgg GROUP BY / aggregation │ ├── TSqlSort ORDER BY / DISTINCT │ ├── TSqlDDL CREATE/DROP/ALTER TABLE/INDEX │ └── TSqlTxn BEGIN/COMMIT/ROLLBACK ├── TSqlExpr AST nodes + expression evaluation └── TSqlFunc 60+ scalar functions ``` ## Build & Test ```bash export PATH="/path/to/harbour-core/bin/linux/gcc:$PATH" export HB_INSTALL_PREFIX="/path/to/harbour-core" make # Build all tests make test # Run all 157 tests make bench # Parser benchmark make clean # Clean ``` ## SQL Standard Coverage | Standard | Features | Tests | |------------|----------|:-----:| | SQL:1992 | SELECT, JOIN, GROUP BY, HAVING, Subquery, CASE, CAST | 43 | | SQL:1999 | CTE, Recursive CTE, Window Functions, MERGE | 10 | | SQL:2003 | SIMILAR TO, GROUPING SETS, LATERAL, Window frames | 64 | | SQL:2008 | FETCH/OFFSET, FOR UPDATE, Extended MERGE | (incl.) | | SQL:2016 | JSON functions, LISTAGG | (incl.) | | SQL:2023 | ANY_VALUE, GREATEST/LEAST, BOOL_AND/OR | (incl.) | | Challenge | LeetCode-level complex queries | 15 | | Extreme | Production analytics stress tests | 15 | ## Adding New Operators Edit `TSqlParser2.prg`, method `InitInfixTables()`: ```prg ::hInfixTT[ TK_MYOP ] := { "<=>", 40, 41, ND_BIN } ``` One line. No structural changes needed. ## Copyright Copyright (c) 2025-2026 Charles KWON (Charles KWON OhJun) Email: charleskwonohjun@gmail.com All rights reserved.