Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto
#2,597 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 3 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
53/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
c, postgresql

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.
Lenguaje dominante
C
Estrellas
4.9k
Forks
535
Merge medio
10 d 13 h
PR fusionados (30 d)
7

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/age

Todos los issues de apache/age

Issues similares

Más issues de C

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.