@@ -184,11 +184,17 @@ export class V13ToV14Transformer {
184184 }
185185 }
186186
187- if ( this . isInCreateDomainContext ( context ) && funcname . length >= 2 ) {
187+ // Handle pg_catalog prefix removal for specific functions
188+ if ( funcname . length >= 2 ) {
188189 const firstElement = funcname [ 0 ] ;
189- if ( firstElement && typeof firstElement === 'object' && 'String' in firstElement ) {
190+ const secondElement = funcname [ 1 ] ;
191+ if ( firstElement && typeof firstElement === 'object' && 'String' in firstElement &&
192+ secondElement && typeof secondElement === 'object' && 'String' in secondElement ) {
190193 const prefix = firstElement . String . str || firstElement . String . sval ;
191- if ( prefix === 'pg_catalog' ) {
194+ const functionName = secondElement . String . str || secondElement . String . sval ;
195+
196+ if ( prefix === 'pg_catalog' &&
197+ ( functionName === 'substring' || this . isInCreateDomainContext ( context ) ) ) {
192198 funcname = funcname . slice ( 1 ) ;
193199 }
194200 }
@@ -916,8 +922,11 @@ export class V13ToV14Transformer {
916922 return 'COERCE_EXPLICIT_CALL' ;
917923 }
918924
919- // Handle substring function specifically - it should use SQL syntax in most contexts
925+ // Handle substring function specifically - context-dependent behavior
920926 if ( funcname . toLowerCase ( ) === 'substring' ) {
927+ if ( this . isInConstraintContext ( context ) || this . isInCreateDomainContext ( context ) ) {
928+ return 'COERCE_EXPLICIT_CALL' ;
929+ }
921930 return 'COERCE_SQL_SYNTAX' ;
922931 }
923932
@@ -944,7 +953,6 @@ export class V13ToV14Transformer {
944953 if ( sqlSyntaxFunctions . includes ( funcname . toLowerCase ( ) ) ) {
945954 return 'COERCE_SQL_SYNTAX' ;
946955 }
947-
948956 return 'COERCE_EXPLICIT_CALL' ;
949957 }
950958
@@ -968,7 +976,10 @@ export class V13ToV14Transformer {
968976 const result : any = { } ;
969977
970978 if ( node . name !== undefined ) {
971- result . name = node . name ;
979+ const isInDropContext = context . parentNodeTypes ?. includes ( 'DropStmt' ) ;
980+ if ( ! isInDropContext ) {
981+ result . name = node . name ;
982+ }
972983 }
973984
974985 if ( node . argType !== undefined ) {
0 commit comments