After issue #72 (tokenizing parser) and subsequent bug fixes, jsonpath-to-jq conformance stands at 100/558 (17.9%). The remaining 458 skipped tests break down into distinct categories, prioritized by effort and impact.
High-value, low-effort (36 tests)
| Category |
Count |
Approach |
| PG17 string methods |
32 |
.lower() → ascii_downcase, .upper() → ascii_upcase, .ltrim()/.rtrim() → ltrimstr/rtrimstr, .replace() → gsub, .initcap()/.btrim()/.split_part() → custom jq defs |
is unknown |
4 |
Currently == null; needs == null or . == false or similar three-valued logic |
Medium-effort (43 tests)
| Category |
Count |
Approach |
| Semantic diffs |
27 |
Mixed: type guards for .string()/.boolean() on arrays, .bigint()/.integer() needing tonumber | floor, three-valued comparison logic, like_regex flag "q" literal escaping |
| Runtime errors |
16 |
Type-mismatch guards: .keyvalue() on non-objects, .double()/.bigint() on arrays/strings need try wrappers |
Hard / deferred (379 tests)
| Category |
Count |
Notes |
| Expects PostgreSQL error |
209 |
Could partially test that jjq also errors, but exact error messages differ |
| Datetime methods |
97 |
.datetime(), .date(), .time(), .timestamp(), .time_tz(), .timestamp_tz() — need jq date function implementations |
| Path variables |
70 |
$varname parameter passing — requires API change to accept variable bindings |
| Conversion failures |
3 |
2 are \B in regex (jq does not support), 1 is arithmetic-in-brackets |
Tracking
Conformance is tracked automatically via JsonpathConformanceTest using assumeTrue — any improvement is immediately visible in the test count.
Related
After issue #72 (tokenizing parser) and subsequent bug fixes, jsonpath-to-jq conformance stands at 100/558 (17.9%). The remaining 458 skipped tests break down into distinct categories, prioritized by effort and impact.
High-value, low-effort (36 tests)
.lower()→ascii_downcase,.upper()→ascii_upcase,.ltrim()/.rtrim()→ltrimstr/rtrimstr,.replace()→gsub,.initcap()/.btrim()/.split_part()→ custom jq defsis unknown== null; needs== null or . == falseor similar three-valued logicMedium-effort (43 tests)
.string()/.boolean()on arrays,.bigint()/.integer()needingtonumber | floor, three-valued comparison logic,like_regexflag"q"literal escaping.keyvalue()on non-objects,.double()/.bigint()on arrays/strings needtrywrappersHard / deferred (379 tests)
.datetime(),.date(),.time(),.timestamp(),.time_tz(),.timestamp_tz()— need jq date function implementations$varnameparameter passing — requires API change to accept variable bindings\Bin regex (jq does not support), 1 is arithmetic-in-bracketsTracking
Conformance is tracked automatically via
JsonpathConformanceTestusingassumeTrue— any improvement is immediately visible in the test count.Related