grafeo-ogm 2.5.0 → 2.5.2

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.
@@ -51,6 +51,10 @@ export function planSchemaSync(schema, live, vectorConfig) {
51
51
  const changed = [];
52
52
  const covered = [];
53
53
  const blocked = [];
54
+ const equivalentIndex = (name, definition) => live.indexes.find((i) => i.name !== name &&
55
+ !i.owningConstraint &&
56
+ i.type === definition.type &&
57
+ sameSchema(definition, i, definition.unorderedProperties));
54
58
  for (const statement of desired) {
55
59
  const isConstraint = statement.kind === 'unique-constraint';
56
60
  const present = isConstraint
@@ -71,10 +75,17 @@ export function planSchemaSync(schema, live, vectorConfig) {
71
75
  !liveConstraintNames.has(i.name) &&
72
76
  sameSchema(definition, i));
73
77
  if (blocker) {
74
- blocked.push({ statement, by: blocker.name });
78
+ blocked.push({ statement, by: blocker.name, reason: 'range-index' });
75
79
  continue;
76
80
  }
77
81
  }
82
+ const twin = !isConstraint &&
83
+ definition &&
84
+ equivalentIndex(statement.name, definition);
85
+ if (twin) {
86
+ blocked.push({ statement, by: twin.name, reason: 'equivalent-index' });
87
+ continue;
88
+ }
78
89
  create.push(statement);
79
90
  continue;
80
91
  }
@@ -86,8 +97,16 @@ export function planSchemaSync(schema, live, vectorConfig) {
86
97
  : definitions.get(statement.name);
87
98
  const liveItem = liveIndexesByName.get(statement.name);
88
99
  const differences = liveItem && definition ? diffDefinition(definition, liveItem) : [];
89
- if (differences.length === 0)
100
+ if (differences.length === 0) {
90
101
  inSync.push(statement);
102
+ continue;
103
+ }
104
+ // v2.5.1 — Neo4j will not create a fulltext/vector index equivalent to
105
+ // one that exists under another name, so a drop + recreate would leave
106
+ // the SDL name missing (and fulltext queries address it by that name).
107
+ const twin = definition && equivalentIndex(statement.name, definition);
108
+ if (twin)
109
+ blocked.push({ statement, by: twin.name, reason: 'equivalent-index' });
91
110
  else
92
111
  changed.push({
93
112
  statement,
@@ -258,13 +277,13 @@ function diffDefinition(want, live) {
258
277
  * Same entity, labels and properties? Requires the live row to report its
259
278
  * definition columns — without them nothing is ever called equivalent.
260
279
  */
261
- function sameSchema(want, live) {
280
+ function sameSchema(want, live, unorderedProperties = false) {
262
281
  if (!live.labelsOrTypes || !live.properties)
263
282
  return false;
264
283
  if (live.entityType && live.entityType !== want.entityType)
265
284
  return false;
266
- return (sameList(live.labelsOrTypes, want.labelsOrTypes) &&
267
- sameList(live.properties, want.properties));
285
+ return (sameList(live.labelsOrTypes, want.labelsOrTypes, unorderedProperties) &&
286
+ sameList(live.properties, want.properties, unorderedProperties));
268
287
  }
269
288
  function sameList(a, b, unordered = false) {
270
289
  if (a.length !== b.length)
@@ -1 +1 @@
1
- {"version":3,"file":"push-planner.js","sourceRoot":"","sources":["../../../src/cli/push-planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push-planner.js","sourceRoot":"","sources":["../../../src/cli/push-planner.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,17 @@ export declare class MutationCompiler {
54
54
  * from the same counter).
55
55
  */
56
56
  private buildTargetPolicyPredicate;
57
+ /**
58
+ * v2.5.2 — a connect / disconnect nested in a connect / disconnect item
59
+ * writes the INTERMEDIATE node's own relationships, which the direct
60
+ * equivalent (`Intermediate.update({ connect | disconnect })`) only allows
61
+ * under its `update` policy. Pre-2.5.2 the intermediate was gated by
62
+ * `read` alone, so a context that could merely see a node could link and
63
+ * unlink its relationships. Inside the item's CALL this filters the row
64
+ * before the nested ops; the outer link / unlink still needs `read` only,
65
+ * and `count(*)` keeps one row per node. No policies → no lines.
66
+ */
67
+ private gateOnUpdate;
57
68
  private getPolicyWhereCompiler;
58
69
  /**
59
70
  * Compile a nested-write `where` (connect, disconnect, nested update,
@@ -1 +1 @@
1
- {"version":3,"file":"mutation.compiler.d.ts","sourceRoot":"","sources":["../../../src/compilers/mutation.compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutation.compiler.d.ts","sourceRoot":"","sources":["../../../src/compilers/mutation.compiler.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,15 @@ const MAX_NESTED_LINK_DEPTH = 5;
20
20
  * bound as `targetVar`: that node becomes the source, everything in scope
21
21
  * stays carried, and its own names are prefixed by it.
22
22
  */
23
- function nestedScope(carryVars, targetVar, depth) {
23
+ function nestedScope(carryVars, targetVar, depth,
24
+ /**
25
+ * A token unique along the whole write path (v2.5.1). Pre-2.5.1 the
26
+ * prefix was `targetVar` alone, which sibling connects share (`target`)
27
+ * and which per-member union / interface dispatch restarts (`n_conn0`),
28
+ * so their nested params collided and the last writer won: links went
29
+ * to the wrong node and edge values were overwritten.
30
+ */
31
+ uniqueToken) {
24
32
  if (depth >= MAX_NESTED_LINK_DEPTH)
25
33
  throw new OGMError(`Nested connect / disconnect deeper than ${MAX_NESTED_LINK_DEPTH} levels is not supported.`);
26
34
  const vars = [...new Set([...carryVars, targetVar])];
@@ -28,7 +36,7 @@ function nestedScope(carryVars, targetVar, depth) {
28
36
  sourceVar: targetVar,
29
37
  carryVars: vars,
30
38
  withClause: `WITH ${vars.join(', ')}`,
31
- varPrefix: `${targetVar}_`,
39
+ varPrefix: `${uniqueToken}_`,
32
40
  depth: depth + 1,
33
41
  };
34
42
  }
@@ -115,6 +123,20 @@ export class MutationCompiler {
115
123
  mergeParams(params, clause.params);
116
124
  return clause.cypher;
117
125
  }
126
+ /**
127
+ * v2.5.2 — a connect / disconnect nested in a connect / disconnect item
128
+ * writes the INTERMEDIATE node's own relationships, which the direct
129
+ * equivalent (`Intermediate.update({ connect | disconnect })`) only allows
130
+ * under its `update` policy. Pre-2.5.2 the intermediate was gated by
131
+ * `read` alone, so a context that could merely see a node could link and
132
+ * unlink its relationships. Inside the item's CALL this filters the row
133
+ * before the nested ops; the outer link / unlink still needs `read` only,
134
+ * and `count(*)` keeps one row per node. No policies → no lines.
135
+ */
136
+ gateOnUpdate(withClause, targetNodeDef, targetVar, params, policyContext, paramCounter) {
137
+ const predicate = this.buildTargetPolicyPredicate(targetNodeDef, targetVar, params, policyContext, paramCounter, 'update');
138
+ return predicate ? [withClause, `WHERE ${predicate}`] : [];
139
+ }
118
140
  getPolicyWhereCompiler() {
119
141
  // Inherit the logger: since v2.3.0 this compiler also compiles every
120
142
  // nested-write `where`, and its empty-AND/OR warnings must surface.
@@ -168,6 +190,9 @@ export class MutationCompiler {
168
190
  */
169
191
  isConnectFastPathEligible(items, targetNodeDef) {
170
192
  for (const item of items) {
193
+ // A non-object item takes the per-item path, which rejects it.
194
+ if (!isPlainObject(item))
195
+ return false;
171
196
  // A nested `connect` is per item (v2.4.8): the UNWIND cannot run it.
172
197
  if (item.connect != null)
173
198
  return false;
@@ -483,6 +508,11 @@ export class MutationCompiler {
483
508
  schema: this.schema,
484
509
  });
485
510
  const conditions = [
511
+ // v2.5.1 — an interface / union target binds no label in the
512
+ // pattern, so restrict the match to its member types. Without it a
513
+ // nested or cascade delete also DETACH DELETEd any other node on the
514
+ // same relationship type (a Toy deleted through `pets`).
515
+ this.targetMatch(targetNodeDef, targetVar).labelPredicate,
486
516
  this.compileTargetWhere(item.where, targetVar, targetNodeDef, args.params, args.policyContext, args.paramCounter),
487
517
  this.buildTargetPolicyPredicate(targetNodeDef, targetVar, args.params, args.policyContext, args.paramCounter, 'delete'),
488
518
  ].filter((c) => Boolean(c));
@@ -1015,6 +1045,11 @@ export class MutationCompiler {
1015
1045
  const relDef = nodeDef.relationships.get(fieldName);
1016
1046
  if (!relDef)
1017
1047
  continue;
1048
+ // v2.5.1 — `{ rel: null }` (the generated input is `InputMaybe`)
1049
+ // connects nothing. Since 2.4.8 it reached the item compiler with no
1050
+ // `where`, so the MATCH had no filter and EVERY target was linked.
1051
+ if (spec == null)
1052
+ continue;
1018
1053
  const abstract = abstractTarget(relDef.target, this.schema);
1019
1054
  const memberEntries = abstract && !isBlanketSpec(spec)
1020
1055
  ? perMemberEntries(spec, abstract, fieldName)
@@ -1186,9 +1221,14 @@ export class MutationCompiler {
1186
1221
  */
1187
1222
  buildConnectItem(a) {
1188
1223
  const { connectSpec, relDef, targetNodeDef, sourceVar, connectVar } = a;
1224
+ // v2.5.1 — every connect item reaches here (top-level, array, nested in
1225
+ // create / update / connect). A null or non-object item has no filter:
1226
+ // compiling it would MATCH, and link, every target node.
1227
+ if (!isPlainObject(connectSpec))
1228
+ throw new OGMError(`A connect item on "${relDef.fieldName}" must be an object such as { where: { node: { … } } }; got ${connectSpec === null ? 'null' : typeof connectSpec}.`);
1189
1229
  const lines = [];
1190
- const whereSpec = connectSpec?.where;
1191
- const edgeInput = connectSpec?.edge;
1230
+ const whereSpec = connectSpec.where;
1231
+ const edgeInput = connectSpec.edge;
1192
1232
  lines.push(a.withClause);
1193
1233
  lines.push('CALL {');
1194
1234
  lines.push(a.withClause);
@@ -1234,12 +1274,13 @@ export class MutationCompiler {
1234
1274
  // A `connect` nested in the item links the CONNECTED node onward
1235
1275
  // (`connect: { posts: [{ where, connect: { tags: [...] } }] }`), with
1236
1276
  // the same policy predicates at its level. Pre-2.4.8 it was ignored.
1237
- const nested = connectSpec?.connect;
1277
+ const nested = connectSpec.connect;
1238
1278
  if (nested != null) {
1239
1279
  if (abstractTarget(targetNodeDef.typeName, this.schema))
1240
1280
  throw new OGMError(`A nested "connect" inside a connect on "${relDef.fieldName}" (abstract type "${targetNodeDef.typeName}") ` +
1241
1281
  `must be keyed by the implementing type, e.g. { ${relDef.fieldName}: { Member: [{ where, connect }] } }.`);
1242
- const inner = nestedScope(a.scope.carryVars, connectVar, a.scope.depth);
1282
+ const inner = nestedScope(a.scope.carryVars, connectVar, a.scope.depth, a.edgeParamPrefix);
1283
+ lines.push(...this.gateOnUpdate(inner.withClause, targetNodeDef, connectVar, a.params, a.policyContext, a.paramCounter));
1243
1284
  for (const nestedConnect of Array.isArray(nested) ? nested : [nested]) {
1244
1285
  if (!isPlainObject(nestedConnect))
1245
1286
  throw new OGMError(`A nested "connect" inside a connect on "${relDef.fieldName}" must be an object keyed by relationship.`);
@@ -1282,14 +1323,16 @@ export class MutationCompiler {
1282
1323
  * { tags: [...] } }] }`), with the same policy predicates at its level.
1283
1324
  * Pre-2.4.8 it was ignored. `''`-free: no input, no lines.
1284
1325
  */
1285
- buildNestedDisconnect(nested, relDef, targetNodeDef, targetVar, carryVars, params, policyContext, paramCounter, depth = 0) {
1326
+ buildNestedDisconnect(nested, relDef, targetNodeDef, targetVar, carryVars, params, policyContext, paramCounter, depth = 0,
1327
+ /** Unique along the write path; see `nestedScope`. */
1328
+ uniqueToken = targetVar) {
1286
1329
  if (nested == null)
1287
1330
  return [];
1288
1331
  if (abstractTarget(targetNodeDef.typeName, this.schema))
1289
1332
  throw new OGMError(`A nested "disconnect" inside a disconnect on "${relDef.fieldName}" (abstract type "${targetNodeDef.typeName}") ` +
1290
1333
  `must be keyed by the implementing type, e.g. { ${relDef.fieldName}: { Member: [{ where, disconnect }] } }.`);
1291
- const inner = nestedScope(carryVars, targetVar, depth);
1292
- const lines = [];
1334
+ const inner = nestedScope(carryVars, targetVar, depth, uniqueToken);
1335
+ const lines = this.gateOnUpdate(inner.withClause, targetNodeDef, targetVar, params, policyContext, paramCounter);
1293
1336
  for (const nestedDisconnect of Array.isArray(nested) ? nested : [nested]) {
1294
1337
  if (!isPlainObject(nestedDisconnect))
1295
1338
  throw new OGMError(`A nested "disconnect" inside a disconnect on "${relDef.fieldName}" must be an object keyed by relationship.`);
@@ -1530,7 +1573,10 @@ export class MutationCompiler {
1530
1573
  if (nestedDiscConditions.length > 0)
1531
1574
  lines.push(`WHERE ${nestedDiscConditions.join(' AND ')}`);
1532
1575
  lines.push(`DELETE ${relVar}`);
1533
- lines.push(...this.buildNestedDisconnect(nestedDisconnect, relDef, targetNodeDef, discTarget, allVars, params, policyContext, paramCounter));
1576
+ lines.push(...this.buildNestedDisconnect(nestedDisconnect, relDef, targetNodeDef, discTarget, allVars, params, policyContext, paramCounter, 0,
1577
+ // `discTarget` restarts per member under union dispatch;
1578
+ // `itemPrefix` is unique along the path.
1579
+ `${itemPrefix}_disc${di}`));
1534
1580
  }
1535
1581
  lines.push(`RETURN count(*) AS _${relVar}`);
1536
1582
  lines.push('}');
@@ -1717,6 +1763,10 @@ export class MutationCompiler {
1717
1763
  // `update` policy, exactly like a direct update on that type
1718
1764
  // (pre-2.3.0 it enforced no target policy at all).
1719
1765
  const updateConditions = [
1766
+ // v2.5.1 — restrict an interface / union target to its member
1767
+ // types; without it the nested update also SET properties on
1768
+ // other nodes on the same relationship type.
1769
+ this.targetMatch(targetNodeDef, updateVar).labelPredicate,
1720
1770
  this.compileTargetWhere(updateWhere, updateVar, targetNodeDef, params, policyContext, paramCounter),
1721
1771
  this.buildTargetPolicyPredicate(targetNodeDef, updateVar, params, policyContext, paramCounter, 'update'),
1722
1772
  ].filter((c) => Boolean(c));