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

[Bug] PG15/1.8.0 regression: query with variable-length edge (VLE) traversal failed

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

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
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
postgresql, sql
Área
databases

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

bug

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

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.