Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

multi-row `CREATE` and `DETACH DELETE` reuse a deleted vertex binding

Aperta
#2,597 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
53/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
c, postgresql
Ambito
backend, databases

Direzione di ricerca

Start by tracing how the Cypher executor processes the multi-row UNWIND, CREATE, and DETACH DELETE clauses, using the reproduction query and the collect/UNWIND boundary controls to narrow the failure. Find the vertex binding and deletion handling in the relevant executor code, then run the reproduction on a fresh graph. Done means both input rows return and the query no longer reports that vertex a was deleted.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug

Environment

  • Apache AGE 1.8.0
  • PostgreSQL 18.6
  • Docker image: apache/age:release_PG18_1.8.0

Reproduction

Replace age_issue28_REPLACE_WITH_RANDOM_SUFFIX with a fresh, unique graph name,
then run the setup and query on that empty graph:

LOAD 'age';
SET search_path = ag_catalog, public;

SELECT ag_catalog.create_graph('age_issue28_REPLACE_WITH_RANDOM_SUFFIX');

SELECT *
FROM ag_catalog.cypher('age_issue28_REPLACE_WITH_RANDOM_SUFFIX', $$
CREATE (a {id: 1})-[:R]->(b {id: 2})
$$) AS (v agtype);

SELECT *
FROM ag_catalog.cypher('age_issue28_REPLACE_WITH_RANDOM_SUFFIX', $$
MATCH (a {id: 1})-[:R]->(b {id: 2})
UNWIND [1, 2] AS i
CREATE (a)-[:S {i: i}]->()
DETACH DELETE a, b
RETURN i
$$) AS (i agtype);

Expected behavior

Both input rows reach CREATE while a and b are still bound and present.
The later DETACH DELETE removes them, and the query returns 1 and 2.

Actual behavior

AGE reports:

ERROR: vertex assigned to variable a was deleted

The PostgreSQL backend remains available; a subsequent SELECT 1 succeeds.

Controls

  • Replacing UNWIND [1, 2] with UNWIND [1] succeeds and returns 1.
  • Removing DETACH DELETE a, b succeeds and returns 1 and 2.
  • A row-preserving collect/UNWIND boundary before CREATE does not avoid the error.
  • The same boundary between CREATE and DETACH DELETE makes the query return 1 and 2.
Lingua principale
C
Stelle
4.9k
Fork
535
Merge medio
10g 13h
PR unite (30g)
7

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/age

Tutte le issue di apache/age

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.