Commit Graph

51 Commits

Author SHA1 Message Date
Pijus Kamandulis c78842726b Support single-quoted string literals in query parsing (#18)
* Support single-quoted string literals in query parsing

Add single-quoted string literal support to the NoSQL query parser,
matching Cosmos DB behavior where apostrophes are escaped by doubling
them (''). Includes parser unit tests and an API integration test.

Co-authored-by: Pijus Kamandulis <pikami@users.noreply.github.com>

* Use backslash escape for apostrophes in single-quoted strings

Cosmos DB escapes apostrophes with \' rather than SQL-style doubling.
Also fix EscapeCharacter to return proper values for \', \", and \\
which were previously producing empty substitutions.

Co-authored-by: Pijus Kamandulis <pikami@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-07-12 14:02:23 +03:00
Pijus Kamandulis 05e8cd2842 Implement REGEXMATCH function (#15)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-05-30 21:31:45 +03:00
Pijus Kamandulis d76cc88175 Fix 'NOT (bool)' statements 2026-04-04 15:04:42 +03:00
Pijus Kamandulis d64bdeb385 Handle 'NOT IN' statement 2025-10-27 21:33:49 +02:00
Pijus Kamandulis b743e23ff9 Added support for arithmetics inside queries 2025-05-30 00:15:55 +03:00
Pijus Kamandulis 11851297f5 Fix formatting for grammar file 2025-05-20 22:43:00 +03:00
Pijus Kamandulis 560ea5296d Add support for expressions in SELECT clause 2025-05-20 22:40:00 +03:00
Pijus Kamandulis 7e0c10479b Implement IIF function; Fix empty object select 2025-05-14 18:48:30 +03:00
Pijus Kamandulis 1711c8fb5c Implement NOT logical operator 2025-02-25 19:33:32 +02:00
Pijus Kamandulis 851b3ca3a8 Fix IN clause with function calls 2025-02-20 18:45:20 +02:00
Pijus Kamandulis 6e3f4169a1 Fix 'ComparisonOperator' parsing 2025-02-18 19:12:08 +02:00
Pijus Kamandulis 8657c48fc8 Added support for table alias; Make AS keyword optional #9 2025-02-03 19:02:12 +02:00
Pijus Kamandulis 69b76c1c3e Simplify constant initialization in unit tests 2024-12-26 20:43:57 +02:00
Pijus Kamandulis 8e3db3e44d Added support for 'ARRAY_CONTAINS', 'ARRAY_CONTAINS_ANY' and 'ARRAY_CONTAINS_ALL' functions 2024-12-26 20:27:59 +02:00
Pijus Kamandulis 928ca29fe4 Support parameter in bracket #8 2024-12-25 21:28:42 +02:00
Pijus Kamandulis 66ea859f34 Add support for subqueries 2024-12-07 22:29:26 +02:00
Pijus Kamandulis 20af73ee9c Partial JOIN implementation 2024-07-17 21:56:17 +03:00
Pijus Kamandulis 3bdff9b643 Implement Mathematical Functions 2024-06-19 00:44:46 +03:00
Pijus Kamandulis b808e97c72 Fix array access 2024-06-03 19:00:52 +03:00
Pijus Kamandulis 398584368f Implement OFFSET LIMIT 2024-03-11 22:09:55 +02:00
Pijus Kamandulis 6ed74688ca Implement AVG, COUNT, MAX, MIN, SUM functions 2024-03-11 19:10:41 +02:00
Pijus Kamandulis b72bba86c8 Implement 'GROUP BY' statement 2024-03-11 17:50:20 +02:00
Pijus Kamandulis 5ff923ce2c Implement DISTINCT clause 2024-02-27 21:10:03 +02:00
Pijus Kamandulis 48660b5f63 Code cleanup; Implement persistant storage; Use maps for storage 2024-02-25 22:20:11 +02:00
Pijus Kamandulis 1c5e5ce85d Implement ARRAY_CONCAT, ARRAY_LENGTH, ARRAY_SLICE, SetIntersect, SetUnion functions 2024-02-25 00:38:10 +02:00
Pijus Kamandulis b29608e4c8 Implement IS_ARRAY, IS_BOOL, IS_FINITE_NUMBER, IS_INTEGER, IS_NULL, IS_NUMBER, IS_OBJECT, IS_PRIMITIVE, IS_STRING functions 2024-02-24 22:29:33 +02:00
Pijus Kamandulis 2431307a12 Implement LEFT,LENGTH,LTRIM,REPLACE,REPLICATE,REVERSE,RIGHT,RTRIM,SUBSTRING,TRIM functions 2024-02-24 21:24:20 +02:00
Pijus Kamandulis f356f26d26 Implement UPPER/LOWER; minor Fixes 2024-02-24 20:00:47 +02:00
Pijus Kamandulis f37c664c1a Implement IN function 2024-02-24 17:26:16 +02:00
Pijus Kamandulis 16f41a5479 Implement ToString function 2024-02-23 00:11:14 +02:00
Pijus Kamandulis 59632ec966 Implement INDEX_OF function 2024-02-22 22:12:52 +02:00
Pijus Kamandulis 790192bf5a Implement STARTSWITH, ENDSWITH functions 2024-02-21 20:46:08 +02:00
Pijus Kamandulis 9bf3dc22ed Implement CONTAINS function 2024-02-21 20:25:14 +02:00
Pijus Kamandulis 8ab9680c99 Implement CONCAT function 2024-02-21 20:16:52 +02:00
Pijus Kamandulis f4dd150bc8 Implement IS_DEFINED function 2024-02-19 00:08:51 +02:00
Pijus Kamandulis c17509df38 Implement STRINGEQUALS 2024-02-18 22:37:09 +02:00
Pijus Kamandulis 2702156cb3 Code cleanup; Split test files 2024-02-18 21:29:42 +02:00
Pijus Kamandulis 7339e06eee Added support for 'ORDER BY' 2024-02-17 22:26:30 +02:00
Pijus Kamandulis eb7b3045d2 Minor query parser fixes 2024-02-17 17:25:57 +02:00
Pijus Kamandulis 03623e5a82 Added support for query parameters 2024-02-16 00:13:11 +02:00
Pijus Kamandulis f183f308fb Added support for 'SELECT *' 2024-02-15 23:11:46 +02:00
Pijus Kamandulis a36b578a9b Added support for statements inside parentheses 2024-02-15 22:58:07 +02:00
Pijus Kamandulis b13434eeff Added support for TOP statement 2024-02-14 21:11:15 +02:00
Pijus Kamandulis b780e8c228 Added support for object selects 2024-02-13 22:42:18 +02:00
Pijus Kamandulis 5d2b21dc46 Added support for array selects 2024-02-13 21:57:33 +02:00
Pijus Kamandulis e89f2e5611 Added support for 'SELECT VALUE' statement 2024-02-13 21:22:55 +02:00
Pijus Kamandulis 88526dcdcc Implement executing queries using API 2024-02-12 01:54:12 +02:00
Pijus Kamandulis bdf9970ce6 Add support for array field access 2024-02-12 00:55:07 +02:00
Pijus Kamandulis ca49228c66 Implement in-memory query executor 2024-02-12 00:17:21 +02:00
Pijus Kamandulis 12510ea3fa Extract parser models 2024-02-11 23:14:30 +02:00