/*
 * 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('cypher_delete');
NOTICE:  graph "cypher_delete" has been created
 create_graph 
--------------
 
(1 row)

--Test 1: Delete Vertices
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (:v {i: 0, j: 5, a: 0})$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (:v {i: 1})$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                                           a                                           
---------------------------------------------------------------------------------------
 {"id": 844424930131969, "label": "v", "properties": {}}::vertex
 {"id": 844424930131970, "label": "v", "properties": {"a": 0, "i": 0, "j": 5}}::vertex
 {"id": 844424930131971, "label": "v", "properties": {"i": 1}}::vertex
(3 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 2: Delete Edges
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

--Should Fail
SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DELETE n1 RETURN n1$$) AS (a agtype);
ERROR:  Cannot delete vertex n1, because it still has edges attached. To delete this vertex, you must first delete the attached edges.
SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DELETE n2 RETURN n2$$) AS (a agtype);
ERROR:  Cannot delete vertex n2, because it still has edges attached. To delete this vertex, you must first delete the attached edges.
SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DELETE e RETURN e$$) AS (a agtype);
                                                           a                                                            
------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842625, "label": "e", "end_id": 844424930131973, "start_id": 844424930131972, "properties": {}}::edge
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH()-[e]->() DELETE e RETURN e$$) AS (a agtype);
 a 
---
(0 rows)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131972, "label": "v", "properties": {}}::vertex
 {"id": 844424930131973, "label": "v", "properties": {}}::vertex
(2 rows)

--Test 4: DETACH DELETE a vertex
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DETACH DELETE n1 RETURN e$$) AS (a agtype);
                                                           a                                                            
------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842626, "label": "e", "end_id": 844424930131975, "start_id": 844424930131974, "properties": {}}::edge
(1 row)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131975, "label": "v", "properties": {}}::vertex
(1 row)

--Test 4: DETACH DELETE two vertices tied to the same edge
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DETACH DELETE n1, n2 RETURN e$$) AS (a agtype);
                                                           a                                                            
------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842627, "label": "e", "end_id": 844424930131977, "start_id": 844424930131976, "properties": {}}::edge
(1 row)

--Test 4: DETACH DELETE a vertex
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DETACH DELETE n1, n2 RETURN e$$) AS (a agtype);
                                                           a                                                            
------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842628, "label": "e", "end_id": 844424930131979, "start_id": 844424930131978, "properties": {}}::edge
(1 row)

--Test 5: DETACH DELETE a vertex that points to itself
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(n)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->() DETACH DELETE n1 RETURN e$$) AS (a agtype);
                                                           a                                                            
------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842629, "label": "e", "end_id": 844424930131980, "start_id": 844424930131980, "properties": {}}::edge
(1 row)

--Test 6: DETACH Delete a vertex twice
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(n)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->(n2) DETACH DELETE n1, n2 RETURN e$$) AS (a agtype);
                                                           a                                                            
------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842630, "label": "e", "end_id": 844424930131981, "start_id": 844424930131981, "properties": {}}::edge
(1 row)

--Test 7: Test the SET Clause on DELETED node
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (:v {i: 0, j: 5, a: 0})$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (:v {i: 1})$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n SET n.lol = 'ftw' RETURN n$$) AS (a agtype);
                                                  a                                                  
-----------------------------------------------------------------------------------------------------
 {"id": 844424930131975, "label": "v", "properties": {"lol": "ftw"}}::vertex
 {"id": 844424930131982, "label": "v", "properties": {"lol": "ftw"}}::vertex
 {"id": 844424930131983, "label": "v", "properties": {"a": 0, "i": 0, "j": 5, "lol": "ftw"}}::vertex
 {"id": 844424930131984, "label": "v", "properties": {"i": 1, "lol": "ftw"}}::vertex
(4 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 8:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(:v) CREATE (n)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[]->() DELETE n1 RETURN n1$$) AS (a agtype);
ERROR:  Cannot delete vertex n1, because it still has edges attached. To delete this vertex, you must first delete the attached edges.
--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131985, "label": "v", "properties": {}}::vertex
 {"id": 844424930131986, "label": "v", "properties": {}}::vertex
 {"id": 844424930131987, "label": "v", "properties": {}}::vertex
(3 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 9:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->() DELETE e, n1 RETURN n1$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131988, "label": "v", "properties": {}}::vertex
(1 row)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131989, "label": "v", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 10:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->() DELETE n1, e RETURN n1$$) AS (a agtype);
ERROR:  Cannot delete vertex n1, because it still has edges attached. To delete this vertex, you must first delete the attached edges.
--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131990, "label": "v", "properties": {}}::vertex
 {"id": 844424930131991, "label": "v", "properties": {}}::vertex
(2 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 11: Delete a vertex twice
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(:v), (n)-[:e]->(:v) RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131992, "label": "v", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH(n1)-[e]->() DETACH DELETE n1 RETURN n1, e$$) AS (a agtype, b agtype);
                                a                                |                                                           b                                                            
-----------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------
 {"id": 844424930131992, "label": "v", "properties": {}}::vertex | {"id": 1125899906842635, "label": "e", "end_id": 844424930131993, "start_id": 844424930131992, "properties": {}}::edge
 {"id": 844424930131992, "label": "v", "properties": {}}::vertex | {"id": 1125899906842636, "label": "e", "end_id": 844424930131994, "start_id": 844424930131992, "properties": {}}::edge
(2 rows)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131993, "label": "v", "properties": {}}::vertex
 {"id": 844424930131994, "label": "v", "properties": {}}::vertex
(2 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 12:
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[e]->() DETACH DELETE n CREATE (n)-[:e2]->(:v) RETURN e$$) AS (a agtype);
ERROR:  vertex assigned to variable n was deleted
--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131995, "label": "v", "properties": {}}::vertex
 {"id": 844424930131996, "label": "v", "properties": {}}::vertex
(2 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 13:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(n)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[e]->(m) DETACH DELETE n CREATE (m)-[:e2]->(:v) RETURN e$$) AS (a agtype);
ERROR:  vertex assigned to variable m was deleted
--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131997, "label": "v", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 14:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(n)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[e]->(m) DETACH DELETE n CREATE (m)-[:e2]->(:v) RETURN e$$) AS (a agtype);
ERROR:  vertex assigned to variable m was deleted
--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930131998, "label": "v", "properties": {}}::vertex
 {"id": 844424930131999, "label": "v", "properties": {}}::vertex
 {"id": 844424930132000, "label": "v", "properties": {}}::vertex
(3 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 15:
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) SET n.i = 0 DELETE n RETURN n$$) AS (a agtype);
                                   a                                   
-----------------------------------------------------------------------
 {"id": 844424930132001, "label": "v", "properties": {"i": 0}}::vertex
(1 row)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 16:
SELECT * FROM cypher('cypher_delete', $$CREATE (:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n SET n.i = 0 RETURN n$$) AS (a agtype);
                                   a                                   
-----------------------------------------------------------------------
 {"id": 844424930132002, "label": "v", "properties": {"i": 0}}::vertex
(1 row)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 17:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[e]->(m) DETACH DELETE n SET e.i = 1 RETURN e$$) AS (a agtype);
                                                              a                                                               
------------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842641, "label": "e", "end_id": 844424930132004, "start_id": 844424930132003, "properties": {"i": 1}}::edge
(1 row)

--Cleanup
--Note: Expect 1 vertex
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930132004, "label": "v", "properties": {}}::vertex
(1 row)

--Test 18:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->(:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[e]->(m) SET e.i = 1 DETACH DELETE n RETURN e$$) AS (a agtype);
                                                              a                                                               
------------------------------------------------------------------------------------------------------------------------------
 {"id": 1125899906842642, "label": "e", "end_id": 844424930132006, "start_id": 844424930132005, "properties": {"i": 1}}::edge
(1 row)

--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930132006, "label": "v", "properties": {}}::vertex
(1 row)

--Test 19:
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH (n) DELETE n CREATE (n)-[:e]->(:v) RETURN n$$) AS (a agtype);
ERROR:  vertex assigned to variable n was deleted
--Cleanup
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 844424930132007, "label": "v", "properties": {}}::vertex
(1 row)

--Test 20 Undefined Reference:
SELECT * FROM cypher('cypher_delete', $$MATCH (n) DELETE m RETURN n$$) AS (a agtype);
ERROR:  undefined reference to variable m in DELETE clause
LINE 1: ...* FROM cypher('cypher_delete', $$MATCH (n) DELETE m RETURN n...
                                                             ^
--Test 21 Prepared Statements
SELECT * FROM cypher('cypher_delete', $$CREATE (v:v)$$) AS (a agtype);
 a 
---
(0 rows)

PREPARE d AS SELECT * FROM cypher('cypher_delete', $$MATCH (v) DELETE (v) RETURN v$$) AS (a agtype);
EXECUTE d;
                                a                                
-----------------------------------------------------------------
 {"id": 844424930132008, "label": "v", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$CREATE (v:v)$$) AS (a agtype);
 a 
---
(0 rows)

EXECUTE d;
                                a                                
-----------------------------------------------------------------
 {"id": 844424930132009, "label": "v", "properties": {}}::vertex
(1 row)

--Test 22 pl/pgsql Functions
SELECT * FROM cypher('cypher_delete', $$CREATE (v:v)$$) AS (a agtype);
 a 
---
(0 rows)

CREATE FUNCTION delete_test()
RETURNS TABLE(vertex agtype)
LANGUAGE plpgsql
VOLATILE
AS $BODY$
BEGIN
	RETURN QUERY SELECT * FROM cypher('cypher_delete', $$MATCH (v) DELETE (v) RETURN v$$) AS (a agtype);
END
$BODY$;
SELECT delete_test();
                           delete_test                           
-----------------------------------------------------------------
 {"id": 844424930132010, "label": "v", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$CREATE (v:v)$$) AS (a agtype);
 a 
---
(0 rows)

SELECT delete_test();
                           delete_test                           
-----------------------------------------------------------------
 {"id": 844424930132011, "label": "v", "properties": {}}::vertex
(1 row)

-- Clean Up
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DETACH DELETE n RETURN n$$) AS (a agtype);
 a 
---
(0 rows)

--Test 23
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->()$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e2]->()$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH p=()-[]->() RETURN p$$) AS (a agtype);
                                                                                                                                a                                                                                                                                 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [{"id": 844424930132012, "label": "v", "properties": {}}::vertex, {"id": 1125899906842643, "label": "e", "end_id": 281474976710657, "start_id": 844424930132012, "properties": {}}::edge, {"id": 281474976710657, "label": "", "properties": {}}::vertex]::path
 [{"id": 844424930132013, "label": "v", "properties": {}}::vertex, {"id": 2251799813685249, "label": "e2", "end_id": 281474976710658, "start_id": 844424930132013, "properties": {}}::edge, {"id": 281474976710658, "label": "", "properties": {}}::vertex]::path
(2 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[e]->(m)  DELETE e$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH p=()-[]->() RETURN p$$) AS (a agtype);
 a 
---
(0 rows)

-- Clean Up
SELECT * FROM cypher('cypher_delete', $$MATCH(n)  DELETE n RETURN n$$) AS (a agtype);
                                a                                
-----------------------------------------------------------------
 {"id": 281474976710657, "label": "", "properties": {}}::vertex
 {"id": 281474976710658, "label": "", "properties": {}}::vertex
 {"id": 844424930132012, "label": "v", "properties": {}}::vertex
 {"id": 844424930132013, "label": "v", "properties": {}}::vertex
(4 rows)

--Test 24
SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e]->()$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (n:v)-[:e2]->()$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH p=()-[]->() RETURN p$$) AS (a agtype);
                                                                                                                                a                                                                                                                                 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [{"id": 844424930132014, "label": "v", "properties": {}}::vertex, {"id": 1125899906842644, "label": "e", "end_id": 281474976710659, "start_id": 844424930132014, "properties": {}}::edge, {"id": 281474976710659, "label": "", "properties": {}}::vertex]::path
 [{"id": 844424930132015, "label": "v", "properties": {}}::vertex, {"id": 2251799813685250, "label": "e2", "end_id": 281474976710660, "start_id": 844424930132015, "properties": {}}::edge, {"id": 281474976710660, "label": "", "properties": {}}::vertex]::path
(2 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH(n)-[]->() DETACH DELETE n$$) AS (a agtype);
 a 
---
(0 rows)

SELECT * FROM cypher('cypher_delete', $$MATCH p=()-[]->() RETURN p$$) AS (a agtype);
 a 
---
(0 rows)

-- Clean Up
SELECT * FROM cypher('cypher_delete', $$MATCH(n) DELETE n RETURN n$$) AS (a agtype);
                               a                                
----------------------------------------------------------------
 {"id": 281474976710659, "label": "", "properties": {}}::vertex
 {"id": 281474976710660, "label": "", "properties": {}}::vertex
(2 rows)

-- test DELETE in transaction block
SELECT * FROM cypher('cypher_delete', $$CREATE (u:vertices) RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395905, "label": "vertices", "properties": {}}::vertex
(1 row)

BEGIN;
SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395905, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) DELETE u RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395905, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
 result 
--------
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (u:vertices) RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395906, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395906, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) DELETE u RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395906, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
 result 
--------
(0 rows)

SELECT * FROM cypher('cypher_delete', $$CREATE (u:vertices) RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395907, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
                                 result                                  
-------------------------------------------------------------------------
 {"id": 2533274790395907, "label": "vertices", "properties": {}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) DELETE u SET u.i = 1 RETURN u $$) AS (result agtype);
                                    result                                     
-------------------------------------------------------------------------------
 {"id": 2533274790395907, "label": "vertices", "properties": {"i": 1}}::vertex
(1 row)

SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
 result 
--------
(0 rows)

END;
SELECT * FROM cypher('cypher_delete', $$MATCH (u:vertices) RETURN u $$) AS (result agtype);
 result 
--------
(0 rows)

--
-- Clean up
--
DROP FUNCTION delete_test;
SELECT drop_graph('cypher_delete', true);
NOTICE:  drop cascades to 6 other objects
DETAIL:  drop cascades to table cypher_delete._ag_label_vertex
drop cascades to table cypher_delete._ag_label_edge
drop cascades to table cypher_delete.v
drop cascades to table cypher_delete.e
drop cascades to table cypher_delete.e2
drop cascades to table cypher_delete.vertices
NOTICE:  graph "cypher_delete" has been dropped
 drop_graph 
------------
 
(1 row)

--
-- End
--
