Skip to content

Commit 8e2f172

Browse files
fix: add DefElem method to handle Integer to Boolean transformations for 'strict' defname in V14ToV15Transformer
Co-Authored-By: Dan Lynch <[email protected]>
1 parent a12ebec commit 8e2f172

File tree

1 file changed

+48
-3
lines changed

1 file changed

+48
-3
lines changed

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

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ export class V14ToV15Transformer extends BaseTransformer {
4646
} else if (nodeData.val.Boolean) {
4747
transformedData.boolval = nodeData.val.Boolean.boolval;
4848
delete transformedData.val;
49+
} else if (nodeData.val.Null) {
50+
transformedData.isnull = true;
51+
delete transformedData.val;
4952
}
5053
}
5154

@@ -61,11 +64,14 @@ export class V14ToV15Transformer extends BaseTransformer {
6164
}
6265

6366
String(node: any, context?: TransformerContext): any {
64-
if ('str' in node) {
65-
return { sval: node.str };
67+
const transformedData = { ...node };
68+
69+
if ('str' in transformedData) {
70+
transformedData.sval = transformedData.str;
71+
delete transformedData.str;
6672
}
6773

68-
return node;
74+
return transformedData;
6975
}
7076

7177
BitString(node: any, context?: TransformerContext): any {
@@ -162,6 +168,8 @@ export class V14ToV15Transformer extends BaseTransformer {
162168
transformedOver[key] = value.map((item: any) => this.transform(item, context));
163169
} else if (key === 'partitionClause' && Array.isArray(value)) {
164170
transformedOver[key] = value.map((item: any) => this.transform(item, context));
171+
} else if (value && typeof value === 'object') {
172+
transformedOver[key] = this.transform(value, context);
165173
} else {
166174
transformedOver[key] = value;
167175
}
@@ -273,6 +281,43 @@ export class V14ToV15Transformer extends BaseTransformer {
273281

274282

275283

284+
Integer(node: any, context?: TransformerContext): any {
285+
const transformedData = { ...node };
286+
287+
if ('ival' in transformedData && transformedData.ival === -1) {
288+
return {};
289+
}
290+
291+
return transformedData;
292+
}
293+
294+
DefElem(node: any, context?: TransformerContext): any {
295+
const transformedData = { ...node };
296+
297+
if (transformedData.arg && transformedData.arg.Integer && transformedData.defname === 'strict') {
298+
const intVal = transformedData.arg.Integer.ival;
299+
if (intVal === 1) {
300+
transformedData.arg = {
301+
Boolean: {
302+
boolval: true
303+
}
304+
};
305+
} else if (intVal === 0) {
306+
transformedData.arg = {
307+
Boolean: {
308+
boolval: false
309+
}
310+
};
311+
}
312+
}
313+
314+
if (transformedData.arg && typeof transformedData.arg === 'object') {
315+
transformedData.arg = this.transform(transformedData.arg, context);
316+
}
317+
318+
return transformedData;
319+
}
320+
276321
RangeVar(node: any, context?: TransformerContext): any {
277322
return node;
278323
}

0 commit comments

Comments
 (0)