[Bug] PG15/1.8.0 regression: query with variable-length edge (VLE) traversal failed
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 50/100
Línea de trabajo
Start by running the provided cypher() reproduction on PostgreSQL 15 with AGE 1.8.0, then inspect the variable-length traversal planner associated with the regression from issue 2450. Done means the generated-column setup no longer raises the attribute-mapping error and both zero-hop and subsequent graph layers return successfully.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
Executing a variable-length edge (VLE) traversal that starts with a zero-hop evaluation (*0..) triggers an unexpected relational engine crash: ERROR: Invalid number of attributes for <graph_name>.<vertex_label_name>. Even though the vertex and edge tables exist and are populated, the internal VLE execution planner fails to map the column definitions of the target label table when matching variable-length paths. This is a severe regression introduced in the PG15/1.8.0 release due to this fix https://github.com/apache/age/issues/2450.
How are you accessing AGE (Command line, driver, etc.)?
Directly via cypher() SQL function (IN psql client).
What data setup do we need to do?
-- 1. Create a fresh graph and register both vertex and edge labels
SELECT create_graph('age_bug');
SELECT create_vlabel('age_bug', 'Product');
SELECT create_elabel('age_bug', 'HAVE');
-- 2. Add generated column (this triggers the bug)
ALTER TABLE age_bug."Product"
ADD COLUMN category VARCHAR(25) GENERATED ALWAYS AS (agtype_access_operator(properties, '"category"')) STORED;
-- 3. Populate data with three linked dummy products forming a continuous path
SELECT * FROM cypher('age_bug', $$
CREATE (p1:Product {category: 'device', type: 'D123', version: 1})
CREATE (p2:Product {category: 'cpu', type: 'I123', version: 1})
CREATE (p3:Product {category: 'chip', type: 'C123', version: 1})
// Create the structural edge links between them
CREATE (p1)-[:HAVE]->(p2)
CREATE (p2)-[:HAVE]->(p3)
$$) AS (_ agtype);
What is the necessary configuration info needed?
- No configuration needed
What is the command that caused the error?
SELECT * FROM cypher('age_bug', $$
MATCH (_:Product { category: 'device', type: 'D123', version: 1 })-[have_path:HAVE*1..]->(product:Product)
RETURN product
$$)
AS (node agtype);
ERROR:
psql client log:
SQL Error [42P01]: ERROR: Invalid number of attributes for age_bug.Product
server log:
ERROR: Invalid number of attributes for age_bug.Product
STATEMENT: SELECT * FROM cypher('age_bug', $$
MATCH (_:Product { category: 'device', type: 'D123', version: 1 })-[have_path:HAVE*1..]->(product:Product)
RETURN product
$$)
AS (node agtype)
Expected behavior
The query execution should succeed without a schema exception. For a *0.. quantifier, it should evaluate the initial root matched node as a valid 0-hop result set, and then cleanly walk down the 1-hop and 2-hop graph layers instead of crashing with a table attribute mapping mismatch.
Environment (please complete the following information):
- AGE Version: release/PG15/1.8.0
admin=> \dx age;
List of installed extensions
Name | Version | Schema | Description
------+---------+------------+------------------------
age | 1.8.0 | ag_catalog | AGE database extension
(1 row)
- PostgreSQL Version: PostgreSQL 15.8 (Debian 15.8-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
- OS: Linux
Additional context
Add any other context about the problem here.
- Lenguaje dominante
- C
- Estrellas
- 4.9k
- Forks
- 532
- Merge medio
- 9 d 18 h
- PR fusionados (30 d)
- 10
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/age
-
Integer division by -1 on INT64_MIN raises a misclassified floating-point exception (22P01) instead of bigint out of rangePosiblemente ocupada @sean0407 la tomó hace 5 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 2 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Los mantenedores suelen responder en 2 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Los mantenedores suelen responder en 2 días
-
Performance regression in 1.8.0: every Cypher DELETE costs ~1 ms per edge label in the graphAbiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
Todos los issues de apache/age
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
FujiNetWIFI/fujinet-lib#186 ·
Los mantenedores suelen responder en 1 día
-
VIEW_TYPE set for computer playersPosiblemente ocupada @Loobinex la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 Menos de una hora Aptitud para principiantes 78/100
brunodev85/winlator-app#90 ·