prostgles-server 4.2.300 → 4.2.301
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/dist/PubSubManager/addTrigger.js +6 -3
- package/dist/PubSubManager/addTrigger.js.map +1 -1
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.d.ts.map +1 -1
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.js +10 -23
- package/dist/PubSubManager/init/getDataWatchFunctionQuery.js.map +1 -1
- package/lib/PubSubManager/addTrigger.ts +7 -4
- package/lib/PubSubManager/init/getDataWatchFunctionQuery.ts +10 -23
- package/package.json +1 -1
|
@@ -114,6 +114,9 @@ const getColumnsInfo = ({ tracked_columns, table_name }, tableHandler) => {
|
|
|
114
114
|
throw `tracked_columns ${colName} not found in table ${table_name}`;
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
|
+
/**
|
|
118
|
+
* TODO: finish tracked_columns by trigger condition
|
|
119
|
+
*/
|
|
117
120
|
const columns_info = !hasPkey || !cols || !tracked_columns?.length || tracked_columns.length === cols.length ?
|
|
118
121
|
null
|
|
119
122
|
: {
|
|
@@ -121,12 +124,12 @@ const getColumnsInfo = ({ tracked_columns, table_name }, tableHandler) => {
|
|
|
121
124
|
.filter((c) => c.is_pkey)
|
|
122
125
|
.map((c) => `n.${(0, prostgles_types_1.asName)(c.name)} = o.${(0, prostgles_types_1.asName)(c.name)}`)
|
|
123
126
|
.join(" AND "),
|
|
124
|
-
tracked_columns:
|
|
127
|
+
tracked_columns: cols.reduce((acc, { name }) => ({
|
|
125
128
|
...acc,
|
|
126
|
-
[
|
|
129
|
+
[name]: 1,
|
|
127
130
|
}), {}),
|
|
128
131
|
where_statement: cols
|
|
129
|
-
.filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
|
|
132
|
+
// .filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
|
|
130
133
|
.map((c) => `column_name = ${(0, PubSubManagerUtils_1.asValue)(c.name)} AND (ROW(n.*) IS NULL OR n.${(0, prostgles_types_1.asName)(c.name)}${c.cast_to} IS DISTINCT FROM o.${(0, prostgles_types_1.asName)(c.name)}${c.cast_to})`)
|
|
131
134
|
.join(" OR \n"),
|
|
132
135
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addTrigger.js","sourceRoot":"","sources":["../../lib/PubSubManager/addTrigger.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"addTrigger.js","sourceRoot":"","sources":["../../lib/PubSubManager/addTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,UAAkB,CAAC;AACjE,eAAO,MAAM,yBAAyB,cAAe,OAAO,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"getDataWatchFunctionQuery.d.ts","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,iCAAiC,UAAkB,CAAC;AACjE,eAAO,MAAM,yBAAyB,cAAe,OAAO,GAAG,SAAS,WA0JvE,CAAC"}
|
|
@@ -33,9 +33,7 @@ const getDataWatchFunctionQuery = (debugMode) => {
|
|
|
33
33
|
|
|
34
34
|
DECLARE _columns_info JSONB := NULL;
|
|
35
35
|
|
|
36
|
-
DECLARE changed_columns _TEXT := NULL;
|
|
37
|
-
|
|
38
|
-
DECLARE tracked_columns _TEXT := NULL;
|
|
36
|
+
DECLARE changed_columns _TEXT := NULL;
|
|
39
37
|
|
|
40
38
|
BEGIN
|
|
41
39
|
|
|
@@ -173,21 +171,14 @@ exports.getDataWatchFunctionQuery = getDataWatchFunctionQuery;
|
|
|
173
171
|
const CHANGED_COLUMNS_CHECK = `
|
|
174
172
|
-- Determine changed columns for UPDATE operations
|
|
175
173
|
IF TG_OP = 'UPDATE' THEN
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
SELECT
|
|
179
|
-
FROM prostgles.v_triggers
|
|
180
|
-
LEFT JOIN LATERAL jsonb_object_keys(columns_info ->'tracked_columns') col
|
|
181
|
-
ON TRUE
|
|
174
|
+
|
|
175
|
+
IF NOT EXISTS (
|
|
176
|
+
SELECT 1
|
|
177
|
+
FROM prostgles.v_triggers
|
|
182
178
|
WHERE table_name = escaped_table
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
FROM cte1
|
|
187
|
-
/* If any value is null it means that specific condition is tracking all columns so we need to check them all */
|
|
188
|
-
WHERE array_position(cols, null) IS NULL;
|
|
189
|
-
|
|
190
|
-
IF tracked_columns IS NOT NULL THEN
|
|
179
|
+
/* If any value is null it means some condition is tracking all columns so we need to check them all */
|
|
180
|
+
AND columns_info IS NULL
|
|
181
|
+
) THEN
|
|
191
182
|
|
|
192
183
|
SELECT columns_info
|
|
193
184
|
INTO _columns_info
|
|
@@ -200,7 +191,7 @@ IF TG_OP = 'UPDATE' THEN
|
|
|
200
191
|
$c$
|
|
201
192
|
WITH changed AS (
|
|
202
193
|
SELECT column_name
|
|
203
|
-
FROM
|
|
194
|
+
FROM jsonb_object_keys(%L) as column_name
|
|
204
195
|
WHERE EXISTS (
|
|
205
196
|
SELECT 1
|
|
206
197
|
FROM old_table o
|
|
@@ -212,7 +203,7 @@ IF TG_OP = 'UPDATE' THEN
|
|
|
212
203
|
SELECT array_agg(column_name)
|
|
213
204
|
FROM changed;
|
|
214
205
|
$c$,
|
|
215
|
-
tracked_columns,
|
|
206
|
+
_columns_info->'tracked_columns',
|
|
216
207
|
_columns_info->>'join_condition',
|
|
217
208
|
_columns_info->>'where_statement'
|
|
218
209
|
);
|
|
@@ -223,10 +214,6 @@ IF TG_OP = 'UPDATE' THEN
|
|
|
223
214
|
|
|
224
215
|
/* It is possible to get no changes */
|
|
225
216
|
changed_columns := COALESCE(changed_columns, '{}');
|
|
226
|
-
|
|
227
|
-
IF NOT starts_with(changed_columns::TEXT, '{') THEN
|
|
228
|
-
RAISE EXCEPTION 'changed_columns is not a JSON array: %', changed_columns;
|
|
229
|
-
END IF;
|
|
230
217
|
|
|
231
218
|
END IF;
|
|
232
219
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,2EAA2D;AAC3D,8DAAyD;AACzD,8DAAsF;AAEtF;;;GAGG;AACU,QAAA,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,OAAO;;qCAE4B,wCAAY,CAAC,eAAe
|
|
1
|
+
{"version":3,"file":"getDataWatchFunctionQuery.js","sourceRoot":"","sources":["../../../lib/PubSubManager/init/getDataWatchFunctionQuery.ts"],"names":[],"mappings":";;;AAAA,2EAA2D;AAC3D,8DAAyD;AACzD,8DAAsF;AAEtF;;;GAGG;AACU,QAAA,iCAAiC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1D,MAAM,yBAAyB,GAAG,CAAC,SAA8B,EAAE,EAAE;IAC1E,OAAO;;qCAE4B,wCAAY,CAAC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2B/C,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAsFP,IAAA,4BAAO,EAAC,kCAAa,CAAC,OAAO,CAAC;;kCAE5B,IAAA,4BAAO,EAAC,8BAAS,CAAC;;kCAElB,IAAA,4BAAO,EAAC,+BAAU,CAAC,IAAI,CAAC;;;;;;;;kCAQxB,SAAS,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;kBAgB9F,IAAA,qCAAgB,GAAE;;;;;;;8BAON,wCAAY,CAAC,eAAe;;GAEvD,CAAC;AACJ,CAAC,CAAC;AA1JW,QAAA,yBAAyB,6BA0JpC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD7B,CAAC"}
|
|
@@ -138,6 +138,9 @@ const getColumnsInfo = (
|
|
|
138
138
|
throw `tracked_columns ${colName} not found in table ${table_name}`;
|
|
139
139
|
}
|
|
140
140
|
});
|
|
141
|
+
/**
|
|
142
|
+
* TODO: finish tracked_columns by trigger condition
|
|
143
|
+
*/
|
|
141
144
|
const columns_info =
|
|
142
145
|
!hasPkey || !cols || !tracked_columns?.length || tracked_columns.length === cols.length ?
|
|
143
146
|
null
|
|
@@ -146,15 +149,15 @@ const getColumnsInfo = (
|
|
|
146
149
|
.filter((c) => c.is_pkey)
|
|
147
150
|
.map((c) => `n.${asName(c.name)} = o.${asName(c.name)}`)
|
|
148
151
|
.join(" AND "),
|
|
149
|
-
tracked_columns:
|
|
150
|
-
(acc,
|
|
152
|
+
tracked_columns: cols.reduce(
|
|
153
|
+
(acc, { name }) => ({
|
|
151
154
|
...acc,
|
|
152
|
-
[
|
|
155
|
+
[name]: 1,
|
|
153
156
|
}),
|
|
154
157
|
{} as Record<string, number>
|
|
155
158
|
),
|
|
156
159
|
where_statement: cols
|
|
157
|
-
.filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
|
|
160
|
+
// .filter((c) => !c.is_pkey && tracked_columns.includes(c.name))
|
|
158
161
|
.map(
|
|
159
162
|
(c) =>
|
|
160
163
|
`column_name = ${asValue(c.name)} AND (ROW(n.*) IS NULL OR n.${asName(c.name)}${c.cast_to} IS DISTINCT FROM o.${asName(c.name)}${c.cast_to})`
|
|
@@ -31,9 +31,7 @@ export const getDataWatchFunctionQuery = (debugMode: boolean | undefined) => {
|
|
|
31
31
|
|
|
32
32
|
DECLARE _columns_info JSONB := NULL;
|
|
33
33
|
|
|
34
|
-
DECLARE changed_columns _TEXT := NULL;
|
|
35
|
-
|
|
36
|
-
DECLARE tracked_columns _TEXT := NULL;
|
|
34
|
+
DECLARE changed_columns _TEXT := NULL;
|
|
37
35
|
|
|
38
36
|
BEGIN
|
|
39
37
|
|
|
@@ -171,21 +169,14 @@ export const getDataWatchFunctionQuery = (debugMode: boolean | undefined) => {
|
|
|
171
169
|
const CHANGED_COLUMNS_CHECK = `
|
|
172
170
|
-- Determine changed columns for UPDATE operations
|
|
173
171
|
IF TG_OP = 'UPDATE' THEN
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
SELECT
|
|
177
|
-
FROM prostgles.v_triggers
|
|
178
|
-
LEFT JOIN LATERAL jsonb_object_keys(columns_info ->'tracked_columns') col
|
|
179
|
-
ON TRUE
|
|
172
|
+
|
|
173
|
+
IF NOT EXISTS (
|
|
174
|
+
SELECT 1
|
|
175
|
+
FROM prostgles.v_triggers
|
|
180
176
|
WHERE table_name = escaped_table
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
FROM cte1
|
|
185
|
-
/* If any value is null it means that specific condition is tracking all columns so we need to check them all */
|
|
186
|
-
WHERE array_position(cols, null) IS NULL;
|
|
187
|
-
|
|
188
|
-
IF tracked_columns IS NOT NULL THEN
|
|
177
|
+
/* If any value is null it means some condition is tracking all columns so we need to check them all */
|
|
178
|
+
AND columns_info IS NULL
|
|
179
|
+
) THEN
|
|
189
180
|
|
|
190
181
|
SELECT columns_info
|
|
191
182
|
INTO _columns_info
|
|
@@ -198,7 +189,7 @@ IF TG_OP = 'UPDATE' THEN
|
|
|
198
189
|
$c$
|
|
199
190
|
WITH changed AS (
|
|
200
191
|
SELECT column_name
|
|
201
|
-
FROM
|
|
192
|
+
FROM jsonb_object_keys(%L) as column_name
|
|
202
193
|
WHERE EXISTS (
|
|
203
194
|
SELECT 1
|
|
204
195
|
FROM old_table o
|
|
@@ -210,7 +201,7 @@ IF TG_OP = 'UPDATE' THEN
|
|
|
210
201
|
SELECT array_agg(column_name)
|
|
211
202
|
FROM changed;
|
|
212
203
|
$c$,
|
|
213
|
-
tracked_columns,
|
|
204
|
+
_columns_info->'tracked_columns',
|
|
214
205
|
_columns_info->>'join_condition',
|
|
215
206
|
_columns_info->>'where_statement'
|
|
216
207
|
);
|
|
@@ -221,10 +212,6 @@ IF TG_OP = 'UPDATE' THEN
|
|
|
221
212
|
|
|
222
213
|
/* It is possible to get no changes */
|
|
223
214
|
changed_columns := COALESCE(changed_columns, '{}');
|
|
224
|
-
|
|
225
|
-
IF NOT starts_with(changed_columns::TEXT, '{') THEN
|
|
226
|
-
RAISE EXCEPTION 'changed_columns is not a JSON array: %', changed_columns;
|
|
227
|
-
END IF;
|
|
228
215
|
|
|
229
216
|
END IF;
|
|
230
217
|
|