Skip to content

Commit 14c69de

Browse files
revert: restore transformer to 236 passing tests baseline (commit c0b6ef5)
Co-Authored-By: Dan Lynch <[email protected]>
1 parent 7afd240 commit 14c69de

File tree

1 file changed

+29
-44
lines changed

1 file changed

+29
-44
lines changed

packages/transform/src/transformers/v13-to-v14.ts

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,12 @@ export class V13ToV14Transformer {
10461046
if (node.mode === "FUNC_PARAM_VARIADIC") {
10471047
result.mode = "FUNC_PARAM_VARIADIC"; // Always preserve variadic parameters
10481048
} else if (node.mode === "FUNC_PARAM_IN") {
1049-
result.mode = "FUNC_PARAM_DEFAULT";
1049+
// Check if this parameter should be variadic based on polymorphic array types
1050+
if (this.isVariadicParameterType(node.argType)) {
1051+
result.mode = "FUNC_PARAM_VARIADIC";
1052+
} else {
1053+
result.mode = "FUNC_PARAM_DEFAULT";
1054+
}
10501055
} else {
10511056
result.mode = node.mode;
10521057
}
@@ -1778,9 +1783,6 @@ export class V13ToV14Transformer {
17781783
if (options === 2) {
17791784
return 4;
17801785
}
1781-
if (options === 3) {
1782-
return 5; // INCLUDING CONSTRAINTS + INCLUDING COMMENTS: PG13 value 3 -> PG14 value 5
1783-
}
17841786
if (options === 4) {
17851787
return 8; // INCLUDING DEFAULTS: PG13 value 4 -> PG14 value 8
17861788
}
@@ -1802,12 +1804,6 @@ export class V13ToV14Transformer {
18021804
if (options === 128) {
18031805
return 256; // INCLUDING STATISTICS: PG13 value 128 -> PG14 value 256
18041806
}
1805-
if (options === 131) {
1806-
return 261; // INCLUDING CONSTRAINTS + INCLUDING STATISTICS: PG13 value 131 -> PG14 value 261
1807-
}
1808-
if (options === 163) {
1809-
return 325; // INCLUDING CONSTRAINTS + INCLUDING INDEXES + INCLUDING COMMENTS + INCLUDING STORAGE: PG13 value 163 -> PG14 value 325
1810-
}
18111807

18121808
return options;
18131809
}
@@ -1924,10 +1920,6 @@ export class V13ToV14Transformer {
19241920
return false;
19251921
}
19261922
if (parentType === 'DropStmt') {
1927-
// Check if this is a function drop context
1928-
if ((context as any).dropRemoveType === 'OBJECT_FUNCTION') {
1929-
return true;
1930-
}
19311923
return false;
19321924
}
19331925
}
@@ -2132,7 +2124,20 @@ export class V13ToV14Transformer {
21322124

21332125
let mode = "FUNC_PARAM_DEFAULT";
21342126

2135-
// Check if this should be variadic based on context (aggregate functions with VARIADIC keyword)
2127+
// Check if this is a variadic parameter type (anyarray, anycompatiblearray, etc.)
2128+
if (this.isVariadicParameterType(argType)) {
2129+
mode = "FUNC_PARAM_VARIADIC";
2130+
}
2131+
2132+
if (argType && argType.names && Array.isArray(argType.names)) {
2133+
const typeName = argType.names[argType.names.length - 1];
2134+
if (typeName && typeName.String && typeName.String.str === 'anyarray') {
2135+
mode = "FUNC_PARAM_VARIADIC";
2136+
}
2137+
}
2138+
2139+
2140+
// Also check for VARIADIC context in aggregate functions
21362141
if (context && context.parentNodeTypes) {
21372142
const isAggregateContext = context.parentNodeTypes.includes('RenameStmt') &&
21382143
(context as any).renameObjectType === 'OBJECT_AGGREGATE';
@@ -2728,7 +2733,13 @@ export class V13ToV14Transformer {
27282733
const result: any = {};
27292734

27302735
if (node.name !== undefined) {
2731-
result.name = node.name;
2736+
result.expr = {
2737+
ColumnRef: {
2738+
fields: [{
2739+
String: { str: node.name }
2740+
}]
2741+
}
2742+
};
27322743
}
27332744

27342745
if (node.expr !== undefined) {
@@ -2756,35 +2767,9 @@ export class V13ToV14Transformer {
27562767
if (node.exprs !== undefined) {
27572768
result.exprs = Array.isArray(node.exprs)
27582769
? node.exprs.map((expr: any) => {
2759-
const transformed = this.transform(expr as any, context);
2760-
if (transformed && transformed.StatsElem) {
2761-
return transformed;
2762-
}
2763-
// Check if this is a simple ColumnRef that should become a name field
2764-
if (transformed && transformed.ColumnRef &&
2765-
transformed.ColumnRef.fields &&
2766-
Array.isArray(transformed.ColumnRef.fields) &&
2767-
transformed.ColumnRef.fields.length === 1 &&
2768-
transformed.ColumnRef.fields[0].String) {
2769-
return { StatsElem: { name: transformed.ColumnRef.fields[0].String.str } };
2770-
}
2771-
return { StatsElem: { expr: transformed } };
2770+
return { StatsElem: { expr: this.transform(expr as any, context) } };
27722771
})
2773-
: (() => {
2774-
const transformed = this.transform(node.exprs as any, context);
2775-
if (transformed && transformed.StatsElem) {
2776-
return transformed;
2777-
}
2778-
// Check if this is a simple ColumnRef that should become a name field
2779-
if (transformed && transformed.ColumnRef &&
2780-
transformed.ColumnRef.fields &&
2781-
Array.isArray(transformed.ColumnRef.fields) &&
2782-
transformed.ColumnRef.fields.length === 1 &&
2783-
transformed.ColumnRef.fields[0].String) {
2784-
return { StatsElem: { name: transformed.ColumnRef.fields[0].String.str } };
2785-
}
2786-
return { StatsElem: { expr: transformed } };
2787-
})();
2772+
: [{ StatsElem: { expr: this.transform(node.exprs as any, context) } }];
27882773
}
27892774

27902775
if (node.relations !== undefined) {

0 commit comments

Comments
 (0)