YGY-001 opened a new issue, #2549:
URL: https://github.com/apache/age/issues/2549

    
   
   ## Environment
   
   - Apache AGE `1.8.0`
   - PostgreSQL `18.6`
   - Docker image used locally: `apache/age:release_PG18_1.8.0`
   
   ## Minimal reproduction
   
   Run this on a fresh graph. The first Cypher statement creates one vertex with
   two incoming relationships. The second statement is the candidate trigger.
   
   ```sql
   LOAD 'age';
   SET search_path = ag_catalog, public;
   SELECT ag_catalog.create_graph('age_stale_tid_candidate');
   
   SELECT *
   FROM ag_catalog.cypher('age_stale_tid_candidate', $age$
   CREATE (a {id: 1})<-[:R]-(b {id: 2}),
          (a)<-[:R]-(c {id: 3})
   RETURN a
   $age$) AS (v agtype);
   
   SELECT *
   FROM ag_catalog.cypher('age_stale_tid_candidate', $age$
   MATCH p = (n0)<-[:R*..2]-(n1)
   DETACH DELETE n0, n1
   RETURN p
   $age$) AS (p agtype);
   ```
   
   Observed result on the local container:
   
   ```text
   ERROR: get_vertex_entry_properties: stale TID - vertex entry references a 
tuple that is no longer visible
   ```
   
   The failing Cypher uses only a variable-length relationship pattern, a
   `DETACH DELETE`, and a return of the bound path. No layered barrier, probe
   projection, `UNION`, or generated SQL expression is involved.
   
   ## Control
   
   Repeat the setup on another fresh graph and replace only the final 
projection:
   
   ```cypher
   MATCH p = (n0)<-[:R*..2]-(n1)
   DETACH DELETE n0, n1
   RETURN 1 AS result
   ```
   
   The control returns rows successfully on the same AGE build. This isolates 
the
   failure to materializing the path after its bound vertices have been deleted.
   
   ## Issue template
   
   ### Title
   
   `MATCH` variable-length path followed by `DETACH DELETE` returns an internal
   `stale TID` error when the deleted path is projected
   
   ### Description
   
   On Apache AGE 1.8.0, the following valid-Cypher-shaped query raises an 
internal
   storage tuple error after deleting both vertices bound by a variable-length
   path. The scalar control query completes on the same graph. The error exposes
   an internal TID instead of a documented Cypher semantic error or a normal
   result.
   
   ### Expected behavior
   
   Please clarify and implement one consistent behavior:
   
   1. If deleted path bindings remain legal to project, return the path rows; or
   2. if AGE intentionally forbids projecting a deleted binding, return a clear
      documented semantic error rather than `stale TID`.
   
   ### Actual behavior
   
   ```text
   ERROR: get_vertex_entry_properties: stale TID - vertex entry references a 
tuple that is no longer visible
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to