age
age copied to clipboard
List comprehension as property constraint of MERGE clause errors out
Describe the bug List comprehension as property constraint of MERGE clause errors out.
How are you accessing AGE (Command line, driver, etc.)?
- command line
What is the command that caused the error?
SELECT * from cypher('graph_name', $$
MERGE ({list:[u IN [1,2,3]]})
$$) as (a agtype);
ERROR: Aggref found in non-Agg plan node
Expected behavior Should execute without any error.
Environment (please complete the following information):
- Version: latest
To apply a workaround to the query and avoid using list comprehensions in the MERGE clause, you can modify the query to precompute the list before using it in the MERGE clause. Here's how you can rewrite the query:
WITH input_list AS ( SELECT [1,2,3] AS list ) SELECT * FROM cypher('graph_name', $$ MERGE ({list: u.list}) ON CREATE SET ... ON MATCH SET ... $$) AS (a agtype); In this modified query:
We first create a Common Table Expression (CTE) named input_list to compute the list [1,2,3]. Then, we reference this computed list u.list within the MERGE clause. You need to replace ON CREATE SET ... and ON MATCH SET ... with the appropriate actions you want to perform when the MERGE clause creates or matches a node. By precomputing the list outside the MERGE clause, we avoid using list comprehensions directly within it, potentially bypassing the error you encountered.
To apply a workaround to the query and avoid using list comprehensions in the MERGE clause, you can modify the query to precompute the list before using it in the MERGE clause. Here's how you can rewrite the query:
sql Copy code WITH input_list AS ( SELECT [1,2,3] AS list ) SELECT * FROM cypher('graph_name', $$ MERGE ({list: u.list}) ON CREATE SET ... ON MATCH SET ... $$) AS (a agtype); In this modified query:
We first create a Common Table Expression (CTE) named input_list to compute the list [1,2,3]. Then, we reference this computed list u.list within the MERGE clause. You need to replace ON CREATE SET ... and ON MATCH SET ... with the appropriate actions you want to perform when the MERGE clause creates or matches a node. By precomputing the list outside the MERGE clause, we avoid using list comprehensions directly within it, potentially bypassing the error you encountered.
SELECT * FROM cypher('graph_name', $$ UNWIND [1,2,3] AS value MERGE (n {property: value}) $$) AS (a agtype);