| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| LOAD 'age'; |
| SET search_path TO ag_catalog; |
| SELECT create_graph('list_comprehension'); |
| NOTICE: graph "list_comprehension" has been created |
| create_graph |
| -------------- |
| |
| (1 row) |
| |
| SELECT * from cypher('list_comprehension', $$ CREATE (u {list: [0, 2, 4, 6, 8, 10, 12]}) RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * from cypher('list_comprehension', $$ CREATE (u {list: [1, 3, 5, 7, 9, 11, 13]}) RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| (1 row) |
| |
| SELECT * from cypher('list_comprehension', $$ CREATE (u {list: []}) RETURN u $$) AS (result agtype); |
| result |
| -------------------------------------------------------------------------- |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2)] $$) AS (result agtype); |
| result |
| --------------------------------------------------------- |
| [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2)][2] $$) AS (result agtype); |
| result |
| -------- |
| 5 |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2)][1..4] $$) AS (result agtype); |
| result |
| ----------- |
| [3, 5, 7] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) WHERE u % 3 = 0] $$) AS (result agtype); |
| result |
| -------------------- |
| [3, 9, 15, 21, 27] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) WHERE u % 3 = 0][2] $$) AS (result agtype); |
| result |
| -------- |
| 15 |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) WHERE u % 3 = 0][0..4] $$) AS (result agtype); |
| result |
| ---------------- |
| [3, 9, 15, 21] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) WHERE u % 3 = 0 | u^2 ] $$) AS (result agtype); |
| result |
| ---------------------------------- |
| [9.0, 81.0, 225.0, 441.0, 729.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) WHERE u % 3 = 0 | u^2 ][3] $$) AS (result agtype); |
| result |
| -------- |
| 441.0 |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) WHERE u % 3 = 0 | u^2 ][1..5] $$) AS (result agtype); |
| result |
| ----------------------------- |
| [81.0, 225.0, 441.0, 729.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) | u^2 ] $$) AS (result agtype); |
| result |
| ---------------------------------------------------------------------------------------------------- |
| [1.0, 9.0, 25.0, 49.0, 81.0, 121.0, 169.0, 225.0, 289.0, 361.0, 441.0, 529.0, 625.0, 729.0, 841.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) | u^2 ][0] $$) AS (result agtype); |
| result |
| -------- |
| 1.0 |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN range(1, 30, 2) | u^2 ][0..2] $$) AS (result agtype); |
| result |
| ------------ |
| [1.0, 9.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN (u) $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH () RETURN [i IN range(0, 20, 2) WHERE i % 3 = 0 ] $$) AS (result agtype); |
| result |
| ---------------- |
| [0, 6, 12, 18] |
| [0, 6, 12, 18] |
| [0, 6, 12, 18] |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH () RETURN [i IN range(0, 20, 2) WHERE i % 3 = 0 | i^2 ] $$) AS (result agtype); |
| result |
| --------------------------- |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN range(0, 20, 2) WHERE i % 3 = 0 | i^2 ] $$) AS (result agtype); |
| result |
| --------------------------- |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH p=() RETURN [i IN range(0, 20, 2) WHERE i % 3 = 0 | i^2 ] $$) AS (result agtype); |
| result |
| --------------------------- |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH p=(u) RETURN [i IN range(0, 20, 2) WHERE i % 3 = 0 | i^2 ] $$) AS (result agtype); |
| result |
| --------------------------- |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| [0.0, 36.0, 144.0, 324.0] |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN u.list] $$) AS (result agtype); |
| result |
| ------------------------- |
| [1, 3, 5, 7, 9, 11, 13] |
| [] |
| [0, 2, 4, 6, 8, 10, 12] |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN u.list WHERE i % 3 = 0] $$) AS (result agtype); |
| result |
| ------------ |
| [0, 6, 12] |
| [3, 9] |
| (2 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN u.list WHERE i % 3 = 0 | i/3] $$) AS (result agtype); |
| result |
| ----------- |
| [0, 2, 4] |
| [1, 3] |
| (2 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN u.list WHERE i % 3 = 0 | i/3][1] $$) AS (result agtype); |
| result |
| -------- |
| 2 |
| 3 |
| (2 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN u.list WHERE i % 3 = 0 | i/3][0..2] $$) AS (result agtype); |
| result |
| -------- |
| [0, 2] |
| [1, 3] |
| (2 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) RETURN [i IN u.list WHERE i % 3 = 0 | i/3][0..2][1] $$) AS (result agtype); |
| result |
| -------- |
| 2 |
| 3 |
| (2 rows) |
| |
| -- Nested cases |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3]]] $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [i IN [1,2,3]]]] $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3] WHERE i>1]] $$) AS (result agtype); |
| result |
| -------- |
| [2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3]] WHERE i>1] $$) AS (result agtype); |
| result |
| -------- |
| [2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3] WHERE i>1] WHERE i>2] $$) AS (result agtype); |
| result |
| -------- |
| [3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3] WHERE i>1 | i^2]] $$) AS (result agtype); |
| result |
| ------------ |
| [4.0, 9.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3]] WHERE i>1 | i^2] $$) AS (result agtype); |
| result |
| ------------ |
| [4.0, 9.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3] WHERE i>1] WHERE i>2 | i^2] $$) AS (result agtype); |
| result |
| -------- |
| [9.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3] WHERE i>1 | i^2] WHERE i>4] $$) AS (result agtype); |
| result |
| -------- |
| [9.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN [i IN [1,2,3] WHERE i>1 | i^2] WHERE i>4 | i^2] $$) AS (result agtype); |
| result |
| -------- |
| [81.0] |
| (1 row) |
| |
| -- List comprehension inside where and property constraints |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list=[i IN range(0,12,2)] RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list=[i IN range(1,13,2)] RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list=[i IN range(0,12,2) WHERE i>4] RETURN u $$) AS (result agtype); |
| result |
| -------- |
| (0 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list=[i IN range(1,13,2) WHERE i>4 | i^1] RETURN u $$) AS (result agtype); |
| result |
| -------- |
| (0 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list@>[i IN range(0,6,2)] RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) MATCH (v) WHERE v.list=[i IN u.list] RETURN v $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u {list:[i IN range(0,12,2)]}) RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u {list:[i IN range(1,13,2)]}) RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u {list:[i IN range(0,12,2) WHERE i>4]}) RETURN u $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u {list:[i IN range(1,13,2) WHERE i>4 | i^1]}) RETURN u $$) AS (result agtype); |
| result |
| -------- |
| (0 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) MATCH (v {list:[i IN u.list]}) RETURN v $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| (5 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ CREATE (u {list:[i IN range(12,24,2)]}) RETURN u $$) AS (result agtype); |
| result |
| ---------------------------------------------------------------------------------------------------- |
| {"id": 281474976710660, "label": "", "properties": {"list": [12, 14, 16, 18, 20, 22, 24]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ CREATE (u {list:[i IN range(0,12,2) WHERE i>4]}) RETURN u $$) AS (result agtype); |
| result |
| -------------------------------------------------------------------------------------- |
| {"id": 281474976710661, "label": "", "properties": {"list": [6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ CREATE (u {list:[i IN range(1,13,2) WHERE i>4 | i^2]}) RETURN u $$) AS (result agtype); |
| result |
| -------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710662, "label": "", "properties": {"list": [25.0, 49.0, 81.0, 121.0, 169.0]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH [u IN [1,2,3]] AS a CREATE (u {list:a}) RETURN u $$) AS (result agtype); |
| result |
| --------------------------------------------------------------------------------- |
| {"id": 281474976710663, "label": "", "properties": {"list": [1, 2, 3]}}::vertex |
| (1 row) |
| |
| -- List comprehension in the WITH WHERE clause |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u) WITH u WHERE u.list = [u IN [0, 2, 4, 6, 8, 10, 12]] RETURN u $$) AS (u agtype); |
| u |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u) WITH u WHERE u.list = [u IN [0, 2, 4, 6, 8, 10, 12]] OR size(u.list) = 0 RETURN u $$) AS (u agtype); |
| u |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (2 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u) WITH u WHERE u.list = [u IN [0, 2, 4, 6, 8, 10, 12]] OR size(u.list)::bool RETURN u $$) AS (u agtype); |
| u |
| -------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| {"id": 281474976710661, "label": "", "properties": {"list": [6, 8, 10, 12]}}::vertex |
| {"id": 281474976710660, "label": "", "properties": {"list": [12, 14, 16, 18, 20, 22, 24]}}::vertex |
| {"id": 281474976710662, "label": "", "properties": {"list": [25.0, 49.0, 81.0, 121.0, 169.0]}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| {"id": 281474976710663, "label": "", "properties": {"list": [1, 2, 3]}}::vertex |
| (6 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u) WITH u WHERE u.list = [u IN [0, 2, 4, 6, 8, 10, 12]] OR NOT size(u.list)::bool RETURN u $$) AS (u agtype); |
| u |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (2 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ CREATE(u:csm_match {list: ['abc', 'def', 'ghi']}) $$) AS (u agtype); |
| u |
| --- |
| (0 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u: csm_match) WITH u WHERE [u IN u.list][0] STARTS WITH "ab" RETURN u $$) AS (u agtype); |
| u |
| ------------------------------------------------------------------------------------------------------ |
| {"id": 844424930131969, "label": "csm_match", "properties": {"list": ["abc", "def", "ghi"]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH [1, 2, 3] AS u WHERE u = [u IN [1, 2, 3]] RETURN u $$) AS (u agtype); |
| u |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH 1 AS u WHERE u = [u IN [1, 2, 3]][0] RETURN u $$) AS (u agtype); |
| u |
| --- |
| 1 |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH ['abc', 'defgh'] AS u WHERE [v In u][1] STARTS WITH 'de' RETURN u $$) AS (u agtype); |
| u |
| ------------------ |
| ["abc", "defgh"] |
| (1 row) |
| |
| -- List comprehension in UNWIND |
| SELECT * FROM cypher('list_comprehension', $$ UNWIND [u IN [1, 2, 3]] AS u RETURN u $$) AS (u agtype); |
| u |
| --- |
| 1 |
| 2 |
| 3 |
| (3 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ UNWIND [u IN [1, 2, 3] WHERE u > 1 | u*2] AS u RETURN u $$) AS (u agtype); |
| u |
| --- |
| 4 |
| 6 |
| (2 rows) |
| |
| -- invalid use of aggregation in UNWIND |
| SELECT * FROM cypher('list_comprehension', $$ WITH [1, 2, 3] AS u UNWIND collect(u) AS v RETURN v $$) AS (u agtype); |
| ERROR: Invalid use of aggregation in this context |
| LINE 1: ...ist_comprehension', $$ WITH [1, 2, 3] AS u UNWIND collect(u)... |
| ^ |
| -- List comprehension in SET |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u {list: [0, 2, 4, 6, 8, 10, 12]}) SET u.a = [u IN range(0, 5)] RETURN u $$) AS (u agtype); |
| u |
| ------------------------------------------------------------------------------------------------------------------------ |
| {"id": 281474976710657, "label": "", "properties": {"a": [0, 1, 2, 3, 4, 5], "list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u {list: [0, 2, 4, 6, 8, 10, 12]}) SET u.a = [u IN []] RETURN u $$) AS (u agtype); |
| u |
| -------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"a": [], "list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u {list: [0, 2, 4, 6, 8, 10, 12]}) SET u += {b: [u IN range(0, 5)]} RETURN u $$) AS (u agtype); |
| u |
| --------------------------------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"a": [], "b": [0, 1, 2, 3, 4, 5], "list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u {list: [0, 2, 4, 6, 8, 10, 12]}) WITh u, collect(u.list) AS v SET u += {b: [u IN range(0, 5)]} SET u.c = [u IN v[0]] RETURN u $$) AS (u agtype); |
| u |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"a": [], "b": [0, 1, 2, 3, 4, 5], "c": [0, 2, 4, 6, 8, 10, 12], "list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| -- invalid use of aggregation in SET |
| SELECT * FROM cypher('list_comprehension', $$ MATCH(u {list: [0, 2, 4, 6, 8, 10, 12]}) SET u.c = collect(u.list) RETURN u $$) AS (u agtype); |
| ERROR: Invalid use of aggregation in this context |
| LINE 1: ..., $$ MATCH(u {list: [0, 2, 4, 6, 8, 10, 12]}) SET u.c = coll... |
| ^ |
| -- Known issue |
| SELECT * FROM cypher('list_comprehension', $$ MERGE (u {list:[i IN [1,2,3]]}) RETURN u $$) AS (result agtype); |
| ERROR: Aggref found in non-Agg plan node |
| -- List comprehension variable scoping |
| SELECT * FROM cypher('list_comprehension', $$ WITH 1 AS m, [m IN [1, 2, 3]] AS n RETURN [m IN [1, 2, 3]] $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH 1 AS m RETURN [m IN [1, 2, 3]], m $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -----------+--------- |
| [1, 2, 3] | 1 |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH [m IN [1,2,3]] AS m RETURN [m IN [1, 2, 3]], m $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -----------+----------- |
| [1, 2, 3] | [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ CREATE n=()-[:edge]->() RETURN [n IN nodes(n)] $$) AS (u agtype); |
| u |
| ---------------------------------------------------------------------------------------------------------------------------------- |
| [{"id": 281474976710664, "label": "", "properties": {}}::vertex, {"id": 281474976710665, "label": "", "properties": {}}::vertex] |
| (1 row) |
| |
| -- Multiple list comprehensions in RETURN and WITH clause |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [1,2,3]], [u IN [1,2,3]] $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -----------+----------- |
| [1, 2, 3] | [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [1,2,3] WHERE u>1], [u IN [1,2,3] WHERE u>2] $$) AS (result agtype, result2 agtype); |
| result | result2 |
| --------+--------- |
| [2, 3] | [3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [1,2,3] WHERE u>1 | u^3], [u IN [1,2,3] WHERE u>2 | u^3] $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -------------+--------- |
| [8.0, 27.0] | [27.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [1,2,3]] AS u, [u IN [1,2,3]] AS i $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -----------+----------- |
| [1, 2, 3] | [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [1,2,3] WHERE u>1] AS u, [u IN [1,2,3] WHERE u>2] AS i $$) AS (result agtype, result2 agtype); |
| result | result2 |
| --------+--------- |
| [2, 3] | [3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [1,2,3] WHERE u>1 | u^3] AS u, [u IN [1,2,3] WHERE u>2 | u^3] AS i $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -------------+--------- |
| [8.0, 27.0] | [27.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [u IN [1,2,3]]], [u IN [u IN [1,2,3]]] $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -----------+----------- |
| [1, 2, 3] | [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [u IN [1,2,3] WHERE u>1] WHERE u>2], [u IN [u IN [1,2,3] WHERE u>1] WHERE u>2] $$) AS (result agtype, result2 agtype); |
| result | result2 |
| --------+--------- |
| [3] | [3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [u IN [u IN [1,2,3] WHERE u>1] WHERE u>2 | u^3], [u IN [u IN [1,2,3] WHERE u>1] WHERE u>2 | u^3] $$) AS (result agtype, result2 agtype); |
| result | result2 |
| --------+--------- |
| [27.0] | [27.0] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ WITH [u IN [1,2,3]] AS u, [u IN [1,2,3]] AS i RETURN u, i $$) AS (result agtype, result2 agtype); |
| result | result2 |
| -----------+----------- |
| [1, 2, 3] | [1, 2, 3] |
| (1 row) |
| |
| -- Should error out |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN range(0, 10, 2)],i $$) AS (result agtype, i agtype); |
| ERROR: could not find rte for i |
| LINE 1: ..._comprehension', $$ RETURN [i IN range(0, 10, 2)],i $$) AS (... |
| ^ |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [i IN range(0, 10, 2) WHERE i>5 | i^2], i $$) AS (result agtype, i agtype); |
| ERROR: could not find rte for i |
| LINE 1: ...$$ RETURN [i IN range(0, 10, 2) WHERE i>5 | i^2], i $$) AS (... |
| ^ |
| -- Invalid list comprehension |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [1 IN range(0, 10, 2) WHERE 2>5] $$) AS (result agtype); |
| ERROR: Syntax error at or near IN |
| LINE 1: SELECT * FROM cypher('list_comprehension', $$ RETURN [1 IN r... |
| ^ |
| SELECT * FROM cypher('list_comprehension', $$ RETURN [1 IN range(0, 10, 2) | 1] $$) AS (result agtype); |
| ERROR: Syntax error at or near IN |
| LINE 1: SELECT * FROM cypher('list_comprehension', $$ RETURN [1 IN r... |
| ^ |
| -- Issue - error using list comprehension with WITH * |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WITH *, [i in [1,2,3]] as list RETURN list LIMIT 1 $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WITH *, [i in [1,2,3]] as list RETURN [i in list] LIMIT 1 $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WITH * WHERE u.list=[i IN range(0,12,2)] RETURN u $$) AS (result agtype); |
| result |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710657, "label": "", "properties": {"a": [], "b": [0, 1, 2, 3, 4, 5], "c": [0, 2, 4, 6, 8, 10, 12], "list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WITH * WHERE u.list=[i IN u.list] RETURN u LIMIT 1 $$) AS (result agtype); |
| result |
| ----------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WITH * WITH *, [i in [1,2,3]] as list RETURN list LIMIT 1 $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WITH *, [i in [1,2,3]] as list WITH * RETURN list LIMIT 1 $$) AS (result agtype); |
| result |
| ----------- |
| [1, 2, 3] |
| (1 row) |
| |
| -- Issue 1955 - variable reference in list comprehension |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list=[i IN u.list] RETURN u $$) AS (result agtype); |
| result |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| {"id": 281474976710660, "label": "", "properties": {"list": [12, 14, 16, 18, 20, 22, 24]}}::vertex |
| {"id": 281474976710662, "label": "", "properties": {"list": [25.0, 49.0, 81.0, 121.0, 169.0]}}::vertex |
| {"id": 281474976710657, "label": "", "properties": {"a": [], "b": [0, 1, 2, 3, 4, 5], "c": [0, 2, 4, 6, 8, 10, 12], "list": [0, 2, 4, 6, 8, 10, 12]}}::vertex |
| {"id": 281474976710663, "label": "", "properties": {"list": [1, 2, 3]}}::vertex |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| {"id": 281474976710661, "label": "", "properties": {"list": [6, 8, 10, 12]}}::vertex |
| {"id": 844424930131969, "label": "csm_match", "properties": {"list": ["abc", "def", "ghi"]}}::vertex |
| (8 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE u.list=[i IN u.list WHERE i>0] RETURN u $$) AS (result agtype); |
| result |
| -------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| {"id": 281474976710660, "label": "", "properties": {"list": [12, 14, 16, 18, 20, 22, 24]}}::vertex |
| {"id": 281474976710662, "label": "", "properties": {"list": [25.0, 49.0, 81.0, 121.0, 169.0]}}::vertex |
| {"id": 281474976710663, "label": "", "properties": {"list": [1, 2, 3]}}::vertex |
| {"id": 281474976710661, "label": "", "properties": {"list": [6, 8, 10, 12]}}::vertex |
| (5 rows) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u) WHERE size([e in u.list where e starts with "a"])>0 RETURN u $$) AS (result agtype); |
| result |
| ------------------------------------------------------------------------------------------------------ |
| {"id": 844424930131969, "label": "csm_match", "properties": {"list": ["abc", "def", "ghi"]}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u ={list:[i IN u.list | i+1]}) RETURN u $$) AS (result agtype); |
| result |
| -------------------------------------------------------------------------- |
| {"id": 281474976710659, "label": "", "properties": {"list": []}}::vertex |
| (1 row) |
| |
| SELECT * FROM cypher('list_comprehension', $$ MATCH (u ={list:[i IN u.list WHERE i>0]}) RETURN u$$) AS (result agtype); |
| result |
| -------------------------------------------------------------------------------------------------------- |
| {"id": 281474976710658, "label": "", "properties": {"list": [1, 3, 5, 7, 9, 11, 13]}}::vertex |
| {"id": 281474976710660, "label": "", "properties": {"list": [12, 14, 16, 18, 20, 22, 24]}}::vertex |
| {"id": 281474976710662, "label": "", "properties": {"list": [25.0, 49.0, 81.0, 121.0, 169.0]}}::vertex |
| {"id": 281474976710663, "label": "", "properties": {"list": [1, 2, 3]}}::vertex |
| {"id": 281474976710661, "label": "", "properties": {"list": [6, 8, 10, 12]}}::vertex |
| (5 rows) |
| |
| -- Clean up |
| SELECT * FROM drop_graph('list_comprehension', true); |
| NOTICE: drop cascades to 4 other objects |
| DETAIL: drop cascades to table list_comprehension._ag_label_vertex |
| drop cascades to table list_comprehension._ag_label_edge |
| drop cascades to table list_comprehension.csm_match |
| drop cascades to table list_comprehension.edge |
| NOTICE: graph "list_comprehension" has been dropped |
| drop_graph |
| ------------ |
| |
| (1 row) |
| |