prostgles-server 4.2.446 → 4.2.448
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getJoinQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getJoinQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,KAAK,IAAI,GAAG;IACV,EAAE,EAAE,QAAQ,CAAC;IACb,EAAE,EAAE,YAAY,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM;;;CAMzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AACrE;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAgB/D,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,aAAa,WAAW,EAAE,YAAY,IAAI,KAAG,
|
|
1
|
+
{"version":3,"file":"getJoinQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getJoinQuery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAK9D,KAAK,IAAI,GAAG;IACV,EAAE,EAAE,QAAQ,CAAC;IACb,EAAE,EAAE,YAAY,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM;;;CAMzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AACrE;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAgB/D,KAAK,kBAAkB,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,aAAa,WAAW,EAAE,YAAY,IAAI,KAAG,kBAkIzE,CAAC;AAwFF,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC"}
|
|
@@ -58,10 +58,12 @@ const getJoinQuery = (viewHandler, { q1, q2 }) => {
|
|
|
58
58
|
const targetTableAlias = (0, prostgles_types_1.asName)(targetTableAliasRaw);
|
|
59
59
|
const firstJoinTablePath = paths[0];
|
|
60
60
|
const firstJoinTableJoinFields = firstJoinTablePath.on.flatMap((condObj) => Object.entries(condObj).map(([_source, target]) => target));
|
|
61
|
+
const jsonAggSort = (0, DboBuilder_1.prepareOrderByQuery)(q2.orderByItems, targetTableAliasRaw).join(", ");
|
|
61
62
|
const { rootSelectItems, jsonAggLimit } = getNestedSelectFields({
|
|
62
63
|
q: q2,
|
|
63
64
|
firstJoinTableAlias: getJoinTable(firstJoinTablePath.table, 0, paths.length === 1 ? targetTableAliasRaw : undefined).rawAlias,
|
|
64
65
|
_joinFields: firstJoinTableJoinFields,
|
|
66
|
+
jsonAggSort,
|
|
65
67
|
});
|
|
66
68
|
const joinType = q2.isLeftJoin ? "LEFT" : "INNER";
|
|
67
69
|
const joinCondition = (0, getTableJoinQuery_1.getJoinOnCondition)({
|
|
@@ -75,7 +77,6 @@ const getJoinQuery = (viewHandler, { q1, q2 }) => {
|
|
|
75
77
|
.filter((s) => s.selected)
|
|
76
78
|
.map((s) => (0, asNameAlias_1.asNameAlias)(s.alias, targetTableAliasRaw));
|
|
77
79
|
const rootNestedSort = q1.orderByItems.filter((d) => d.nested?.joinAlias === q2.joinAlias);
|
|
78
|
-
const jsonAggSort = (0, DboBuilder_1.prepareOrderByQuery)(q2.orderByItems, targetTableAliasRaw).join(", ");
|
|
79
80
|
const jsonAgg = `json_agg((SELECT x FROM (SELECT ${selectedFields.join(", ")}) as x )${jsonAggSort}) ${jsonAggLimit} as ${exports.JSON_AGG_FIELD_NAME}`;
|
|
80
81
|
const { innerQuery } = getInnerJoinQuery({
|
|
81
82
|
paths,
|
|
@@ -202,7 +203,7 @@ const getInnerJoinQuery = ({ paths, q1, q2, targetTableAliasRaw, rootSelectItems
|
|
|
202
203
|
});
|
|
203
204
|
return { innerQuery };
|
|
204
205
|
};
|
|
205
|
-
const getNestedSelectFields = ({ q, firstJoinTableAlias, _joinFields }) => {
|
|
206
|
+
const getNestedSelectFields = ({ q, firstJoinTableAlias, _joinFields, jsonAggSort, }) => {
|
|
206
207
|
const targetTableAlias = q.tableAlias || q.table;
|
|
207
208
|
const requiredJoinFields = Array.from(new Set(_joinFields));
|
|
208
209
|
const selectedFields = q.select.filter((s) => s.selected);
|
|
@@ -225,7 +226,7 @@ const getNestedSelectFields = ({ q, firstJoinTableAlias, _joinFields }) => {
|
|
|
225
226
|
})));
|
|
226
227
|
const getQuery = (tableAlias) => {
|
|
227
228
|
const partitionBy = `PARTITION BY ${requiredJoinFields.map((f) => (0, asNameAlias_1.asNameAlias)(f, tableAlias)).join(", ")}`;
|
|
228
|
-
return `ROW_NUMBER() OVER(${partitionBy}) AS ${exports.NESTED_ROWID_FIELD_NAME}`;
|
|
229
|
+
return `ROW_NUMBER() OVER(${partitionBy} ${jsonAggSort}) AS ${exports.NESTED_ROWID_FIELD_NAME}`;
|
|
229
230
|
};
|
|
230
231
|
if (q.limit) {
|
|
231
232
|
rootSelectItems.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getJoinQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getJoinQuery.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAEpD,gEAA6D;AAG7D,qDAAwF;AAExF,wEAAsE;AACtE,8CAAoD;AACpD,yDAAsD;AAQtD;;GAEG;AACI,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;IAC5C,MAAM,KAAK,GAAG,IAAA,wBAAM,EAAC,iBAAiB,GAAG,OAAO,CAAC,CAAC;IAClD,OAAO;QACL,KAAK;QACL,UAAU,EAAE,GAAG,IAAA,wBAAM,EAAC,OAAO,CAAC,OAAO,KAAK,EAAE;KAC7C,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB;AAEW,QAAA,mBAAmB,GAAG,iCAAiC,CAAC;AACrE;;GAEG;AACU,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,MAAM,YAAY,GAAG,CACnB,SAAiB,EACjB,SAAiB,EACjB,gBAAoC,EACpC,EAAE;IACF,MAAM,QAAQ,GAAG,gBAAgB,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;IACnE,OAAO;QACL,kEAAkE;QAClE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,IAAA,wBAAM,EAAC,QAAQ,CAAC;QACvB,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAWF;;;;;;;;;;GAUG;AACI,MAAM,YAAY,GAAG,CAAC,WAAwB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAQ,EAAsB,EAAE;IAC7F,MAAM,KAAK,GAAG,IAAA,6BAAa,EAAC;QAC1B,SAAS,EAAE,EAAE,CAAC,KAAK;QACnB,OAAO,EAAE,EAAE,CAAC,QAAQ;QACpB,WAAW,EAAE,WAAW;QACxB,gBAAgB,EAAE,IAAI;QACtB,wBAAwB,EAAE,IAAI;KAC/B,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,mBAAmB,GAAG,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,KAAK,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAA,wBAAM,EAAC,mBAAmB,CAAC,CAAC;IAErD,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACrC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAC3D,CAAC;IACF,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,qBAAqB,CAAC;QAC9D,CAAC,EAAE,EAAE;QACL,mBAAmB,EAAE,YAAY,CAC/B,kBAAkB,CAAC,KAAK,EACxB,CAAC,EACD,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CACrD,CAAC,QAAQ;QACV,WAAW,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"getJoinQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getJoinQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ export const NESTED_ROWID_FIELD_NAME = "prostgles_rowid_field";
|
|
|
35
35
|
const getJoinTable = (
|
|
36
36
|
tableName: string,
|
|
37
37
|
pathIndex: number,
|
|
38
|
-
isLastTableAlias: string | undefined
|
|
38
|
+
isLastTableAlias: string | undefined,
|
|
39
39
|
) => {
|
|
40
40
|
const rawAlias = isLastTableAlias ?? `p${pathIndex} ${tableName}`;
|
|
41
41
|
return {
|
|
@@ -83,16 +83,18 @@ export const getJoinQuery = (viewHandler: ViewHandler, { q1, q2 }: Args): GetJoi
|
|
|
83
83
|
|
|
84
84
|
const firstJoinTablePath = paths[0]!;
|
|
85
85
|
const firstJoinTableJoinFields = firstJoinTablePath.on.flatMap((condObj) =>
|
|
86
|
-
Object.entries(condObj).map(([_source, target]) => target)
|
|
86
|
+
Object.entries(condObj).map(([_source, target]) => target),
|
|
87
87
|
);
|
|
88
|
+
const jsonAggSort = prepareOrderByQuery(q2.orderByItems, targetTableAliasRaw).join(", ");
|
|
88
89
|
const { rootSelectItems, jsonAggLimit } = getNestedSelectFields({
|
|
89
90
|
q: q2,
|
|
90
91
|
firstJoinTableAlias: getJoinTable(
|
|
91
92
|
firstJoinTablePath.table,
|
|
92
93
|
0,
|
|
93
|
-
paths.length === 1 ? targetTableAliasRaw : undefined
|
|
94
|
+
paths.length === 1 ? targetTableAliasRaw : undefined,
|
|
94
95
|
).rawAlias,
|
|
95
96
|
_joinFields: firstJoinTableJoinFields,
|
|
97
|
+
jsonAggSort,
|
|
96
98
|
});
|
|
97
99
|
|
|
98
100
|
const joinType = q2.isLeftJoin ? "LEFT" : "INNER";
|
|
@@ -109,7 +111,6 @@ export const getJoinQuery = (viewHandler: ViewHandler, { q1, q2 }: Args): GetJoi
|
|
|
109
111
|
.filter((s) => s.selected)
|
|
110
112
|
.map((s) => asNameAlias(s.alias, targetTableAliasRaw));
|
|
111
113
|
const rootNestedSort = q1.orderByItems.filter((d) => d.nested?.joinAlias === q2.joinAlias);
|
|
112
|
-
const jsonAggSort = prepareOrderByQuery(q2.orderByItems, targetTableAliasRaw).join(", ");
|
|
113
114
|
const jsonAgg = `json_agg((SELECT x FROM (SELECT ${selectedFields.join(", ")}) as x )${jsonAggSort}) ${jsonAggLimit} as ${JSON_AGG_FIELD_NAME}`;
|
|
114
115
|
|
|
115
116
|
const { innerQuery } = getInnerJoinQuery({
|
|
@@ -135,7 +136,7 @@ export const getJoinQuery = (viewHandler: ViewHandler, { q1, q2 }: Args): GetJoi
|
|
|
135
136
|
`SELECT `,
|
|
136
137
|
...indentLines(
|
|
137
138
|
[rootTableIdField, jsonAgg, ...rootNestedSort.map((d) => d.nested!.wrapperQuerySortItem)],
|
|
138
|
-
{ appendCommas: true }
|
|
139
|
+
{ appendCommas: true },
|
|
139
140
|
),
|
|
140
141
|
`FROM (`,
|
|
141
142
|
...indentLines(innerQuery),
|
|
@@ -165,7 +166,7 @@ export const getJoinQuery = (viewHandler: ViewHandler, { q1, q2 }: Args): GetJoi
|
|
|
165
166
|
jsonAgg,
|
|
166
167
|
...rootNestedSort.map((d) => d.nested!.wrapperQuerySortItem),
|
|
167
168
|
],
|
|
168
|
-
{ appendCommas: true }
|
|
169
|
+
{ appendCommas: true },
|
|
169
170
|
),
|
|
170
171
|
`FROM (`,
|
|
171
172
|
...indentLines(innerQuery),
|
|
@@ -221,7 +222,7 @@ const getInnerJoinQuery = ({
|
|
|
221
222
|
: q1.table
|
|
222
223
|
: paths[i - 1]!.table,
|
|
223
224
|
i - 1,
|
|
224
|
-
undefined
|
|
225
|
+
undefined,
|
|
225
226
|
);
|
|
226
227
|
|
|
227
228
|
const table = getJoinTable(path.table, i, isLast ? targetTableAliasRaw : undefined);
|
|
@@ -236,7 +237,7 @@ const getInnerJoinQuery = ({
|
|
|
236
237
|
if (aggs.length) {
|
|
237
238
|
const groupByFields = rootSelectItems
|
|
238
239
|
.map((c, i) =>
|
|
239
|
-
c.isJoinCol || (c.selected && c.type !== "aggregation") ? `${i + 1}` : undefined
|
|
240
|
+
c.isJoinCol || (c.selected && c.type !== "aggregation") ? `${i + 1}` : undefined,
|
|
240
241
|
)
|
|
241
242
|
.filter(isDefined);
|
|
242
243
|
if (groupByFields.length) {
|
|
@@ -255,7 +256,7 @@ const getInnerJoinQuery = ({
|
|
|
255
256
|
` /* Join fields + select */`,
|
|
256
257
|
...indentLines(
|
|
257
258
|
rootSelectItems.map((s) => s.query),
|
|
258
|
-
{ appendCommas: true }
|
|
259
|
+
{ appendCommas: true },
|
|
259
260
|
),
|
|
260
261
|
`FROM ${table.name} ${table.alias}`,
|
|
261
262
|
...targetQueryExtraQueries,
|
|
@@ -280,13 +281,19 @@ type GetSelectFieldsArgs = {
|
|
|
280
281
|
q: NewQueryJoin;
|
|
281
282
|
firstJoinTableAlias: string;
|
|
282
283
|
_joinFields: string[];
|
|
284
|
+
jsonAggSort: string;
|
|
283
285
|
};
|
|
284
286
|
|
|
285
287
|
export type SelectItemNested = SelectItemValidated & {
|
|
286
288
|
query: string;
|
|
287
289
|
isJoinCol: boolean;
|
|
288
290
|
};
|
|
289
|
-
const getNestedSelectFields = ({
|
|
291
|
+
const getNestedSelectFields = ({
|
|
292
|
+
q,
|
|
293
|
+
firstJoinTableAlias,
|
|
294
|
+
_joinFields,
|
|
295
|
+
jsonAggSort,
|
|
296
|
+
}: GetSelectFieldsArgs) => {
|
|
290
297
|
const targetTableAlias = q.tableAlias || q.table;
|
|
291
298
|
|
|
292
299
|
const requiredJoinFields = Array.from(new Set(_joinFields));
|
|
@@ -308,12 +315,12 @@ const getNestedSelectFields = ({ q, firstJoinTableAlias, _joinFields }: GetSelec
|
|
|
308
315
|
selected: false,
|
|
309
316
|
isJoinCol: true,
|
|
310
317
|
query: `${asName(firstJoinTableAlias)}.${getJoinCol(f).rootSelect}`,
|
|
311
|
-
}))
|
|
318
|
+
})),
|
|
312
319
|
);
|
|
313
320
|
|
|
314
321
|
const getQuery = (tableAlias?: string) => {
|
|
315
322
|
const partitionBy = `PARTITION BY ${requiredJoinFields.map((f) => asNameAlias(f, tableAlias)).join(", ")}`;
|
|
316
|
-
return `ROW_NUMBER() OVER(${partitionBy}) AS ${NESTED_ROWID_FIELD_NAME}`;
|
|
323
|
+
return `ROW_NUMBER() OVER(${partitionBy} ${jsonAggSort}) AS ${NESTED_ROWID_FIELD_NAME}`;
|
|
317
324
|
};
|
|
318
325
|
|
|
319
326
|
if (q.limit) {
|