@@ -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