@@ -22,35 +22,7 @@ export class V13ToV14Transformer extends BaseTransformer {
2222 return super . transform ( node , context ) ;
2323 }
2424
25- A_Const ( nodeData : any , context ?: TransformerContext ) : any {
26- const transformedData : any = { ...nodeData } ;
27-
28- if ( nodeData . val ) {
29- if ( nodeData . val . String ) {
30- transformedData . sval = { sval : nodeData . val . String . str } ;
31- delete transformedData . val ;
32- } else if ( nodeData . val . Float ) {
33- transformedData . fval = { fval : nodeData . val . Float . str } ;
34- delete transformedData . val ;
35- } else if ( nodeData . val . BitString ) {
36- transformedData . bsval = { bsval : nodeData . val . BitString . str } ;
37- delete transformedData . val ;
38- } else if ( nodeData . val . Integer ) {
39- const intVal = nodeData . val . Integer . ival ;
40- if ( intVal === 0 ) {
41- transformedData . ival = { } ;
42- } else {
43- transformedData . ival = { ival : intVal } ;
44- }
45- delete transformedData . val ;
46- } else if ( nodeData . val . Boolean ) {
47- transformedData . boolval = nodeData . val . Boolean . boolval ;
48- delete transformedData . val ;
49- }
50- }
51-
52- return transformedData ;
53- }
25+
5426
5527 SelectStmt ( nodeData : any , context ?: TransformerContext ) : any {
5628 const transformedData : any = { } ;
@@ -123,9 +95,39 @@ export class V13ToV14Transformer extends BaseTransformer {
12395 return transformedData ;
12496 }
12597
126- TypeName ( nodeData : any , context ?: TransformerContext ) : any {
98+
99+
100+ FuncCall ( nodeData : any , context ?: TransformerContext ) : any {
127101 const transformedData : any = { ...nodeData } ;
128102
103+ if ( ! ( 'funcformat' in transformedData ) ) {
104+ transformedData . funcformat = "COERCE_EXPLICIT_CALL" ;
105+ }
106+
107+ if ( transformedData . funcname && Array . isArray ( transformedData . funcname ) ) {
108+ transformedData . funcname = transformedData . funcname . map ( ( item : any ) => this . transform ( item , context ) ) ;
109+ }
110+
111+ if ( transformedData . args && Array . isArray ( transformedData . args ) ) {
112+ transformedData . args = transformedData . args . map ( ( item : any ) => this . transform ( item , context ) ) ;
113+ }
114+
115+ return transformedData ;
116+ }
117+
118+ TypeName ( nodeData : any , context ?: TransformerContext ) : any {
119+ const transformedData : any = { } ;
120+
121+ for ( const [ key , value ] of Object . entries ( nodeData ) ) {
122+ if ( Array . isArray ( value ) ) {
123+ transformedData [ key ] = value . map ( item => this . transform ( item , context ) ) ;
124+ } else if ( value && typeof value === 'object' ) {
125+ transformedData [ key ] = this . transform ( value , context ) ;
126+ } else {
127+ transformedData [ key ] = value ;
128+ }
129+ }
130+
129131 if ( ! ( 'location' in transformedData ) ) {
130132 transformedData . location = undefined ;
131133 }
@@ -136,6 +138,22 @@ export class V13ToV14Transformer extends BaseTransformer {
136138 return transformedData ;
137139 }
138140
141+ Alias ( nodeData : any , context ?: TransformerContext ) : any {
142+ const transformedData : any = { } ;
143+
144+ for ( const [ key , value ] of Object . entries ( nodeData ) ) {
145+ if ( Array . isArray ( value ) ) {
146+ transformedData [ key ] = value . map ( item => this . transform ( item , context ) ) ;
147+ } else if ( value && typeof value === 'object' ) {
148+ transformedData [ key ] = this . transform ( value , context ) ;
149+ } else {
150+ transformedData [ key ] = value ;
151+ }
152+ }
153+
154+ return transformedData ;
155+ }
156+
139157 protected transformDefault ( node : any , nodeType : string , nodeData : any , context ?: TransformerContext ) : any {
140158 const result = super . transformDefault ( node , nodeType , nodeData , context ) ;
141159 const transformedData = result [ nodeType ] ;
@@ -145,8 +163,9 @@ export class V13ToV14Transformer extends BaseTransformer {
145163 delete transformedData . relkind ;
146164 }
147165
148- if ( transformedData && typeof transformedData === 'object' ) {
149- this . ensureTypeNameFields ( transformedData ) ;
166+ if ( nodeType === 'CreateTableAsStmt' && transformedData && 'relkind' in transformedData ) {
167+ transformedData . objtype = transformedData . relkind ;
168+ delete transformedData . relkind ;
150169 }
151170
152171 return { [ nodeType ] : transformedData } ;
0 commit comments