pgsql-deparser 13.5.0 → 13.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/main/deparser.js +838 -86
- package/main/index.js +3 -0
- package/main/utils/index.js +26 -10
- package/module/deparser.js +903 -84
- package/module/utils/index.js +16 -9
- package/package.json +3 -4
- package/CHANGELOG.md +0 -451
package/main/deparser.js
CHANGED
|
@@ -1,29 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports["default"] = void 0;
|
|
9
|
+
|
|
8
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
9
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
10
14
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
15
|
+
|
|
11
16
|
var _util = require("util");
|
|
17
|
+
|
|
12
18
|
var _pgsqlEnums = require("pgsql-enums");
|
|
19
|
+
|
|
13
20
|
var TAB_CHAR = '\t';
|
|
14
21
|
var NEWLINE_CHAR = '\n';
|
|
22
|
+
|
|
15
23
|
var isEmptyObject = function isEmptyObject(obj) {
|
|
16
24
|
return !obj || (0, _typeof2["default"])(obj) === 'object' && !Object.keys(obj).length;
|
|
17
25
|
};
|
|
26
|
+
|
|
18
27
|
var dotty = require('dotty');
|
|
28
|
+
|
|
19
29
|
var fail = function fail(type, node) {
|
|
20
30
|
throw new Error((0, _util.format)('Unhandled %s node: %s', type, JSON.stringify(node)));
|
|
21
|
-
};
|
|
31
|
+
}; // select word from pg_get_keywords() where catcode = 'R';
|
|
32
|
+
|
|
22
33
|
|
|
23
|
-
|
|
24
|
-
var RESERVED_WORDS = new Set(['all', 'analyse', 'analyze', 'and', 'any', 'array', 'as', 'asc', 'asymmetric', 'both', 'case', 'cast', 'check', 'collate', 'column', 'constraint', 'create', 'current_catalog', 'current_date', 'current_role', 'current_time', 'current_timestamp', 'current_user', 'default', 'deferrable', 'desc', 'distinct', 'do', 'else', 'end', 'except', 'false', 'fetch', 'for', 'foreign', 'from', 'grant', 'group', 'having', 'in', 'initially', 'intersect', 'into', 'lateral', 'leading', 'limit', 'localtime', 'localtimestamp', 'not', 'null', 'offset', 'on', 'only', 'or', 'order', 'placing', 'primary', 'references', 'returning', 'select', 'session_user', 'some', 'symmetric', 'table', 'then', 'to', 'trailing', 'true', 'union', 'unique', 'user', 'using', 'variadic', 'when', 'where', 'window', 'with']);
|
|
34
|
+
var RESERVED_WORDS = new Set(['all', 'analyse', 'analyze', 'and', 'any', 'array', 'as', 'asc', 'asymmetric', 'both', 'case', 'cast', 'check', 'collate', 'column', 'constraint', 'create', 'current_catalog', 'current_date', 'current_role', 'current_time', 'current_timestamp', 'current_user', 'default', 'deferrable', 'desc', 'distinct', 'do', 'else', 'end', 'except', 'false', 'fetch', 'for', 'foreign', 'from', 'grant', 'group', 'having', 'in', 'initially', 'intersect', 'into', 'lateral', 'leading', 'limit', 'localtime', 'localtimestamp', 'not', 'null', 'offset', 'on', 'only', 'or', 'order', 'placing', 'primary', 'references', 'returning', 'select', 'session_user', 'some', 'symmetric', 'table', 'then', 'to', 'trailing', 'true', 'union', 'unique', 'user', 'using', 'variadic', 'when', 'where', 'window', 'with']); // https://github.com/pganalyze/libpg_query/blob/b2790f8140721ff7f047167ecd7d44267b0a3880/src/postgres/include/storage/lockdefs.h
|
|
25
35
|
|
|
26
|
-
// https://github.com/pganalyze/libpg_query/blob/b2790f8140721ff7f047167ecd7d44267b0a3880/src/postgres/include/storage/lockdefs.h
|
|
27
36
|
var LOCK_MODES = {
|
|
28
37
|
1: 'ACCESS SHARE',
|
|
29
38
|
2: 'ROW SHARE',
|
|
@@ -34,26 +43,29 @@ var LOCK_MODES = {
|
|
|
34
43
|
7: 'EXCLUSIVE',
|
|
35
44
|
8: 'ACCESS EXCLUSIVE'
|
|
36
45
|
};
|
|
46
|
+
|
|
37
47
|
var isReserved = function isReserved(value) {
|
|
38
48
|
return RESERVED_WORDS.has(value.toLowerCase());
|
|
39
|
-
};
|
|
49
|
+
}; // has uppercase and lowercase, or non word characters
|
|
40
50
|
|
|
41
|
-
// has uppercase and lowercase, or non word characters
|
|
42
|
-
var needsQuotesRegex = /[a-z]+[\W\w]*[A-Z]+|[A-Z]+[\W\w]*[a-z]+|\W/;
|
|
43
51
|
|
|
44
|
-
// usually the AST lowercases all the things, so if we
|
|
52
|
+
var needsQuotesRegex = /[a-z]+[\W\w]*[A-Z]+|[A-Z]+[\W\w]*[a-z]+|\W/; // usually the AST lowercases all the things, so if we
|
|
45
53
|
// have both, the author most likely used double quotes
|
|
54
|
+
|
|
46
55
|
var needsQuotes = function needsQuotes(value) {
|
|
47
56
|
return needsQuotesRegex.test(value) || isReserved(value);
|
|
48
57
|
};
|
|
58
|
+
|
|
49
59
|
var compact = function compact(o) {
|
|
50
60
|
return o.filter(function (e) {
|
|
51
61
|
var isFalsy = !e;
|
|
52
62
|
return !isFalsy && e.toString().length;
|
|
53
63
|
});
|
|
54
64
|
};
|
|
65
|
+
|
|
55
66
|
var flatten = function flatten(o) {
|
|
56
67
|
var flattened = [];
|
|
68
|
+
|
|
57
69
|
for (var i = 0; i < o.length; i++) {
|
|
58
70
|
if (Array.isArray(o[i])) {
|
|
59
71
|
for (var j = 0; j < o[i].length; j++) {
|
|
@@ -63,44 +75,57 @@ var flatten = function flatten(o) {
|
|
|
63
75
|
flattened.push(o[i]);
|
|
64
76
|
}
|
|
65
77
|
}
|
|
78
|
+
|
|
66
79
|
return flattened;
|
|
67
80
|
};
|
|
81
|
+
|
|
68
82
|
var inverted = function inverted(o) {
|
|
69
83
|
var objInverted = {};
|
|
70
84
|
var keys = Object.keys(o);
|
|
85
|
+
|
|
71
86
|
for (var i = 0; i < keys.length; i++) {
|
|
72
87
|
var key = keys[i];
|
|
73
88
|
objInverted[o[key]] = key;
|
|
74
89
|
}
|
|
90
|
+
|
|
75
91
|
return objInverted;
|
|
76
92
|
};
|
|
93
|
+
|
|
77
94
|
var parens = function parens(string) {
|
|
78
95
|
return '(' + string + ')';
|
|
79
96
|
};
|
|
97
|
+
|
|
80
98
|
var indent = function indent(text) {
|
|
81
99
|
var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
82
100
|
return text;
|
|
83
101
|
};
|
|
102
|
+
|
|
84
103
|
var unwrapList = function unwrapList(obj) {
|
|
85
104
|
return obj !== undefined && obj.List !== undefined ? obj.List.items : obj;
|
|
86
105
|
};
|
|
106
|
+
|
|
87
107
|
var Deparser = /*#__PURE__*/function () {
|
|
88
108
|
function Deparser(tree) {
|
|
89
109
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
90
110
|
(0, _classCallCheck2["default"])(this, Deparser);
|
|
91
111
|
this.tree = tree;
|
|
112
|
+
|
|
92
113
|
if (opts.hasOwnProperty('newline')) {
|
|
93
114
|
NEWLINE_CHAR = opts.newline;
|
|
94
115
|
}
|
|
116
|
+
|
|
95
117
|
if (opts.hasOwnProperty('tab')) {
|
|
96
118
|
TAB_CHAR = opts.tab;
|
|
97
119
|
}
|
|
120
|
+
|
|
98
121
|
if (!Array.isArray(this.tree)) this.tree = [this.tree];
|
|
99
122
|
}
|
|
123
|
+
|
|
100
124
|
(0, _createClass2["default"])(Deparser, [{
|
|
101
125
|
key: "deparseQuery",
|
|
102
126
|
value: function deparseQuery() {
|
|
103
127
|
var _this = this;
|
|
128
|
+
|
|
104
129
|
return this.tree.map(function (node) {
|
|
105
130
|
return _this.deparse(node);
|
|
106
131
|
}).join(NEWLINE_CHAR + NEWLINE_CHAR);
|
|
@@ -109,6 +134,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
109
134
|
key: "deparseNodes",
|
|
110
135
|
value: function deparseNodes(nodes, context) {
|
|
111
136
|
var _this2 = this;
|
|
137
|
+
|
|
112
138
|
return unwrapList(nodes).map(function (node) {
|
|
113
139
|
var unwrapped = unwrapList(node);
|
|
114
140
|
return Array.isArray(unwrapped) ? _this2.list(unwrapped, ', ', '', context) : _this2.deparse(node, context);
|
|
@@ -118,6 +144,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
118
144
|
key: "deparseReturningList",
|
|
119
145
|
value: function deparseReturningList(list, context) {
|
|
120
146
|
var _this3 = this;
|
|
147
|
+
|
|
121
148
|
return unwrapList(list).map(function (returning) {
|
|
122
149
|
return _this3.deparse(returning.ResTarget.val, context) + (returning.ResTarget.name ? ' AS ' + _this3.quote(returning.ResTarget.name) : '');
|
|
123
150
|
}).join(',');
|
|
@@ -128,9 +155,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
128
155
|
var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ', ';
|
|
129
156
|
var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
130
157
|
var context = arguments.length > 3 ? arguments[3] : undefined;
|
|
158
|
+
|
|
131
159
|
if (!nodes) {
|
|
132
160
|
return '';
|
|
133
161
|
}
|
|
162
|
+
|
|
134
163
|
return this.deparseNodes(nodes, context).map(function (l) {
|
|
135
164
|
return "".concat(prefix).concat(l);
|
|
136
165
|
}).join(separator);
|
|
@@ -139,6 +168,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
139
168
|
key: "listQuotes",
|
|
140
169
|
value: function listQuotes(nodes) {
|
|
141
170
|
var _this4 = this;
|
|
171
|
+
|
|
142
172
|
var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ', ';
|
|
143
173
|
return this.list(unwrapList(nodes), separator).split(separator).map(function (a) {
|
|
144
174
|
return _this4.quote(a.trim());
|
|
@@ -148,22 +178,26 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
148
178
|
key: "quote",
|
|
149
179
|
value: function quote(value) {
|
|
150
180
|
var _this5 = this;
|
|
181
|
+
|
|
151
182
|
if (value == null) {
|
|
152
183
|
return null;
|
|
153
184
|
}
|
|
185
|
+
|
|
154
186
|
var unwrapped = unwrapList(value);
|
|
187
|
+
|
|
155
188
|
if (Array.isArray(unwrapped)) {
|
|
156
189
|
return unwrapped.map(function (o) {
|
|
157
190
|
return _this5.quote(o);
|
|
158
191
|
});
|
|
159
192
|
}
|
|
193
|
+
|
|
160
194
|
if (needsQuotes(value)) {
|
|
161
195
|
return '"' + value + '"';
|
|
162
196
|
}
|
|
197
|
+
|
|
163
198
|
return value;
|
|
164
|
-
}
|
|
199
|
+
} // SELECT encode(E'''123\\000\\001', 'base64')
|
|
165
200
|
|
|
166
|
-
// SELECT encode(E'''123\\000\\001', 'base64')
|
|
167
201
|
}, {
|
|
168
202
|
key: "escape",
|
|
169
203
|
value: function escape(literal) {
|
|
@@ -176,32 +210,45 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
176
210
|
case 'bpchar':
|
|
177
211
|
if (size != null) {
|
|
178
212
|
return 'char';
|
|
179
|
-
}
|
|
180
|
-
// return `pg_catalog.bpchar` below so that the following is symmetric
|
|
213
|
+
} // return `pg_catalog.bpchar` below so that the following is symmetric
|
|
181
214
|
// SELECT char 'c' = char 'c' AS true
|
|
215
|
+
|
|
216
|
+
|
|
182
217
|
return 'pg_catalog.bpchar';
|
|
218
|
+
|
|
183
219
|
case 'varchar':
|
|
184
220
|
return 'varchar';
|
|
221
|
+
|
|
185
222
|
case 'numeric':
|
|
186
223
|
return 'numeric';
|
|
224
|
+
|
|
187
225
|
case 'bool':
|
|
188
226
|
return 'boolean';
|
|
227
|
+
|
|
189
228
|
case 'int2':
|
|
190
229
|
return 'smallint';
|
|
230
|
+
|
|
191
231
|
case 'int4':
|
|
192
232
|
return 'int';
|
|
233
|
+
|
|
193
234
|
case 'int8':
|
|
194
235
|
return 'bigint';
|
|
236
|
+
|
|
195
237
|
case 'real':
|
|
196
238
|
return 'pg_catalog.float4';
|
|
239
|
+
|
|
197
240
|
case 'time':
|
|
198
241
|
return 'time';
|
|
242
|
+
|
|
199
243
|
case 'timestamp':
|
|
200
244
|
return 'timestamp';
|
|
245
|
+
|
|
201
246
|
case 'interval':
|
|
202
247
|
return 'interval';
|
|
248
|
+
|
|
203
249
|
case 'bit':
|
|
204
250
|
return 'bit';
|
|
251
|
+
|
|
205
252
|
default:
|
|
206
253
|
return 'pg_catalog.' + typeName;
|
|
207
254
|
}
|
|
@@ -210,28 +257,34 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
210
257
|
key: "type",
|
|
211
258
|
value: function type(names, args) {
|
|
212
259
|
var _this6 = this;
|
|
260
|
+
|
|
213
261
|
var catalogAndType = unwrapList(names).map(function (name) {
|
|
214
262
|
return _this6.deparse(name);
|
|
215
263
|
});
|
|
216
264
|
var catalog = catalogAndType[0];
|
|
217
265
|
var type = catalogAndType[1];
|
|
266
|
+
|
|
218
267
|
var mods = function mods(name, size) {
|
|
219
268
|
if (size != null) {
|
|
220
269
|
return name + '(' + size + ')';
|
|
221
270
|
}
|
|
271
|
+
|
|
222
272
|
return name;
|
|
223
|
-
};
|
|
273
|
+
}; // handle the special "char" (in quotes) type
|
|
274
|
+
|
|
224
275
|
|
|
225
|
-
// handle the special "char" (in quotes) type
|
|
226
276
|
if (catalog === 'char' && !type) {
|
|
227
277
|
return mods('"char"', args);
|
|
228
278
|
}
|
|
279
|
+
|
|
229
280
|
if (catalog === 'pg_catalog' && type === 'char') {
|
|
230
281
|
return mods('pg_catalog."char"', args);
|
|
231
282
|
}
|
|
283
|
+
|
|
232
284
|
if (catalog !== 'pg_catalog') {
|
|
233
285
|
return mods(this.listQuotes(names, '.'), args);
|
|
234
286
|
}
|
|
287
|
+
|
|
235
288
|
var res = this.getPgCatalogTypeName(type, args);
|
|
236
289
|
return mods(res, args);
|
|
237
290
|
}
|
|
@@ -241,23 +294,29 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
241
294
|
if (item == null) {
|
|
242
295
|
return null;
|
|
243
296
|
}
|
|
297
|
+
|
|
244
298
|
if (typeof item === 'number' || item instanceof Number) {
|
|
245
299
|
return item;
|
|
246
300
|
}
|
|
301
|
+
|
|
247
302
|
var type = Object.keys(item)[0];
|
|
248
303
|
var node = item[type];
|
|
304
|
+
|
|
249
305
|
if (this[type] == null) {
|
|
250
306
|
throw new Error(type + ' is not implemented: ' + JSON.stringify(node));
|
|
251
307
|
}
|
|
308
|
+
|
|
252
309
|
return this[type](node, context);
|
|
253
310
|
}
|
|
254
311
|
}, {
|
|
255
312
|
key: 'RawStmt',
|
|
256
313
|
value: function RawStmt(node) {
|
|
257
314
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
315
|
+
|
|
258
316
|
if (node.stmt_len) {
|
|
259
317
|
return this.deparse(node.stmt, context) + ';';
|
|
260
318
|
}
|
|
319
|
+
|
|
261
320
|
return this.deparse(node.stmt, context);
|
|
262
321
|
}
|
|
263
322
|
}, {
|
|
@@ -267,47 +326,61 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
267
326
|
var output = [];
|
|
268
327
|
output.push('CREATE');
|
|
269
328
|
output.push('RULE');
|
|
329
|
+
|
|
270
330
|
if (node.rulename === '_RETURN') {
|
|
271
331
|
// special rules
|
|
272
332
|
output.push('"_RETURN"');
|
|
273
333
|
} else {
|
|
274
334
|
output.push(node.rulename);
|
|
275
335
|
}
|
|
336
|
+
|
|
276
337
|
output.push('AS');
|
|
277
338
|
output.push('ON');
|
|
339
|
+
|
|
278
340
|
switch (node.event) {
|
|
279
341
|
case 'CMD_SELECT':
|
|
280
342
|
output.push('SELECT');
|
|
281
343
|
break;
|
|
344
|
+
|
|
282
345
|
case 'CMD_UPDATE':
|
|
283
346
|
output.push('UPDATE');
|
|
284
347
|
break;
|
|
348
|
+
|
|
285
349
|
case 'CMD_INSERT':
|
|
286
350
|
output.push('INSERT');
|
|
287
351
|
break;
|
|
352
|
+
|
|
288
353
|
case 'CMD_DELETE':
|
|
289
354
|
output.push('DELETE');
|
|
290
355
|
break;
|
|
356
|
+
|
|
291
357
|
default:
|
|
292
358
|
throw new Error('event type not yet implemented for RuleStmt');
|
|
293
359
|
}
|
|
360
|
+
|
|
294
361
|
output.push('TO');
|
|
295
362
|
output.push(this.RangeVar(node.relation, context));
|
|
363
|
+
|
|
296
364
|
if (node.whereClause) {
|
|
297
365
|
output.push('WHERE');
|
|
298
366
|
output.push(this.deparse(node.whereClause, context));
|
|
299
367
|
}
|
|
368
|
+
|
|
300
369
|
output.push('DO');
|
|
370
|
+
|
|
301
371
|
if (node.instead) {
|
|
302
372
|
output.push('INSTEAD');
|
|
303
373
|
}
|
|
374
|
+
|
|
304
375
|
var actions = unwrapList(node.actions);
|
|
376
|
+
|
|
305
377
|
if (!actions || !actions.length) {
|
|
306
378
|
output.push('NOTHING');
|
|
307
379
|
} else {
|
|
308
380
|
// TODO how do multiple actions happen?
|
|
309
381
|
output.push(this.deparse(actions[0], context));
|
|
310
382
|
}
|
|
383
|
+
|
|
311
384
|
return output.join(' ');
|
|
312
385
|
}
|
|
313
386
|
}, {
|
|
@@ -316,10 +389,12 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
316
389
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
317
390
|
var output = [];
|
|
318
391
|
var nodeName = unwrapList(node.name);
|
|
392
|
+
|
|
319
393
|
switch (node.kind) {
|
|
320
394
|
case 'AEXPR_OP':
|
|
321
395
|
{
|
|
322
396
|
var operator;
|
|
397
|
+
|
|
323
398
|
if (node.lexpr) {
|
|
324
399
|
// PARENS
|
|
325
400
|
if (node.lexpr !== undefined && node.lexpr.A_Expr !== undefined) {
|
|
@@ -328,6 +403,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
328
403
|
output.push(this.deparse(node.lexpr, context));
|
|
329
404
|
}
|
|
330
405
|
}
|
|
406
|
+
|
|
331
407
|
if (nodeName.length > 1) {
|
|
332
408
|
var schema = this.deparse(nodeName[0], context);
|
|
333
409
|
operator = this.deparse(nodeName[1], context);
|
|
@@ -336,6 +412,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
336
412
|
operator = this.deparse(nodeName[0], context);
|
|
337
413
|
output.push(operator);
|
|
338
414
|
}
|
|
415
|
+
|
|
339
416
|
if (node.rexpr) {
|
|
340
417
|
// PARENS
|
|
341
418
|
if (node.rexpr !== undefined && node.rexpr.A_Expr !== undefined) {
|
|
@@ -344,66 +421,85 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
344
421
|
output.push(this.deparse(node.rexpr, context));
|
|
345
422
|
}
|
|
346
423
|
}
|
|
424
|
+
|
|
347
425
|
if (output.length === 2) {
|
|
348
426
|
return output.join('');
|
|
349
427
|
}
|
|
428
|
+
|
|
350
429
|
if (['->', '->>'].includes(operator)) {
|
|
351
430
|
return output.join('');
|
|
352
431
|
}
|
|
432
|
+
|
|
353
433
|
return output.join(' ');
|
|
354
434
|
}
|
|
435
|
+
|
|
355
436
|
case 'AEXPR_OP_ANY':
|
|
356
437
|
/* scalar op ANY (array) */
|
|
357
438
|
output.push(this.deparse(node.lexpr, context));
|
|
358
439
|
output.push((0, _util.format)('ANY (%s)', this.deparse(node.rexpr, context)));
|
|
359
440
|
return output.join(" ".concat(this.deparse(nodeName[0], context), " "));
|
|
441
|
+
|
|
360
442
|
case 'AEXPR_OP_ALL':
|
|
361
443
|
/* scalar op ALL (array) */
|
|
362
444
|
output.push(this.deparse(node.lexpr, context));
|
|
363
445
|
output.push((0, _util.format)('ALL (%s)', this.deparse(node.rexpr, context)));
|
|
364
446
|
return output.join(" ".concat(this.deparse(nodeName[0], context), " "));
|
|
447
|
+
|
|
365
448
|
case 'AEXPR_DISTINCT':
|
|
366
449
|
/* IS DISTINCT FROM - name must be "=" */
|
|
367
450
|
return (0, _util.format)('%s IS DISTINCT FROM %s', this.deparse(node.lexpr, context), this.deparse(node.rexpr, context));
|
|
451
|
+
|
|
368
452
|
case 'AEXPR_NOT_DISTINCT':
|
|
369
453
|
/* IS NOT DISTINCT FROM - name must be "=" */
|
|
370
454
|
return (0, _util.format)('%s IS NOT DISTINCT FROM %s', this.deparse(node.lexpr, context), this.deparse(node.rexpr, context));
|
|
455
|
+
|
|
371
456
|
case 'AEXPR_NULLIF':
|
|
372
457
|
/* NULLIF - name must be "=" */
|
|
373
458
|
return (0, _util.format)('NULLIF(%s, %s)', this.deparse(node.lexpr, context), this.deparse(node.rexpr, context));
|
|
459
|
+
|
|
374
460
|
case 'AEXPR_OF':
|
|
375
461
|
{
|
|
376
462
|
/* IS [NOT] OF - name must be "=" or "<>" */
|
|
377
463
|
var op = nodeName[0].String.str === '=' ? 'IS OF' : 'IS NOT OF';
|
|
378
464
|
return (0, _util.format)('%s %s (%s)', this.deparse(node.lexpr, context), op, this.list(node.rexpr, ', ', '', context));
|
|
379
465
|
}
|
|
466
|
+
|
|
380
467
|
case 'AEXPR_IN':
|
|
381
468
|
{
|
|
382
469
|
/* [NOT] IN - name must be "=" or "<>" */
|
|
383
470
|
var _operator = nodeName[0].String.str === '=' ? 'IN' : 'NOT IN';
|
|
471
|
+
|
|
384
472
|
return (0, _util.format)('%s %s (%s)', this.deparse(node.lexpr, context), _operator, this.list(node.rexpr, ', ', '', context));
|
|
385
473
|
}
|
|
474
|
+
|
|
386
475
|
case 'AEXPR_LIKE':
|
|
387
476
|
/* [NOT] LIKE - name must be "~~" or "!~~" */
|
|
388
477
|
output.push(this.deparse(node.lexpr, context));
|
|
478
|
+
|
|
389
479
|
if (nodeName[0].String.str === '!~~') {
|
|
390
480
|
output.push((0, _util.format)('NOT LIKE (%s)', this.deparse(node.rexpr, context)));
|
|
391
481
|
} else {
|
|
392
482
|
output.push((0, _util.format)('LIKE (%s)', this.deparse(node.rexpr, context)));
|
|
393
483
|
}
|
|
484
|
+
|
|
394
485
|
return output.join(' ');
|
|
486
|
+
|
|
395
487
|
case 'AEXPR_ILIKE':
|
|
396
488
|
/* [NOT] ILIKE - name must be "~~*" or "!~~*" */
|
|
397
489
|
output.push(this.deparse(node.lexpr, context));
|
|
490
|
+
|
|
398
491
|
if (nodeName[0].String.str === '!~~*') {
|
|
399
492
|
output.push((0, _util.format)('NOT ILIKE (%s)', this.deparse(node.rexpr, context)));
|
|
400
493
|
} else {
|
|
401
494
|
output.push((0, _util.format)('ILIKE (%s)', this.deparse(node.rexpr, context)));
|
|
402
495
|
}
|
|
496
|
+
|
|
403
497
|
return output.join(' ');
|
|
498
|
+
|
|
404
499
|
case 'AEXPR_SIMILAR':
|
|
405
500
|
// SIMILAR TO emits a similar_escape FuncCall node with the first argument
|
|
406
501
|
output.push(this.deparse(node.lexpr, context));
|
|
502
|
+
|
|
407
503
|
if (nodeName[0].String.str === '~') {
|
|
408
504
|
if (unwrapList(node.rexpr.FuncCall.args).length > 1) {
|
|
409
505
|
output.push((0, _util.format)('SIMILAR TO %s ESCAPE %s', this.deparse(unwrapList(node.rexpr.FuncCall.args)[0], context), this.deparse(unwrapList(node.rexpr.FuncCall.args)[1], context)));
|
|
@@ -417,24 +513,28 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
417
513
|
output.push((0, _util.format)('NOT SIMILAR TO %s', this.deparse(unwrapList(node.rexpr.FuncCall.args)[0], context)));
|
|
418
514
|
}
|
|
419
515
|
}
|
|
516
|
+
|
|
420
517
|
return output.join(' ');
|
|
518
|
+
|
|
421
519
|
case 'AEXPR_BETWEEN':
|
|
422
520
|
output.push(this.deparse(node.lexpr, context));
|
|
423
521
|
output.push((0, _util.format)('BETWEEN %s AND %s', this.deparse(unwrapList(node.rexpr)[0], context), this.deparse(unwrapList(node.rexpr)[1], context)));
|
|
424
522
|
return output.join(' ');
|
|
523
|
+
|
|
425
524
|
case 'AEXPR_NOT_BETWEEN':
|
|
426
525
|
output.push(this.deparse(node.lexpr, context));
|
|
427
526
|
output.push((0, _util.format)('NOT BETWEEN %s AND %s', this.deparse(unwrapList(node.rexpr)[0], context), this.deparse(unwrapList(node.rexpr)[1], context)));
|
|
428
527
|
return output.join(' ');
|
|
528
|
+
|
|
429
529
|
case 'AEXPR_BETWEEN_SYM':
|
|
430
530
|
output.push(this.deparse(node.lexpr, context));
|
|
431
531
|
output.push((0, _util.format)('BETWEEN SYMMETRIC %s AND %s', this.deparse(unwrapList(node.rexpr)[0], context), this.deparse(unwrapList(node.rexpr)[1], context)));
|
|
432
532
|
return output.join(' ');
|
|
533
|
+
|
|
433
534
|
case 'AEXPR_NOT_BETWEEN_SYM':
|
|
434
535
|
output.push(this.deparse(node.lexpr, context));
|
|
435
536
|
output.push((0, _util.format)('NOT BETWEEN SYMMETRIC %s AND %s', this.deparse(unwrapList(node.rexpr)[0], context), this.deparse(unwrapList(node.rexpr)[1], context)));
|
|
436
537
|
return output.join(' ');
|
|
437
|
-
|
|
438
538
|
// case 15:
|
|
439
539
|
// AEXPR_PAREN
|
|
440
540
|
|
|
@@ -448,11 +548,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
448
548
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
449
549
|
var name = node.aliasname;
|
|
450
550
|
var output = ['AS'];
|
|
551
|
+
|
|
451
552
|
if (node.colnames) {
|
|
452
553
|
output.push(this.quote(name) + parens(this.listQuotes(node.colnames)));
|
|
453
554
|
} else {
|
|
454
555
|
output.push(this.quote(name));
|
|
455
556
|
}
|
|
557
|
+
|
|
456
558
|
return output.join(' ');
|
|
457
559
|
}
|
|
458
560
|
}, {
|
|
@@ -464,27 +566,29 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
464
566
|
key: 'A_Const',
|
|
465
567
|
value: function A_Const(node) {
|
|
466
568
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
569
|
+
|
|
467
570
|
if (node.val.String) {
|
|
468
571
|
return this.escape(this.deparse(node.val, context));
|
|
469
572
|
}
|
|
573
|
+
|
|
470
574
|
return this.deparse(node.val, context);
|
|
471
575
|
}
|
|
472
576
|
}, {
|
|
473
577
|
key: 'A_Indices',
|
|
474
578
|
value: function A_Indices(node) {
|
|
475
579
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
580
|
+
|
|
476
581
|
if (node.lidx) {
|
|
477
582
|
return (0, _util.format)('[%s:%s]', this.deparse(node.lidx, context), this.deparse(node.uidx, context));
|
|
478
583
|
}
|
|
584
|
+
|
|
479
585
|
return (0, _util.format)('[%s]', this.deparse(node.uidx, context));
|
|
480
586
|
}
|
|
481
587
|
}, {
|
|
482
588
|
key: 'A_Indirection',
|
|
483
589
|
value: function A_Indirection(node) {
|
|
484
590
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
485
|
-
var output = ["(".concat(this.deparse(node.arg, context), ")")];
|
|
486
|
-
|
|
487
|
-
// TODO(zhm) figure out the actual rules for when a '.' is needed
|
|
591
|
+
var output = ["(".concat(this.deparse(node.arg, context), ")")]; // TODO(zhm) figure out the actual rules for when a '.' is needed
|
|
488
592
|
//
|
|
489
593
|
// select a.b[0] from a;
|
|
490
594
|
// select (select row(1)).*
|
|
@@ -492,8 +596,10 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
492
596
|
// select c2.a[2].f2[1].f3[0].a1 from comptable
|
|
493
597
|
|
|
494
598
|
var indirection = unwrapList(node.indirection);
|
|
599
|
+
|
|
495
600
|
for (var i = 0; i < indirection.length; i++) {
|
|
496
601
|
var subnode = indirection[i];
|
|
602
|
+
|
|
497
603
|
if (subnode.String || subnode.A_Star) {
|
|
498
604
|
var value = subnode.A_Star ? '*' : this.quote(subnode.String.str);
|
|
499
605
|
output.push(".".concat(value));
|
|
@@ -501,6 +607,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
501
607
|
output.push(this.deparse(subnode, context));
|
|
502
608
|
}
|
|
503
609
|
}
|
|
610
|
+
|
|
504
611
|
return output.join('');
|
|
505
612
|
}
|
|
506
613
|
}, {
|
|
@@ -519,18 +626,24 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
519
626
|
value: function BoolExpr(node) {
|
|
520
627
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
521
628
|
var fmt_str = '%s';
|
|
629
|
+
|
|
522
630
|
if (context.bool) {
|
|
523
631
|
fmt_str = '(%s)';
|
|
524
632
|
}
|
|
633
|
+
|
|
525
634
|
var ctx = Object.assign({}, context);
|
|
526
635
|
ctx.bool = true;
|
|
636
|
+
|
|
527
637
|
switch (node.boolop) {
|
|
528
638
|
case 'AND_EXPR':
|
|
529
639
|
return (0, _util.format)(fmt_str, this.list(node.args, ' AND ', '', ctx));
|
|
640
|
+
|
|
530
641
|
case 'OR_EXPR':
|
|
531
642
|
return (0, _util.format)(fmt_str, this.list(node.args, ' OR ', '', ctx));
|
|
643
|
+
|
|
532
644
|
case 'NOT_EXPR':
|
|
533
645
|
return (0, _util.format)('NOT (%s)', this.deparse(unwrapList(node.args)[0], context));
|
|
646
|
+
|
|
534
647
|
default:
|
|
535
648
|
return fail('BoolExpr', node);
|
|
536
649
|
}
|
|
@@ -543,26 +656,33 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
543
656
|
var ctx = Object.assign({}, context);
|
|
544
657
|
ctx.bool = true;
|
|
545
658
|
output.push(this.deparse(node.arg, ctx));
|
|
659
|
+
|
|
546
660
|
switch (node.booltesttype) {
|
|
547
661
|
case 'IS_TRUE':
|
|
548
662
|
output.push('IS TRUE');
|
|
549
663
|
break;
|
|
664
|
+
|
|
550
665
|
case 'IS_NOT_TRUE':
|
|
551
666
|
output.push('IS NOT TRUE');
|
|
552
667
|
break;
|
|
668
|
+
|
|
553
669
|
case 'IS_FALSE':
|
|
554
670
|
output.push('IS FALSE');
|
|
555
671
|
break;
|
|
672
|
+
|
|
556
673
|
case 'IS_NOT_FALSE':
|
|
557
674
|
output.push('IS NOT FALSE');
|
|
558
675
|
break;
|
|
676
|
+
|
|
559
677
|
case 'IS_UNKNOWN':
|
|
560
678
|
output.push('IS UNKNOWN');
|
|
561
679
|
break;
|
|
680
|
+
|
|
562
681
|
case 'IS_NOT_UNKNOWN':
|
|
563
682
|
output.push('IS NOT UNKNOWN');
|
|
564
683
|
break;
|
|
565
684
|
}
|
|
685
|
+
|
|
566
686
|
return output.join(' ');
|
|
567
687
|
}
|
|
568
688
|
}, {
|
|
@@ -570,17 +690,22 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
570
690
|
value: function CaseExpr(node) {
|
|
571
691
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
572
692
|
var output = ['CASE'];
|
|
693
|
+
|
|
573
694
|
if (node.arg) {
|
|
574
695
|
output.push(this.deparse(node.arg, context));
|
|
575
696
|
}
|
|
697
|
+
|
|
576
698
|
var args = unwrapList(node.args);
|
|
699
|
+
|
|
577
700
|
for (var i = 0; i < args.length; i++) {
|
|
578
701
|
output.push(this.deparse(args[i], context));
|
|
579
702
|
}
|
|
703
|
+
|
|
580
704
|
if (node.defresult) {
|
|
581
705
|
output.push('ELSE');
|
|
582
706
|
output.push(this.deparse(node.defresult, context));
|
|
583
707
|
}
|
|
708
|
+
|
|
584
709
|
output.push('END');
|
|
585
710
|
return output.join(' ');
|
|
586
711
|
}
|
|
@@ -595,13 +720,17 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
595
720
|
value: function CollateClause(node) {
|
|
596
721
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
597
722
|
var output = [];
|
|
723
|
+
|
|
598
724
|
if (node.arg) {
|
|
599
725
|
output.push(this.deparse(node.arg, context));
|
|
600
726
|
}
|
|
727
|
+
|
|
601
728
|
output.push('COLLATE');
|
|
729
|
+
|
|
602
730
|
if (node.collname) {
|
|
603
731
|
output.push(this.quote(this.deparseNodes(node.collname, context)));
|
|
604
732
|
}
|
|
733
|
+
|
|
605
734
|
return output.join(' ');
|
|
606
735
|
}
|
|
607
736
|
}, {
|
|
@@ -622,12 +751,15 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
622
751
|
value: function RenameStmt(node) {
|
|
623
752
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
624
753
|
var output = [];
|
|
754
|
+
|
|
625
755
|
if (node.renameType === 'OBJECT_FUNCTION' || node.renameType === 'OBJECT_FOREIGN_TABLE' || node.renameType === 'OBJECT_FDW' || node.renameType === 'OBJECT_FOREIGN_SERVER') {
|
|
626
756
|
output.push('ALTER');
|
|
627
757
|
output.push((0, _pgsqlEnums.objtypeName)(node.renameType));
|
|
758
|
+
|
|
628
759
|
if (node.missing_ok) {
|
|
629
760
|
output.push('IF EXISTS');
|
|
630
761
|
}
|
|
762
|
+
|
|
631
763
|
output.push(this.deparse(node.object, context));
|
|
632
764
|
output.push('RENAME');
|
|
633
765
|
output.push('TO');
|
|
@@ -635,9 +767,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
635
767
|
} else if (node.renameType === 'OBJECT_ATTRIBUTE') {
|
|
636
768
|
output.push('ALTER');
|
|
637
769
|
output.push((0, _pgsqlEnums.objtypeName)(node.relationType));
|
|
770
|
+
|
|
638
771
|
if (node.missing_ok) {
|
|
639
772
|
output.push('IF EXISTS');
|
|
640
773
|
}
|
|
774
|
+
|
|
641
775
|
output.push(this.RangeVar(node.relation, context));
|
|
642
776
|
output.push('RENAME');
|
|
643
777
|
output.push((0, _pgsqlEnums.objtypeName)(node.renameType));
|
|
@@ -647,9 +781,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
647
781
|
} else if (node.renameType === 'OBJECT_DOMAIN' || node.renameType === 'OBJECT_TYPE') {
|
|
648
782
|
output.push('ALTER');
|
|
649
783
|
output.push((0, _pgsqlEnums.objtypeName)(node.renameType));
|
|
784
|
+
|
|
650
785
|
if (node.missing_ok) {
|
|
651
786
|
output.push('IF EXISTS');
|
|
652
787
|
}
|
|
788
|
+
|
|
653
789
|
var typObj = {
|
|
654
790
|
TypeName: {
|
|
655
791
|
names: node.object
|
|
@@ -662,9 +798,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
662
798
|
} else if (node.renameType === 'OBJECT_SCHEMA') {
|
|
663
799
|
output.push('ALTER');
|
|
664
800
|
output.push((0, _pgsqlEnums.objtypeName)(node.renameType));
|
|
801
|
+
|
|
665
802
|
if (node.missing_ok) {
|
|
666
803
|
output.push('IF EXISTS');
|
|
667
804
|
}
|
|
805
|
+
|
|
668
806
|
output.push(this.quote(node.subname));
|
|
669
807
|
output.push('RENAME');
|
|
670
808
|
output.push('TO');
|
|
@@ -672,9 +810,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
672
810
|
} else if (node.renameType === 'OBJECT_DOMCONSTRAINT') {
|
|
673
811
|
output.push('ALTER');
|
|
674
812
|
output.push('DOMAIN');
|
|
813
|
+
|
|
675
814
|
if (node.missing_ok) {
|
|
676
815
|
output.push('IF EXISTS');
|
|
677
816
|
}
|
|
817
|
+
|
|
678
818
|
var _typObj = {
|
|
679
819
|
TypeName: {
|
|
680
820
|
names: node.object
|
|
@@ -688,18 +828,22 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
688
828
|
} else {
|
|
689
829
|
output.push('ALTER');
|
|
690
830
|
output.push('TABLE');
|
|
831
|
+
|
|
691
832
|
if (node.missing_ok) {
|
|
692
833
|
output.push('IF EXISTS');
|
|
693
834
|
}
|
|
835
|
+
|
|
694
836
|
output.push(this.RangeVar(node.relation, context));
|
|
695
837
|
output.push('RENAME');
|
|
696
838
|
output.push(this.quote(node.subname));
|
|
697
839
|
output.push('TO');
|
|
698
840
|
output.push(this.quote(node.newname));
|
|
699
841
|
}
|
|
842
|
+
|
|
700
843
|
if (node.behavior === 'DROP_CASCADE') {
|
|
701
844
|
output.push('CASCADE');
|
|
702
845
|
}
|
|
846
|
+
|
|
703
847
|
return output.join(' ');
|
|
704
848
|
}
|
|
705
849
|
}, {
|
|
@@ -710,11 +854,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
710
854
|
output.push('ALTER');
|
|
711
855
|
output.push((0, _pgsqlEnums.objtypeName)(node.objectType));
|
|
712
856
|
var unwrapped = unwrapList(node.object);
|
|
857
|
+
|
|
713
858
|
if (Array.isArray(unwrapped)) {
|
|
714
859
|
output.push(this.listQuotes(unwrapped, '.'));
|
|
715
860
|
} else {
|
|
716
861
|
output.push(this.deparse(node.object, context));
|
|
717
862
|
}
|
|
863
|
+
|
|
718
864
|
output.push('OWNER TO');
|
|
719
865
|
output.push(this.RoleSpec(node.newowner, context));
|
|
720
866
|
return output.join(' ');
|
|
@@ -724,30 +870,38 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
724
870
|
value: function AlterObjectSchemaStmt(node) {
|
|
725
871
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
726
872
|
var output = [];
|
|
873
|
+
|
|
727
874
|
if (node.objectType === 'OBJECT_TABLE') {
|
|
728
875
|
output.push('ALTER');
|
|
729
876
|
output.push((0, _pgsqlEnums.objtypeName)(node.objectType));
|
|
877
|
+
|
|
730
878
|
if (node.missing_ok) {
|
|
731
879
|
output.push('IF EXISTS');
|
|
732
880
|
}
|
|
881
|
+
|
|
733
882
|
output.push(this.RangeVar(node.relation, context));
|
|
734
883
|
output.push('SET SCHEMA');
|
|
735
884
|
output.push(this.quote(node.newschema));
|
|
736
885
|
} else {
|
|
737
886
|
output.push('ALTER');
|
|
738
887
|
output.push((0, _pgsqlEnums.objtypeName)(node.objectType));
|
|
888
|
+
|
|
739
889
|
if (node.missing_ok) {
|
|
740
890
|
output.push('IF EXISTS');
|
|
741
891
|
}
|
|
892
|
+
|
|
742
893
|
var unwrapped = unwrapList(node.object);
|
|
894
|
+
|
|
743
895
|
if (Array.isArray(unwrapped)) {
|
|
744
896
|
output.push(this.listQuotes(unwrapped, '.'));
|
|
745
897
|
} else {
|
|
746
898
|
output.push(this.deparse(node.object, context));
|
|
747
899
|
}
|
|
900
|
+
|
|
748
901
|
output.push('SET SCHEMA');
|
|
749
902
|
output.push(this.quote(node.newschema));
|
|
750
903
|
}
|
|
904
|
+
|
|
751
905
|
return output.join(' ');
|
|
752
906
|
}
|
|
753
907
|
}, {
|
|
@@ -756,18 +910,22 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
756
910
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
757
911
|
var output = [this.quote(node.colname)];
|
|
758
912
|
output.push(this.TypeName(node.typeName, context));
|
|
913
|
+
|
|
759
914
|
if (node.raw_default) {
|
|
760
915
|
output.push('USING');
|
|
761
916
|
output.push(this.deparse(node.raw_default, context));
|
|
762
917
|
}
|
|
918
|
+
|
|
763
919
|
if (node.constraints) {
|
|
764
920
|
output.push(this.list(node.constraints, ' ', '', context));
|
|
765
921
|
}
|
|
922
|
+
|
|
766
923
|
if (node.collClause) {
|
|
767
924
|
output.push('COLLATE');
|
|
768
925
|
var str = unwrapList(node.collClause.collname)[0].String.str;
|
|
769
926
|
output.push(this.quote(str));
|
|
770
927
|
}
|
|
928
|
+
|
|
771
929
|
return compact(output).join(' ');
|
|
772
930
|
}
|
|
773
931
|
}, {
|
|
@@ -776,31 +934,39 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
776
934
|
if (node.op === 'SVFOP_CURRENT_DATE') {
|
|
777
935
|
return 'CURRENT_DATE';
|
|
778
936
|
}
|
|
937
|
+
|
|
779
938
|
if (node.op === 'SVFOP_CURRENT_TIMESTAMP') {
|
|
780
939
|
return 'CURRENT_TIMESTAMP';
|
|
781
940
|
}
|
|
941
|
+
|
|
782
942
|
if (node.op === 'SVFOP_CURRENT_USER') {
|
|
783
943
|
return 'CURRENT_USER';
|
|
784
944
|
}
|
|
945
|
+
|
|
785
946
|
if (node.op === 'SVFOP_SESSION_USER') {
|
|
786
947
|
return 'SESSION_USER';
|
|
787
948
|
}
|
|
949
|
+
|
|
788
950
|
throw new Error("op=".concat(node.op, " SQLValueFunction not implemented"));
|
|
789
951
|
}
|
|
790
952
|
}, {
|
|
791
953
|
key: 'ColumnRef',
|
|
792
954
|
value: function ColumnRef(node) {
|
|
793
955
|
var _this7 = this;
|
|
956
|
+
|
|
794
957
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
795
958
|
var KEYWORDS = ['old', 'new'];
|
|
796
959
|
var fields = unwrapList(node.fields).map(function (field) {
|
|
797
960
|
if (field.String) {
|
|
798
961
|
var value = _this7.deparse(field, context);
|
|
962
|
+
|
|
799
963
|
if (context === 'trigger' && KEYWORDS.includes(value.toLowerCase())) {
|
|
800
964
|
return value.toUpperCase();
|
|
801
965
|
}
|
|
966
|
+
|
|
802
967
|
return _this7.quote(value);
|
|
803
968
|
}
|
|
969
|
+
|
|
804
970
|
return _this7.deparse(field, context);
|
|
805
971
|
});
|
|
806
972
|
return fields.join('.');
|
|
@@ -814,6 +980,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
814
980
|
output.push('ON');
|
|
815
981
|
output.push((0, _pgsqlEnums.objtypeName)(node.objtype));
|
|
816
982
|
var object = unwrapList(node.object);
|
|
983
|
+
|
|
817
984
|
if (node.objtype === 'OBJECT_CAST') {
|
|
818
985
|
output.push('(');
|
|
819
986
|
output.push(this.deparse(object[0], context));
|
|
@@ -868,16 +1035,20 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
868
1035
|
} else {
|
|
869
1036
|
output.push(this.deparse(object, context));
|
|
870
1037
|
}
|
|
1038
|
+
|
|
871
1039
|
if (node.objargs) {
|
|
872
1040
|
output.push('(');
|
|
873
1041
|
output.push(this.list(node.objargs, ', ', '', context));
|
|
874
1042
|
output.push(')');
|
|
875
1043
|
}
|
|
876
1044
|
}
|
|
1045
|
+
|
|
877
1046
|
output.push('IS');
|
|
1047
|
+
|
|
878
1048
|
var escapeComment = function escapeComment(str) {
|
|
879
1049
|
return str.replace(/\\/g, '\\');
|
|
880
1050
|
};
|
|
1051
|
+
|
|
881
1052
|
if (node.comment) {
|
|
882
1053
|
if (/[^a-zA-Z0-9]/.test(node.comment)) {
|
|
883
1054
|
// special chars we care about...
|
|
@@ -889,6 +1060,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
889
1060
|
} else {
|
|
890
1061
|
output.push('NULL');
|
|
891
1062
|
}
|
|
1063
|
+
|
|
892
1064
|
return output.join(' ');
|
|
893
1065
|
}
|
|
894
1066
|
}, {
|
|
@@ -897,16 +1069,20 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
897
1069
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
898
1070
|
var output = [];
|
|
899
1071
|
output.push(node.ctename);
|
|
1072
|
+
|
|
900
1073
|
if (node.aliascolnames) {
|
|
901
1074
|
var colnames = this.quote(this.deparseNodes(node.aliascolnames, context));
|
|
902
1075
|
output.push("(".concat(colnames.join(', '), ")"));
|
|
903
1076
|
}
|
|
1077
|
+
|
|
904
1078
|
output.push('AS');
|
|
1079
|
+
|
|
905
1080
|
if (node.ctematerialized === 'CTEMaterializeAlways') {
|
|
906
1081
|
output.push('MATERIALIZED');
|
|
907
1082
|
} else if (node.ctematerialized === 'CTEMaterializeNever') {
|
|
908
1083
|
output.push('NOT MATERIALIZED');
|
|
909
1084
|
}
|
|
1085
|
+
|
|
910
1086
|
output.push((0, _util.format)('(%s)', this.deparse(node.ctequery)));
|
|
911
1087
|
return output.join(' ');
|
|
912
1088
|
}
|
|
@@ -916,49 +1092,63 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
916
1092
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
917
1093
|
var output = [];
|
|
918
1094
|
output.push('CREATE');
|
|
1095
|
+
|
|
919
1096
|
if (node.replace) {
|
|
920
1097
|
output.push('OR REPLACE');
|
|
921
1098
|
}
|
|
1099
|
+
|
|
922
1100
|
switch (node.kind) {
|
|
923
1101
|
case 'OBJECT_AGGREGATE':
|
|
924
1102
|
output.push('AGGREGATE');
|
|
925
1103
|
break;
|
|
1104
|
+
|
|
926
1105
|
case 'OBJECT_OPERATOR':
|
|
927
1106
|
output.push('OPERATOR');
|
|
928
1107
|
break;
|
|
1108
|
+
|
|
929
1109
|
case 'OBJECT_TYPE':
|
|
930
1110
|
output.push('TYPE');
|
|
931
1111
|
break;
|
|
1112
|
+
|
|
932
1113
|
case 'OBJECT_TSPARSER':
|
|
933
1114
|
output.push('TEXT SEARCH PARSER');
|
|
934
1115
|
break;
|
|
1116
|
+
|
|
935
1117
|
case 'OBJECT_TSDICTIONARY':
|
|
936
1118
|
output.push('TEXT SEARCH DICTIONARY');
|
|
937
1119
|
break;
|
|
1120
|
+
|
|
938
1121
|
case 'OBJECT_TSTEMPLATE':
|
|
939
1122
|
output.push('TEXT SEARCH TEMPLATE');
|
|
940
1123
|
break;
|
|
1124
|
+
|
|
941
1125
|
case 'OBJECT_TSCONFIGURATION':
|
|
942
1126
|
output.push('TEXT SEARCH CONFIGURATION');
|
|
943
1127
|
break;
|
|
1128
|
+
|
|
944
1129
|
case 'OBJECT_COLLATION':
|
|
945
1130
|
output.push('COLLATION');
|
|
946
1131
|
break;
|
|
1132
|
+
|
|
947
1133
|
default:
|
|
948
1134
|
throw new Error('DefineStmt not recognized');
|
|
949
1135
|
}
|
|
1136
|
+
|
|
950
1137
|
if (node.if_not_exists) {
|
|
951
1138
|
output.push('IF NOT EXISTS');
|
|
952
1139
|
}
|
|
1140
|
+
|
|
953
1141
|
switch (node.kind) {
|
|
954
1142
|
case 'OBJECT_AGGREGATE':
|
|
955
1143
|
// output.push(this.deparse(node.defnames));
|
|
956
1144
|
output.push(this.list(node.defnames, '.', '', context));
|
|
957
1145
|
break;
|
|
1146
|
+
|
|
958
1147
|
case 'OBJECT_OPERATOR':
|
|
959
|
-
output.push(this.list(node.defnames, '.', '', context));
|
|
960
|
-
|
|
1148
|
+
output.push(this.list(node.defnames, '.', '', context)); // output.push(this.deparse(node.defnames));
|
|
1149
|
+
|
|
961
1150
|
break;
|
|
1151
|
+
|
|
962
1152
|
case 'OBJECT_TYPE':
|
|
963
1153
|
case 'OBJECT_TSPARSER':
|
|
964
1154
|
case 'OBJECT_TSDICTIONARY':
|
|
@@ -967,53 +1157,70 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
967
1157
|
case 'OBJECT_COLLATION':
|
|
968
1158
|
output.push(this.deparse(node.defnames));
|
|
969
1159
|
break;
|
|
1160
|
+
|
|
970
1161
|
default:
|
|
971
1162
|
throw new Error('DefineStmt not recognized');
|
|
972
1163
|
}
|
|
1164
|
+
|
|
973
1165
|
if (!node.oldstyle && node.kind == 'OBJECT_AGGREGATE') {
|
|
974
1166
|
output.push('(');
|
|
975
1167
|
output.push("".concat(this.listQuotes(node.args[0], ',')));
|
|
976
1168
|
output.push(')');
|
|
977
1169
|
}
|
|
1170
|
+
|
|
978
1171
|
var definition = unwrapList(node.definition);
|
|
1172
|
+
|
|
979
1173
|
if (definition.length > 0) {
|
|
980
1174
|
output.push('(');
|
|
1175
|
+
|
|
981
1176
|
for (var n = 0; n < definition.length; n++) {
|
|
982
1177
|
var defElement = definition[n].DefElem;
|
|
983
1178
|
output.push(defElement.defname);
|
|
1179
|
+
|
|
984
1180
|
if (defElement.arg) {
|
|
985
1181
|
output.push('=');
|
|
986
1182
|
output.push(this.deparse(defElement.arg));
|
|
987
1183
|
}
|
|
1184
|
+
|
|
988
1185
|
if (n !== definition.length - 1) {
|
|
989
1186
|
output.push(',');
|
|
990
1187
|
}
|
|
991
1188
|
}
|
|
1189
|
+
|
|
992
1190
|
output.push(')');
|
|
993
1191
|
}
|
|
1192
|
+
|
|
994
1193
|
return output.join(' ');
|
|
995
1194
|
}
|
|
996
1195
|
}, {
|
|
997
1196
|
key: 'DefElem',
|
|
998
1197
|
value: function DefElem(node) {
|
|
999
1198
|
var _this8 = this;
|
|
1199
|
+
|
|
1000
1200
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1201
|
+
|
|
1001
1202
|
if (node.defname === 'transaction_isolation') {
|
|
1002
1203
|
return (0, _util.format)('ISOLATION LEVEL %s', node.arg.A_Const.val.String.str.toUpperCase());
|
|
1003
1204
|
}
|
|
1205
|
+
|
|
1004
1206
|
if (node.defname === 'transaction_read_only') {
|
|
1005
1207
|
return node.arg.A_Const.val.Integer.ival === 0 ? 'READ WRITE' : 'READ ONLY';
|
|
1006
1208
|
}
|
|
1209
|
+
|
|
1007
1210
|
if (node.defname === 'transaction_deferrable') {
|
|
1008
1211
|
return node.arg.A_Const.val.Integer.ival === 0 ? 'NOT DEFERRABLE' : 'DEFERRABLE';
|
|
1009
1212
|
}
|
|
1213
|
+
|
|
1010
1214
|
if (node.defname === 'set') {
|
|
1011
1215
|
return this.deparse(node.arg, context);
|
|
1012
1216
|
}
|
|
1217
|
+
|
|
1013
1218
|
var name = node.defname;
|
|
1219
|
+
|
|
1014
1220
|
if (node.defnamespace) {
|
|
1015
1221
|
name = "".concat(node.defnamespace, ".").concat(node.defname);
|
|
1016
1222
|
}
|
|
1223
|
+
|
|
1017
1224
|
if (context === 'generated' || context === 'sequence') {
|
|
1018
1225
|
switch (name) {
|
|
1019
1226
|
case 'start':
|
|
@@ -1021,35 +1228,44 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1021
1228
|
var start = this.deparse(node.arg, context);
|
|
1022
1229
|
return "START WITH ".concat(start);
|
|
1023
1230
|
}
|
|
1231
|
+
|
|
1024
1232
|
case 'increment':
|
|
1025
1233
|
{
|
|
1026
1234
|
var inc = this.deparse(node.arg, context);
|
|
1235
|
+
|
|
1027
1236
|
if (context === 'sequence') {
|
|
1028
1237
|
// we need 'simple' so it doesn't wrap negative numbers in parens
|
|
1029
1238
|
return "".concat(name, " ").concat(this.deparse(node.arg, 'simple'));
|
|
1030
1239
|
}
|
|
1240
|
+
|
|
1031
1241
|
return "INCREMENT BY ".concat(inc);
|
|
1032
1242
|
}
|
|
1243
|
+
|
|
1033
1244
|
case 'sequence_name':
|
|
1034
1245
|
{
|
|
1035
1246
|
return "SEQUENCE NAME ".concat(this.listQuotes(node.arg, '.'));
|
|
1036
1247
|
}
|
|
1248
|
+
|
|
1037
1249
|
case 'cycle':
|
|
1038
1250
|
{
|
|
1039
1251
|
var on = this.deparse(node.arg, context) + '' === '1';
|
|
1040
1252
|
return on ? 'CYCLE' : 'NO CYCLE';
|
|
1041
1253
|
}
|
|
1254
|
+
|
|
1042
1255
|
case 'minvalue':
|
|
1043
1256
|
{
|
|
1044
1257
|
var off = !node.hasOwnProperty('arg');
|
|
1045
1258
|
return off ? 'NO MINVALUE' : "".concat(name, " ").concat(this.deparse(node.arg, 'simple'));
|
|
1046
1259
|
}
|
|
1260
|
+
|
|
1047
1261
|
case 'maxvalue':
|
|
1048
1262
|
{
|
|
1049
1263
|
var _off = !node.hasOwnProperty('arg');
|
|
1264
|
+
|
|
1050
1265
|
return _off ? 'NO MAXVALUE' : "".concat(name, " ").concat(this.deparse(node.arg, 'simple'));
|
|
1051
1266
|
}
|
|
1052
1267
|
// alter
|
|
1268
|
+
|
|
1053
1269
|
case 'owned_by':
|
|
1054
1270
|
{
|
|
1055
1271
|
var output = [];
|
|
@@ -1059,18 +1275,22 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1059
1275
|
return "OWNED BY ".concat(output.join('.'));
|
|
1060
1276
|
}
|
|
1061
1277
|
// alter
|
|
1278
|
+
|
|
1062
1279
|
case 'restart':
|
|
1063
1280
|
{
|
|
1064
1281
|
if (node.arg) {
|
|
1065
1282
|
return "RESTART WITH ".concat(this.deparse(node.arg, context));
|
|
1066
1283
|
}
|
|
1284
|
+
|
|
1067
1285
|
return "RESTART";
|
|
1068
1286
|
}
|
|
1287
|
+
|
|
1069
1288
|
default:
|
|
1070
1289
|
if (node.arg) {
|
|
1071
1290
|
// we need 'simple' so it doesn't wrap negative numbers in parens
|
|
1072
1291
|
return "".concat(name, " ").concat(this.deparse(node.arg, 'simple'));
|
|
1073
1292
|
}
|
|
1293
|
+
|
|
1074
1294
|
}
|
|
1075
1295
|
} else if (context === 'explain') {
|
|
1076
1296
|
if (node.arg) {
|
|
@@ -1079,6 +1299,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1079
1299
|
} else if (node.arg) {
|
|
1080
1300
|
return "".concat(name, " = ").concat(this.deparse(node.arg, context));
|
|
1081
1301
|
}
|
|
1302
|
+
|
|
1082
1303
|
return name;
|
|
1083
1304
|
}
|
|
1084
1305
|
}, {
|
|
@@ -1093,60 +1314,74 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1093
1314
|
if (node.str[0] === '-') {
|
|
1094
1315
|
return "(".concat(node.str, ")");
|
|
1095
1316
|
}
|
|
1317
|
+
|
|
1096
1318
|
return node.str;
|
|
1097
1319
|
}
|
|
1098
1320
|
}, {
|
|
1099
1321
|
key: 'FuncCall',
|
|
1100
1322
|
value: function FuncCall(node) {
|
|
1101
1323
|
var _this9 = this;
|
|
1324
|
+
|
|
1102
1325
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1103
1326
|
var output = [];
|
|
1104
1327
|
var params = [];
|
|
1328
|
+
|
|
1105
1329
|
if (node.args) {
|
|
1106
1330
|
params = unwrapList(node.args).map(function (item) {
|
|
1107
1331
|
return _this9.deparse(item, context);
|
|
1108
1332
|
});
|
|
1109
|
-
}
|
|
1333
|
+
} // COUNT(*)
|
|
1334
|
+
|
|
1110
1335
|
|
|
1111
|
-
// COUNT(*)
|
|
1112
1336
|
if (node.agg_star) {
|
|
1113
1337
|
params.push('*');
|
|
1114
1338
|
}
|
|
1339
|
+
|
|
1115
1340
|
var name = this.list(node.funcname, '.', '', context);
|
|
1116
1341
|
var order = [];
|
|
1117
1342
|
var withinGroup = node.agg_within_group;
|
|
1343
|
+
|
|
1118
1344
|
if (node.agg_order) {
|
|
1119
1345
|
order.push('ORDER BY');
|
|
1120
1346
|
order.push(this.list(node.agg_order, ', ', '', context));
|
|
1121
1347
|
}
|
|
1348
|
+
|
|
1122
1349
|
var call = [];
|
|
1123
1350
|
call.push(name + '(');
|
|
1351
|
+
|
|
1124
1352
|
if (node.agg_distinct) {
|
|
1125
1353
|
call.push('DISTINCT ');
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
// prepend variadic before the last parameter
|
|
1354
|
+
} // prepend variadic before the last parameter
|
|
1129
1355
|
// SELECT CONCAT('|', VARIADIC ARRAY['1','2','3'])
|
|
1356
|
+
|
|
1357
|
+
|
|
1130
1358
|
if (node.func_variadic) {
|
|
1131
1359
|
params[params.length - 1] = 'VARIADIC ' + params[params.length - 1];
|
|
1132
1360
|
}
|
|
1361
|
+
|
|
1133
1362
|
call.push(params.join(', '));
|
|
1363
|
+
|
|
1134
1364
|
if (order.length && !withinGroup) {
|
|
1135
1365
|
call.push(' ');
|
|
1136
1366
|
call.push(order.join(' '));
|
|
1137
1367
|
}
|
|
1368
|
+
|
|
1138
1369
|
call.push(')');
|
|
1139
1370
|
output.push(compact(call).join(''));
|
|
1371
|
+
|
|
1140
1372
|
if (order.length && withinGroup) {
|
|
1141
1373
|
output.push('WITHIN GROUP');
|
|
1142
1374
|
output.push(parens(order.join(' ')));
|
|
1143
1375
|
}
|
|
1376
|
+
|
|
1144
1377
|
if (node.agg_filter != null) {
|
|
1145
1378
|
output.push((0, _util.format)('FILTER (WHERE %s)', this.deparse(node.agg_filter, context)));
|
|
1146
1379
|
}
|
|
1380
|
+
|
|
1147
1381
|
if (node.over != null) {
|
|
1148
1382
|
output.push((0, _util.format)('OVER %s', this.WindowDef(node.over, context)));
|
|
1149
1383
|
}
|
|
1384
|
+
|
|
1150
1385
|
return output.join(' ');
|
|
1151
1386
|
}
|
|
1152
1387
|
}, {
|
|
@@ -1159,17 +1394,23 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1159
1394
|
key: 'GroupingSet',
|
|
1160
1395
|
value: function GroupingSet(node) {
|
|
1161
1396
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1397
|
+
|
|
1162
1398
|
switch (node.kind) {
|
|
1163
1399
|
case 'GROUPING_SET_EMPTY':
|
|
1164
1400
|
return '()';
|
|
1401
|
+
|
|
1165
1402
|
case 'GROUPING_SET_SIMPLE':
|
|
1166
1403
|
return fail('GroupingSet', node);
|
|
1404
|
+
|
|
1167
1405
|
case 'GROUPING_SET_ROLLUP':
|
|
1168
1406
|
return 'ROLLUP (' + this.list(node.content, ', ', '', context) + ')';
|
|
1407
|
+
|
|
1169
1408
|
case 'GROUPING_SET_CUBE':
|
|
1170
1409
|
return 'CUBE (' + this.list(node.content, ', ', '', context) + ')';
|
|
1410
|
+
|
|
1171
1411
|
case 'GROUPING_SET_SETS':
|
|
1172
1412
|
return 'GROUPING SETS (' + this.list(node.content, ', ', '', context) + ')';
|
|
1413
|
+
|
|
1173
1414
|
default:
|
|
1174
1415
|
return fail('GroupingSet', node);
|
|
1175
1416
|
}
|
|
@@ -1180,39 +1421,50 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1180
1421
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1181
1422
|
var output = [];
|
|
1182
1423
|
output.push('CREATE');
|
|
1424
|
+
|
|
1183
1425
|
if (node.unique) {
|
|
1184
1426
|
output.push('UNIQUE');
|
|
1185
1427
|
}
|
|
1428
|
+
|
|
1186
1429
|
output.push('INDEX');
|
|
1430
|
+
|
|
1187
1431
|
if (node.concurrent) {
|
|
1188
1432
|
output.push('CONCURRENTLY');
|
|
1189
1433
|
}
|
|
1434
|
+
|
|
1190
1435
|
if (node.idxname) {
|
|
1191
1436
|
output.push(node.idxname);
|
|
1192
1437
|
}
|
|
1438
|
+
|
|
1193
1439
|
output.push('ON');
|
|
1194
1440
|
output.push(this.RangeVar(node.relation, context));
|
|
1441
|
+
|
|
1195
1442
|
if (node.accessMethod) {
|
|
1196
1443
|
var accessMethod = node.accessMethod.toUpperCase();
|
|
1444
|
+
|
|
1197
1445
|
if (accessMethod !== 'BTREE') {
|
|
1198
1446
|
output.push('USING');
|
|
1199
1447
|
output.push(accessMethod);
|
|
1200
1448
|
}
|
|
1201
1449
|
}
|
|
1450
|
+
|
|
1202
1451
|
if (node.indexParams) {
|
|
1203
1452
|
output.push('(');
|
|
1204
1453
|
output.push(this.list(node.indexParams, ', ', '', context));
|
|
1205
1454
|
output.push(')');
|
|
1206
1455
|
}
|
|
1456
|
+
|
|
1207
1457
|
if (node.indexIncludingParams) {
|
|
1208
1458
|
output.push('INCLUDE (');
|
|
1209
1459
|
output.push(this.list(node.indexIncludingParams, ', ', '', context));
|
|
1210
1460
|
output.push(')');
|
|
1211
1461
|
}
|
|
1462
|
+
|
|
1212
1463
|
if (node.whereClause) {
|
|
1213
1464
|
output.push('WHERE');
|
|
1214
1465
|
output.push(this.deparse(node.whereClause, context));
|
|
1215
1466
|
}
|
|
1467
|
+
|
|
1216
1468
|
return output.join(' ');
|
|
1217
1469
|
}
|
|
1218
1470
|
}, {
|
|
@@ -1220,18 +1472,23 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1220
1472
|
value: function IndexElem(node) {
|
|
1221
1473
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1222
1474
|
var output = [];
|
|
1475
|
+
|
|
1223
1476
|
if (node.name) {
|
|
1224
1477
|
output.push(node.name);
|
|
1478
|
+
|
|
1225
1479
|
if (node.ordering === 'SORTBY_DESC') {
|
|
1226
1480
|
output.push('DESC');
|
|
1227
1481
|
} else if (node.ordering === 'SORTBY_ASC') {
|
|
1228
1482
|
output.push('ASC');
|
|
1229
1483
|
}
|
|
1484
|
+
|
|
1230
1485
|
return output.join(' ');
|
|
1231
1486
|
}
|
|
1487
|
+
|
|
1232
1488
|
if (node.expr) {
|
|
1233
1489
|
return this.deparse(node.expr, context);
|
|
1234
1490
|
}
|
|
1491
|
+
|
|
1235
1492
|
return fail('IndexElem', node);
|
|
1236
1493
|
}
|
|
1237
1494
|
}, {
|
|
@@ -1239,25 +1496,31 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1239
1496
|
value: function InsertStmt(node) {
|
|
1240
1497
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1241
1498
|
var output = [];
|
|
1499
|
+
|
|
1242
1500
|
if (node.withClause) {
|
|
1243
1501
|
output.push(this.WithClause(node.withClause, context));
|
|
1244
1502
|
}
|
|
1503
|
+
|
|
1245
1504
|
output.push('INSERT INTO');
|
|
1246
1505
|
output.push(this.RangeVar(node.relation, context));
|
|
1247
1506
|
var cols = unwrapList(node.cols);
|
|
1507
|
+
|
|
1248
1508
|
if (cols && cols.length) {
|
|
1249
1509
|
output.push('(');
|
|
1250
1510
|
output.push(this.list(cols, ', ', '', context));
|
|
1251
1511
|
output.push(')');
|
|
1252
1512
|
}
|
|
1513
|
+
|
|
1253
1514
|
if (node.selectStmt) {
|
|
1254
1515
|
output.push(this.deparse(node.selectStmt, context));
|
|
1255
1516
|
} else {
|
|
1256
1517
|
output.push('DEFAULT VALUES');
|
|
1257
1518
|
}
|
|
1519
|
+
|
|
1258
1520
|
if (node.onConflictClause) {
|
|
1259
1521
|
var clause = node.onConflictClause;
|
|
1260
1522
|
output.push('ON CONFLICT');
|
|
1523
|
+
|
|
1261
1524
|
if (clause.infer.indexElems) {
|
|
1262
1525
|
output.push('(');
|
|
1263
1526
|
output.push(this.list(clause.infer.indexElems, ', ', '', context));
|
|
@@ -1266,22 +1529,27 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1266
1529
|
output.push('ON CONSTRAINT');
|
|
1267
1530
|
output.push(clause.infer.conname);
|
|
1268
1531
|
}
|
|
1532
|
+
|
|
1269
1533
|
switch (clause.action) {
|
|
1270
1534
|
case 'ONCONFLICT_NOTHING':
|
|
1271
1535
|
output.push('DO NOTHING');
|
|
1272
1536
|
break;
|
|
1537
|
+
|
|
1273
1538
|
case 'ONCONFLICT_UPDATE':
|
|
1274
1539
|
output.push('DO');
|
|
1275
1540
|
output.push(this.UpdateStmt(clause, context));
|
|
1276
1541
|
break;
|
|
1542
|
+
|
|
1277
1543
|
default:
|
|
1278
1544
|
throw new Error('unhandled CONFLICT CLAUSE');
|
|
1279
1545
|
}
|
|
1280
1546
|
}
|
|
1547
|
+
|
|
1281
1548
|
if (node.returningList) {
|
|
1282
1549
|
output.push('RETURNING');
|
|
1283
1550
|
output.push(this.deparseReturningList(node.returningList, context));
|
|
1284
1551
|
}
|
|
1552
|
+
|
|
1285
1553
|
return output.join(' ');
|
|
1286
1554
|
}
|
|
1287
1555
|
}, {
|
|
@@ -1302,42 +1570,54 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1302
1570
|
value: function DeleteStmt(node) {
|
|
1303
1571
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1304
1572
|
var output = [''];
|
|
1573
|
+
|
|
1305
1574
|
if (node.withClause) {
|
|
1306
1575
|
output.push(this.WithClause(node.withClause, context));
|
|
1307
1576
|
}
|
|
1577
|
+
|
|
1308
1578
|
output.push('DELETE');
|
|
1309
1579
|
output.push('FROM');
|
|
1310
1580
|
output.push(this.RangeVar(node.relation, context));
|
|
1581
|
+
|
|
1311
1582
|
if (node.usingClause) {
|
|
1312
1583
|
output.push('USING');
|
|
1313
1584
|
output.push(this.list(node.usingClause, ', ', '', context));
|
|
1314
1585
|
}
|
|
1586
|
+
|
|
1315
1587
|
if (node.whereClause) {
|
|
1316
1588
|
output.push('WHERE');
|
|
1317
1589
|
output.push(this.deparse(node.whereClause, context));
|
|
1318
1590
|
}
|
|
1591
|
+
|
|
1319
1592
|
if (node.returningList) {
|
|
1320
1593
|
output.push('RETURNING');
|
|
1321
1594
|
output.push(this.deparseReturningList(node.returningList, context));
|
|
1322
1595
|
}
|
|
1596
|
+
|
|
1323
1597
|
return output.join(' ');
|
|
1324
1598
|
}
|
|
1325
1599
|
}, {
|
|
1326
1600
|
key: 'UpdateStmt',
|
|
1327
1601
|
value: function UpdateStmt(node) {
|
|
1328
1602
|
var _this10 = this;
|
|
1603
|
+
|
|
1329
1604
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1330
1605
|
var output = [];
|
|
1606
|
+
|
|
1331
1607
|
if (node.withClause) {
|
|
1332
1608
|
output.push(this.WithClause(node.withClause, context));
|
|
1333
1609
|
}
|
|
1610
|
+
|
|
1334
1611
|
output.push('UPDATE');
|
|
1612
|
+
|
|
1335
1613
|
if (node.relation) {
|
|
1336
1614
|
// onConflictClause no relation..
|
|
1337
1615
|
output.push(this.RangeVar(node.relation, context));
|
|
1338
1616
|
}
|
|
1617
|
+
|
|
1339
1618
|
output.push('SET');
|
|
1340
1619
|
var targetList = unwrapList(node.targetList);
|
|
1620
|
+
|
|
1341
1621
|
if (targetList && targetList.length) {
|
|
1342
1622
|
if (targetList[0].ResTarget && targetList[0].ResTarget.val && targetList[0].ResTarget.val.MultiAssignRef) {
|
|
1343
1623
|
output.push('(');
|
|
@@ -1353,27 +1633,33 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1353
1633
|
}).join(','));
|
|
1354
1634
|
}
|
|
1355
1635
|
}
|
|
1636
|
+
|
|
1356
1637
|
if (node.fromClause) {
|
|
1357
1638
|
output.push('FROM');
|
|
1358
1639
|
output.push(this.list(node.fromClause, ', ', '', context));
|
|
1359
1640
|
}
|
|
1641
|
+
|
|
1360
1642
|
if (node.whereClause) {
|
|
1361
1643
|
output.push('WHERE');
|
|
1362
1644
|
output.push(this.deparse(node.whereClause, context));
|
|
1363
1645
|
}
|
|
1646
|
+
|
|
1364
1647
|
if (node.returningList) {
|
|
1365
1648
|
output.push('RETURNING');
|
|
1366
1649
|
output.push(this.deparseReturningList(node.returningList, context));
|
|
1367
1650
|
}
|
|
1651
|
+
|
|
1368
1652
|
return output.join(' ');
|
|
1369
1653
|
}
|
|
1370
1654
|
}, {
|
|
1371
1655
|
key: 'Integer',
|
|
1372
1656
|
value: function Integer(node) {
|
|
1373
1657
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1658
|
+
|
|
1374
1659
|
if (node.ival < 0 && context !== 'simple') {
|
|
1375
1660
|
return "(".concat(node.ival, ")");
|
|
1376
1661
|
}
|
|
1662
|
+
|
|
1377
1663
|
return node.ival.toString();
|
|
1378
1664
|
}
|
|
1379
1665
|
}, {
|
|
@@ -1388,34 +1674,45 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1388
1674
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1389
1675
|
var output = [];
|
|
1390
1676
|
output.push(this.deparse(node.larg, context));
|
|
1677
|
+
|
|
1391
1678
|
if (node.isNatural) {
|
|
1392
1679
|
output.push('NATURAL');
|
|
1393
1680
|
}
|
|
1681
|
+
|
|
1394
1682
|
var join = null;
|
|
1683
|
+
|
|
1395
1684
|
switch (true) {
|
|
1396
1685
|
case node.jointype === 'JOIN_INNER' && node.quals != null:
|
|
1397
1686
|
join = 'INNER JOIN';
|
|
1398
1687
|
break;
|
|
1688
|
+
|
|
1399
1689
|
case node.jointype === 'JOIN_INNER' && !node.isNatural && !(node.quals != null) && !(node.usingClause != null):
|
|
1400
1690
|
join = 'CROSS JOIN';
|
|
1401
1691
|
break;
|
|
1692
|
+
|
|
1402
1693
|
case node.jointype === 'JOIN_INNER':
|
|
1403
1694
|
join = 'JOIN';
|
|
1404
1695
|
break;
|
|
1696
|
+
|
|
1405
1697
|
case node.jointype === 'JOIN_LEFT':
|
|
1406
1698
|
join = 'LEFT OUTER JOIN';
|
|
1407
1699
|
break;
|
|
1700
|
+
|
|
1408
1701
|
case node.jointype === 'JOIN_FULL':
|
|
1409
1702
|
join = 'FULL OUTER JOIN';
|
|
1410
1703
|
break;
|
|
1704
|
+
|
|
1411
1705
|
case node.jointype === 'JOIN_RIGHT':
|
|
1412
1706
|
join = 'RIGHT OUTER JOIN';
|
|
1413
1707
|
break;
|
|
1708
|
+
|
|
1414
1709
|
default:
|
|
1415
1710
|
fail('JoinExpr', node);
|
|
1416
1711
|
break;
|
|
1417
1712
|
}
|
|
1713
|
+
|
|
1418
1714
|
output.push(join);
|
|
1715
|
+
|
|
1419
1716
|
if (node.rarg) {
|
|
1420
1717
|
// wrap nested join expressions in parens to make the following symmetric:
|
|
1421
1718
|
// select * from int8_tbl x cross join (int4_tbl x cross join lateral (select x.f1) ss)
|
|
@@ -1425,17 +1722,22 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1425
1722
|
output.push(this.deparse(node.rarg, context));
|
|
1426
1723
|
}
|
|
1427
1724
|
}
|
|
1725
|
+
|
|
1428
1726
|
if (node.quals) {
|
|
1429
1727
|
output.push("ON ".concat(this.deparse(node.quals, context)));
|
|
1430
1728
|
}
|
|
1729
|
+
|
|
1431
1730
|
if (node.usingClause) {
|
|
1432
1731
|
var using = this.quote(this.deparseNodes(node.usingClause, context)).join(', ');
|
|
1433
1732
|
output.push("USING (".concat(using, ")"));
|
|
1434
1733
|
}
|
|
1734
|
+
|
|
1435
1735
|
var wrapped = node.rarg.JoinExpr != null || node.alias ? '(' + output.join(' ') + ')' : output.join(' ');
|
|
1736
|
+
|
|
1436
1737
|
if (node.alias) {
|
|
1437
1738
|
return wrapped + ' ' + this.Alias(node.alias, context);
|
|
1438
1739
|
}
|
|
1740
|
+
|
|
1439
1741
|
return wrapped;
|
|
1440
1742
|
}
|
|
1441
1743
|
}, {
|
|
@@ -1443,29 +1745,37 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1443
1745
|
value: function LockingClause(node) {
|
|
1444
1746
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1445
1747
|
var output = [];
|
|
1748
|
+
|
|
1446
1749
|
switch (node.strength) {
|
|
1447
1750
|
case 'LCS_NONE':
|
|
1448
1751
|
output.push('NONE');
|
|
1449
1752
|
break;
|
|
1753
|
+
|
|
1450
1754
|
case 'LCS_FORKEYSHARE':
|
|
1451
1755
|
output.push('FOR KEY SHARE');
|
|
1452
1756
|
break;
|
|
1757
|
+
|
|
1453
1758
|
case 'LCS_FORSHARE':
|
|
1454
1759
|
output.push('FOR SHARE');
|
|
1455
1760
|
break;
|
|
1761
|
+
|
|
1456
1762
|
case 'LCS_FORNOKEYUPDATE':
|
|
1457
1763
|
output.push('FOR NO KEY UPDATE');
|
|
1458
1764
|
break;
|
|
1765
|
+
|
|
1459
1766
|
case 'LCS_FORUPDATE':
|
|
1460
1767
|
output.push('FOR UPDATE');
|
|
1461
1768
|
break;
|
|
1769
|
+
|
|
1462
1770
|
default:
|
|
1463
1771
|
return fail('LockingClause', node);
|
|
1464
1772
|
}
|
|
1773
|
+
|
|
1465
1774
|
if (node.lockedRels) {
|
|
1466
1775
|
output.push('OF');
|
|
1467
1776
|
output.push(this.list(node.lockedRels, ', ', '', context));
|
|
1468
1777
|
}
|
|
1778
|
+
|
|
1469
1779
|
return output.join(' ');
|
|
1470
1780
|
}
|
|
1471
1781
|
}, {
|
|
@@ -1479,9 +1789,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1479
1789
|
output.push('IN');
|
|
1480
1790
|
output.push(LOCK_MODES[node.mode]);
|
|
1481
1791
|
output.push('MODE');
|
|
1792
|
+
|
|
1482
1793
|
if (node.nowait) {
|
|
1483
1794
|
output.push('NOWAIT');
|
|
1484
1795
|
}
|
|
1796
|
+
|
|
1485
1797
|
return output.join(' ');
|
|
1486
1798
|
}
|
|
1487
1799
|
}, {
|
|
@@ -1489,11 +1801,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1489
1801
|
value: function MinMaxExpr(node) {
|
|
1490
1802
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1491
1803
|
var output = [];
|
|
1804
|
+
|
|
1492
1805
|
if (node.op === 'IS_GREATEST') {
|
|
1493
1806
|
output.push('GREATEST');
|
|
1494
1807
|
} else {
|
|
1495
1808
|
output.push('LEAST');
|
|
1496
1809
|
}
|
|
1810
|
+
|
|
1497
1811
|
output.push(parens(this.list(node.args, ', ', '', context)));
|
|
1498
1812
|
return output.join('');
|
|
1499
1813
|
}
|
|
@@ -1517,11 +1831,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1517
1831
|
value: function NullTest(node) {
|
|
1518
1832
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1519
1833
|
var output = [this.deparse(node.arg, context)];
|
|
1834
|
+
|
|
1520
1835
|
if (node.nulltesttype === 'IS_NULL') {
|
|
1521
1836
|
output.push('IS NULL');
|
|
1522
1837
|
} else if (node.nulltesttype === 'IS_NOT_NULL') {
|
|
1523
1838
|
output.push('IS NOT NULL');
|
|
1524
1839
|
}
|
|
1840
|
+
|
|
1525
1841
|
return output.join(' ');
|
|
1526
1842
|
}
|
|
1527
1843
|
}, {
|
|
@@ -1530,6 +1846,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1530
1846
|
if (node.number >= 0) {
|
|
1531
1847
|
return ['$', node.number].join('');
|
|
1532
1848
|
}
|
|
1849
|
+
|
|
1533
1850
|
return '?';
|
|
1534
1851
|
}
|
|
1535
1852
|
}, {
|
|
@@ -1537,40 +1854,52 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1537
1854
|
value: function RangeFunction(node) {
|
|
1538
1855
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1539
1856
|
var output = [];
|
|
1857
|
+
|
|
1540
1858
|
if (node.lateral) {
|
|
1541
1859
|
output.push('LATERAL');
|
|
1542
1860
|
}
|
|
1861
|
+
|
|
1543
1862
|
var funcs = [];
|
|
1544
1863
|
var functions = unwrapList(node.functions);
|
|
1864
|
+
|
|
1545
1865
|
for (var i = 0; i < functions.length; i++) {
|
|
1546
1866
|
var funcCall = unwrapList(functions[i]);
|
|
1547
1867
|
var call = [this.deparse(funcCall[0], context)];
|
|
1548
1868
|
var secondFuncCall = unwrapList(funcCall[1]);
|
|
1869
|
+
|
|
1549
1870
|
if (secondFuncCall && secondFuncCall.length) {
|
|
1550
1871
|
call.push((0, _util.format)('AS (%s)', this.list(secondFuncCall, ', ', '', context)));
|
|
1551
1872
|
}
|
|
1873
|
+
|
|
1552
1874
|
funcs.push(call.join(' '));
|
|
1553
1875
|
}
|
|
1876
|
+
|
|
1554
1877
|
var calls = funcs.join(', ');
|
|
1878
|
+
|
|
1555
1879
|
if (node.is_rowsfrom) {
|
|
1556
1880
|
output.push("ROWS FROM (".concat(calls, ")"));
|
|
1557
1881
|
} else {
|
|
1558
1882
|
output.push(calls);
|
|
1559
1883
|
}
|
|
1884
|
+
|
|
1560
1885
|
if (node.ordinality) {
|
|
1561
1886
|
output.push('WITH ORDINALITY');
|
|
1562
1887
|
}
|
|
1888
|
+
|
|
1563
1889
|
if (node.alias) {
|
|
1564
1890
|
output.push(this.Alias(node.alias, context));
|
|
1565
1891
|
}
|
|
1892
|
+
|
|
1566
1893
|
if (node.coldeflist) {
|
|
1567
1894
|
var defList = this.list(node.coldeflist, ', ', '', context);
|
|
1895
|
+
|
|
1568
1896
|
if (!node.alias) {
|
|
1569
1897
|
output.push(" AS (".concat(defList, ")"));
|
|
1570
1898
|
} else {
|
|
1571
1899
|
output.push("(".concat(defList, ")"));
|
|
1572
1900
|
}
|
|
1573
1901
|
}
|
|
1902
|
+
|
|
1574
1903
|
return output.join(' ');
|
|
1575
1904
|
}
|
|
1576
1905
|
}, {
|
|
@@ -1578,13 +1907,17 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1578
1907
|
value: function RangeSubselect(node) {
|
|
1579
1908
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1580
1909
|
var output = '';
|
|
1910
|
+
|
|
1581
1911
|
if (node.lateral) {
|
|
1582
1912
|
output += 'LATERAL ';
|
|
1583
1913
|
}
|
|
1914
|
+
|
|
1584
1915
|
output += parens(this.deparse(node.subquery, context));
|
|
1916
|
+
|
|
1585
1917
|
if (node.alias) {
|
|
1586
1918
|
return output + ' ' + this.Alias(node.alias, context);
|
|
1587
1919
|
}
|
|
1920
|
+
|
|
1588
1921
|
return output;
|
|
1589
1922
|
}
|
|
1590
1923
|
}, {
|
|
@@ -1595,12 +1928,15 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1595
1928
|
output.push(this.deparse(node.relation, context));
|
|
1596
1929
|
output.push('TABLESAMPLE');
|
|
1597
1930
|
output.push(this.deparse(unwrapList(node.method)[0], context));
|
|
1931
|
+
|
|
1598
1932
|
if (node.args) {
|
|
1599
1933
|
output.push(parens(this.list(node.args, ', ', '', context)));
|
|
1600
1934
|
}
|
|
1935
|
+
|
|
1601
1936
|
if (node.repeatable) {
|
|
1602
1937
|
output.push('REPEATABLE(' + this.deparse(node.repeatable, context) + ')');
|
|
1603
1938
|
}
|
|
1939
|
+
|
|
1604
1940
|
return output.join(' ');
|
|
1605
1941
|
}
|
|
1606
1942
|
}, {
|
|
@@ -1608,32 +1944,40 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1608
1944
|
value: function RangeVar(node) {
|
|
1609
1945
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1610
1946
|
var output = [];
|
|
1947
|
+
|
|
1611
1948
|
if (node.inhOpt === 0) {
|
|
1612
1949
|
output.push('ONLY');
|
|
1613
1950
|
}
|
|
1951
|
+
|
|
1614
1952
|
if (!node.inh && (context.lock || context === 'truncate')) {
|
|
1615
1953
|
output.push('ONLY');
|
|
1616
1954
|
}
|
|
1955
|
+
|
|
1617
1956
|
if (node.relpersistence === 'u') {
|
|
1618
1957
|
output.push('UNLOGGED');
|
|
1619
1958
|
}
|
|
1959
|
+
|
|
1620
1960
|
if (node.relpersistence === 't' && context !== 'view') {
|
|
1621
1961
|
output.push('TEMPORARY TABLE');
|
|
1622
1962
|
}
|
|
1963
|
+
|
|
1623
1964
|
if (node.schemaname != null) {
|
|
1624
1965
|
output.push("".concat(this.quote(node.schemaname), ".").concat(this.quote(node.relname)));
|
|
1625
1966
|
} else {
|
|
1626
1967
|
output.push(this.quote(node.relname));
|
|
1627
1968
|
}
|
|
1969
|
+
|
|
1628
1970
|
if (node.alias) {
|
|
1629
1971
|
output.push(this.Alias(node.alias, context));
|
|
1630
1972
|
}
|
|
1973
|
+
|
|
1631
1974
|
return output.join(' ');
|
|
1632
1975
|
}
|
|
1633
1976
|
}, {
|
|
1634
1977
|
key: 'ResTarget',
|
|
1635
1978
|
value: function ResTarget(node) {
|
|
1636
1979
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1980
|
+
|
|
1637
1981
|
if (context === 'select') {
|
|
1638
1982
|
return compact([this.deparse(node.val, context), this.quote(node.name)]).join(' AS ');
|
|
1639
1983
|
} else if (context === 'update') {
|
|
@@ -1641,15 +1985,18 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1641
1985
|
} else if (!(node.val != null)) {
|
|
1642
1986
|
return this.quote(node.name);
|
|
1643
1987
|
}
|
|
1988
|
+
|
|
1644
1989
|
return fail('ResTarget', node);
|
|
1645
1990
|
}
|
|
1646
1991
|
}, {
|
|
1647
1992
|
key: 'RowExpr',
|
|
1648
1993
|
value: function RowExpr(node) {
|
|
1649
1994
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1995
|
+
|
|
1650
1996
|
if (node.row_format === 'COERCE_IMPLICIT_CAST') {
|
|
1651
1997
|
return parens(this.list(node.args, ', ', '', context));
|
|
1652
1998
|
}
|
|
1999
|
+
|
|
1653
2000
|
return (0, _util.format)('ROW(%s)', this.list(node.args, ', ', '', context));
|
|
1654
2001
|
}
|
|
1655
2002
|
}, {
|
|
@@ -1658,11 +2005,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1658
2005
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1659
2006
|
var output = [];
|
|
1660
2007
|
output.push('EXPLAIN');
|
|
2008
|
+
|
|
1661
2009
|
if (node.options) {
|
|
1662
2010
|
output.push('(');
|
|
1663
2011
|
output.push(this.list(node.options, ', ', '', 'explain'));
|
|
1664
2012
|
output.push(')');
|
|
1665
2013
|
}
|
|
2014
|
+
|
|
1666
2015
|
output.push(this.deparse(node.query, context));
|
|
1667
2016
|
return output.join(' ');
|
|
1668
2017
|
}
|
|
@@ -1670,11 +2019,14 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1670
2019
|
key: 'SelectStmt',
|
|
1671
2020
|
value: function SelectStmt(node) {
|
|
1672
2021
|
var _this11 = this;
|
|
2022
|
+
|
|
1673
2023
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1674
2024
|
var output = [];
|
|
2025
|
+
|
|
1675
2026
|
if (node.withClause) {
|
|
1676
2027
|
output.push(this.WithClause(node.withClause, context));
|
|
1677
2028
|
}
|
|
2029
|
+
|
|
1678
2030
|
if (node.op === 'SETOP_NONE') {
|
|
1679
2031
|
// VALUES select's don't get SELECT
|
|
1680
2032
|
if (node.valuesLists == null) {
|
|
@@ -1682,60 +2034,73 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1682
2034
|
}
|
|
1683
2035
|
} else {
|
|
1684
2036
|
output.push(parens(this.SelectStmt(node.larg, context)));
|
|
2037
|
+
|
|
1685
2038
|
switch (node.op) {
|
|
1686
2039
|
case 'SETOP_NONE':
|
|
1687
2040
|
output.push('NONE');
|
|
1688
2041
|
break;
|
|
2042
|
+
|
|
1689
2043
|
case 'SETOP_UNION':
|
|
1690
2044
|
output.push('UNION');
|
|
1691
2045
|
break;
|
|
2046
|
+
|
|
1692
2047
|
case 'SETOP_INTERSECT':
|
|
1693
2048
|
output.push('INTERSECT');
|
|
1694
2049
|
break;
|
|
2050
|
+
|
|
1695
2051
|
case 'SETOP_EXCEPT':
|
|
1696
2052
|
output.push('EXCEPT');
|
|
1697
2053
|
break;
|
|
2054
|
+
|
|
1698
2055
|
default:
|
|
1699
2056
|
throw new Error('bad SelectStmt op');
|
|
1700
2057
|
}
|
|
2058
|
+
|
|
1701
2059
|
if (node.all) {
|
|
1702
2060
|
output.push('ALL');
|
|
1703
2061
|
}
|
|
2062
|
+
|
|
1704
2063
|
output.push(parens(this.SelectStmt(node.rarg, context)));
|
|
1705
2064
|
}
|
|
2065
|
+
|
|
1706
2066
|
if (node.distinctClause) {
|
|
1707
2067
|
var distinctClause = unwrapList(node.distinctClause);
|
|
1708
|
-
|
|
1709
|
-
// new change distinctClause can be {}
|
|
2068
|
+
|
|
2069
|
+
if (!isEmptyObject(distinctClause[0]) // new change distinctClause can be {}
|
|
1710
2070
|
) {
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
2071
|
+
output.push('DISTINCT ON');
|
|
2072
|
+
var clause = distinctClause.map(function (e) {
|
|
2073
|
+
return _this11.deparse(e, 'select');
|
|
2074
|
+
}).join(",".concat(NEWLINE_CHAR));
|
|
2075
|
+
output.push("(".concat(clause, ")"));
|
|
2076
|
+
} else {
|
|
1717
2077
|
output.push('DISTINCT');
|
|
1718
2078
|
}
|
|
1719
2079
|
}
|
|
2080
|
+
|
|
1720
2081
|
if (node.targetList) {
|
|
1721
2082
|
output.push(indent(unwrapList(node.targetList).map(function (e) {
|
|
1722
2083
|
return _this11.deparse(e, 'select');
|
|
1723
2084
|
}).join(",".concat(NEWLINE_CHAR))));
|
|
1724
2085
|
}
|
|
2086
|
+
|
|
1725
2087
|
if (node.intoClause) {
|
|
1726
2088
|
output.push('INTO');
|
|
1727
2089
|
output.push(indent(this.IntoClause(node.intoClause, context)));
|
|
1728
2090
|
}
|
|
2091
|
+
|
|
1729
2092
|
if (node.fromClause) {
|
|
1730
2093
|
output.push('FROM');
|
|
1731
2094
|
output.push(indent(unwrapList(node.fromClause).map(function (e) {
|
|
1732
2095
|
return _this11.deparse(e, 'from');
|
|
1733
2096
|
}).join(",".concat(NEWLINE_CHAR))));
|
|
1734
2097
|
}
|
|
2098
|
+
|
|
1735
2099
|
if (node.whereClause) {
|
|
1736
2100
|
output.push('WHERE');
|
|
1737
2101
|
output.push(indent(this.deparse(node.whereClause, context)));
|
|
1738
2102
|
}
|
|
2103
|
+
|
|
1739
2104
|
if (node.valuesLists) {
|
|
1740
2105
|
output.push('VALUES');
|
|
1741
2106
|
var lists = unwrapList(node.valuesLists).map(function (list) {
|
|
@@ -1743,50 +2108,62 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1743
2108
|
});
|
|
1744
2109
|
output.push(lists.join(', '));
|
|
1745
2110
|
}
|
|
2111
|
+
|
|
1746
2112
|
if (node.groupClause) {
|
|
1747
2113
|
output.push('GROUP BY');
|
|
1748
2114
|
output.push(indent(unwrapList(node.groupClause).map(function (e) {
|
|
1749
2115
|
return _this11.deparse(e, 'group');
|
|
1750
2116
|
}).join(",".concat(NEWLINE_CHAR))));
|
|
1751
2117
|
}
|
|
2118
|
+
|
|
1752
2119
|
if (node.havingClause) {
|
|
1753
2120
|
output.push('HAVING');
|
|
1754
2121
|
output.push(indent(this.deparse(node.havingClause, context)));
|
|
1755
2122
|
}
|
|
2123
|
+
|
|
1756
2124
|
if (node.windowClause) {
|
|
1757
2125
|
output.push('WINDOW');
|
|
1758
2126
|
var windows = [];
|
|
1759
2127
|
var windowClause = unwrapList(node.windowClause);
|
|
2128
|
+
|
|
1760
2129
|
for (var i = 0; i < windowClause.length; i++) {
|
|
1761
2130
|
var w = windowClause[i];
|
|
1762
2131
|
var window = [];
|
|
2132
|
+
|
|
1763
2133
|
if (w.WindowDef.name) {
|
|
1764
2134
|
window.push(this.quote(w.WindowDef.name) + ' AS');
|
|
1765
2135
|
}
|
|
2136
|
+
|
|
1766
2137
|
window.push(parens(this.deparse(w, 'window')));
|
|
1767
2138
|
windows.push(window.join(' '));
|
|
1768
2139
|
}
|
|
2140
|
+
|
|
1769
2141
|
output.push(windows.join(', '));
|
|
1770
2142
|
}
|
|
2143
|
+
|
|
1771
2144
|
if (node.sortClause) {
|
|
1772
2145
|
output.push('ORDER BY');
|
|
1773
2146
|
output.push(indent(unwrapList(node.sortClause).map(function (e) {
|
|
1774
2147
|
return _this11.deparse(e, 'sort');
|
|
1775
2148
|
}).join(",".concat(NEWLINE_CHAR))));
|
|
1776
2149
|
}
|
|
2150
|
+
|
|
1777
2151
|
if (node.limitCount) {
|
|
1778
2152
|
output.push('LIMIT');
|
|
1779
2153
|
output.push(indent(this.deparse(node.limitCount, context)));
|
|
1780
2154
|
}
|
|
2155
|
+
|
|
1781
2156
|
if (node.limitOffset) {
|
|
1782
2157
|
output.push('OFFSET');
|
|
1783
2158
|
output.push(indent(this.deparse(node.limitOffset, context)));
|
|
1784
2159
|
}
|
|
2160
|
+
|
|
1785
2161
|
if (node.lockingClause) {
|
|
1786
2162
|
node.lockingClause.forEach(function (item) {
|
|
1787
2163
|
return output.push(_this11.deparse(item, context));
|
|
1788
2164
|
});
|
|
1789
2165
|
}
|
|
2166
|
+
|
|
1790
2167
|
return output.join(' ');
|
|
1791
2168
|
}
|
|
1792
2169
|
}, {
|
|
@@ -1795,12 +2172,15 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1795
2172
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1796
2173
|
var output = ['TRUNCATE TABLE'];
|
|
1797
2174
|
output.push(this.list(node.relations, ', ', '', 'truncate'));
|
|
2175
|
+
|
|
1798
2176
|
if (node.restart_seqs) {
|
|
1799
2177
|
output.push('RESTART IDENTITY');
|
|
1800
2178
|
}
|
|
2179
|
+
|
|
1801
2180
|
if (node.behavior === 'DROP_CASCADE') {
|
|
1802
2181
|
output.push('CASCADE');
|
|
1803
2182
|
}
|
|
2183
|
+
|
|
1804
2184
|
return output.join(' ');
|
|
1805
2185
|
}
|
|
1806
2186
|
}, {
|
|
@@ -1810,22 +2190,27 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1810
2190
|
var output = [];
|
|
1811
2191
|
output.push('ALTER DEFAULT PRIVILEGES');
|
|
1812
2192
|
var options = unwrapList(dotty.get(node, 'options'));
|
|
2193
|
+
|
|
1813
2194
|
if (options) {
|
|
1814
2195
|
var elem = options.find(function (el) {
|
|
1815
2196
|
return el.hasOwnProperty('DefElem');
|
|
1816
2197
|
});
|
|
1817
2198
|
var elemDefElemArg = unwrapList(elem.DefElem.arg);
|
|
2199
|
+
|
|
1818
2200
|
if (elem.DefElem.defname === 'schemas') {
|
|
1819
2201
|
output.push('IN SCHEMA');
|
|
1820
2202
|
output.push(elemDefElemArg[0].String.str);
|
|
1821
2203
|
}
|
|
2204
|
+
|
|
1822
2205
|
if (elem.DefElem.defname === 'roles') {
|
|
1823
2206
|
output.push('FOR ROLE');
|
|
1824
2207
|
var roleSpec = elemDefElemArg[0];
|
|
1825
2208
|
output.push(this.deparse(roleSpec, context));
|
|
1826
2209
|
}
|
|
2210
|
+
|
|
1827
2211
|
output.push(NEWLINE_CHAR);
|
|
1828
2212
|
}
|
|
2213
|
+
|
|
1829
2214
|
output.push(this.GrantStmt(node.action, context));
|
|
1830
2215
|
return output.join(' ');
|
|
1831
2216
|
}
|
|
@@ -1836,9 +2221,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1836
2221
|
var output = [];
|
|
1837
2222
|
var ctx = Object.assign({}, context);
|
|
1838
2223
|
output.push('ALTER');
|
|
2224
|
+
|
|
1839
2225
|
if (node.relkind === 'OBJECT_TABLE') {
|
|
1840
2226
|
output.push('TABLE');
|
|
1841
2227
|
var inh = dotty.get(node, 'relation.inh');
|
|
2228
|
+
|
|
1842
2229
|
if (!inh) {
|
|
1843
2230
|
output.push('ONLY');
|
|
1844
2231
|
}
|
|
@@ -1847,9 +2234,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1847
2234
|
} else {
|
|
1848
2235
|
fail('AlterTableStmt', node);
|
|
1849
2236
|
}
|
|
2237
|
+
|
|
1850
2238
|
if (node.missing_ok) {
|
|
1851
2239
|
output.push('IF EXISTS');
|
|
1852
2240
|
}
|
|
2241
|
+
|
|
1853
2242
|
ctx.alterType = node.relkind;
|
|
1854
2243
|
output.push(this.RangeVar(node.relation, ctx));
|
|
1855
2244
|
output.push(this.list(node.cmds, ', ', '', ctx));
|
|
@@ -1861,21 +2250,26 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1861
2250
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1862
2251
|
var output = [];
|
|
1863
2252
|
var subType = 'COLUMN';
|
|
2253
|
+
|
|
1864
2254
|
if (context && context.alterType === 'OBJECT_TYPE') {
|
|
1865
2255
|
subType = 'ATTRIBUTE';
|
|
1866
2256
|
}
|
|
2257
|
+
|
|
1867
2258
|
if (node.subtype === 'AT_AddColumn') {
|
|
1868
2259
|
output.push('ADD');
|
|
1869
2260
|
output.push(subType);
|
|
2261
|
+
|
|
1870
2262
|
if (node.missing_ok) {
|
|
1871
2263
|
output.push('IF NOT EXISTS');
|
|
1872
2264
|
}
|
|
2265
|
+
|
|
1873
2266
|
output.push(this.quote(node.name));
|
|
1874
2267
|
output.push(this.deparse(node.def, context));
|
|
1875
2268
|
} else if (node.subtype === 'AT_ColumnDefault') {
|
|
1876
2269
|
output.push('ALTER');
|
|
1877
2270
|
output.push(subType);
|
|
1878
2271
|
output.push(this.quote(node.name));
|
|
2272
|
+
|
|
1879
2273
|
if (node.def) {
|
|
1880
2274
|
output.push('SET DEFAULT');
|
|
1881
2275
|
output.push(this.deparse(node.def, context));
|
|
@@ -1909,6 +2303,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1909
2303
|
output.push('ALTER');
|
|
1910
2304
|
output.push(this.quote(node.name));
|
|
1911
2305
|
output.push('SET STORAGE');
|
|
2306
|
+
|
|
1912
2307
|
if (node.def) {
|
|
1913
2308
|
output.push(this.deparse(node.def, context));
|
|
1914
2309
|
} else {
|
|
@@ -1917,9 +2312,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1917
2312
|
} else if (node.subtype === 'AT_DropColumn') {
|
|
1918
2313
|
output.push('DROP');
|
|
1919
2314
|
output.push(subType);
|
|
2315
|
+
|
|
1920
2316
|
if (node.missing_ok) {
|
|
1921
2317
|
output.push('IF EXISTS');
|
|
1922
2318
|
}
|
|
2319
|
+
|
|
1923
2320
|
output.push(this.quote(node.name));
|
|
1924
2321
|
} else if (node.subtype === 'AT_AddConstraint') {
|
|
1925
2322
|
// output.push('ADD CONSTRAINT');
|
|
@@ -1930,9 +2327,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1930
2327
|
output.push(this.quote(node.name, context));
|
|
1931
2328
|
} else if (node.subtype === 'AT_DropConstraint') {
|
|
1932
2329
|
output.push('DROP CONSTRAINT');
|
|
2330
|
+
|
|
1933
2331
|
if (node.missing_ok) {
|
|
1934
2332
|
output.push('IF EXISTS');
|
|
1935
2333
|
}
|
|
2334
|
+
|
|
1936
2335
|
output.push(this.quote(node.name));
|
|
1937
2336
|
} else if (node.subtype === 'AT_AlterColumnType') {
|
|
1938
2337
|
output.push('ALTER');
|
|
@@ -1978,8 +2377,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1978
2377
|
output.push('OF');
|
|
1979
2378
|
output.push(this.deparse(node.def, context));
|
|
1980
2379
|
} else if (node.subtype === 'AT_DropOf') {
|
|
1981
|
-
output.push('NOT OF');
|
|
1982
|
-
//output.push(this.deparse(node.def));
|
|
2380
|
+
output.push('NOT OF'); //output.push(this.deparse(node.def));
|
|
1983
2381
|
} else if (node.subtype === 'AT_EnableRowSecurity') {
|
|
1984
2382
|
output.push('ENABLE ROW LEVEL SECURITY');
|
|
1985
2383
|
} else if (node.subtype === 'AT_DisableRowSecurity') {
|
|
@@ -1989,9 +2387,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
1989
2387
|
} else if (node.subtype === 'AT_NoForceRowSecurity') {
|
|
1990
2388
|
output.push('NO FORCE ROW SECURITY');
|
|
1991
2389
|
}
|
|
2390
|
+
|
|
1992
2391
|
if (node.behavior === 'DROP_CASCADE') {
|
|
1993
2392
|
output.push('CASCADE');
|
|
1994
2393
|
}
|
|
2394
|
+
|
|
1995
2395
|
return output.join(' ');
|
|
1996
2396
|
}
|
|
1997
2397
|
}, {
|
|
@@ -2026,23 +2426,29 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2026
2426
|
}
|
|
2027
2427
|
};
|
|
2028
2428
|
output.push(this.deparse(typObj, context));
|
|
2429
|
+
|
|
2029
2430
|
if (node.newVal) {
|
|
2030
2431
|
output.push('ADD VALUE');
|
|
2031
2432
|
var result = node.newVal.replace(/'/g, "''");
|
|
2032
2433
|
output.push("'".concat(result, "'"));
|
|
2033
2434
|
}
|
|
2435
|
+
|
|
2034
2436
|
if (node.newValNeighbor) {
|
|
2035
2437
|
if (node.newValIsAfter) {
|
|
2036
2438
|
output.push('AFTER');
|
|
2037
2439
|
} else {
|
|
2038
2440
|
output.push('BEFORE');
|
|
2039
2441
|
}
|
|
2442
|
+
|
|
2040
2443
|
var _result = node.newValNeighbor.replace(/'/g, "''");
|
|
2444
|
+
|
|
2041
2445
|
output.push("'".concat(_result, "'"));
|
|
2042
2446
|
}
|
|
2447
|
+
|
|
2043
2448
|
if (node.behavior === 'DROP_CASCADE') {
|
|
2044
2449
|
output.push('CASCADE');
|
|
2045
2450
|
}
|
|
2451
|
+
|
|
2046
2452
|
return output.join(' ');
|
|
2047
2453
|
}
|
|
2048
2454
|
}, {
|
|
@@ -2057,6 +2463,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2057
2463
|
}
|
|
2058
2464
|
};
|
|
2059
2465
|
output.push(this.deparse(typObj, context));
|
|
2466
|
+
|
|
2060
2467
|
if (node.subtype === 'C') {
|
|
2061
2468
|
output.push('ADD');
|
|
2062
2469
|
output.push(this.deparse(node.def, context));
|
|
@@ -2069,32 +2476,40 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2069
2476
|
output.push('CONSTRAINT');
|
|
2070
2477
|
output.push(this.quote(node.name));
|
|
2071
2478
|
}
|
|
2479
|
+
|
|
2072
2480
|
if (node.behavior === 'DROP_CASCADE') {
|
|
2073
2481
|
output.push('CASCADE');
|
|
2074
2482
|
}
|
|
2483
|
+
|
|
2075
2484
|
return output.join(' ');
|
|
2076
2485
|
}
|
|
2077
2486
|
}, {
|
|
2078
2487
|
key: 'CreateExtensionStmt',
|
|
2079
2488
|
value: function CreateExtensionStmt(node) {
|
|
2080
2489
|
var _this12 = this;
|
|
2490
|
+
|
|
2081
2491
|
var output = [];
|
|
2082
2492
|
output.push('CREATE EXTENSION');
|
|
2493
|
+
|
|
2083
2494
|
if (node.if_not_exists) {
|
|
2084
2495
|
output.push('IF NOT EXISTS');
|
|
2085
2496
|
}
|
|
2497
|
+
|
|
2086
2498
|
output.push(this.quote(node.extname));
|
|
2499
|
+
|
|
2087
2500
|
if (node.options) {
|
|
2088
2501
|
node.options.forEach(function (opt) {
|
|
2089
2502
|
if (opt.DefElem.defname === 'cascade' && opt.DefElem.arg.Integer.ival === 1) {
|
|
2090
2503
|
output.push('CASCADE');
|
|
2091
2504
|
}
|
|
2505
|
+
|
|
2092
2506
|
if (opt.DefElem.defname === 'schema') {
|
|
2093
2507
|
output.push('WITH SCHEMA');
|
|
2094
2508
|
output.push(_this12.quote(_this12.deparse(opt.DefElem.arg)));
|
|
2095
2509
|
}
|
|
2096
2510
|
});
|
|
2097
2511
|
}
|
|
2512
|
+
|
|
2098
2513
|
return output.join(' ');
|
|
2099
2514
|
}
|
|
2100
2515
|
}, {
|
|
@@ -2104,14 +2519,18 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2104
2519
|
var output = [];
|
|
2105
2520
|
output.push('DROP');
|
|
2106
2521
|
output.push((0, _pgsqlEnums.objtypeName)(node.removeType));
|
|
2522
|
+
|
|
2107
2523
|
if (node.missing_ok) {
|
|
2108
2524
|
output.push('IF EXISTS');
|
|
2109
2525
|
}
|
|
2526
|
+
|
|
2110
2527
|
var stmts = [];
|
|
2111
2528
|
var objects = unwrapList(node.objects);
|
|
2529
|
+
|
|
2112
2530
|
for (var s = 0; s < objects.length; s++) {
|
|
2113
2531
|
var children = unwrapList(objects[s]);
|
|
2114
2532
|
var stmt = [];
|
|
2533
|
+
|
|
2115
2534
|
if (node.removeType === 'OBJECT_TABLE' || node.removeType === 'OBJECT_CONVERSION' || node.removeType === 'OBJECT_COLLATION' || node.removeType === 'OBJECT_MATVIEW' || node.removeType === 'OBJECT_INDEX' || node.removeType === 'OBJECT_FOREIGN_TABLE') {
|
|
2116
2535
|
if (children.length === 1) {
|
|
2117
2536
|
stmt.push(this.quote(this.deparse(children[0])));
|
|
@@ -2167,15 +2586,14 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2167
2586
|
stmt.push(this.listQuotes(children, '.'));
|
|
2168
2587
|
} else {
|
|
2169
2588
|
throw new Error('bad drop value stmt: ' + JSON.stringify(node, null, 2));
|
|
2170
|
-
}
|
|
2171
|
-
|
|
2589
|
+
} // } else if (node.removeType === 'OBJECT_OPERATOR') {
|
|
2590
|
+
|
|
2172
2591
|
} else if (node.removeType === 'OBJECT_CAST') {
|
|
2173
2592
|
stmt.push('(');
|
|
2174
2593
|
stmt.push(this.deparse(children[0], context));
|
|
2175
2594
|
stmt.push('AS');
|
|
2176
2595
|
stmt.push(this.deparse(children[1], context));
|
|
2177
|
-
stmt.push(')');
|
|
2178
|
-
// } else if (node.removeType === 'OBJECT_OPERATOR') {
|
|
2596
|
+
stmt.push(')'); // } else if (node.removeType === 'OBJECT_OPERATOR') {
|
|
2179
2597
|
// stmt.push(this.deparse(children, 'noquotes')); // in this case children is not an array
|
|
2180
2598
|
} else if (node.removeType === 'OBJECT_AGGREGATE') {
|
|
2181
2599
|
stmt.push(this.deparse(children, context)); // in this case children is not an array
|
|
@@ -2194,12 +2612,16 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2194
2612
|
} else {
|
|
2195
2613
|
throw new Error('bad drop stmt: ' + JSON.stringify(node, null, 2));
|
|
2196
2614
|
}
|
|
2615
|
+
|
|
2197
2616
|
stmts.push(stmt.join(' '));
|
|
2198
2617
|
}
|
|
2618
|
+
|
|
2199
2619
|
output.push(stmts.join(','));
|
|
2620
|
+
|
|
2200
2621
|
if (node.behavior === 'DROP_CASCADE') {
|
|
2201
2622
|
output.push('CASCADE');
|
|
2202
2623
|
}
|
|
2624
|
+
|
|
2203
2625
|
return output.join(' ');
|
|
2204
2626
|
}
|
|
2205
2627
|
}, {
|
|
@@ -2209,34 +2631,40 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2209
2631
|
var output = [];
|
|
2210
2632
|
output.push('CREATE POLICY');
|
|
2211
2633
|
output.push(this.quote(node.policy_name));
|
|
2634
|
+
|
|
2212
2635
|
if (node.table) {
|
|
2213
2636
|
output.push('ON');
|
|
2214
2637
|
output.push(this.RangeVar(node.table, context));
|
|
2215
2638
|
}
|
|
2216
|
-
|
|
2217
|
-
|
|
2639
|
+
|
|
2640
|
+
if (node.permissive) {// permissive is the default!
|
|
2218
2641
|
} else {
|
|
2219
2642
|
output.push('AS');
|
|
2220
2643
|
output.push('RESTRICTIVE');
|
|
2221
2644
|
}
|
|
2645
|
+
|
|
2222
2646
|
if (node.cmd_name) {
|
|
2223
2647
|
output.push('FOR');
|
|
2224
2648
|
output.push(node.cmd_name.toUpperCase());
|
|
2225
2649
|
}
|
|
2650
|
+
|
|
2226
2651
|
output.push('TO');
|
|
2227
2652
|
output.push(this.list(node.roles));
|
|
2653
|
+
|
|
2228
2654
|
if (node.qual) {
|
|
2229
2655
|
output.push('USING');
|
|
2230
2656
|
output.push('(');
|
|
2231
2657
|
output.push(this.deparse(node.qual, context));
|
|
2232
2658
|
output.push(')');
|
|
2233
2659
|
}
|
|
2660
|
+
|
|
2234
2661
|
if (node.with_check) {
|
|
2235
2662
|
output.push('WITH CHECK');
|
|
2236
2663
|
output.push('(');
|
|
2237
2664
|
output.push(this.deparse(node.with_check, context));
|
|
2238
2665
|
output.push(')');
|
|
2239
2666
|
}
|
|
2667
|
+
|
|
2240
2668
|
return output.join(' ');
|
|
2241
2669
|
}
|
|
2242
2670
|
}, {
|
|
@@ -2246,24 +2674,29 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2246
2674
|
var output = [];
|
|
2247
2675
|
output.push('ALTER POLICY');
|
|
2248
2676
|
output.push(this.quote(node.policy_name));
|
|
2677
|
+
|
|
2249
2678
|
if (node.table) {
|
|
2250
2679
|
output.push('ON');
|
|
2251
2680
|
output.push(this.RangeVar(node.table, context));
|
|
2252
2681
|
}
|
|
2682
|
+
|
|
2253
2683
|
output.push('TO');
|
|
2254
2684
|
output.push(this.list(node.roles));
|
|
2685
|
+
|
|
2255
2686
|
if (node.qual) {
|
|
2256
2687
|
output.push('USING');
|
|
2257
2688
|
output.push('(');
|
|
2258
2689
|
output.push(this.deparse(node.qual, context));
|
|
2259
2690
|
output.push(')');
|
|
2260
2691
|
}
|
|
2692
|
+
|
|
2261
2693
|
if (node.with_check) {
|
|
2262
2694
|
output.push('WITH CHECK');
|
|
2263
2695
|
output.push('(');
|
|
2264
2696
|
output.push(this.deparse(node.with_check, context));
|
|
2265
2697
|
output.push(')');
|
|
2266
2698
|
}
|
|
2699
|
+
|
|
2267
2700
|
return output.join(' ');
|
|
2268
2701
|
}
|
|
2269
2702
|
}, {
|
|
@@ -2273,55 +2706,67 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2273
2706
|
var output = [];
|
|
2274
2707
|
output.push('CREATE');
|
|
2275
2708
|
if (node.replace) output.push('OR REPLACE');
|
|
2709
|
+
|
|
2276
2710
|
if (node.view.relpersistence === 't') {
|
|
2277
2711
|
output.push('TEMPORARY');
|
|
2278
2712
|
}
|
|
2713
|
+
|
|
2279
2714
|
output.push('VIEW');
|
|
2280
2715
|
output.push(this.RangeVar(node.view, 'view'));
|
|
2716
|
+
|
|
2281
2717
|
if (node.aliases) {
|
|
2282
2718
|
output.push('(');
|
|
2283
2719
|
output.push(this.list(node.aliases, ', ', '', context));
|
|
2284
2720
|
output.push(')');
|
|
2285
2721
|
}
|
|
2722
|
+
|
|
2286
2723
|
output.push('AS');
|
|
2287
2724
|
output.push(this.deparse(node.query, context));
|
|
2725
|
+
|
|
2288
2726
|
if (node.withCheckOption === 'LOCAL_CHECK_OPTION') {
|
|
2289
2727
|
output.push('WITH LOCAL CHECK OPTION');
|
|
2290
2728
|
} else if (node.withCheckOption === 'CASCADED_CHECK_OPTION') {
|
|
2291
2729
|
output.push('WITH CASCADED CHECK OPTION');
|
|
2292
2730
|
}
|
|
2731
|
+
|
|
2293
2732
|
return output.join(' ');
|
|
2294
2733
|
}
|
|
2295
2734
|
}, {
|
|
2296
2735
|
key: 'CreateSeqStmt',
|
|
2297
2736
|
value: function CreateSeqStmt(node) {
|
|
2298
2737
|
var _this13 = this;
|
|
2738
|
+
|
|
2299
2739
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2300
2740
|
var output = [];
|
|
2301
2741
|
output.push('CREATE SEQUENCE');
|
|
2302
2742
|
output.push(this.RangeVar(node.sequence, context));
|
|
2303
2743
|
var options = unwrapList(node.options);
|
|
2744
|
+
|
|
2304
2745
|
if (options && options.length) {
|
|
2305
2746
|
options.forEach(function (opt) {
|
|
2306
2747
|
output.push(_this13.deparse(opt, 'sequence'));
|
|
2307
2748
|
});
|
|
2308
2749
|
}
|
|
2750
|
+
|
|
2309
2751
|
return output.join(' ');
|
|
2310
2752
|
}
|
|
2311
2753
|
}, {
|
|
2312
2754
|
key: 'AlterSeqStmt',
|
|
2313
2755
|
value: function AlterSeqStmt(node) {
|
|
2314
2756
|
var _this14 = this;
|
|
2757
|
+
|
|
2315
2758
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2316
2759
|
var output = [];
|
|
2317
2760
|
output.push('ALTER SEQUENCE');
|
|
2318
2761
|
output.push(this.RangeVar(node.sequence, context));
|
|
2319
2762
|
var options = unwrapList(node.options);
|
|
2763
|
+
|
|
2320
2764
|
if (options && options.length) {
|
|
2321
2765
|
options.forEach(function (opt) {
|
|
2322
2766
|
output.push(_this14.deparse(opt, 'sequence'));
|
|
2323
2767
|
});
|
|
2324
2768
|
}
|
|
2769
|
+
|
|
2325
2770
|
return output.join(' ');
|
|
2326
2771
|
}
|
|
2327
2772
|
}, {
|
|
@@ -2330,14 +2775,17 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2330
2775
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2331
2776
|
var output = ['CREATE'];
|
|
2332
2777
|
var relpersistence = dotty.get(node, 'into.rel.relpersistence');
|
|
2778
|
+
|
|
2333
2779
|
if (node.relkind === 'OBJECT_MATVIEW') {
|
|
2334
2780
|
output.push('MATERIALIZED VIEW');
|
|
2335
2781
|
} else if (relpersistence !== 't') {
|
|
2336
2782
|
output.push('TABLE');
|
|
2783
|
+
|
|
2337
2784
|
if (node.if_not_exists) {
|
|
2338
2785
|
output.push('IF NOT EXISTS');
|
|
2339
2786
|
}
|
|
2340
2787
|
}
|
|
2788
|
+
|
|
2341
2789
|
output.push(this.IntoClause(node.into, context));
|
|
2342
2790
|
output.push('AS');
|
|
2343
2791
|
output.push(this.deparse(node.query, context));
|
|
@@ -2347,17 +2795,18 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2347
2795
|
key: 'CreateTrigStmt',
|
|
2348
2796
|
value: function CreateTrigStmt(node) {
|
|
2349
2797
|
var _this15 = this;
|
|
2798
|
+
|
|
2350
2799
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2351
2800
|
var output = [];
|
|
2352
2801
|
output.push('CREATE');
|
|
2802
|
+
|
|
2353
2803
|
if (node.isconstraint) {
|
|
2354
2804
|
output.push('CONSTRAINT');
|
|
2355
2805
|
}
|
|
2806
|
+
|
|
2356
2807
|
output.push('TRIGGER');
|
|
2357
2808
|
output.push(this.quote(node.trigname));
|
|
2358
|
-
output.push(NEWLINE_CHAR);
|
|
2359
|
-
|
|
2360
|
-
// int16 timing; BEFORE, AFTER, or INSTEAD
|
|
2809
|
+
output.push(NEWLINE_CHAR); // int16 timing; BEFORE, AFTER, or INSTEAD
|
|
2361
2810
|
|
|
2362
2811
|
if (node.timing === 64) {
|
|
2363
2812
|
output.push('INSTEAD OF');
|
|
@@ -2365,15 +2814,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2365
2814
|
output.push('BEFORE');
|
|
2366
2815
|
} else {
|
|
2367
2816
|
output.push('AFTER');
|
|
2368
|
-
}
|
|
2369
|
-
|
|
2370
|
-
// int16 events; "OR" of INSERT/UPDATE/DELETE/TRUNCATE
|
|
2371
|
-
|
|
2817
|
+
} // int16 events; "OR" of INSERT/UPDATE/DELETE/TRUNCATE
|
|
2372
2818
|
// 4 = 0b000100 (insert)
|
|
2373
2819
|
// 8 = 0b001000 (delete)
|
|
2374
2820
|
// 16 = 0b010000 (update)
|
|
2375
2821
|
// 32 = 0b100000 (TRUNCATE)
|
|
2376
2822
|
|
|
2823
|
+
|
|
2377
2824
|
var TRIGGER_EVENTS = {
|
|
2378
2825
|
INSERT: 4,
|
|
2379
2826
|
DELETE: 8,
|
|
@@ -2381,59 +2828,68 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2381
2828
|
TRUNCATE: 32
|
|
2382
2829
|
};
|
|
2383
2830
|
var events = [];
|
|
2831
|
+
|
|
2384
2832
|
if ((TRIGGER_EVENTS.INSERT & node.events) === TRIGGER_EVENTS.INSERT) {
|
|
2385
2833
|
events.push('INSERT');
|
|
2386
2834
|
}
|
|
2835
|
+
|
|
2387
2836
|
if ((TRIGGER_EVENTS.UPDATE & node.events) === TRIGGER_EVENTS.UPDATE) {
|
|
2388
2837
|
events.push('UPDATE');
|
|
2389
2838
|
}
|
|
2839
|
+
|
|
2390
2840
|
if ((TRIGGER_EVENTS.DELETE & node.events) === TRIGGER_EVENTS.DELETE) {
|
|
2391
2841
|
events.push('DELETE');
|
|
2392
2842
|
}
|
|
2843
|
+
|
|
2393
2844
|
if ((TRIGGER_EVENTS.TRUNCATE & node.events) === TRIGGER_EVENTS.TRUNCATE) {
|
|
2394
2845
|
events.push('TRUNCATE');
|
|
2395
|
-
}
|
|
2846
|
+
} // events
|
|
2396
2847
|
|
|
2397
|
-
// events
|
|
2398
|
-
output.push(events.join(' OR '));
|
|
2399
2848
|
|
|
2400
|
-
// columns
|
|
2849
|
+
output.push(events.join(' OR ')); // columns
|
|
2850
|
+
|
|
2401
2851
|
if (node.columns) {
|
|
2402
2852
|
output.push('OF');
|
|
2403
2853
|
output.push(this.list(node.columns, ', ', '', context));
|
|
2404
|
-
}
|
|
2854
|
+
} // ON
|
|
2855
|
+
|
|
2405
2856
|
|
|
2406
|
-
// ON
|
|
2407
2857
|
output.push('ON');
|
|
2408
2858
|
output.push(this.RangeVar(node.relation, context));
|
|
2409
2859
|
output.push(NEWLINE_CHAR);
|
|
2860
|
+
|
|
2410
2861
|
if (node.transitionRels) {
|
|
2411
2862
|
output.push('REFERENCING');
|
|
2412
2863
|
node.transitionRels.forEach(function (_ref) {
|
|
2413
2864
|
var TriggerTransition = _ref.TriggerTransition;
|
|
2865
|
+
|
|
2414
2866
|
if (TriggerTransition.isNew === true && TriggerTransition.isTable === true) {
|
|
2415
2867
|
output.push("NEW TABLE AS ".concat(TriggerTransition.name));
|
|
2416
2868
|
} else if (TriggerTransition.isNew !== true && TriggerTransition.isTable === true) {
|
|
2417
2869
|
output.push("OLD TABLE AS ".concat(TriggerTransition.name));
|
|
2418
2870
|
}
|
|
2419
2871
|
});
|
|
2420
|
-
}
|
|
2872
|
+
} // opts
|
|
2873
|
+
|
|
2421
2874
|
|
|
2422
|
-
// opts
|
|
2423
2875
|
if (node.deferrable || node.initdeferred) {
|
|
2424
2876
|
if (node.deferrable) {
|
|
2425
2877
|
output.push('DEFERRABLE');
|
|
2426
2878
|
}
|
|
2879
|
+
|
|
2427
2880
|
if (node.deferrable) {
|
|
2428
2881
|
output.push('INITIALLY DEFERRED');
|
|
2429
2882
|
}
|
|
2883
|
+
|
|
2430
2884
|
output.push(NEWLINE_CHAR);
|
|
2431
2885
|
}
|
|
2886
|
+
|
|
2432
2887
|
if (node.row) {
|
|
2433
2888
|
output.push("FOR EACH ROW".concat(NEWLINE_CHAR));
|
|
2434
2889
|
} else {
|
|
2435
2890
|
output.push("FOR EACH STATEMENT".concat(NEWLINE_CHAR));
|
|
2436
2891
|
}
|
|
2892
|
+
|
|
2437
2893
|
if (node.whenClause) {
|
|
2438
2894
|
output.push('WHEN');
|
|
2439
2895
|
output.push('(');
|
|
@@ -2441,18 +2897,22 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2441
2897
|
output.push(')');
|
|
2442
2898
|
output.push(NEWLINE_CHAR);
|
|
2443
2899
|
}
|
|
2900
|
+
|
|
2444
2901
|
output.push('EXECUTE PROCEDURE');
|
|
2445
2902
|
output.push(this.listQuotes(node.funcname).split(',').join('.'));
|
|
2446
2903
|
output.push('(');
|
|
2447
2904
|
var args = [];
|
|
2905
|
+
|
|
2448
2906
|
if (node.args) {
|
|
2449
2907
|
args = unwrapList(node.args);
|
|
2450
|
-
}
|
|
2451
|
-
|
|
2908
|
+
} // seems that it's only parsing strings?
|
|
2909
|
+
|
|
2910
|
+
|
|
2452
2911
|
args = args.map(function (arg) {
|
|
2453
2912
|
if (arg.String !== undefined && arg.String.str !== undefined) {
|
|
2454
2913
|
return "'".concat(arg.String.str, "'");
|
|
2455
2914
|
}
|
|
2915
|
+
|
|
2456
2916
|
return _this15.deparse(arg, context);
|
|
2457
2917
|
}).filter(function (a) {
|
|
2458
2918
|
return a;
|
|
@@ -2470,9 +2930,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2470
2930
|
output.push(this.list(node.domainname, '.', '', context));
|
|
2471
2931
|
output.push('AS');
|
|
2472
2932
|
output.push(this.TypeName(node.typeName, context));
|
|
2933
|
+
|
|
2473
2934
|
if (node.constraints) {
|
|
2474
2935
|
output.push(this.list(node.constraints, ', ', '', context));
|
|
2475
2936
|
}
|
|
2937
|
+
|
|
2476
2938
|
return output.join(' ');
|
|
2477
2939
|
}
|
|
2478
2940
|
}, {
|
|
@@ -2481,24 +2943,29 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2481
2943
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2482
2944
|
var output = [];
|
|
2483
2945
|
var relpersistence = dotty.get(node, 'relation.relpersistence');
|
|
2946
|
+
|
|
2484
2947
|
if (relpersistence === 't') {
|
|
2485
2948
|
output.push('CREATE');
|
|
2486
2949
|
} else {
|
|
2487
2950
|
output.push('CREATE TABLE');
|
|
2951
|
+
|
|
2488
2952
|
if (node.if_not_exists) {
|
|
2489
2953
|
output.push('IF NOT EXISTS');
|
|
2490
2954
|
}
|
|
2491
2955
|
}
|
|
2956
|
+
|
|
2492
2957
|
output.push(this.RangeVar(node.relation, context));
|
|
2493
2958
|
output.push("(".concat(NEWLINE_CHAR));
|
|
2494
2959
|
output.push(this.list(node.tableElts, ",".concat(NEWLINE_CHAR), TAB_CHAR, context));
|
|
2495
2960
|
output.push("".concat(NEWLINE_CHAR, ")"));
|
|
2961
|
+
|
|
2496
2962
|
if (node.hasOwnProperty('inhRelations')) {
|
|
2497
2963
|
output.push('INHERITS');
|
|
2498
2964
|
output.push('(');
|
|
2499
2965
|
output.push(this.list(node.inhRelations, ', ', '', context));
|
|
2500
2966
|
output.push(')');
|
|
2501
2967
|
}
|
|
2968
|
+
|
|
2502
2969
|
if (node.options) {
|
|
2503
2970
|
// TODO was this deprecated?
|
|
2504
2971
|
node.options.forEach(function (opt) {
|
|
@@ -2511,6 +2978,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2511
2978
|
}
|
|
2512
2979
|
});
|
|
2513
2980
|
}
|
|
2981
|
+
|
|
2514
2982
|
return output.join(' ');
|
|
2515
2983
|
}
|
|
2516
2984
|
}, {
|
|
@@ -2518,22 +2986,27 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2518
2986
|
value: function ConstraintStmt(node) {
|
|
2519
2987
|
var output = [];
|
|
2520
2988
|
var constraint = (0, _pgsqlEnums.getConstraintFromConstrType)(node.contype);
|
|
2989
|
+
|
|
2521
2990
|
if (node.conname) {
|
|
2522
2991
|
output.push('CONSTRAINT');
|
|
2523
2992
|
output.push(node.conname);
|
|
2993
|
+
|
|
2524
2994
|
if (!node.pktable) {
|
|
2525
2995
|
output.push(constraint);
|
|
2526
2996
|
}
|
|
2527
2997
|
} else if (node.contype === 'CONSTR_IDENTITY') {
|
|
2528
2998
|
// IDENTITY
|
|
2529
2999
|
output.push('GENERATED');
|
|
3000
|
+
|
|
2530
3001
|
if (node.generated_when == 'a') {
|
|
2531
3002
|
output.push('ALWAYS AS');
|
|
2532
3003
|
} else {
|
|
2533
3004
|
output.push('BY DEFAULT AS');
|
|
2534
3005
|
}
|
|
3006
|
+
|
|
2535
3007
|
output.push('IDENTITY');
|
|
2536
3008
|
var options = unwrapList(node.options);
|
|
3009
|
+
|
|
2537
3010
|
if (options && options.length) {
|
|
2538
3011
|
output.push('(');
|
|
2539
3012
|
output.push(this.list(options, ' ', '', 'generated'));
|
|
@@ -2541,12 +3014,14 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2541
3014
|
}
|
|
2542
3015
|
} else if (node.contype === 'CONSTR_GENERATED') {
|
|
2543
3016
|
output.push('GENERATED');
|
|
3017
|
+
|
|
2544
3018
|
if (node.generated_when == 'a') {
|
|
2545
3019
|
output.push('ALWAYS AS');
|
|
2546
3020
|
}
|
|
2547
3021
|
} else {
|
|
2548
3022
|
output.push(constraint);
|
|
2549
3023
|
}
|
|
3024
|
+
|
|
2550
3025
|
return output.join(' ');
|
|
2551
3026
|
}
|
|
2552
3027
|
}, {
|
|
@@ -2554,11 +3029,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2554
3029
|
value: function ReferenceConstraint(node) {
|
|
2555
3030
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2556
3031
|
var output = [];
|
|
3032
|
+
|
|
2557
3033
|
if (node.pk_attrs && node.fk_attrs) {
|
|
2558
3034
|
if (node.conname) {
|
|
2559
3035
|
output.push('CONSTRAINT');
|
|
2560
3036
|
output.push(node.conname);
|
|
2561
3037
|
}
|
|
3038
|
+
|
|
2562
3039
|
output.push('FOREIGN KEY');
|
|
2563
3040
|
output.push('(');
|
|
2564
3041
|
output.push(this.listQuotes(node.fk_attrs));
|
|
@@ -2579,6 +3056,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2579
3056
|
output.push('CONSTRAINT');
|
|
2580
3057
|
output.push(node.conname);
|
|
2581
3058
|
}
|
|
3059
|
+
|
|
2582
3060
|
output.push('FOREIGN KEY');
|
|
2583
3061
|
output.push('(');
|
|
2584
3062
|
output.push(this.listQuotes(node.fk_attrs));
|
|
@@ -2589,6 +3067,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2589
3067
|
output.push(this.ConstraintStmt(node, context));
|
|
2590
3068
|
output.push(this.RangeVar(node.pktable, context));
|
|
2591
3069
|
}
|
|
3070
|
+
|
|
2592
3071
|
return output.join(' ');
|
|
2593
3072
|
}
|
|
2594
3073
|
}, {
|
|
@@ -2596,14 +3075,18 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2596
3075
|
value: function ExclusionConstraint(node) {
|
|
2597
3076
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2598
3077
|
var output = [];
|
|
3078
|
+
|
|
2599
3079
|
function getExclusionGroup(nde) {
|
|
2600
3080
|
var _this16 = this;
|
|
3081
|
+
|
|
2601
3082
|
var exclusions = unwrapList(nde.exclusions);
|
|
2602
3083
|
var a = exclusions.map(function (excl) {
|
|
2603
3084
|
var firstExcl = unwrapList(excl)[0];
|
|
3085
|
+
|
|
2604
3086
|
if (firstExcl.IndexElem.name) {
|
|
2605
3087
|
return firstExcl.IndexElem.name;
|
|
2606
3088
|
}
|
|
3089
|
+
|
|
2607
3090
|
return firstExcl.IndexElem.expr ? _this16.deparse(firstExcl.IndexElem.expr, context) : null;
|
|
2608
3091
|
});
|
|
2609
3092
|
var b = exclusions.map(function (excl) {
|
|
@@ -2614,6 +3097,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2614
3097
|
});
|
|
2615
3098
|
return stmts.join(', ');
|
|
2616
3099
|
}
|
|
3100
|
+
|
|
2617
3101
|
if (node.exclusions && node.access_method) {
|
|
2618
3102
|
output.push('USING');
|
|
2619
3103
|
output.push(node.access_method);
|
|
@@ -2621,6 +3105,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2621
3105
|
output.push(getExclusionGroup.call(this, node));
|
|
2622
3106
|
output.push(')');
|
|
2623
3107
|
}
|
|
3108
|
+
|
|
2624
3109
|
return output.join(' ');
|
|
2625
3110
|
}
|
|
2626
3111
|
}, {
|
|
@@ -2628,95 +3113,120 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2628
3113
|
value: function Constraint(node) {
|
|
2629
3114
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2630
3115
|
var output = [];
|
|
3116
|
+
|
|
2631
3117
|
if (node.contype === 'CONSTR_FOREIGN') {
|
|
2632
3118
|
output.push(this.ReferenceConstraint(node, context));
|
|
2633
3119
|
} else {
|
|
2634
3120
|
output.push(this.ConstraintStmt(node, context));
|
|
2635
3121
|
}
|
|
3122
|
+
|
|
2636
3123
|
if (node.keys) {
|
|
2637
3124
|
output.push('(');
|
|
2638
3125
|
output.push(this.listQuotes(node.keys));
|
|
2639
3126
|
output.push(')');
|
|
2640
3127
|
}
|
|
3128
|
+
|
|
2641
3129
|
if (node.raw_expr) {
|
|
2642
3130
|
output.push('(');
|
|
2643
3131
|
output.push(this.deparse(node.raw_expr, context));
|
|
2644
3132
|
output.push(')');
|
|
3133
|
+
|
|
2645
3134
|
if (node.contype == 'CONSTR_GENERATED') {
|
|
2646
3135
|
output.push('STORED');
|
|
2647
3136
|
}
|
|
2648
3137
|
}
|
|
3138
|
+
|
|
2649
3139
|
if (node.fk_del_action) {
|
|
2650
3140
|
switch (node.fk_del_action) {
|
|
2651
3141
|
case 'r':
|
|
2652
3142
|
output.push('ON DELETE RESTRICT');
|
|
2653
3143
|
break;
|
|
3144
|
+
|
|
2654
3145
|
case 'c':
|
|
2655
3146
|
output.push('ON DELETE CASCADE');
|
|
2656
3147
|
break;
|
|
3148
|
+
|
|
2657
3149
|
case 'n':
|
|
2658
3150
|
output.push('ON DELETE SET NULL');
|
|
2659
3151
|
break;
|
|
3152
|
+
|
|
2660
3153
|
case 'd':
|
|
2661
3154
|
output.push('ON DELETE SET DEFAULT');
|
|
2662
3155
|
break;
|
|
3156
|
+
|
|
2663
3157
|
case 'a':
|
|
2664
3158
|
// output.push('ON DELETE NO ACTION');
|
|
2665
3159
|
break;
|
|
3160
|
+
|
|
2666
3161
|
default:
|
|
2667
3162
|
}
|
|
2668
3163
|
}
|
|
3164
|
+
|
|
2669
3165
|
if (node.fk_upd_action) {
|
|
2670
3166
|
switch (node.fk_upd_action) {
|
|
2671
3167
|
case 'r':
|
|
2672
3168
|
output.push('ON UPDATE RESTRICT');
|
|
2673
3169
|
break;
|
|
3170
|
+
|
|
2674
3171
|
case 'c':
|
|
2675
3172
|
output.push('ON UPDATE CASCADE');
|
|
2676
3173
|
break;
|
|
3174
|
+
|
|
2677
3175
|
case 'n':
|
|
2678
3176
|
output.push('ON UPDATE SET NULL');
|
|
2679
3177
|
break;
|
|
3178
|
+
|
|
2680
3179
|
case 'd':
|
|
2681
3180
|
output.push('ON UPDATE SET DEFAULT');
|
|
2682
3181
|
break;
|
|
3182
|
+
|
|
2683
3183
|
case 'a':
|
|
2684
3184
|
// output.push('ON UPDATE NO ACTION');
|
|
2685
3185
|
break;
|
|
3186
|
+
|
|
2686
3187
|
default:
|
|
2687
3188
|
}
|
|
2688
3189
|
}
|
|
3190
|
+
|
|
2689
3191
|
if (node.fk_matchtype === 'f') {
|
|
2690
3192
|
output.push('MATCH FULL');
|
|
2691
3193
|
}
|
|
3194
|
+
|
|
2692
3195
|
if (node.is_no_inherit === true) {
|
|
2693
3196
|
output.push('NO INHERIT');
|
|
2694
3197
|
}
|
|
3198
|
+
|
|
2695
3199
|
if (node.skip_validation === true) {
|
|
2696
3200
|
output.push('NOT VALID');
|
|
2697
3201
|
}
|
|
3202
|
+
|
|
2698
3203
|
if (node.contype === 'CONSTR_EXCLUSION') {
|
|
2699
3204
|
output.push(this.ExclusionConstraint(node, context));
|
|
2700
3205
|
}
|
|
3206
|
+
|
|
2701
3207
|
if (node.deferrable) {
|
|
2702
3208
|
output.push('deferrable');
|
|
2703
3209
|
}
|
|
3210
|
+
|
|
2704
3211
|
return output.join(' ');
|
|
2705
3212
|
}
|
|
2706
3213
|
}, {
|
|
2707
3214
|
key: 'AccessPriv',
|
|
2708
3215
|
value: function AccessPriv(node) {
|
|
2709
3216
|
var output = [];
|
|
3217
|
+
|
|
2710
3218
|
if (node.priv_name) {
|
|
2711
3219
|
output.push(node.priv_name.toUpperCase());
|
|
2712
3220
|
} else {
|
|
2713
3221
|
output.push('ALL');
|
|
2714
3222
|
}
|
|
3223
|
+
|
|
2715
3224
|
if (node.cols) {
|
|
2716
3225
|
output.push('(');
|
|
2717
3226
|
output.push(this.listQuotes(node.cols));
|
|
2718
3227
|
output.push(')');
|
|
2719
3228
|
}
|
|
3229
|
+
|
|
2720
3230
|
return output.join(' ');
|
|
2721
3231
|
}
|
|
2722
3232
|
}, {
|
|
@@ -2725,10 +3235,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2725
3235
|
switch (node.kind) {
|
|
2726
3236
|
case 'VAR_SET_VALUE':
|
|
2727
3237
|
return (0, _util.format)('SET %s%s = %s', node.is_local ? 'LOCAL ' : '', node.name, this.deparseNodes(node.args, 'simple').join(', '));
|
|
3238
|
+
|
|
2728
3239
|
case 'VAR_SET_DEFAULT':
|
|
2729
3240
|
return (0, _util.format)('SET %s TO DEFAULT', node.name);
|
|
3241
|
+
|
|
2730
3242
|
case 'VAR_SET_CURRENT':
|
|
2731
3243
|
return (0, _util.format)('SET %s FROM CURRENT', node.name);
|
|
3244
|
+
|
|
2732
3245
|
case 'VAR_SET_MULTI':
|
|
2733
3246
|
{
|
|
2734
3247
|
var name = {
|
|
@@ -2737,10 +3250,13 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2737
3250
|
}[node.name];
|
|
2738
3251
|
return (0, _util.format)('SET %s %s', name, this.deparseNodes(node.args, 'simple').join(', '));
|
|
2739
3252
|
}
|
|
3253
|
+
|
|
2740
3254
|
case 'VAR_RESET':
|
|
2741
3255
|
return (0, _util.format)('RESET %s', node.name);
|
|
3256
|
+
|
|
2742
3257
|
case 'VAR_RESET_ALL':
|
|
2743
3258
|
return 'RESET ALL';
|
|
3259
|
+
|
|
2744
3260
|
default:
|
|
2745
3261
|
return fail('VariableSetKind', node);
|
|
2746
3262
|
}
|
|
@@ -2766,42 +3282,53 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2766
3282
|
value: function FunctionParameter(node) {
|
|
2767
3283
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2768
3284
|
var output = [];
|
|
3285
|
+
|
|
2769
3286
|
if (node.mode === 'FUNC_PARAM_VARIADIC') {
|
|
2770
3287
|
output.push('VARIADIC');
|
|
2771
3288
|
}
|
|
3289
|
+
|
|
2772
3290
|
if (node.mode === 'FUNC_PARAM_OUT') {
|
|
2773
3291
|
output.push('OUT');
|
|
2774
3292
|
}
|
|
3293
|
+
|
|
2775
3294
|
if (node.mode === 'FUNC_PARAM_INOUT') {
|
|
2776
3295
|
output.push('INOUT');
|
|
2777
3296
|
}
|
|
3297
|
+
|
|
2778
3298
|
output.push(node.name);
|
|
2779
3299
|
output.push(this.TypeName(node.argType, context));
|
|
3300
|
+
|
|
2780
3301
|
if (node.defexpr) {
|
|
2781
3302
|
output.push('DEFAULT');
|
|
2782
3303
|
output.push(this.deparse(node.defexpr, context));
|
|
2783
3304
|
}
|
|
3305
|
+
|
|
2784
3306
|
return output.join(' ');
|
|
2785
3307
|
}
|
|
2786
3308
|
}, {
|
|
2787
3309
|
key: 'CreateFunctionStmt',
|
|
2788
3310
|
value: function CreateFunctionStmt(node) {
|
|
2789
3311
|
var _this17 = this;
|
|
3312
|
+
|
|
2790
3313
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2791
3314
|
var output = [];
|
|
2792
3315
|
output.push('CREATE');
|
|
3316
|
+
|
|
2793
3317
|
if (node.replace) {
|
|
2794
3318
|
output.push('OR REPLACE');
|
|
2795
3319
|
}
|
|
3320
|
+
|
|
2796
3321
|
output.push('FUNCTION');
|
|
2797
3322
|
output.push(unwrapList(node.funcname).map(function (name) {
|
|
2798
3323
|
return _this17.deparse(name, context);
|
|
2799
3324
|
}).join('.'));
|
|
2800
3325
|
output.push('(');
|
|
2801
3326
|
var parameters = [];
|
|
3327
|
+
|
|
2802
3328
|
if (node.parameters) {
|
|
2803
3329
|
parameters = unwrapList(node.parameters);
|
|
2804
3330
|
}
|
|
3331
|
+
|
|
2805
3332
|
var parametersList = parameters.filter(function (_ref2) {
|
|
2806
3333
|
var FunctionParameter = _ref2.FunctionParameter;
|
|
2807
3334
|
return FunctionParameter.mode === 'FUNC_PARAM_VARIADIC' || FunctionParameter.mode === 'FUNC_PARAM_OUT' || FunctionParameter.mode === 'FUNC_PARAM_INOUT' || FunctionParameter.mode === 'FUNC_PARAM_IN';
|
|
@@ -2812,6 +3339,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2812
3339
|
var FunctionParameter = _ref3.FunctionParameter;
|
|
2813
3340
|
return FunctionParameter.mode === 'FUNC_PARAM_TABLE';
|
|
2814
3341
|
});
|
|
3342
|
+
|
|
2815
3343
|
if (returns.length > 0) {
|
|
2816
3344
|
output.push('RETURNS');
|
|
2817
3345
|
output.push('TABLE');
|
|
@@ -2822,55 +3350,73 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2822
3350
|
output.push('RETURNS');
|
|
2823
3351
|
output.push(this.TypeName(node.returnType, context));
|
|
2824
3352
|
}
|
|
3353
|
+
|
|
2825
3354
|
node.options.forEach(function (option, i) {
|
|
2826
3355
|
if (option && option.DefElem) {
|
|
2827
3356
|
var value = '';
|
|
3357
|
+
|
|
2828
3358
|
switch (option.DefElem.defname) {
|
|
2829
3359
|
case 'as':
|
|
2830
3360
|
value = _this17.deparse(unwrapList(option.DefElem.arg)[0], context);
|
|
2831
3361
|
output.push("AS $EOFCODE$".concat(value, "$EOFCODE$"));
|
|
2832
3362
|
break;
|
|
3363
|
+
|
|
2833
3364
|
case 'language':
|
|
2834
3365
|
value = _this17.deparse(option.DefElem.arg, context);
|
|
2835
3366
|
output.push('LANGUAGE');
|
|
2836
3367
|
output.push(value);
|
|
2837
3368
|
break;
|
|
3369
|
+
|
|
2838
3370
|
case 'security':
|
|
2839
3371
|
output.push('SECURITY');
|
|
2840
3372
|
value = Number(option.DefElem.arg.Integer.ival);
|
|
3373
|
+
|
|
2841
3374
|
if (value > 0) {
|
|
2842
3375
|
output.push('DEFINER');
|
|
2843
3376
|
} else {
|
|
2844
3377
|
output.push('INVOKER');
|
|
2845
3378
|
}
|
|
3379
|
+
|
|
2846
3380
|
break;
|
|
3381
|
+
|
|
2847
3382
|
case 'leakproof':
|
|
2848
3383
|
value = Number(option.DefElem.arg.Integer.ival);
|
|
3384
|
+
|
|
2849
3385
|
if (value > 0) {
|
|
2850
3386
|
output.push('LEAKPROOF');
|
|
2851
3387
|
}
|
|
3388
|
+
|
|
2852
3389
|
break;
|
|
3390
|
+
|
|
2853
3391
|
case 'window':
|
|
2854
3392
|
value = Number(option.DefElem.arg.Integer.ival);
|
|
3393
|
+
|
|
2855
3394
|
if (value > 0) {
|
|
2856
3395
|
output.push('WINDOW');
|
|
2857
3396
|
}
|
|
3397
|
+
|
|
2858
3398
|
break;
|
|
3399
|
+
|
|
2859
3400
|
case 'strict':
|
|
2860
3401
|
value = Number(option.DefElem.arg.Integer.ival);
|
|
3402
|
+
|
|
2861
3403
|
if (value > 0) {
|
|
2862
3404
|
output.push('STRICT');
|
|
2863
3405
|
} else {
|
|
2864
3406
|
output.push('CALLED ON NULL INPUT');
|
|
2865
3407
|
}
|
|
3408
|
+
|
|
2866
3409
|
break;
|
|
3410
|
+
|
|
2867
3411
|
case 'set':
|
|
2868
3412
|
output.push(_this17.deparse(option, context));
|
|
2869
3413
|
break;
|
|
3414
|
+
|
|
2870
3415
|
case 'volatility':
|
|
2871
3416
|
value = _this17.deparse(option.DefElem.arg, context);
|
|
2872
3417
|
output.push(value.toUpperCase());
|
|
2873
3418
|
break;
|
|
3419
|
+
|
|
2874
3420
|
default:
|
|
2875
3421
|
}
|
|
2876
3422
|
}
|
|
@@ -2882,13 +3428,17 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2882
3428
|
value: function CreateSchemaStmt(node) {
|
|
2883
3429
|
var output = [];
|
|
2884
3430
|
output.push('CREATE');
|
|
3431
|
+
|
|
2885
3432
|
if (node.replace) {
|
|
2886
3433
|
output.push('OR REPLACE');
|
|
2887
3434
|
}
|
|
3435
|
+
|
|
2888
3436
|
output.push('SCHEMA');
|
|
3437
|
+
|
|
2889
3438
|
if (node.if_not_exists) {
|
|
2890
3439
|
output.push('IF NOT EXISTS');
|
|
2891
3440
|
}
|
|
3441
|
+
|
|
2892
3442
|
output.push(node.schemaname);
|
|
2893
3443
|
return output.join(' ');
|
|
2894
3444
|
}
|
|
@@ -2898,12 +3448,16 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2898
3448
|
switch (node.roletype) {
|
|
2899
3449
|
case 'ROLESPEC_CSTRING':
|
|
2900
3450
|
return this.quote(node.rolename);
|
|
3451
|
+
|
|
2901
3452
|
case 'ROLESPEC_CURRENT_USER':
|
|
2902
3453
|
return 'CURRENT_USER';
|
|
3454
|
+
|
|
2903
3455
|
case 'ROLESPEC_SESSION_USER':
|
|
2904
3456
|
return 'SESSION_USER';
|
|
3457
|
+
|
|
2905
3458
|
case 'ROLESPEC_PUBLIC':
|
|
2906
3459
|
return 'PUBLIC';
|
|
3460
|
+
|
|
2907
3461
|
default:
|
|
2908
3462
|
return fail('RoleSpec', node);
|
|
2909
3463
|
}
|
|
@@ -2912,67 +3466,91 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2912
3466
|
key: 'GrantStmt',
|
|
2913
3467
|
value: function GrantStmt(node) {
|
|
2914
3468
|
var output = [];
|
|
3469
|
+
|
|
2915
3470
|
var getTypeFromNode = function getTypeFromNode(nodeObj) {
|
|
2916
3471
|
switch (nodeObj.objtype) {
|
|
2917
3472
|
case 'OBJECT_TABLE':
|
|
2918
3473
|
if (nodeObj.targtype === 'ACL_TARGET_ALL_IN_SCHEMA') {
|
|
2919
3474
|
return 'ALL TABLES IN SCHEMA';
|
|
2920
3475
|
}
|
|
3476
|
+
|
|
2921
3477
|
if (nodeObj.targtype === 'ACL_TARGET_DEFAULTS') {
|
|
2922
3478
|
return 'TABLES';
|
|
2923
|
-
}
|
|
2924
|
-
|
|
3479
|
+
} // todo could be view
|
|
3480
|
+
|
|
3481
|
+
|
|
2925
3482
|
return 'TABLE';
|
|
3483
|
+
|
|
2926
3484
|
case 'OBJECT_SEQUENCE':
|
|
2927
3485
|
if (nodeObj.targtype === 'ACL_TARGET_ALL_IN_SCHEMA') {
|
|
2928
3486
|
return 'ALL SEQUENCES IN SCHEMA';
|
|
2929
3487
|
}
|
|
3488
|
+
|
|
2930
3489
|
if (nodeObj.targtype === 'ACL_TARGET_DEFAULTS') {
|
|
2931
3490
|
return 'SEQUENCES';
|
|
2932
3491
|
}
|
|
3492
|
+
|
|
2933
3493
|
return 'SEQUENCE';
|
|
3494
|
+
|
|
2934
3495
|
case 'OBJECT_DATABASE':
|
|
2935
3496
|
return 'DATABASE';
|
|
3497
|
+
|
|
2936
3498
|
case 'OBJECT_DOMAIN':
|
|
2937
3499
|
return 'DOMAIN';
|
|
3500
|
+
|
|
2938
3501
|
case 'OBJECT_FDW':
|
|
2939
3502
|
return 'FOREIGN DATA WRAPPER';
|
|
3503
|
+
|
|
2940
3504
|
case 'OBJECT_FOREIGN_SERVER':
|
|
2941
3505
|
return 'FOREIGN SERVER';
|
|
3506
|
+
|
|
2942
3507
|
case 'OBJECT_FUNCTION':
|
|
2943
3508
|
if (nodeObj.targtype === 'ACL_TARGET_ALL_IN_SCHEMA') {
|
|
2944
3509
|
return 'ALL FUNCTIONS IN SCHEMA';
|
|
2945
3510
|
}
|
|
3511
|
+
|
|
2946
3512
|
if (nodeObj.targtype === 'ACL_TARGET_DEFAULTS') {
|
|
2947
3513
|
return 'FUNCTIONS';
|
|
2948
3514
|
}
|
|
3515
|
+
|
|
2949
3516
|
return 'FUNCTION';
|
|
3517
|
+
|
|
2950
3518
|
case 'OBJECT_LANGUAGE':
|
|
2951
3519
|
return 'LANGUAGE';
|
|
3520
|
+
|
|
2952
3521
|
case 'OBJECT_LARGEOBJECT':
|
|
2953
3522
|
return 'LARGE OBJECT';
|
|
3523
|
+
|
|
2954
3524
|
case 'OBJECT_SCHEMA':
|
|
2955
3525
|
return 'SCHEMA';
|
|
3526
|
+
|
|
2956
3527
|
case 'OBJECT_TABLESPACE':
|
|
2957
3528
|
return 'TABLESPACE';
|
|
3529
|
+
|
|
2958
3530
|
case 'OBJECT_TYPE':
|
|
2959
3531
|
return 'TYPE';
|
|
3532
|
+
|
|
2960
3533
|
default:
|
|
2961
3534
|
}
|
|
3535
|
+
|
|
2962
3536
|
return fail('GrantStmt', node);
|
|
2963
3537
|
};
|
|
3538
|
+
|
|
2964
3539
|
if (node.objtype !== 'OBJECT_COLUMN') {
|
|
2965
3540
|
if (!node.is_grant) {
|
|
2966
3541
|
output.push('REVOKE');
|
|
3542
|
+
|
|
2967
3543
|
if (node.grant_option) {
|
|
2968
3544
|
output.push('GRANT OPTION');
|
|
2969
3545
|
output.push('FOR');
|
|
2970
3546
|
}
|
|
3547
|
+
|
|
2971
3548
|
if (node.privileges) {
|
|
2972
3549
|
output.push(this.list(node.privileges));
|
|
2973
3550
|
} else {
|
|
2974
3551
|
output.push('ALL');
|
|
2975
3552
|
}
|
|
3553
|
+
|
|
2976
3554
|
output.push('ON');
|
|
2977
3555
|
output.push(getTypeFromNode(node));
|
|
2978
3556
|
output.push(this.list(node.objects));
|
|
@@ -2980,24 +3558,29 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
2980
3558
|
output.push(this.list(node.grantees));
|
|
2981
3559
|
} else {
|
|
2982
3560
|
output.push('GRANT');
|
|
3561
|
+
|
|
2983
3562
|
if (node.privileges) {
|
|
2984
3563
|
output.push(this.list(node.privileges));
|
|
2985
3564
|
} else {
|
|
2986
3565
|
output.push('ALL');
|
|
2987
3566
|
}
|
|
3567
|
+
|
|
2988
3568
|
output.push('ON');
|
|
2989
3569
|
output.push(getTypeFromNode(node));
|
|
2990
3570
|
output.push(this.list(node.objects));
|
|
2991
3571
|
output.push('TO');
|
|
2992
3572
|
output.push(this.list(node.grantees));
|
|
3573
|
+
|
|
2993
3574
|
if (node.grant_option) {
|
|
2994
3575
|
output.push('WITH GRANT OPTION');
|
|
2995
3576
|
}
|
|
2996
3577
|
}
|
|
3578
|
+
|
|
2997
3579
|
if (node.behavior === 'DROP_CASCADE') {
|
|
2998
3580
|
output.push('CASCADE');
|
|
2999
3581
|
}
|
|
3000
3582
|
}
|
|
3583
|
+
|
|
3001
3584
|
return output.join(' ');
|
|
3002
3585
|
}
|
|
3003
3586
|
}, {
|
|
@@ -3005,6 +3588,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3005
3588
|
value: function GrantRoleStmt(node) {
|
|
3006
3589
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3007
3590
|
var output = [];
|
|
3591
|
+
|
|
3008
3592
|
if (!node.is_grant) {
|
|
3009
3593
|
output.push('REVOKE');
|
|
3010
3594
|
output.push(this.list(node.granted_roles, ', ', '', context));
|
|
@@ -3016,181 +3600,237 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3016
3600
|
output.push('TO');
|
|
3017
3601
|
output.push(this.list(node.grantee_roles, ', ', '', context));
|
|
3018
3602
|
}
|
|
3603
|
+
|
|
3019
3604
|
if (node.admin_opt) {
|
|
3020
3605
|
output.push('WITH ADMIN OPTION');
|
|
3021
3606
|
}
|
|
3607
|
+
|
|
3022
3608
|
return output.join(' ');
|
|
3023
3609
|
}
|
|
3024
3610
|
}, {
|
|
3025
3611
|
key: 'CreateRoleStmt',
|
|
3026
3612
|
value: function CreateRoleStmt(node) {
|
|
3027
3613
|
var _this18 = this;
|
|
3614
|
+
|
|
3028
3615
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3029
3616
|
var output = [];
|
|
3617
|
+
|
|
3030
3618
|
var roleOption = function roleOption(nodeObj, i, val1, val2) {
|
|
3031
3619
|
var val = Number(dotty.get(unwrapList(nodeObj.options), "".concat(i, ".DefElem.arg.Integer.ival")));
|
|
3620
|
+
|
|
3032
3621
|
if (val > 0) {
|
|
3033
3622
|
output.push(val1);
|
|
3034
3623
|
} else {
|
|
3035
3624
|
output.push(val2);
|
|
3036
3625
|
}
|
|
3037
3626
|
};
|
|
3627
|
+
|
|
3038
3628
|
output.push('CREATE');
|
|
3629
|
+
|
|
3039
3630
|
switch (node.stmt_type) {
|
|
3040
3631
|
case 'ROLESTMT_USER':
|
|
3041
3632
|
output.push('USER');
|
|
3042
3633
|
break;
|
|
3634
|
+
|
|
3043
3635
|
case 'ROLESTMT_GROUP':
|
|
3044
3636
|
output.push('GROUP');
|
|
3045
3637
|
break;
|
|
3638
|
+
|
|
3046
3639
|
default:
|
|
3047
3640
|
output.push('ROLE');
|
|
3048
3641
|
}
|
|
3642
|
+
|
|
3049
3643
|
output.push("\"".concat(node.role, "\""));
|
|
3644
|
+
|
|
3050
3645
|
if (node.options) {
|
|
3051
3646
|
var options = unwrapList(node.options);
|
|
3052
3647
|
var opts = dotty.search(options, '*.DefElem.defname');
|
|
3053
|
-
|
|
3054
|
-
|
|
3648
|
+
|
|
3649
|
+
if (opts.length === 1 && opts[0] === 'addroleto') {// only one case
|
|
3055
3650
|
} else {
|
|
3056
3651
|
output.push('WITH');
|
|
3057
3652
|
}
|
|
3653
|
+
|
|
3058
3654
|
opts.forEach(function (option, i) {
|
|
3059
3655
|
var value = '';
|
|
3656
|
+
|
|
3060
3657
|
switch (option) {
|
|
3061
3658
|
case 'canlogin':
|
|
3062
3659
|
roleOption(node, i, 'LOGIN', 'NOLOGIN');
|
|
3063
3660
|
break;
|
|
3661
|
+
|
|
3064
3662
|
case 'addroleto':
|
|
3065
3663
|
output.push('IN ROLE');
|
|
3066
3664
|
output.push(dotty.search(flatten(dotty.search(options, "".concat(i, ".DefElem.arg")).map(unwrapList)), '*.RoleSpec.rolename').join(','));
|
|
3067
3665
|
break;
|
|
3666
|
+
|
|
3068
3667
|
case 'password':
|
|
3069
3668
|
output.push('PASSWORD');
|
|
3070
3669
|
value = dotty.get(options, "".concat(i, ".DefElem.arg.String.str"));
|
|
3071
3670
|
output.push("'".concat(value, "'"));
|
|
3072
3671
|
break;
|
|
3672
|
+
|
|
3073
3673
|
case 'adminmembers':
|
|
3074
3674
|
output.push('ADMIN');
|
|
3075
3675
|
output.push(_this18.list(options[i].DefElem.arg, ', ', '', context));
|
|
3076
3676
|
break;
|
|
3677
|
+
|
|
3077
3678
|
case 'rolemembers':
|
|
3078
3679
|
output.push('USER');
|
|
3079
3680
|
output.push(_this18.list(options[i].DefElem.arg, ', ', '', context));
|
|
3080
3681
|
break;
|
|
3682
|
+
|
|
3081
3683
|
case 'createdb':
|
|
3082
3684
|
roleOption(node, i, 'CREATEDB', 'NOCREATEDB');
|
|
3083
3685
|
break;
|
|
3686
|
+
|
|
3084
3687
|
case 'isreplication':
|
|
3085
3688
|
roleOption(node, i, 'REPLICATION', 'NOREPLICATION');
|
|
3086
3689
|
break;
|
|
3690
|
+
|
|
3087
3691
|
case 'bypassrls':
|
|
3088
3692
|
roleOption(node, i, 'BYPASSRLS', 'NOBYPASSRLS');
|
|
3089
3693
|
break;
|
|
3694
|
+
|
|
3090
3695
|
case 'inherit':
|
|
3091
3696
|
roleOption(node, i, 'INHERIT', 'NOINHERIT');
|
|
3092
3697
|
break;
|
|
3698
|
+
|
|
3093
3699
|
case 'superuser':
|
|
3094
3700
|
roleOption(node, i, 'SUPERUSER', 'NOSUPERUSER');
|
|
3095
3701
|
break;
|
|
3702
|
+
|
|
3096
3703
|
case 'createrole':
|
|
3097
3704
|
roleOption(node, i, 'CREATEROLE', 'NOCREATEROLE');
|
|
3098
3705
|
break;
|
|
3706
|
+
|
|
3099
3707
|
case 'validUntil':
|
|
3100
3708
|
output.push('VALID UNTIL');
|
|
3101
3709
|
value = dotty.get(options[i], "DefElem.arg.String.str");
|
|
3102
3710
|
output.push("'".concat(value, "'"));
|
|
3103
3711
|
break;
|
|
3712
|
+
|
|
3104
3713
|
default:
|
|
3105
3714
|
}
|
|
3106
3715
|
});
|
|
3107
3716
|
}
|
|
3717
|
+
|
|
3108
3718
|
return output.join(' ');
|
|
3109
3719
|
}
|
|
3110
3720
|
}, {
|
|
3111
3721
|
key: 'TransactionStmt',
|
|
3112
3722
|
value: function TransactionStmt(node) {
|
|
3113
3723
|
var _this19 = this;
|
|
3724
|
+
|
|
3114
3725
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3115
3726
|
var output = [];
|
|
3727
|
+
|
|
3116
3728
|
var begin = function begin(nodeOpts) {
|
|
3117
3729
|
var options = unwrapList(nodeOpts.options);
|
|
3118
3730
|
var opts = options ? dotty.search(options, '*.DefElem.defname') : [];
|
|
3731
|
+
|
|
3119
3732
|
if (opts.includes('transaction_read_only')) {
|
|
3120
3733
|
var index = opts.indexOf('transaction_read_only');
|
|
3121
3734
|
var obj = options[index];
|
|
3122
3735
|
var set = false;
|
|
3123
3736
|
var flag = Number(_this19.deparse(dotty.get(obj, 'DefElem.arg'), context));
|
|
3737
|
+
|
|
3124
3738
|
if (flag > 0) {
|
|
3125
3739
|
set = true;
|
|
3126
3740
|
}
|
|
3741
|
+
|
|
3127
3742
|
if (set) {
|
|
3128
3743
|
return 'BEGIN TRANSACTION READ ONLY';
|
|
3129
3744
|
}
|
|
3745
|
+
|
|
3130
3746
|
return 'BEGIN TRANSACTION READ WRITE';
|
|
3131
3747
|
}
|
|
3748
|
+
|
|
3132
3749
|
if (opts.includes('transaction_isolation')) {
|
|
3133
3750
|
var _index = opts.indexOf('transaction_isolation');
|
|
3751
|
+
|
|
3134
3752
|
var _obj = options[_index];
|
|
3753
|
+
|
|
3135
3754
|
var lopts = _this19.deparse(dotty.get(_obj, 'DefElem.arg'), context).replace(/['"]+/g, '');
|
|
3755
|
+
|
|
3136
3756
|
return "BEGIN TRANSACTION ISOLATION LEVEL ".concat(lopts.toUpperCase());
|
|
3137
3757
|
}
|
|
3758
|
+
|
|
3138
3759
|
return 'BEGIN';
|
|
3139
3760
|
};
|
|
3761
|
+
|
|
3140
3762
|
var start = function start(nodeOpts) {
|
|
3141
3763
|
var options = unwrapList(nodeOpts.options);
|
|
3142
3764
|
var opts = options ? dotty.search(options, '*.DefElem.defname') : [];
|
|
3765
|
+
|
|
3143
3766
|
if (opts.includes('transaction_read_only')) {
|
|
3144
3767
|
var index = opts.indexOf('transaction_read_only');
|
|
3145
3768
|
var obj = options[index];
|
|
3146
3769
|
var set = false;
|
|
3147
3770
|
var flag = Number(_this19.deparse(dotty.get(obj, 'DefElem.arg'), context));
|
|
3771
|
+
|
|
3148
3772
|
if (flag > 0) {
|
|
3149
3773
|
set = true;
|
|
3150
3774
|
}
|
|
3775
|
+
|
|
3151
3776
|
if (set) {
|
|
3152
3777
|
return 'START TRANSACTION READ ONLY';
|
|
3153
3778
|
}
|
|
3779
|
+
|
|
3154
3780
|
return 'START TRANSACTION READ WRITE';
|
|
3155
3781
|
}
|
|
3782
|
+
|
|
3156
3783
|
return 'START TRANSACTION';
|
|
3157
3784
|
};
|
|
3785
|
+
|
|
3158
3786
|
var nodeOptions = unwrapList(node.options);
|
|
3787
|
+
|
|
3159
3788
|
switch (node.kind) {
|
|
3160
3789
|
case 'TRANS_STMT_BEGIN':
|
|
3161
3790
|
return begin(node);
|
|
3791
|
+
|
|
3162
3792
|
case 'TRANS_STMT_START':
|
|
3163
3793
|
return start(node);
|
|
3794
|
+
|
|
3164
3795
|
case 'TRANS_STMT_COMMIT':
|
|
3165
3796
|
return 'COMMIT';
|
|
3797
|
+
|
|
3166
3798
|
case 'TRANS_STMT_ROLLBACK':
|
|
3167
3799
|
return 'ROLLBACK';
|
|
3800
|
+
|
|
3168
3801
|
case 'TRANS_STMT_SAVEPOINT':
|
|
3169
3802
|
output.push('SAVEPOINT');
|
|
3170
3803
|
output.push(this.deparse(nodeOptions[0].DefElem.arg, context));
|
|
3171
3804
|
break;
|
|
3805
|
+
|
|
3172
3806
|
case 'TRANS_STMT_RELEASE':
|
|
3173
3807
|
output.push('RELEASE SAVEPOINT');
|
|
3174
3808
|
output.push(this.deparse(nodeOptions[0].DefElem.arg, context));
|
|
3175
3809
|
break;
|
|
3810
|
+
|
|
3176
3811
|
case 'TRANS_STMT_ROLLBACK_TO':
|
|
3177
3812
|
output.push('ROLLBACK TO');
|
|
3178
3813
|
output.push(this.deparse(nodeOptions[0].DefElem.arg, context));
|
|
3179
3814
|
break;
|
|
3815
|
+
|
|
3180
3816
|
case 'TRANS_STMT_PREPARE':
|
|
3181
3817
|
output.push('PREPARE TRANSACTION');
|
|
3182
3818
|
output.push("'".concat(node.gid, "'"));
|
|
3183
3819
|
break;
|
|
3820
|
+
|
|
3184
3821
|
case 'TRANS_STMT_COMMIT_PREPARED':
|
|
3185
3822
|
output.push('COMMIT PREPARED');
|
|
3186
3823
|
output.push("'".concat(node.gid, "'"));
|
|
3187
3824
|
break;
|
|
3825
|
+
|
|
3188
3826
|
case 'TRANS_STMT_ROLLBACK_PREPARED':
|
|
3189
3827
|
output.push('ROLLBACK PREPARED');
|
|
3190
3828
|
output.push("'".concat(node.gid, "'"));
|
|
3191
3829
|
break;
|
|
3830
|
+
|
|
3192
3831
|
default:
|
|
3193
3832
|
}
|
|
3833
|
+
|
|
3194
3834
|
return output.join(' ');
|
|
3195
3835
|
}
|
|
3196
3836
|
}, {
|
|
@@ -3199,53 +3839,67 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3199
3839
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3200
3840
|
var output = [];
|
|
3201
3841
|
output.push(this.deparse(node.node, context));
|
|
3842
|
+
|
|
3202
3843
|
switch (node.sortby_dir) {
|
|
3203
3844
|
case 'SORTBY_ASC':
|
|
3204
3845
|
output.push('ASC');
|
|
3205
3846
|
break;
|
|
3847
|
+
|
|
3206
3848
|
case 'SORTBY_DESC':
|
|
3207
3849
|
output.push('DESC');
|
|
3208
3850
|
break;
|
|
3851
|
+
|
|
3209
3852
|
case 'SORTBY_USING':
|
|
3210
3853
|
output.push("USING ".concat(this.deparseNodes(node.useOp, context)));
|
|
3211
3854
|
break;
|
|
3855
|
+
|
|
3212
3856
|
case 'SORTBY_DEFAULT':
|
|
3213
3857
|
break;
|
|
3858
|
+
|
|
3214
3859
|
default:
|
|
3215
3860
|
return fail('SortBy', node);
|
|
3216
3861
|
}
|
|
3862
|
+
|
|
3217
3863
|
if (node.sortby_nulls === 'SORTBY_NULLS_FIRST') {
|
|
3218
3864
|
output.push('NULLS FIRST');
|
|
3219
3865
|
}
|
|
3866
|
+
|
|
3220
3867
|
if (node.sortby_nulls === 'SORTBY_NULLS_LAST') {
|
|
3221
3868
|
output.push('NULLS LAST');
|
|
3222
3869
|
}
|
|
3870
|
+
|
|
3223
3871
|
return output.join(' ');
|
|
3224
3872
|
}
|
|
3225
3873
|
}, {
|
|
3226
3874
|
key: 'ObjectWithArgs',
|
|
3227
3875
|
value: function ObjectWithArgs(node) {
|
|
3228
3876
|
var _this20 = this;
|
|
3877
|
+
|
|
3229
3878
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3230
3879
|
var output = [];
|
|
3880
|
+
|
|
3231
3881
|
if (context === 'noquotes') {
|
|
3232
3882
|
output.push(this.list(node.objname, ', ', '', context));
|
|
3233
3883
|
} else {
|
|
3234
3884
|
output.push(this.listQuotes(node.objname, '.'));
|
|
3235
3885
|
}
|
|
3886
|
+
|
|
3236
3887
|
var objargs = unwrapList(node.objargs);
|
|
3888
|
+
|
|
3237
3889
|
if (objargs && objargs.length) {
|
|
3238
3890
|
output.push('(');
|
|
3239
3891
|
output.push(objargs.map(function (arg) {
|
|
3240
3892
|
if (isEmptyObject(arg)) {
|
|
3241
3893
|
return 'NONE';
|
|
3242
3894
|
}
|
|
3895
|
+
|
|
3243
3896
|
return _this20.deparse(arg, context);
|
|
3244
3897
|
}).join(','));
|
|
3245
3898
|
output.push(')');
|
|
3246
3899
|
} else if (!node.args_unspecified) {
|
|
3247
3900
|
output.push('()');
|
|
3248
3901
|
}
|
|
3902
|
+
|
|
3249
3903
|
return output.join(' ');
|
|
3250
3904
|
}
|
|
3251
3905
|
}, {
|
|
@@ -3257,26 +3911,35 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3257
3911
|
key: 'SubLink',
|
|
3258
3912
|
value: function SubLink(node) {
|
|
3259
3913
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3914
|
+
|
|
3260
3915
|
switch (true) {
|
|
3261
3916
|
case node.subLinkType === 'EXISTS_SUBLINK':
|
|
3262
3917
|
return (0, _util.format)('EXISTS (%s)', this.deparse(node.subselect, context));
|
|
3918
|
+
|
|
3263
3919
|
case node.subLinkType === 'ALL_SUBLINK':
|
|
3264
3920
|
return (0, _util.format)('%s %s ALL (%s)', this.deparse(node.testexpr, context), this.deparse(node.operName[0], context), this.deparse(node.subselect, context));
|
|
3921
|
+
|
|
3265
3922
|
case node.subLinkType === 'ANY_SUBLINK' && !(node.operName != null):
|
|
3266
3923
|
return (0, _util.format)('%s IN (%s)', this.deparse(node.testexpr, context), this.deparse(node.subselect, context));
|
|
3924
|
+
|
|
3267
3925
|
case node.subLinkType === 'ANY_SUBLINK':
|
|
3268
3926
|
return (0, _util.format)('%s %s ANY (%s)', this.deparse(node.testexpr, context), this.deparse(node.operName[0], context), this.deparse(node.subselect, context));
|
|
3927
|
+
|
|
3269
3928
|
case node.subLinkType === 'ROWCOMPARE_SUBLINK':
|
|
3270
3929
|
return (0, _util.format)('%s %s (%s)', this.deparse(node.testexpr, context), this.deparse(node.operName[0], context), this.deparse(node.subselect, context));
|
|
3930
|
+
|
|
3271
3931
|
case node.subLinkType === 'EXPR_SUBLINK':
|
|
3272
3932
|
return (0, _util.format)('(%s)', this.deparse(node.subselect, context));
|
|
3933
|
+
|
|
3273
3934
|
case node.subLinkType === 'MULTIEXPR_SUBLINK':
|
|
3274
3935
|
// TODO(zhm) what is this?
|
|
3275
3936
|
return fail('SubLink', node);
|
|
3276
3937
|
// MULTIEXPR_SUBLINK
|
|
3277
3938
|
// format('(%s)', @deparse(node.subselect))
|
|
3939
|
+
|
|
3278
3940
|
case node.subLinkType === 'ARRAY_SUBLINK':
|
|
3279
3941
|
return (0, _util.format)('ARRAY (%s)', this.deparse(node.subselect, context));
|
|
3942
|
+
|
|
3280
3943
|
default:
|
|
3281
3944
|
return fail('SubLink', node);
|
|
3282
3945
|
}
|
|
@@ -3287,44 +3950,58 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3287
3950
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3288
3951
|
var type = this.TypeName(node.typeName, context);
|
|
3289
3952
|
var arg = this.deparse(node.arg, context);
|
|
3953
|
+
|
|
3290
3954
|
if (node.arg !== undefined && node.arg.A_Expr !== undefined) {
|
|
3291
3955
|
arg = (0, _util.format)('(%s)', arg);
|
|
3292
3956
|
}
|
|
3957
|
+
|
|
3293
3958
|
if (type === 'boolean') {
|
|
3294
3959
|
var value = dotty.get(node, 'arg.A_Const.val.String.str');
|
|
3960
|
+
|
|
3295
3961
|
if (value === 'f') {
|
|
3296
3962
|
return 'FALSE';
|
|
3297
3963
|
}
|
|
3964
|
+
|
|
3298
3965
|
if (value === 't') {
|
|
3299
3966
|
return 'TRUE';
|
|
3300
3967
|
}
|
|
3301
3968
|
}
|
|
3969
|
+
|
|
3302
3970
|
return (0, _util.format)('%s::%s', arg, type);
|
|
3303
3971
|
}
|
|
3304
3972
|
}, {
|
|
3305
3973
|
key: 'TypeName',
|
|
3306
3974
|
value: function TypeName(node) {
|
|
3307
3975
|
var _this21 = this;
|
|
3976
|
+
|
|
3308
3977
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3309
3978
|
var names = unwrapList(node.names);
|
|
3979
|
+
|
|
3310
3980
|
if (names[names.length - 1].String.str === 'interval') {
|
|
3311
3981
|
return this.deparseInterval(node);
|
|
3312
3982
|
}
|
|
3983
|
+
|
|
3313
3984
|
var output = [];
|
|
3985
|
+
|
|
3314
3986
|
if (node.setof) {
|
|
3315
3987
|
output.push('SETOF');
|
|
3316
3988
|
}
|
|
3989
|
+
|
|
3317
3990
|
var args = null;
|
|
3991
|
+
|
|
3318
3992
|
if (node.typmods != null) {
|
|
3319
3993
|
args = unwrapList(node.typmods).map(function (item) {
|
|
3320
3994
|
return _this21.deparse(item, context);
|
|
3321
3995
|
});
|
|
3322
3996
|
}
|
|
3997
|
+
|
|
3323
3998
|
var type = [];
|
|
3324
3999
|
type.push(this.type(names, args && args.join(', ')));
|
|
4000
|
+
|
|
3325
4001
|
if (node.arrayBounds != null) {
|
|
3326
4002
|
type.push('[]');
|
|
3327
4003
|
}
|
|
4004
|
+
|
|
3328
4005
|
output.push(type.join(''));
|
|
3329
4006
|
return output.join(' ');
|
|
3330
4007
|
}
|
|
@@ -3342,20 +4019,26 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3342
4019
|
key: 'WindowDef',
|
|
3343
4020
|
value: function WindowDef(node) {
|
|
3344
4021
|
var _this22 = this;
|
|
4022
|
+
|
|
3345
4023
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3346
4024
|
var output = [];
|
|
4025
|
+
|
|
3347
4026
|
if (context !== 'window') {
|
|
3348
4027
|
if (node.name) {
|
|
3349
4028
|
output.push(node.name);
|
|
3350
4029
|
}
|
|
3351
4030
|
}
|
|
4031
|
+
|
|
3352
4032
|
var empty = !(node.partitionClause != null) && !(node.orderClause != null);
|
|
3353
4033
|
var frameOptions = this.deparseFrameOptions(node.frameOptions, node.refname, node.startOffset, node.endOffset);
|
|
4034
|
+
|
|
3354
4035
|
if (empty && context !== 'window' && !(node.name != null) && frameOptions.length === 0) {
|
|
3355
4036
|
return '()';
|
|
3356
4037
|
}
|
|
4038
|
+
|
|
3357
4039
|
var windowParts = [];
|
|
3358
4040
|
var useParens = false;
|
|
4041
|
+
|
|
3359
4042
|
if (node.partitionClause) {
|
|
3360
4043
|
var partition = ['PARTITION BY'];
|
|
3361
4044
|
var clause = unwrapList(node.partitionClause).map(function (item) {
|
|
@@ -3365,6 +4048,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3365
4048
|
windowParts.push(partition.join(' '));
|
|
3366
4049
|
useParens = true;
|
|
3367
4050
|
}
|
|
4051
|
+
|
|
3368
4052
|
if (node.orderClause) {
|
|
3369
4053
|
windowParts.push('ORDER BY');
|
|
3370
4054
|
var orders = unwrapList(node.orderClause).map(function (item) {
|
|
@@ -3373,13 +4057,16 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3373
4057
|
windowParts.push(orders.join(', '));
|
|
3374
4058
|
useParens = true;
|
|
3375
4059
|
}
|
|
4060
|
+
|
|
3376
4061
|
if (frameOptions.length) {
|
|
3377
4062
|
useParens = true;
|
|
3378
4063
|
windowParts.push(frameOptions);
|
|
3379
4064
|
}
|
|
4065
|
+
|
|
3380
4066
|
if (useParens && context !== 'window') {
|
|
3381
4067
|
return output.join(' ') + ' (' + windowParts.join(' ') + ')';
|
|
3382
4068
|
}
|
|
4069
|
+
|
|
3383
4070
|
return output.join(' ') + windowParts.join(' ');
|
|
3384
4071
|
}
|
|
3385
4072
|
}, {
|
|
@@ -3387,9 +4074,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3387
4074
|
value: function WithClause(node) {
|
|
3388
4075
|
var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
3389
4076
|
var output = ['WITH'];
|
|
4077
|
+
|
|
3390
4078
|
if (node.recursive) {
|
|
3391
4079
|
output.push('RECURSIVE');
|
|
3392
4080
|
}
|
|
4081
|
+
|
|
3393
4082
|
output.push(this.list(node.ctes, ', ', '', context));
|
|
3394
4083
|
return output.join(' ');
|
|
3395
4084
|
}
|
|
@@ -3402,9 +4091,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3402
4091
|
output.push('TO');
|
|
3403
4092
|
output.push("'".concat(node.filename, "'"));
|
|
3404
4093
|
var options = unwrapList(node.options);
|
|
4094
|
+
|
|
3405
4095
|
if ((options === null || options === void 0 ? void 0 : options.length) > 0 && options[0].DefElem.defname === 'format') {
|
|
3406
4096
|
output.push("(FORMAT '".concat(this.deparse(options[0].DefElem.arg), "')"));
|
|
3407
4097
|
}
|
|
4098
|
+
|
|
3408
4099
|
return output.join(' ');
|
|
3409
4100
|
}
|
|
3410
4101
|
}, {
|
|
@@ -3414,6 +4105,7 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3414
4105
|
var output = ['CALL'];
|
|
3415
4106
|
output.push(this.deparse(unwrapList(node.funccall.funcname)[0]));
|
|
3416
4107
|
var funccallArgs = unwrapList(node.funccall.args);
|
|
4108
|
+
|
|
3417
4109
|
if (funccallArgs && funccallArgs.length) {
|
|
3418
4110
|
// we have arguments
|
|
3419
4111
|
output.push('(' + this.list(funccallArgs, ', ', '', context) + ')');
|
|
@@ -3421,31 +4113,66 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3421
4113
|
// just close parens
|
|
3422
4114
|
output.push('()');
|
|
3423
4115
|
}
|
|
4116
|
+
|
|
3424
4117
|
return output.join(' ');
|
|
3425
4118
|
}
|
|
3426
4119
|
}, {
|
|
3427
4120
|
key: "deparseFrameOptions",
|
|
3428
4121
|
value: function deparseFrameOptions(options, refName, startOffset, endOffset) {
|
|
3429
4122
|
// https://github.com/pganalyze/libpg_query/blob/442b1748d06364ecd3779bc558899176c02efaf0/src/postgres/include/nodes/parsenodes.h#L505-L522
|
|
3430
|
-
var FRAMEOPTION_NONDEFAULT = 0x00001;
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
var
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
var
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
var
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
var
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
var
|
|
3446
|
-
|
|
3447
|
-
|
|
4123
|
+
var FRAMEOPTION_NONDEFAULT = 0x00001;
|
|
4124
|
+
/* any specified? */
|
|
4125
|
+
|
|
4126
|
+
var FRAMEOPTION_RANGE = 0x00002;
|
|
4127
|
+
/* RANGE behavior */
|
|
4128
|
+
|
|
4129
|
+
var FRAMEOPTION_ROWS = 0x00004;
|
|
4130
|
+
/* ROWS behavior */
|
|
4131
|
+
|
|
4132
|
+
var FRAMEOPTION_GROUPS = 0x00008;
|
|
4133
|
+
/* GROUPS behavior */
|
|
4134
|
+
|
|
4135
|
+
var FRAMEOPTION_BETWEEN = 0x00010;
|
|
4136
|
+
/* BETWEEN given? */
|
|
4137
|
+
|
|
4138
|
+
var FRAMEOPTION_START_UNBOUNDED_PRECEDING = 0x00020;
|
|
4139
|
+
/* start is U. P. */
|
|
4140
|
+
|
|
4141
|
+
var FRAMEOPTION_END_UNBOUNDED_PRECEDING = 0x00040;
|
|
4142
|
+
/* (disallowed) */
|
|
4143
|
+
|
|
4144
|
+
var FRAMEOPTION_START_UNBOUNDED_FOLLOWING = 0x00080;
|
|
4145
|
+
/* (disallowed) */
|
|
4146
|
+
|
|
4147
|
+
var FRAMEOPTION_END_UNBOUNDED_FOLLOWING = 0x00100;
|
|
4148
|
+
/* end is U. F. */
|
|
4149
|
+
|
|
4150
|
+
var FRAMEOPTION_START_CURRENT_ROW = 0x00200;
|
|
4151
|
+
/* start is C. R. */
|
|
4152
|
+
|
|
4153
|
+
var FRAMEOPTION_END_CURRENT_ROW = 0x00400;
|
|
4154
|
+
/* end is C. R. */
|
|
4155
|
+
|
|
4156
|
+
var FRAMEOPTION_START_OFFSET_PRECEDING = 0x00800;
|
|
4157
|
+
/* start is O. P. */
|
|
4158
|
+
|
|
4159
|
+
var FRAMEOPTION_END_OFFSET_PRECEDING = 0x01000;
|
|
4160
|
+
/* end is O. P. */
|
|
3448
4161
|
|
|
4162
|
+
var FRAMEOPTION_START_OFFSET_FOLLOWING = 0x02000;
|
|
4163
|
+
/* start is O. F. */
|
|
4164
|
+
|
|
4165
|
+
var FRAMEOPTION_END_OFFSET_FOLLOWING = 0x04000;
|
|
4166
|
+
/* end is O. F. */
|
|
4167
|
+
|
|
4168
|
+
var FRAMEOPTION_EXCLUDE_CURRENT_ROW = 0x08000;
|
|
4169
|
+
/* omit C.R. */
|
|
4170
|
+
|
|
4171
|
+
var FRAMEOPTION_EXCLUDE_GROUP = 0x10000;
|
|
4172
|
+
/* omit C.R. & peers */
|
|
4173
|
+
|
|
4174
|
+
var FRAMEOPTION_EXCLUDE_TIES = 0x20000;
|
|
4175
|
+
/* omit C.R.'s peers */
|
|
3449
4176
|
// const FRAMEOPTION_START_OFFSET =
|
|
3450
4177
|
// FRAMEOPTION_START_OFFSET_PRECEDING | FRAMEOPTION_START_OFFSET_FOLLOWING;
|
|
3451
4178
|
// const FRAMEOPTION_END_OFFSET =
|
|
@@ -3454,7 +4181,6 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3454
4181
|
// FRAMEOPTION_EXCLUDE_CURRENT_ROW |
|
|
3455
4182
|
// FRAMEOPTION_EXCLUDE_GROUP |
|
|
3456
4183
|
// FRAMEOPTION_EXCLUDE_TIES;
|
|
3457
|
-
|
|
3458
4184
|
// const FRAMEOPTION_DEFAULTS =
|
|
3459
4185
|
// FRAMEOPTION_RANGE |
|
|
3460
4186
|
// FRAMEOPTION_START_UNBOUNDED_PRECEDING |
|
|
@@ -3463,71 +4189,91 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3463
4189
|
if (!(options & FRAMEOPTION_NONDEFAULT)) {
|
|
3464
4190
|
return '';
|
|
3465
4191
|
}
|
|
4192
|
+
|
|
3466
4193
|
var output = [];
|
|
4194
|
+
|
|
3467
4195
|
if (refName != null) {
|
|
3468
4196
|
output.push(refName);
|
|
3469
4197
|
}
|
|
4198
|
+
|
|
3470
4199
|
if (options & FRAMEOPTION_RANGE) {
|
|
3471
4200
|
output.push('RANGE');
|
|
3472
4201
|
}
|
|
4202
|
+
|
|
3473
4203
|
if (options & FRAMEOPTION_ROWS) {
|
|
3474
4204
|
output.push('ROWS');
|
|
3475
4205
|
}
|
|
4206
|
+
|
|
3476
4207
|
var between = options & FRAMEOPTION_BETWEEN;
|
|
4208
|
+
|
|
3477
4209
|
if (between) {
|
|
3478
4210
|
output.push('BETWEEN');
|
|
3479
4211
|
}
|
|
4212
|
+
|
|
3480
4213
|
if (options & FRAMEOPTION_START_UNBOUNDED_PRECEDING) {
|
|
3481
4214
|
output.push('UNBOUNDED PRECEDING');
|
|
3482
4215
|
}
|
|
4216
|
+
|
|
3483
4217
|
if (options & FRAMEOPTION_START_UNBOUNDED_FOLLOWING) {
|
|
3484
4218
|
output.push('UNBOUNDED FOLLOWING');
|
|
3485
4219
|
}
|
|
4220
|
+
|
|
3486
4221
|
if (options & FRAMEOPTION_START_CURRENT_ROW) {
|
|
3487
4222
|
output.push('CURRENT ROW');
|
|
3488
4223
|
}
|
|
4224
|
+
|
|
3489
4225
|
if (options & FRAMEOPTION_START_OFFSET_PRECEDING) {
|
|
3490
4226
|
output.push(this.deparse(startOffset) + ' PRECEDING');
|
|
3491
4227
|
}
|
|
4228
|
+
|
|
3492
4229
|
if (options & FRAMEOPTION_START_OFFSET_FOLLOWING) {
|
|
3493
4230
|
output.push(this.deparse(startOffset) + ' FOLLOWING');
|
|
3494
4231
|
}
|
|
4232
|
+
|
|
3495
4233
|
if (between) {
|
|
3496
4234
|
output.push('AND');
|
|
4235
|
+
|
|
3497
4236
|
if (options & FRAMEOPTION_END_UNBOUNDED_PRECEDING) {
|
|
3498
4237
|
output.push('UNBOUNDED PRECEDING');
|
|
3499
4238
|
}
|
|
4239
|
+
|
|
3500
4240
|
if (options & FRAMEOPTION_END_UNBOUNDED_FOLLOWING) {
|
|
3501
4241
|
output.push('UNBOUNDED FOLLOWING');
|
|
3502
4242
|
}
|
|
4243
|
+
|
|
3503
4244
|
if (options & FRAMEOPTION_END_CURRENT_ROW) {
|
|
3504
4245
|
output.push('CURRENT ROW');
|
|
3505
4246
|
}
|
|
4247
|
+
|
|
3506
4248
|
if (options & FRAMEOPTION_END_OFFSET_PRECEDING) {
|
|
3507
4249
|
output.push(this.deparse(endOffset) + ' PRECEDING');
|
|
3508
4250
|
}
|
|
4251
|
+
|
|
3509
4252
|
if (options & FRAMEOPTION_END_OFFSET_FOLLOWING) {
|
|
3510
4253
|
output.push(this.deparse(endOffset) + ' FOLLOWING');
|
|
3511
4254
|
}
|
|
3512
4255
|
}
|
|
4256
|
+
|
|
3513
4257
|
return output.join(' ');
|
|
3514
4258
|
}
|
|
3515
4259
|
}, {
|
|
3516
4260
|
key: "deparseInterval",
|
|
3517
4261
|
value: function deparseInterval(node) {
|
|
3518
4262
|
var _this23 = this;
|
|
4263
|
+
|
|
3519
4264
|
var type = ['interval'];
|
|
4265
|
+
|
|
3520
4266
|
if (node.arrayBounds != null) {
|
|
3521
4267
|
type.push('[]');
|
|
3522
4268
|
}
|
|
4269
|
+
|
|
3523
4270
|
if (node.typmods) {
|
|
3524
4271
|
var nodeTypmods = unwrapList(node.typmods);
|
|
3525
4272
|
var typmods = nodeTypmods.map(function (item) {
|
|
3526
4273
|
return _this23.deparse(item);
|
|
3527
4274
|
});
|
|
3528
|
-
var intervals = this.interval(typmods[0]);
|
|
4275
|
+
var intervals = this.interval(typmods[0]); // SELECT interval(0) '1 day 01:23:45.6789'
|
|
3529
4276
|
|
|
3530
|
-
// SELECT interval(0) '1 day 01:23:45.6789'
|
|
3531
4277
|
if (nodeTypmods[0] && nodeTypmods[0].A_Const && nodeTypmods[0].A_Const.val.Integer.ival === 32767 && nodeTypmods[1] && nodeTypmods[1].A_Const != null) {
|
|
3532
4278
|
intervals = ["(".concat(nodeTypmods[1].A_Const.val.Integer.ival, ")")];
|
|
3533
4279
|
} else {
|
|
@@ -3535,11 +4281,14 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3535
4281
|
if (part === 'second' && typmods.length === 2) {
|
|
3536
4282
|
return 'second(' + typmods[typmods.length - 1] + ')';
|
|
3537
4283
|
}
|
|
4284
|
+
|
|
3538
4285
|
return part;
|
|
3539
4286
|
});
|
|
3540
4287
|
}
|
|
4288
|
+
|
|
3541
4289
|
type.push(intervals.join(' to '));
|
|
3542
4290
|
}
|
|
4291
|
+
|
|
3543
4292
|
return type.join(' ');
|
|
3544
4293
|
}
|
|
3545
4294
|
}, {
|
|
@@ -3579,9 +4328,11 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3579
4328
|
28: 'DTZMOD'
|
|
3580
4329
|
};
|
|
3581
4330
|
}
|
|
4331
|
+
|
|
3582
4332
|
if (this.BITS == null) {
|
|
3583
4333
|
this.BITS = inverted(this.MASKS);
|
|
3584
4334
|
}
|
|
4335
|
+
|
|
3585
4336
|
if (this.INTERVALS == null) {
|
|
3586
4337
|
this.INTERVALS = {};
|
|
3587
4338
|
this.INTERVALS[1 << this.BITS.YEAR] = ['year'];
|
|
@@ -3596,12 +4347,12 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3596
4347
|
this.INTERVALS[1 << this.BITS.DAY | 1 << this.BITS.HOUR | 1 << this.BITS.MINUTE | 1 << this.BITS.SECOND] = ['day', 'second'];
|
|
3597
4348
|
this.INTERVALS[1 << this.BITS.HOUR | 1 << this.BITS.MINUTE] = ['hour', 'minute'];
|
|
3598
4349
|
this.INTERVALS[1 << this.BITS.HOUR | 1 << this.BITS.MINUTE | 1 << this.BITS.SECOND] = ['hour', 'second'];
|
|
3599
|
-
this.INTERVALS[1 << this.BITS.MINUTE | 1 << this.BITS.SECOND] = ['minute', 'second'];
|
|
3600
|
-
|
|
3601
|
-
// utils/timestamp.h
|
|
4350
|
+
this.INTERVALS[1 << this.BITS.MINUTE | 1 << this.BITS.SECOND] = ['minute', 'second']; // utils/timestamp.h
|
|
3602
4351
|
// #define INTERVAL_FULL_RANGE (0x7FFF)
|
|
4352
|
+
|
|
3603
4353
|
this.INTERVALS[this.INTERVAL_FULL_RANGE = '32767'] = [];
|
|
3604
4354
|
}
|
|
4355
|
+
|
|
3605
4356
|
return this.INTERVALS[mask.toString()];
|
|
3606
4357
|
}
|
|
3607
4358
|
}], [{
|
|
@@ -3612,4 +4363,5 @@ var Deparser = /*#__PURE__*/function () {
|
|
|
3612
4363
|
}]);
|
|
3613
4364
|
return Deparser;
|
|
3614
4365
|
}();
|
|
4366
|
+
|
|
3615
4367
|
exports["default"] = Deparser;
|