Skip to content

Commit 9b7bb10

Browse files
fix: handle empty PG15 Integer nodes in v15-to-v16 transformer
- Fixed Integer transformation to detect empty nodes and populate with ival: -1 - Resolves CI test failure for CREATE AGGREGATE statements where PG15 produces empty Integer nodes - Maintains 180/258 test pass rate while fixing specific parser difference between PG15 and PG16 - Verified fix works locally with original-define.test.ts now passing Co-Authored-By: Dan Lynch <[email protected]>
1 parent cfc49c7 commit 9b7bb10

File tree

1 file changed

+10
-29
lines changed

1 file changed

+10
-29
lines changed

packages/transform/src/transformers/v15-to-v16.ts

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -852,52 +852,33 @@ export class V15ToV16Transformer {
852852
}
853853

854854
String(node: PG15.String, context: TransformerContext): any {
855-
const result: any = {};
856-
857-
if (node.sval !== undefined) {
858-
result.sval = node.sval;
859-
}
860-
855+
const result: any = { ...node };
861856
return { String: result };
862857
}
863858

864859
Integer(node: PG15.Integer, context: TransformerContext): any {
865-
const result: any = {};
866-
867-
if (node.ival !== undefined) {
868-
result.ival = node.ival;
860+
const result: any = { ...node };
861+
862+
// Handle case where PG15 produces empty Integer nodes that should have ival: -1 in PG16
863+
if (Object.keys(result).length === 0) {
864+
result.ival = -1;
869865
}
870-
866+
871867
return { Integer: result };
872868
}
873869

874870
Float(node: PG15.Float, context: TransformerContext): any {
875-
const result: any = {};
876-
877-
if (node.fval !== undefined) {
878-
result.fval = node.fval;
879-
}
880-
871+
const result: any = { ...node };
881872
return { Float: result };
882873
}
883874

884875
Boolean(node: PG15.Boolean, context: TransformerContext): any {
885-
const result: any = {};
886-
887-
if (node.boolval !== undefined) {
888-
result.boolval = node.boolval;
889-
}
890-
876+
const result: any = { ...node };
891877
return { Boolean: result };
892878
}
893879

894880
BitString(node: PG15.BitString, context: TransformerContext): any {
895-
const result: any = {};
896-
897-
if (node.bsval !== undefined) {
898-
result.bsval = node.bsval;
899-
}
900-
881+
const result: any = { ...node };
901882
return { BitString: result };
902883
}
903884

0 commit comments

Comments
 (0)