Skip to content

AGE returns incorrect error message for EXISTS subquery outer variable reference #2263

@zihaozeng0021

Description

@zihaozeng0021

Configuration

AGE Version: apache/age:latest (pulled 2025-12-07)

Operating System: WSL2 – Ubuntu 24.04.1 LTS

Installation Method: Docker


Steps to reproduce

  1. Start AGE via Docker
docker run \
  --name age \
  -p 5455:5432 \
  -e POSTGRES_USER=postgresUser \
  -e POSTGRES_PASSWORD=postgresPW \
  -e POSTGRES_DB=postgresDB \
  -d \
  apache/age:latest
  1. Connect with psql
PGPASSWORD='postgresPW' psql -h localhost -p 5455 -U postgresUser -d postgresDB
  1. Run the following query
CREATE EXTENSION IF NOT EXISTS age;
LOAD 'age';
SET search_path = ag_catalog, "$user", public;

SELECT * FROM ag_catalog.create_graph('test');

SELECT *
FROM cypher('test', $$
    CREATE a=()-[:T]->(),
           p=({k:exists{return a}})-[:T]->()
    RETURN 1
$$) AS (one agtype);

Expected behaviour

One of the following:

  • The query succeeds
  • A semantic/feature-limitation error, not an internal/planner-style failure.

Actual behaviour

The query fails with:

ERROR:  could not find rte for a
LINE 4:            p=({k:exists{return a}})-[:T]->()
                                                     ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions