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