Skip to content

Commit d2ef29b

Browse files
feat: Add AST transformation plan and example fixtures
- Create comprehensive AST_PLAN.md outlining sequential transformation strategy (13β†’14β†’15β†’16β†’17) - Set up __fixtures__/transform/ directory structure with version subdirectories - Add example AST JSON files for each PostgreSQL version (13-17) - Include test queries: SELECT 1, SELECT NULL, SELECT 'hello', SELECT true, SELECT 1+1 - Document key transformation challenges: enum format changes, field renames, new node types - Establish foundation for implementing functional node-level transforms Co-Authored-By: Dan Lynch <[email protected]>
1 parent f701556 commit d2ef29b

26 files changed

+1069
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": 130004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"String": {
14+
"str": "t"
15+
}
16+
},
17+
"location": 7
18+
}
19+
},
20+
"location": 7
21+
}
22+
}
23+
],
24+
"limitOption": 0,
25+
"op": 0
26+
}
27+
}
28+
}
29+
]
30+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{
2+
"version": 130004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Expr": {
12+
"kind": 0,
13+
"name": [
14+
{
15+
"String": {
16+
"str": "+"
17+
}
18+
}
19+
],
20+
"lexpr": {
21+
"A_Const": {
22+
"val": {
23+
"Integer": {
24+
"ival": 1
25+
}
26+
},
27+
"location": 7
28+
}
29+
},
30+
"rexpr": {
31+
"A_Const": {
32+
"val": {
33+
"Integer": {
34+
"ival": 1
35+
}
36+
},
37+
"location": 11
38+
}
39+
},
40+
"location": 9
41+
}
42+
},
43+
"location": 7
44+
}
45+
}
46+
],
47+
"limitOption": 0,
48+
"op": 0
49+
}
50+
}
51+
}
52+
]
53+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": 130004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"Integer": {
14+
"ival": 1
15+
}
16+
},
17+
"location": 7
18+
}
19+
},
20+
"location": 7
21+
}
22+
}
23+
],
24+
"limitOption": 0,
25+
"op": 0
26+
}
27+
}
28+
}
29+
]
30+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"version": 130004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"Null": {}
14+
},
15+
"location": 7
16+
}
17+
},
18+
"location": 7
19+
}
20+
}
21+
],
22+
"limitOption": 0,
23+
"op": 0
24+
}
25+
}
26+
}
27+
]
28+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": 130004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"String": {
14+
"str": "hello"
15+
}
16+
},
17+
"location": 7
18+
}
19+
},
20+
"location": 7
21+
}
22+
}
23+
],
24+
"limitOption": 0,
25+
"op": 0
26+
}
27+
}
28+
}
29+
]
30+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": 140004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"String": {
14+
"str": "t"
15+
}
16+
},
17+
"location": 7
18+
}
19+
},
20+
"location": 7
21+
}
22+
}
23+
],
24+
"limitOption": 0,
25+
"op": 0
26+
}
27+
}
28+
}
29+
]
30+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{
2+
"version": 140004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Expr": {
12+
"kind": 0,
13+
"name": [
14+
{
15+
"String": {
16+
"str": "+"
17+
}
18+
}
19+
],
20+
"lexpr": {
21+
"A_Const": {
22+
"val": {
23+
"Integer": {
24+
"ival": 1
25+
}
26+
},
27+
"location": 7
28+
}
29+
},
30+
"rexpr": {
31+
"A_Const": {
32+
"val": {
33+
"Integer": {
34+
"ival": 1
35+
}
36+
},
37+
"location": 11
38+
}
39+
},
40+
"location": 9
41+
}
42+
},
43+
"location": 7
44+
}
45+
}
46+
],
47+
"limitOption": 0,
48+
"op": 0
49+
}
50+
}
51+
}
52+
]
53+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": 140004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"Integer": {
14+
"ival": 1
15+
}
16+
},
17+
"location": 7
18+
}
19+
},
20+
"location": 7
21+
}
22+
}
23+
],
24+
"limitOption": 0,
25+
"op": 0
26+
}
27+
}
28+
}
29+
]
30+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"version": 140004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"Null": {}
14+
},
15+
"location": 7
16+
}
17+
},
18+
"location": 7
19+
}
20+
}
21+
],
22+
"limitOption": 0,
23+
"op": 0
24+
}
25+
}
26+
}
27+
]
28+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"version": 140004,
3+
"stmts": [
4+
{
5+
"stmt": {
6+
"SelectStmt": {
7+
"targetList": [
8+
{
9+
"ResTarget": {
10+
"val": {
11+
"A_Const": {
12+
"val": {
13+
"String": {
14+
"str": "hello"
15+
}
16+
},
17+
"location": 7
18+
}
19+
},
20+
"location": 7
21+
}
22+
}
23+
],
24+
"limitOption": 0,
25+
"op": 0
26+
}
27+
}
28+
}
29+
]
30+
}

0 commit comments

Comments
Β (0)