@@ -101,7 +101,14 @@ export class V14ToV15Transformer extends BaseTransformer {
101101 }
102102 } ;
103103 }
104- return table ;
104+ return {
105+ PublicationObjSpec : {
106+ pubobjtype : "PUBLICATIONOBJ_TABLE" ,
107+ pubtable : {
108+ relation : table
109+ }
110+ }
111+ } ;
105112 } ) ;
106113 delete transformedData . tables ;
107114 }
@@ -179,61 +186,43 @@ export class V14ToV15Transformer extends BaseTransformer {
179186 }
180187
181188 SelectStmt ( node : any , context ?: TransformerContext ) : any {
182- const transformedData : any = { } ;
189+ const transformedData : any = { ... node } ;
183190
184- transformedData . limitOption = "LIMIT_OPTION_DEFAULT" ;
185- transformedData . op = "SETOP_NONE" ;
191+ if ( ! ( 'limitOption' in transformedData ) ) {
192+ transformedData . limitOption = "LIMIT_OPTION_DEFAULT" ;
193+ }
194+ if ( ! ( 'op' in transformedData ) ) {
195+ transformedData . op = "SETOP_NONE" ;
196+ }
186197
187198 for ( const [ key , value ] of Object . entries ( node ) ) {
188- if ( Array . isArray ( value ) ) {
199+ if ( key === 'limitOption' || key === 'op' ) {
200+ continue ;
201+ } else if ( key === 'withClause' && value && typeof value === 'object' ) {
202+ transformedData [ key ] = { ...value } ;
203+ if ( transformedData [ key ] . ctes && Array . isArray ( transformedData [ key ] . ctes ) ) {
204+ transformedData [ key ] . ctes = transformedData [ key ] . ctes . map ( ( cte : any ) => this . transform ( cte , context ) ) ;
205+ }
206+ } else if ( key === 'larg' || key === 'rarg' ) {
207+ if ( value && typeof value === 'object' ) {
208+ transformedData [ key ] = this . SelectStmt ( value , context ) ;
209+ } else {
210+ transformedData [ key ] = value ;
211+ }
212+ } else if ( Array . isArray ( value ) ) {
189213 transformedData [ key ] = value . map ( item => this . transform ( item , context ) ) ;
190214 } else if ( value && typeof value === 'object' ) {
191- const transformed = this . transform ( value , context ) ;
192- transformedData [ key ] = transformed ;
215+ transformedData [ key ] = this . transform ( value , context ) ;
193216 } else {
194217 transformedData [ key ] = value ;
195218 }
196219 }
197220
198- if ( transformedData . larg ) {
199- if ( transformedData . larg . SelectStmt ) {
200- if ( ! ( 'limitOption' in transformedData . larg . SelectStmt ) ) {
201- transformedData . larg . SelectStmt . limitOption = "LIMIT_OPTION_DEFAULT" ;
202- }
203- if ( ! ( 'op' in transformedData . larg . SelectStmt ) ) {
204- transformedData . larg . SelectStmt . op = "SETOP_NONE" ;
205- }
206- } else if ( transformedData . larg . targetList ) {
207- if ( ! ( 'limitOption' in transformedData . larg ) ) {
208- transformedData . larg . limitOption = "LIMIT_OPTION_DEFAULT" ;
209- }
210- if ( ! ( 'op' in transformedData . larg ) ) {
211- transformedData . larg . op = "SETOP_NONE" ;
212- }
213- }
214- }
215-
216- if ( transformedData . rarg ) {
217- if ( transformedData . rarg . SelectStmt ) {
218- if ( ! ( 'limitOption' in transformedData . rarg . SelectStmt ) ) {
219- transformedData . rarg . SelectStmt . limitOption = "LIMIT_OPTION_DEFAULT" ;
220- }
221- if ( ! ( 'op' in transformedData . rarg . SelectStmt ) ) {
222- transformedData . rarg . SelectStmt . op = "SETOP_NONE" ;
223- }
224- } else if ( transformedData . rarg . targetList ) {
225- if ( ! ( 'limitOption' in transformedData . rarg ) ) {
226- transformedData . rarg . limitOption = "LIMIT_OPTION_DEFAULT" ;
227- }
228- if ( ! ( 'op' in transformedData . rarg ) ) {
229- transformedData . rarg . op = "SETOP_NONE" ;
230- }
231- }
232- }
233-
234221 return transformedData ;
235222 }
236223
224+
225+
237226 RangeVar ( node : any , context ?: TransformerContext ) : any {
238227 return node ;
239228 }
0 commit comments