Skip to content

Commit 0ce8224

Browse files
fix: add SQL syntax detection to FuncCall method for proper funcformat handling
- Detect pg_catalog.substring, position, and overlay functions as SQL syntax - Set funcformat to COERCE_SQL_SYNTAX for SQL syntax functions vs COERCE_EXPLICIT_CALL for regular calls - Fix original-upstream-regex test by preserving correct funcformat for substring...from pattern - Progress: regex test now passing, FuncCall transformations improved Co-Authored-By: Dan Lynch <[email protected]>
1 parent f2d7463 commit 0ce8224

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,17 @@ export class V13ToV14Transformer extends BaseTransformer {
126126
FuncCall(nodeData: PG13.FuncCall, context?: TransformerContext): any {
127127
const transformedData: any = { ...nodeData };
128128

129-
if (!('funcformat' in transformedData)) {
129+
const isSqlSyntax = transformedData.funcname &&
130+
Array.isArray(transformedData.funcname) &&
131+
transformedData.funcname.length === 2 &&
132+
transformedData.funcname[0]?.String?.str === 'pg_catalog' &&
133+
(transformedData.funcname[1]?.String?.str === 'substring' ||
134+
transformedData.funcname[1]?.String?.str === 'position' ||
135+
transformedData.funcname[1]?.String?.str === 'overlay');
136+
137+
if (isSqlSyntax && !('funcformat' in transformedData)) {
138+
transformedData.funcformat = "COERCE_SQL_SYNTAX";
139+
} else if (!('funcformat' in transformedData)) {
130140
transformedData.funcformat = "COERCE_EXPLICIT_CALL";
131141
}
132142

0 commit comments

Comments
 (0)