Skip to content

Add support for operators in cypher query - #2172

Merged
jrgemignani merged 1 commit into
apache:masterfrom
MuhammadTahaNaveed:operators
Jul 9, 2025
Merged

Add support for operators in cypher query#2172
jrgemignani merged 1 commit into
apache:masterfrom
MuhammadTahaNaveed:operators

Conversation

@MuhammadTahaNaveed

Copy link
Copy Markdown
Member
  • Added support for PG operators in cypher. Some hardcoded operators were removed, since they are now covered by the general operator handling.
  • Added full typecast syntax that allows for type modifiers.
  • These changes also improve interoperability with other extensions, as reflected in the regression tests.
  • Fixed some operator signatures in .sql

@jrgemignanijrgemignani left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a small change

Comment threadsrc/backend/catalog/ag_graph.c
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
@jrgemignani
jrgemignani merged commit 1277b82 into apache:masterJul 9, 2025
7 checks passed
jrgemignani pushed a commit that referenced this pull request Jul 30, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
MuhammadTahaNaveed added a commit that referenced this pull request Aug 1, 2025
Conflicts:
.asf.yaml
.github/workflows/installcheck.yaml
Changes to be committed:
modified: .asf.yaml
modified: .github/labeler.yml
modified: .github/workflows/installcheck.yaml
modified: README.md
modified: docker/Dockerfile
modified: docker/Dockerfile.dev
modified: drivers/docker-compose.yml
modified: src/backend/nodes/ag_nodes.c
modified: src/backend/parser/cypher_analyze.c
* Add support for PG17 (#2130)
- A new node type is introduced for JSON support, that is
JsonConstructorExpr - wrapper over FuncExpr/Aggref/WindowFunc for
SQL/JSON constructors.
- Added additional checks for JsonConstructorExpr expression node for
which the walker would crash.
- Removed palloc0fast function call (which is not available in PG17)
* Update CI, README and repo settings for PG17 (#2156)
- Currently, all workflows are targeting the `PG17_prepare` branch,
which will be changed to `PG17` once the branch is renamed.
- Updated all the github workflows
- Updated the README
- Updated repo settings
- Updated the Dockerfiles
* Remove stale bot and update .asf.yaml settings (#2171)
- Removed stale bot.
(https://lists.apache.org/thread/qh4h2z6hsjy2v7wg8mwfnl6cbjp28y08)
- Decrease required PR approvals by one.
(https://lists.apache.org/thread/kmz155t6k0h3b26fjpz36924zthqjlpm)
- Fixed a warning reported by apache infra i.e.
"An error occurred while processing the github
feature in .asf.yaml: GitHub discussions can
only be enabled if a mailing list target exists
for it."
* Update labeler.yml
Adjust workflow/labeler.yml to add permissions.
* Adjust CI for PG17 after rename from PG17_prepare (#2182)
Adjusted the following CI files (workflows) for PG17, they
originally pointed to PG17_prepare -
modified: .github/workflows/go-driver.yml
modified: .github/workflows/installcheck.yaml
modified: .github/workflows/jdbc-driver.yaml
modified: .github/workflows/nodejs-driver.yaml
modified: .github/workflows/python-driver.yaml
modified: drivers/docker-compose.yml
modified: .github/labeler.yml
* Reimplement list comprehension (#2169) (#2188)
* Revert "Fix issue 1955 - List comprehension in WHERE clause (#2094)"
This reverts commit 0f0d9be.
* Revert "Fix error using list comprehension with WITH * (#1838)"
This reverts commit 5e08a2f.
* Revert "Fix shift/reduce conflict in grammar (#1719)"
This reverts commit fab3119.
* Revert "Implement list comprehension (#1610)"
This reverts commit 3b2b394.
* Reimplement list comprehension
- Reimplement list comprehension to use ARRAY sublinks.
- Some test results were not correct. All the test results that are
modified are correct and are verified with neo4j.
- Also resolves the issue of using list comprehension in MERGE clause (1611)
and issue 1850
* Add expression tree walkers for cypher nodes
- Added cypher_raw_expr_tree_walker and cypher_expr_tree_walker, based
on Postgres's raw_expression_tree_walker and expression_tree_walker.
These follow the same walker API as Postgres and add support for
Cypher-specific nodes.
- Also added the agtype[] to agtype func and typecast to 1.5.0-y.y.y.sql
- Simplifies logic for cypher_subquery handling in where clause.
- Fixes a crash when list comprehension in the WHERE clause references a
variable from the preceding MATCH clause.
* Add support for operators in cypher query (#2172)
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
* Prevent object access hook from accesing not installed namespace (#2161)
Currently we cannot install Age to shared_preload_libraries if
pg_cron is installed.
To prevent following error we must bail out early.
postgres=# set backtrace_functions to 'get_namespace_oid';
SET
postgres=# create extension pg_cron ;
2025-04-15 16:59:49.867 +05 [30402] ERROR: schema "ag_catalog" does not exist
2025-04-15 16:59:49.867 +05 [30402] BACKTRACE:
2 postgres 0x0000000102401ab0 get_namespace_oid + 204
3 age.so 0x0000000103285cd0 ag_catalog_namespace_id + 28
4 age.so 0x00000001032846fc ag_relation_id + 32
5 age.so 0x00000001032efe9c search_label_relation_cache_miss + 84
6 age.so 0x00000001032efe30 search_label_relation_cache + 100
7 age.so 0x00000001032842f4 object_access + 384
8 postgres 0x000000010240a7a0 RunObjectDropHook + 136
9 postgres 0x00000001023ee85c deleteOneObject + 108
10 postgres 0x00000001023eb860 deleteObjectsInList + 476
11 postgres 0x00000001023eba14 performMultipleDeletions + 316
12 postgres 0x0000000102560244 ATPostAlterTypeCleanup + 2144
13 postgres 0x0000000102559fb4 ATRewriteCatalogs + 516
14 postgres 0x00000001025543a8 ATController + 284
15 postgres 0x00000001025541bc AlterTable + 96
16 postgres 0x00000001028b8240 ProcessUtilitySlow + 1812
17 postgres 0x00000001028b600c standard_ProcessUtility + 3684
18 age.so 0x00000001032844f8 ag_ProcessUtility_hook + 200
19 postgres 0x00000001028b516c ProcessUtility + 392
20 postgres 0x000000010250e5b4 execute_sql_string + 812
21 postgres 0x000000010250d438 execute_extension_script + 2264
22 postgres 0x000000010250b330 ApplyExtensionUpdates + 1320
23 postgres 0x0000000102507954 CreateExtensionInternal + 1896
24 postgres 0x0000000102506ea4 CreateExtension + 1152
25 postgres 0x00000001028b8ed4 ProcessUtilitySlow + 5032
26 postgres 0x00000001028b600c standard_ProcessUtility + 3684
27 age.so 0x00000001032844f8 ag_ProcessUtility_hook + 200
28 postgres 0x00000001028b516c ProcessUtility + 392
29 postgres 0x00000001028b4768 PortalRunUtility + 232
30 postgres 0x00000001028b3660 PortalRunMulti + 756
31 postgres 0x00000001028b2abc PortalRun + 1008
32 postgres 0x00000001028ad870 exec_simple_query + 1436
33 postgres 0x00000001028ac990 PostgresMain + 2472
34 postgres 0x00000001027a49ac report_fork_failure_to_client + 0
35 postgres 0x00000001027a3e54 BackendStartup + 520
36 postgres 0x00000001027a29f0 ServerLoop + 812
37 postgres 0x000000010279fe0c PostmasterMain + 6484
38 postgres 0x000000010266acd0 startup_hacks + 0
39 dyld 0x000000018a3ab154 start + 2476
* Fix CSV import for edge with one property (#2175)
- start_index marks where property fields begin. For edges, it's 4.
If start_index >= total_fields, create empty properties; otherwise,
parse the properties.
---------
Co-authored-by: Umar Hayat <m.umarkiani@gmail.com>
Co-authored-by: Muhammad Taha Naveed <mtaha@apache.org>
Co-authored-by: Andrey Borodin <amborodin@acm.org>
Co-authored-by: Moontasir Mahmood <53787290+Munmud@users.noreply.github.com>
jrgemignani pushed a commit to jrgemignani/age that referenced this pull request Aug 22, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
@jrgemignanijrgemignani mentioned this pull request Aug 22, 2025
MuhammadTahaNaveed added a commit that referenced this pull request Aug 22, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
jrgemignani pushed a commit to jrgemignani/age that referenced this pull request Oct 15, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
MuhammadTahaNaveed added a commit that referenced this pull request Oct 17, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
jrgemignani pushed a commit to jrgemignani/age that referenced this pull request Oct 17, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
@jrgemignanijrgemignani mentioned this pull request Oct 17, 2025
MuhammadTahaNaveed added a commit that referenced this pull request Oct 17, 2025
- Fixed some operator signatures in .sql
- Added support for PG operators in cypher. Some
hardcoded operators are removed, since they are
now covered by the general operator handling.
- Added full typecast syntax that allows for type
modifiers.
- These changes also improve interoperability with
other extensions, as reflected in the regression
tests.
- Added a new function to check if graph_oid exists.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

masteroverride-staleTo keep issues/PRs untouched from stale action

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MuhammadTahaNaveed@jrgemignani