Skip to content

Fix create_graph failing when ag_catalog is not in search_path - #2505

Open
NotHimmel wants to merge 2 commits into
apache:masterfrom
NotHimmel:fix/qualify-graphid-ops-master
Open

Fix create_graph failing when ag_catalog is not in search_path#2505
NotHimmel wants to merge 2 commits into
apache:masterfrom
NotHimmel:fix/qualify-graphid-ops-master

Conversation

@NotHimmel

Copy link
Copy Markdown
Contributor

Fixes #2504

create_index_on_column() passed "graphid_ops" as an unqualified operator
class name, so it was resolved against the caller's search_path. Whenever
ag_catalog was not on the search_path, creating a label failed with

  ERROR:  operator class "graphid_ops" does not exist for access method "btree"

even for a fully qualified call such as

  SELECT ag_catalog.create_graph('g');

The error is misleading: the operator class does exist, it is simply not
visible. This affected create_graph(), create_vlabel(), create_elabel(),
the CSV loader, and label creation from a CREATE or MERGE clause at query
time, since all of them reach create_label().

The unqualified name arrived with the id column indexes in apache#2117, so this
is a regression. Before that commit create_label() built no index and
resolved no name through the search_path. Every other object referenced by
the DDL that create_label() generates is already reached either by OID or
by an ag_catalog qualified name, so qualifying this one restores the
previous behaviour.
@MuhammadTahaNaveed

Copy link
Copy Markdown
Member

@NotHimmel Can you add a test case please

Cover create_label() with ag_catalog off the search_path. The block
calls create_graph(), create_vlabel(), create_elabel() and a cypher
CREATE clause, all through ag_catalog qualified names, so it exercises
both create_index_on_column() branches (the unique index on a vertex
label's id column and the non-unique indexes on an edge label's
start_id and end_id columns) plus label creation at query time.

Without the qualified operator class name the first statement fails
with

  ERROR:  operator class "graphid_ops" does not exist for access method "btree"
@NotHimmel
NotHimmel force-pushed the fix/qualify-graphid-ops-master branch from 4aaa27f to 8972571 Compare August 24, 2026 05:47
@NotHimmel

Copy link
Copy Markdown
Contributor Author

@NotHimmel Can you add a test case please

Added a regression test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

create_graph() fails when ag_catalog is not in search_path: operator class "graphid_ops" does not exist

2 participants