@pgsql/transform-ast 18.4.12 → 18.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -20
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -18,17 +18,17 @@
|
|
|
18
18
|
|
|
19
19
|
The transform package enables you to:
|
|
20
20
|
|
|
21
|
-
- **Transform legacy ASTs**: Convert ASTs from PostgreSQL versions 13-
|
|
21
|
+
- **Transform legacy ASTs**: Convert ASTs from PostgreSQL versions 13-17 to version 18 (or 13-16 to 17)
|
|
22
22
|
- **Build unified deparsers**: Create a single deparser pipeline that works with multiple PostgreSQL versions
|
|
23
23
|
- **Maintain backward compatibility**: Support legacy codebases while leveraging the latest PostgreSQL features
|
|
24
24
|
|
|
25
25
|
## Key Limitation
|
|
26
26
|
|
|
27
|
-
This package only supports ASTs derived from SQL that is parseable by PostgreSQL
|
|
27
|
+
This package only supports ASTs derived from SQL that is parseable by the target version's parser (PostgreSQL 18 for the latest). This means:
|
|
28
28
|
|
|
29
|
-
- ✅ **Supported**: SQL from PG13-
|
|
29
|
+
- ✅ **Supported**: SQL from PG13-17 that remains valid in PG18
|
|
30
30
|
- ❌ **Not supported**: Deprecated syntax from older versions that was removed
|
|
31
|
-
- ❌ **Not supported**: SQL that cannot be parsed by the
|
|
31
|
+
- ❌ **Not supported**: SQL that cannot be parsed by the PG18 parser
|
|
32
32
|
|
|
33
33
|
This design ensures all transformed ASTs can be reliably deparsed using the latest PostgreSQL grammar.
|
|
34
34
|
|
|
@@ -47,14 +47,14 @@ import { ASTTransformer } from '@pgsql/transform-ast';
|
|
|
47
47
|
|
|
48
48
|
const transformer = new ASTTransformer();
|
|
49
49
|
|
|
50
|
-
// Transform any version to
|
|
51
|
-
const
|
|
50
|
+
// Transform any version to the latest (PG18)
|
|
51
|
+
const pg18Ast = transformer.transformToLatest(pg13Ast, 13);
|
|
52
52
|
|
|
53
53
|
// Transform between specific versions
|
|
54
54
|
const pg15Ast = transformer.transform(pg13Ast, 13, 15);
|
|
55
55
|
|
|
56
56
|
// Convenience methods
|
|
57
|
-
const result = transformer.
|
|
57
|
+
const result = transformer.transform13To18(pg13Ast);
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
### Direct Transformers
|
|
@@ -62,10 +62,10 @@ const result = transformer.transform13To17(pg13Ast);
|
|
|
62
62
|
For better performance when you know source and target versions:
|
|
63
63
|
|
|
64
64
|
```typescript
|
|
65
|
-
import {
|
|
65
|
+
import { PG13ToPG18Transformer } from '@pgsql/transform-ast';
|
|
66
66
|
|
|
67
|
-
const transformer = new
|
|
68
|
-
const
|
|
67
|
+
const transformer = new PG13ToPG18Transformer();
|
|
68
|
+
const pg18Ast = transformer.transform(pg13Ast);
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
### Integration Example
|
|
@@ -73,26 +73,26 @@ const pg17Ast = transformer.transform(pg13Ast);
|
|
|
73
73
|
```typescript
|
|
74
74
|
import { parse } from '@pgsql/parser';
|
|
75
75
|
import { deparse } from 'pgsql-deparser';
|
|
76
|
-
import {
|
|
76
|
+
import { PG13ToPG18Transformer } from '@pgsql/transform-ast';
|
|
77
77
|
|
|
78
78
|
// Parse with older version
|
|
79
79
|
const pg13Ast = await parse('SELECT * FROM users', { version: 13 });
|
|
80
80
|
|
|
81
81
|
// Transform to latest
|
|
82
|
-
const transformer = new
|
|
83
|
-
const
|
|
82
|
+
const transformer = new PG13ToPG18Transformer();
|
|
83
|
+
const pg18Ast = transformer.transform(pg13Ast);
|
|
84
84
|
|
|
85
85
|
// Deparse with latest grammar
|
|
86
|
-
const sql = await deparse(
|
|
86
|
+
const sql = await deparse(pg18Ast);
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
## 🔄 Transformation Chain
|
|
90
90
|
|
|
91
|
-
**Incremental**: PG13 → PG14 → PG15 → PG16 → PG17
|
|
91
|
+
**Incremental**: PG13 → PG14 → PG15 → PG16 → PG17 → PG18
|
|
92
92
|
- Step-by-step version upgrades
|
|
93
93
|
- Useful for debugging transformation issues
|
|
94
94
|
|
|
95
|
-
**Direct**: PG13 →
|
|
95
|
+
**Direct**: PG13 → PG18, PG14 → PG18, etc. (PG17 targets also available)
|
|
96
96
|
- Single-step transformations
|
|
97
97
|
- Optimized for performance
|
|
98
98
|
|
|
@@ -100,10 +100,11 @@ const sql = await deparse(pg17Ast);
|
|
|
100
100
|
|
|
101
101
|
| From | To | Transformer |
|
|
102
102
|
|------|----|-----------|
|
|
103
|
-
| PG13 | PG14, PG15, PG16, PG17 | `V13ToV14Transformer`, `PG13ToPG17Transformer` |
|
|
104
|
-
| PG14 | PG15, PG16, PG17 | `V14ToV15Transformer`, `PG14ToPG17Transformer` |
|
|
105
|
-
| PG15 | PG16, PG17 | `V15ToV16Transformer`, `PG15ToPG17Transformer` |
|
|
106
|
-
| PG16 | PG17 | `V16ToV17Transformer`, `PG16ToPG17Transformer` |
|
|
103
|
+
| PG13 | PG14, PG15, PG16, PG17, PG18 | `V13ToV14Transformer`, `PG13ToPG17Transformer`, `PG13ToPG18Transformer` |
|
|
104
|
+
| PG14 | PG15, PG16, PG17, PG18 | `V14ToV15Transformer`, `PG14ToPG17Transformer`, `PG14ToPG18Transformer` |
|
|
105
|
+
| PG15 | PG16, PG17, PG18 | `V15ToV16Transformer`, `PG15ToPG17Transformer`, `PG15ToPG18Transformer` |
|
|
106
|
+
| PG16 | PG17, PG18 | `V16ToV17Transformer`, `PG16ToPG17Transformer`, `PG16ToPG18Transformer` |
|
|
107
|
+
| PG17 | PG18 | `V17ToV18Transformer`, `PG17ToPG18Transformer` |
|
|
107
108
|
|
|
108
109
|
## 🏗️ Architecture
|
|
109
110
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pgsql/transform-ast",
|
|
3
|
-
"version": "18.4.
|
|
3
|
+
"version": "18.4.14",
|
|
4
4
|
"author": "Constructive <developers@constructive.io>",
|
|
5
5
|
"description": "Transform PostgreSQL AST types for pgsql-parser",
|
|
6
6
|
"main": "index.js",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"libpg-query": "18.1.5",
|
|
39
39
|
"makage": "^0.5.1",
|
|
40
40
|
"pg-proto-parser": "1.32.5",
|
|
41
|
-
"pgsql-deparser": "18.3.
|
|
41
|
+
"pgsql-deparser": "18.3.12"
|
|
42
42
|
},
|
|
43
43
|
"keywords": [],
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "b4605c200dd1ee25af88965997217a312d4afa27"
|
|
45
45
|
}
|