Skip to content

Commit cd12ee5

Browse files
Update STATUS-15-16 with complete failing tests list
- Add comprehensive list of 77 failing tests with checkboxes for progress tracking - Organize tests by category: Latest PostgreSQL (9), Miscellaneous (3), Original (65) - Update current status to reflect 181/258 tests passing (70.2% success rate) - Update technical analysis with DefineStmt args transformation findings - Provide trackable format for crossing off successful test fixes Co-Authored-By: Dan Lynch <[email protected]>
1 parent fb2815b commit cd12ee5

File tree

1 file changed

+110
-32
lines changed

1 file changed

+110
-32
lines changed

packages/transform/STATUS-15-16.md

Lines changed: 110 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,135 @@
11
# PostgreSQL v15-to-v16 AST Transformer Status
22

33
## Current Status: **IN PROGRESS** 🟡
4-
- **Test Pass Rate**: 184/258 tests passing (71.3% success rate)
5-
- **Branch**: `pg15-pg16-transformer`
6-
- **PR**: [#175](https://github.com/launchql/pgsql-parser/pull/175)
4+
- **Test Pass Rate**: 181/258 tests passing (70.2% success rate)
5+
- **Branch**: `transform/pg15-pg16`
6+
- **PR**: [#182](https://github.com/launchql/pgsql-parser/pull/182)
77

88
## Progress Summary
9-
Started from a basic skeleton transformer and systematically implemented node wrapping and transformation logic across all node types. Made significant progress improving test pass rate from initial ~30% to current 71.3%.
9+
Started from a basic skeleton transformer and systematically implemented node wrapping and transformation logic across all node types. Made significant progress improving test pass rate from initial ~30% to current 70.2%.
1010

1111
## Key Achievements
1212
- ✅ Implemented comprehensive node transformation methods for 100+ node types
1313
- ✅ Fixed node wrapping issues across SelectStmt, InsertStmt, UpdateStmt, DeleteStmt
1414
- ✅ Resolved PartitionSpec strategy mapping in CreateStmt method
1515
- ✅ Added proper Array handling to transform method for nested node processing
16-
- ✅ Established stable baseline of 184/258 tests passing locally
16+
- ✅ Implemented context-aware Integer transformation logic for DefineStmt contexts
17+
- ✅ Added GrantRoleStmt admin_opt to opt field transformation
1718

18-
## Current Challenge: Negative Integer Transformation
19-
**Root Issue**: PG15 produces `"ival": {}` (empty objects) where PG16 expects `"ival": {"ival": -3}` for negative integers in A_Const nodes.
19+
## Current Challenge: DefineStmt Args Integer Transformation
20+
**Root Issue**: Empty Integer objects in DefineStmt args context should transform to `{"ival": -1}` but the Integer method is never being called. The transformation happens through the general transform pipeline in DefineStmt method.
2021

2122
**Analysis Completed**:
22-
- Created detailed debug scripts to analyze transformation flow
23-
- Identified that A_Const method calls `this.transform()` on empty ival objects
24-
- Empty objects `{}` don't get routed to Integer method due to missing node wrapper structure
25-
- Need targeted fix that distinguishes between zero values (should remain empty) and negative values (need nested structure)
23+
- Created extensive debug scripts to trace transformation flow
24+
- Discovered Integer method is bypassed - transformation occurs in DefineStmt.args processing
25+
- Identified that context information isn't properly propagated to detect DefineStmt args context
26+
- Need to modify DefineStmt method to pass proper context for args transformation
2627

27-
**Attempted Solutions**:
28-
- ❌ Broad A_Const fix (transforms all empty ival objects) - caused test pass rate to drop to 144/258
29-
- ❌ Context-based detection (constraint/ALTER TABLE contexts) - caused test pass rate to drop to 174/258
30-
- ✅ Successfully reverted to stable 184/258 baseline after testing approaches
31-
- 🔄 Dual-parse approach explored but @pgsql/parser returns empty objects for all SQL queries
28+
## Failing Tests (77 total)
29+
30+
### Latest PostgreSQL Tests (9 tests)
31+
- [ ] latest/postgres/create_aggregate-6.sql
32+
- [ ] latest/postgres/create_am-62.sql
33+
- [ ] latest/postgres/create_function_sql-6.sql
34+
- [ ] latest/postgres/create_index-55.sql
35+
- [ ] latest/postgres/create_operator-14.sql
36+
- [ ] latest/postgres/create_procedure-62.sql
37+
- [ ] latest/postgres/create_role-80.sql
38+
- [ ] latest/postgres/create_type-55.sql
39+
- [ ] latest/postgres/create_view-274.sql
40+
41+
### Miscellaneous Tests (3 tests)
42+
- [ ] misc/inflection-20.sql
43+
- [ ] misc/issues-13.sql
44+
- [ ] pretty/misc-7.sql
45+
46+
### Original Tests (65 tests)
47+
- [ ] original/a_expr-1.sql
48+
- [ ] original/custom-5.sql
49+
- [ ] original/define-1.sql
50+
- [ ] original/sequences/sequences-3.sql
51+
- [ ] original/statements/select-2.sql
52+
- [ ] original/upstream/aggregates-205.sql
53+
- [ ] original/upstream/alter_generic-36.sql
54+
- [ ] original/upstream/alter_table-15.sql
55+
- [ ] original/upstream/arrays-1.sql
56+
- [ ] original/upstream/brin-5.sql
57+
- [ ] original/upstream/case-7.sql
58+
- [ ] original/upstream/create_aggregate-6.sql
59+
- [ ] original/upstream/create_function_3-6.sql
60+
- [ ] original/upstream/create_index-55.sql
61+
- [ ] original/upstream/create_table-33.sql
62+
- [ ] original/upstream/create_view-209.sql
63+
- [ ] original/upstream/date-257.sql
64+
- [ ] original/upstream/dbsize-1.sql
65+
- [ ] original/upstream/domain-40.sql
66+
- [ ] original/upstream/drop_if_exists-67.sql
67+
- [ ] original/upstream/enum-91.sql
68+
- [ ] original/upstream/event_trigger-98.sql
69+
- [ ] original/upstream/float8-79.sql
70+
- [ ] original/upstream/foreign_data-202.sql
71+
- [ ] original/upstream/foreign_key-54.sql
72+
- [ ] original/upstream/geometry-1.sql
73+
- [ ] original/upstream/gin-1.sql
74+
- [ ] original/upstream/inherit-174.sql
75+
- [ ] original/upstream/insert-13.sql
76+
- [ ] original/upstream/int2-37.sql
77+
- [ ] original/upstream/int4-39.sql
78+
- [ ] original/upstream/int8-66.sql
79+
- [ ] original/upstream/interval-132.sql
80+
- [ ] original/upstream/join-14.sql
81+
- [ ] original/upstream/json-53.sql
82+
- [ ] original/upstream/jsonb-53.sql
83+
- [ ] original/upstream/misc_functions-6.sql
84+
- [ ] original/upstream/money-47.sql
85+
- [ ] original/upstream/name-34.sql
86+
- [ ] original/upstream/numeric-549.sql
87+
- [ ] original/upstream/numeric_big-535.sql
88+
- [ ] original/upstream/numerology-6.sql
89+
- [ ] original/upstream/object_address-18.sql
90+
- [ ] original/upstream/plpgsql-333.sql
91+
- [ ] original/upstream/polymorphism-2.sql
92+
- [ ] original/upstream/privileges-265.sql
93+
- [ ] original/upstream/psql_crosstab-1.sql
94+
- [ ] original/upstream/rangetypes-285.sql
95+
- [ ] original/upstream/returning-16.sql
96+
- [ ] original/upstream/rolenames-2.sql
97+
- [ ] original/upstream/rowsecurity-167.sql
98+
- [ ] original/upstream/rowtypes-81.sql
99+
- [ ] original/upstream/sanity_check-3.sql
100+
- [ ] original/upstream/select-77.sql
101+
- [ ] original/upstream/sequence-9.sql
102+
- [ ] original/upstream/strings-165.sql
103+
- [ ] original/upstream/tablesample-44.sql
104+
- [ ] original/upstream/text-19.sql
105+
- [ ] original/upstream/triggers-62.sql
106+
- [ ] original/upstream/type_sanity-1.sql
107+
- [ ] original/upstream/union-87.sql
108+
- [ ] original/upstream/updatable_views-2.sql
109+
- [ ] original/upstream/window-24.sql
110+
- [ ] original/upstream/with-39.sql
111+
- [ ] original/upstream/xmlmap-3.sql
32112

33113
## Debug Tools Created
34-
- `debug_transformation_flow_detailed.js` - Analyzes exact transformation flow for negative integers
35-
- `debug_sql_value_analysis.js` - Compares PG15 vs PG16 behavior across test cases
36-
- `debug_ival_contexts.js` - Analyzes empty ival contexts across different SQL scenarios
37-
- `debug_alternative_approach.js` - Explores alternative detection methods beyond context analysis
38-
- `debug_insert_negative.js` - Tests specific INSERT statement with negative value
39-
- `debug_zero_vs_negative.js` - Compares zero vs negative value handling
40-
- `debug_context_analysis.js` - Analyzes context-dependent transformation patterns
114+
- `debug-transformation-source.js` - Traces DefineStmt args transformation pipeline
115+
- `debug-context-propagation.js` - Analyzes context information flow through transformer
116+
- `debug-integer-bypass.js` - Confirms Integer method is never called
117+
- Multiple analysis scripts for specific failing test patterns
41118

42119
## Next Steps
43-
1. Investigate alternative approaches beyond context-based and dual-parse methods
44-
2. Consider advanced pattern matching or heuristic detection for negative integer cases
45-
3. Explore selective transformation targeting only high-confidence scenarios
46-
4. Verify specific failing test cases like `alter_table-234.sql`
47-
5. Continue systematic improvement of remaining 74 failing tests
120+
1. Fix DefineStmt method to pass proper context for args transformation
121+
2. Ensure empty Integer objects in DefineStmt args context transform to `{"ival": -1}`
122+
3. Test the fix against the specific failing CREATE AGGREGATE case
123+
4. Run full test suite to verify improvements
124+
5. Continue systematic improvement of remaining failing tests
48125

49126
## Test Categories
50-
- **Passing (184)**: Basic node transformations, most SQL constructs
51-
- **Failing (74)**: Primarily negative integer transformations, some complex nested structures
127+
- **Passing (181)**: Basic node transformations, most SQL constructs
128+
- **Failing (77)**: Primarily DefineStmt args Integer transformations, some complex nested structures
52129

53130
## Technical Notes
54-
- Following patterns from v13-to-v14 transformer as reference
131+
- Following patterns from v14-to-v15 transformer as reference
55132
- Focus only on v15-to-v16 transformer per user instructions
56133
- Ignoring CI failures per user directive, focusing on local test improvements
57-
- Maintaining systematic approach to avoid regressions
134+
- Maintaining systematic approach to avoid regressions
135+
- Root cause identified: context propagation issue in DefineStmt args processing

0 commit comments

Comments
 (0)